<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>동고 팔자 상팔자</title>
    <link>https://donggov.tistory.com/</link>
    <description>아닌것 같지만 투자 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 22:11:09 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>동고킴</managingEditor>
    <image>
      <title>동고 팔자 상팔자</title>
      <url>https://tistory1.daumcdn.net/tistory/1878355/attach/b3f8fe459a5f43049e77b25ab1a3fe5c</url>
      <link>https://donggov.tistory.com</link>
    </image>
    <item>
      <title>온러닝(On Hldg) 투자 종료</title>
      <link>https://donggov.tistory.com/268</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uJJks/btsJH0hwsq4/fzzWMGls8B14VTLAkRcBIk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uJJks/btsJH0hwsq4/fzzWMGls8B14VTLAkRcBIk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uJJks/btsJH0hwsq4/fzzWMGls8B14VTLAkRcBIk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuJJks%2FbtsJH0hwsq4%2FfzzWMGls8B14VTLAkRcBIk%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;1170&quot; height=&quot;1624&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;목표했던 주가 50 달성해서 매도&lt;br&gt;호카, 온러닝의 점유율이 꾸준히 상승하고 있어서 단기 스윙 목적으로 매수했던 종목&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mCj4z/btsJHE6UFPH/a8k0hh8A0stFPUupEmLwKK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mCj4z/btsJHE6UFPH/a8k0hh8A0stFPUupEmLwKK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mCj4z/btsJHE6UFPH/a8k0hh8A0stFPUupEmLwKK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmCj4z%2FbtsJHE6UFPH%2Fa8k0hh8A0stFPUupEmLwKK%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;1170&quot; height=&quot;597&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FAWYy/btsJHV8pAjo/w9xOx8U7n5mXXuJ8noFS7k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FAWYy/btsJHV8pAjo/w9xOx8U7n5mXXuJ8noFS7k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FAWYy/btsJHV8pAjo/w9xOx8U7n5mXXuJ8noFS7k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFAWYy%2FbtsJHV8pAjo%2Fw9xOx8U7n5mXXuJ8noFS7k%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;1170&quot; height=&quot;435&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;38달러에 매수해서 51달러에 매도&lt;br&gt;달러로 33% 정도 수익을 달성했으나 환율이 많이 떨어져서 한화로는 30% 수익 달성&lt;br&gt;이 시드로 이제 어떤 종목을 매수할지 다시 공부 시작&lt;br&gt;&lt;br&gt;클라이두 쿠션이 제법 괜찮다는데 일본 여행가게되면 구매해서 신어보고 싶다.&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>온러닝</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/268</guid>
      <comments>https://donggov.tistory.com/268#entry268comment</comments>
      <pubDate>Mon, 23 Sep 2024 08:13:25 +0900</pubDate>
    </item>
    <item>
      <title>LABU 3배눈 역시 변동성이 크다</title>
      <link>https://donggov.tistory.com/267</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;661&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0WhNN/btsICnzhwSJ/awBqrl9Sgn3APHc3ofGLBk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0WhNN/btsICnzhwSJ/awBqrl9Sgn3APHc3ofGLBk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0WhNN/btsICnzhwSJ/awBqrl9Sgn3APHc3ofGLBk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0WhNN%2FbtsICnzhwSJ%2FawBqrl9Sgn3APHc3ofGLBk%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;1170&quot; height=&quot;661&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;661&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;트럼프의 금리인하 반대&lt;br&gt;하비만 파월은 임기 마치도록 둔다&lt;br&gt;무슨 말이여...&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GovCB/btsIDdJybY4/dFtX9300K6gYB3oWVK3eX1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GovCB/btsIDdJybY4/dFtX9300K6gYB3oWVK3eX1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GovCB/btsIDdJybY4/dFtX9300K6gYB3oWVK3eX1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGovCB%2FbtsIDdJybY4%2FdFtX9300K6gYB3oWVK3eX1%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;1170&quot; height=&quot;1624&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;금리 인하 노리고 170까지 보고 들어갔는데&lt;br&gt;하루만에 -6.3% 하락&lt;br&gt;며칠 수익본거 거의 다 반납&lt;br&gt;반등 오거나 오를수도 있는데 일단 1%만 먹고 런한다&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCJIfW/btsIDI3lmEc/AwIuQ3ekmpNpYYuzUaKKc1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCJIfW/btsIDI3lmEc/AwIuQ3ekmpNpYYuzUaKKc1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCJIfW/btsIDI3lmEc/AwIuQ3ekmpNpYYuzUaKKc1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCJIfW%2FbtsIDI3lmEc%2FAwIuQ3ekmpNpYYuzUaKKc1%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;1170&quot; height=&quot;428&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>LABU</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/267</guid>
      <comments>https://donggov.tistory.com/267#entry267comment</comments>
      <pubDate>Thu, 18 Jul 2024 12:53:23 +0900</pubDate>
    </item>
    <item>
      <title>현대글로비스 매수 (feat. 이것도 오픈북?)</title>
      <link>https://donggov.tistory.com/266</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;알테오젠을 일부 매도하고 어떤 종목을 비중있게 매수할지 찾아보다가 현대글로비스가 눈에 띄었다.&lt;br&gt;관심도 없는 회사였는데 뉴스를 보니 오픈북 수준&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qxwno/btsIzegIHqq/gvaP9muXDYCiYCxFpIEmm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qxwno/btsIzegIHqq/gvaP9muXDYCiYCxFpIEmm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qxwno/btsIzegIHqq/gvaP9muXDYCiYCxFpIEmm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqxwno%2FbtsIzegIHqq%2FgvaP9muXDYCiYCxFpIEmm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;668&quot; height=&quot;282&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;2030년 매출 목표 40조+@&lt;br&gt;영업이익 7%&lt;br&gt;그럼 매년 2.8조 정도 이익이 나게됨&lt;br&gt;지금 시총 9조 정도&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;게다가 지금 지분구조 보면 답 나옴&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxT1dm/btsIzrUpP90/G2WBzbUNurID2K9ueVLaeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxT1dm/btsIzrUpP90/G2WBzbUNurID2K9ueVLaeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxT1dm/btsIzrUpP90/G2WBzbUNurID2K9ueVLaeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxT1dm%2FbtsIzrUpP90%2FG2WBzbUNurID2K9ueVLaeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;604&quot; height=&quot;338&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;일봉 차트보면 아찔함&lt;br&gt;심약 개미는 절대 살수 없는 아찔한 차트&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2057&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVPkUJ/btsIzS5q8CL/8zLasgl3szUP20Ip2esMA1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVPkUJ/btsIzS5q8CL/8zLasgl3szUP20Ip2esMA1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVPkUJ/btsIzS5q8CL/8zLasgl3szUP20Ip2esMA1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVPkUJ%2FbtsIzS5q8CL%2F8zLasgl3szUP20Ip2esMA1%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;1170&quot; height=&quot;2057&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2057&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;무증 전후로 매수했더니 수량과 수익률의 괴리가 너무 심해졌다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nx1nd/btsIzMqDYgF/9wkofx56rjAX6zRdpnYKzk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nx1nd/btsIzMqDYgF/9wkofx56rjAX6zRdpnYKzk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nx1nd/btsIzMqDYgF/9wkofx56rjAX6zRdpnYKzk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnx1nd%2FbtsIzMqDYgF%2F9wkofx56rjAX6zRdpnYKzk%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;1170&quot; height=&quot;423&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;</description>
      <category>투자 혹은 투기</category>
      <category>주식</category>
      <category>현대글로비스</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/266</guid>
      <comments>https://donggov.tistory.com/266#entry266comment</comments>
      <pubDate>Sun, 14 Jul 2024 22:51:58 +0900</pubDate>
    </item>
    <item>
      <title>알테오젠 일부 매도 (feat. 실수)</title>
      <link>https://donggov.tistory.com/265</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;삼성증권에 있던 수량의 일부를 매도했다.&lt;br&gt;금요일에 매도할 계획이었는데, 목요일에 금요일일 줄 알고 실수로 하루 일찍 매도해버림&lt;br&gt;한달 월급 정도 손해봤네&lt;br&gt;앞으론 조심하자&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oPlst/btsIyIP2HO8/kzk7PFizupbVkXYGG5TLR1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oPlst/btsIyIP2HO8/kzk7PFizupbVkXYGG5TLR1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oPlst/btsIyIP2HO8/kzk7PFizupbVkXYGG5TLR1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoPlst%2FbtsIyIP2HO8%2Fkzk7PFizupbVkXYGG5TLR1%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;1170&quot; height=&quot;2060&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdH6VI/btsIzVVo4M5/P4hdMDkBMCKBbSRXAhhQ00/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdH6VI/btsIzVVo4M5/P4hdMDkBMCKBbSRXAhhQ00/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdH6VI/btsIzVVo4M5/P4hdMDkBMCKBbSRXAhhQ00/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdH6VI%2FbtsIzVVo4M5%2FP4hdMDkBMCKBbSRXAhhQ00%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;1170&quot; height=&quot;445&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>알테오젠</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/265</guid>
      <comments>https://donggov.tistory.com/265#entry265comment</comments>
      <pubDate>Sun, 14 Jul 2024 13:23:20 +0900</pubDate>
    </item>
    <item>
      <title>LABU 지금이다</title>
      <link>https://donggov.tistory.com/264</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;이건 뭐 정답을 다 알려주네&lt;br&gt;소소하게 135에 30주&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rllSl/btsIzn5dxve/2xKkEI62fG9lw0NR3t1jI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rllSl/btsIzn5dxve/2xKkEI62fG9lw0NR3t1jI1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rllSl/btsIzn5dxve/2xKkEI62fG9lw0NR3t1jI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrllSl%2FbtsIzn5dxve%2F2xKkEI62fG9lw0NR3t1jI1%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;1170&quot; height=&quot;1619&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1619&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;926&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DW5ud/btsIy3y9S5L/etByuYcPCocNivTami9FL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DW5ud/btsIy3y9S5L/etByuYcPCocNivTami9FL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DW5ud/btsIy3y9S5L/etByuYcPCocNivTami9FL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDW5ud%2FbtsIy3y9S5L%2FetByuYcPCocNivTami9FL0%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;1170&quot; height=&quot;926&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;</description>
      <category>투자 혹은 투기</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/264</guid>
      <comments>https://donggov.tistory.com/264#entry264comment</comments>
      <pubDate>Fri, 12 Jul 2024 22:41:50 +0900</pubDate>
    </item>
    <item>
      <title>엔비디아 투자 종료</title>
      <link>https://donggov.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;128 달러에 엔비디아 정리&lt;br&gt;2년 넘게 가지고 있던 효자 종목을 정리했다&lt;br&gt;환차익 덕분이 400%가 넘네&lt;br&gt;어떤 종목으로 넘어갈지 탐색 기간을 좀 가져야겠다&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1846&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1MjuW/btsIqEl3nLk/Zgrjv5VUD0Qnnv5IFcA8m0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1MjuW/btsIqEl3nLk/Zgrjv5VUD0Qnnv5IFcA8m0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1MjuW/btsIqEl3nLk/Zgrjv5VUD0Qnnv5IFcA8m0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1MjuW%2FbtsIqEl3nLk%2FZgrjv5VUD0Qnnv5IFcA8m0%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;1170&quot; height=&quot;1846&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1846&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csFlyn/btsIpNcXBzj/mt7BGjoPerc6euPq8G8Rr0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csFlyn/btsIpNcXBzj/mt7BGjoPerc6euPq8G8Rr0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csFlyn/btsIpNcXBzj/mt7BGjoPerc6euPq8G8Rr0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsFlyn%2FbtsIpNcXBzj%2Fmt7BGjoPerc6euPq8G8Rr0%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;1170&quot; height=&quot;1113&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>엔비디아</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/263</guid>
      <comments>https://donggov.tistory.com/263#entry263comment</comments>
      <pubDate>Fri, 5 Jul 2024 23:02:25 +0900</pubDate>
    </item>
    <item>
      <title>알테오젠 아직 단 한주도 팔지 않았다</title>
      <link>https://donggov.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;계좌 3개에 나눠 남았는데 아직 단 한주도 팔지 않았다.&lt;br&gt;아직 내 목표가에 안온 이유도 있지만&lt;br&gt;광기가 붙으면 내 목표가 보다 더 갈 수도 있겠다는 생각이 든다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dB0oFH/btsHTDOkX0F/ymXmNCsYpPCGfo6KDVOoE0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dB0oFH/btsHTDOkX0F/ymXmNCsYpPCGfo6KDVOoE0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dB0oFH/btsHTDOkX0F/ymXmNCsYpPCGfo6KDVOoE0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdB0oFH%2FbtsHTDOkX0F%2FymXmNCsYpPCGfo6KDVOoE0%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;1170&quot; height=&quot;1392&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;보트 회사와 비교하는 사람들이 나올때 좀 어이가 없었는데, 애초에 보트 회사는 비교대상이 아니다.&lt;br&gt;결과가 말해준다.&lt;br&gt;근본, 독점에 주목해라.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;373&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctcnFr/btsHTg6V11D/g3vCU38y2LMkV5U02LOYtk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctcnFr/btsHTg6V11D/g3vCU38y2LMkV5U02LOYtk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctcnFr/btsHTg6V11D/g3vCU38y2LMkV5U02LOYtk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctcnFr%2FbtsHTg6V11D%2Fg3vCU38y2LMkV5U02LOYtk%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;1170&quot; height=&quot;373&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zTnvh/btsHRm2cqbJ/v8oIL0RfhII6KUpNeNPpo0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zTnvh/btsHRm2cqbJ/v8oIL0RfhII6KUpNeNPpo0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zTnvh/btsHRm2cqbJ/v8oIL0RfhII6KUpNeNPpo0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzTnvh%2FbtsHRm2cqbJ%2Fv8oIL0RfhII6KUpNeNPpo0%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;1170&quot; height=&quot;370&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V6kxQ/btsHTaeERn1/8LbO7sINkKnjruF5qzZ8wK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V6kxQ/btsHTaeERn1/8LbO7sINkKnjruF5qzZ8wK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V6kxQ/btsHTaeERn1/8LbO7sINkKnjruF5qzZ8wK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV6kxQ%2FbtsHTaeERn1%2F8LbO7sINkKnjruF5qzZ8wK%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;1170&quot; height=&quot;393&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>알테오젠</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/262</guid>
      <comments>https://donggov.tistory.com/262#entry262comment</comments>
      <pubDate>Sat, 8 Jun 2024 23:58:39 +0900</pubDate>
    </item>
    <item>
      <title>니체의 말</title>
      <link>https://donggov.tistory.com/261</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HCWEW/btsGNbGMMVO/Ta9x2zlTIHBTCvAlG4Yjc0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HCWEW/btsGNbGMMVO/Ta9x2zlTIHBTCvAlG4Yjc0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HCWEW/btsGNbGMMVO/Ta9x2zlTIHBTCvAlG4Yjc0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHCWEW%2FbtsGNbGMMVO%2FTa9x2zlTIHBTCvAlG4Yjc0%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;500&quot; height=&quot;500&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;틈틈이 읽은 책. 니체의 말들을 엮은 책이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그냥.... 그냥 읽었다. 2권까지는 읽은 필요는 없고, 1권만 읽으면 충분하다는 생각이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;많은 글들 중에서 좀 와닿는 글들이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;075. 정신의 자유를 위해서는&lt;/b&gt;&lt;br /&gt;진정으로 자유롭고 싶다면 자신의 감정이 제멋대로 날뛰지 않도록 어떻게든 구속할 필요가 있다. 감정을 제멋대로 풀 어놓는다면 그때마다 감정이 자신을 휘두르고, 혹은 감정이 이 끄는 한 방향으로만 몸과 마음이 향해 결국에는 자신을 자유롭 지 못하게 만들기 때문이다. 정신적으로 자유롭고 본인의 의지 대로 생각할 수 있는 사람은 이 같은 사실을 모두 잘 알고 실천 하고 있다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;086. 세상을 초월하여 살라&lt;/b&gt;&lt;br /&gt;세상에 존재하면서 이 세상을 초월하여 살아라. 세상을 초월하여 산다는 것은 우선 자신의 마음과 감정이 시도 때도 없이 작용하여 이쪽저쪽 움직이지 않는 것이다. 정동에 휘둘리는 것이 아닌, 정동이라는 말에 올라타 능숙하게 그것을 다루는 것이다. 이것이 가능해지면 세계와 시대의 흐름, 변화에 휘둘리지 않는다. 그리고 확고한 자신을 가지고 강인하게 살아갈 수 있게 된다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;186. 진정한 교육자는 당신을 해방시킨다&lt;/b&gt;&lt;br /&gt;좋은 학교에 가면 좋은 교사가 있고 좋은 교육을 받을 수 있다고 말한다. 그것은 사실일까? 무엇을 배울 것이라 기대하 는가? 어떤 방식의 교육을 받고자 하는가? 교사나 학교에 따라 가르치는 것이 달라지는 것일까? 진정한 교육자란 경력이나 실적에 의해서 가늠되는 것이 아니라 당신의 능력을 최대한 발 휘할 수 있도록 이끌어주는 사람이어야 하지 않을까. 결국 진 정한 교육자란 당신을 굴레에서 해방시켜주는 사람이다. 당신 이 생동감에 넘쳐 자유롭고 활발하게 본연의 능력을 발휘할 수 있도록 이끌어주는 사람이야말로 진정한 교육자요, 당신의 학교다. - 쇼펜하우어&lt;br /&gt;&lt;br /&gt;&lt;b&gt;025. 세상의 파도 속에서 표류하지 않기 위하여&lt;/b&gt;&lt;br /&gt;타인을 알아가고 가까이 사귀어 친분을 공고히 하는 것 을 사교 혹은 교제라고들 하나, 대다수의 사람들은 사회 속에 서 타인과의 교제를 통해 자신의 순수성을 현저하게 잃어간다.&lt;br /&gt;심지어 비열해지기까지 한다. 그렇기에 우리는 더욱 강인해져야 한다. 타인의 주장이나 인간관계에 휘둘리지 않고, 물들지 않고, 휩쓸리지 않고 본래의 자신을 지켜나가야 한다. 세상의 파도 속에서 사교적으로 살면서도 표류하지 않아야 한다. 이를 위해서는 무언가를 버리는 단호함과 용기, 통찰력이 필요하다.&lt;br /&gt;그런 자만이 고독을 두려워하지 않고 오히려 고독 속에 자신을 온전히 내던지는 즐거움을 맛볼 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;033. 발이 묶인 이들을 대중이라 부른다&lt;/b&gt;&lt;br /&gt;사람은 대개 자신이 사는 곳의 지방색, 직종, 지위와 입 장, 나아가 그 시대의 지배적 상식, 인습을 통해 사고방식을 형성한다. 그리고 다른 사람들과 같은 생각을 하고 있음에 안도 한다. 그러나 이는 한편으로 구속되어 있는 것이기도 하다. 그 저 많은 사람들과 함께 발이 묶인 채, 대중이라는 이름 뒤에 가려져 있기에 자각하지 못하는 것뿐이다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;153. 호의는 작은 꽃&lt;/b&gt;&lt;br /&gt;사람과 사람이 부대 살아가는 일상에서 필요한 것은 호의다. 친근한 눈빛, 악수 같은 친밀한 접촉, 마음을 나누는 교제, 배려가 깃든 말투나 화제. 그것들은 분명 기분을 좋게 만 들고 크고 작은 문제를 포용하며 신뢰관계와 친밀함, 인간적인 안도감을 형성한다. 일상의 곳곳, 순간순간에 자리한 호의는 사소하고 평범하며 눈에 띄지 않지만, 분명 생활과 문화의 확 고한 초석이 된다. 호의, 그것은 매일같이 피는 작고 파란 꽃과 같다.&lt;/p&gt;</description>
      <category>취미</category>
      <category>독서</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/261</guid>
      <comments>https://donggov.tistory.com/261#entry261comment</comments>
      <pubDate>Sun, 21 Apr 2024 22:00:37 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트 every 함수가 빈 배열을 true로 반환하는 이유</title>
      <link>https://donggov.tistory.com/260</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난&amp;nbsp;글&amp;nbsp;&lt;i&gt;&lt;a href=&quot;https://donggov.tistory.com/259&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;자바스크립트&amp;nbsp;every&amp;nbsp;함수&amp;nbsp;구현&amp;nbsp;(feat.&amp;nbsp;ECMA-262)&lt;/a&gt;&lt;/i&gt;에&amp;nbsp;이은&amp;nbsp;every&amp;nbsp;함수에&amp;nbsp;관한&amp;nbsp;글이다. &lt;br /&gt;자바스크립트&amp;nbsp;every&amp;nbsp;함수는&amp;nbsp;판단&amp;nbsp;로직이&amp;nbsp;무엇이든 간에&amp;nbsp;빈&amp;nbsp;배열은&amp;nbsp;무조건&amp;nbsp;true를&amp;nbsp;반환하는데&amp;nbsp;이에&amp;nbsp;대한&amp;nbsp;글이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원글은 &lt;a href=&quot;https://humanwhocodes.com/blog/2023/09/javascript-wtf-why-does-every-return-true-for-empty-array/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://humanwhocodes.com/blog/2023/09/javascript-wtf-why-does-every-return-true-for-empty-array/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자바스크립트 every가 빈 배열을 true로 반환하는 이유&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript 언어의 핵심은 특정 부분이 어떻게 작동하는지 오해하기 쉽도록 충분히 크다. 저는 최근 이 메서드를 사용하는 일부 코드를 리팩토링하고 있었는데 &lt;code&gt;every()&lt;/code&gt;에 숨어있는 논리를 실제로 이해하지 못했다는 사실을 발견했다. 내 생각에 콜백 함수를 호출하고 return으로 &lt;code&gt;true&lt;/code&gt;를 반환 해야 한다고 가정했지만 실제로는 그렇지 않았다. 빈 배열의 경우 &lt;code&gt;every()&lt;/code&gt; 함수의 콜백 함수가 호출되지 않기 때문에 콜백 함수가 무엇인지 관계없이 &lt;code&gt;true&lt;/code&gt;가 반환된다. 다음을 코드를 살펴보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wN5sc/btsGEpS7EUA/ObTaUKCv1GiM3QMtDT4ttK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wN5sc/btsGEpS7EUA/ObTaUKCv1GiM3QMtDT4ttK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wN5sc/btsGEpS7EUA/ObTaUKCv1GiM3QMtDT4ttK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwN5sc%2FbtsGEpS7EUA%2FObTaUKCv1GiM3QMtDT4ttK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;520&quot; height=&quot;186&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드에서 &lt;code&gt;isNumber&lt;/code&gt; 함수는 값이 숫자 타입인지 확인하는 함수다. 그리고 &lt;code&gt;every&lt;/code&gt;를 사용하여 배열의 각 값이 숫자 타입인지 확인한다. 처음 네 번의 호출은 매우 간단하며 &lt;code&gt;every()&lt;/code&gt;가 예상한 결과를 반환한다. 하지만 마지막 빈 배열의 경우 &lt;code&gt;true&lt;/code&gt;를 반환하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 예를 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFLAQk/btsGHE8MRHM/fbUjrTj57U9fFRDoyFkQMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFLAQk/btsGHE8MRHM/fbUjrTj57U9fFRDoyFkQMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFLAQk/btsGHE8MRHM/fbUjrTj57U9fFRDoyFkQMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFLAQk%2FbtsGHE8MRHM%2FfbUjrTj57U9fFRDoyFkQMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;60&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;놀라운 결과가 나왔다. &lt;code&gt;every&lt;/code&gt;에 항상 &lt;code&gt;true&lt;/code&gt; 또는 &lt;code&gt;false&lt;/code&gt;를 반환하는 함수를 콜백으로 넣었다. 이런 일이 발생할 수 있는 유일한 이유는 콜백이 호출되지 않고 &lt;code&gt;every()&lt;/code&gt;의 기본값이 &lt;code&gt;true&lt;/code&gt;를 반환하기 때문이다. 그렇다면 빈 배열이라서 콜백 함수를 실행할 값이 없는데 &lt;code&gt;every()&lt;/code&gt;에서 &lt;code&gt;true&lt;/code&gt;를 반환하는 이유는 무엇일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 이유를 이해하려면 &lt;code&gt;every&lt;/code&gt;의 스펙에서 이 내용을 어떻게 설명하고 있는지 살펴봐야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;code&gt;every()&lt;/code&gt; 구현체 살펴보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ECMA-262에 정의된 &lt;code&gt;Array.prototype.every()&lt;/code&gt;의 Pseudo-code는 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc6u7J/btsGFBZCOMJ/REiKN6KKL0GNxZyELswUfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc6u7J/btsGFBZCOMJ/REiKN6KKL0GNxZyELswUfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc6u7J/btsGFBZCOMJ/REiKN6KKL0GNxZyELswUfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc6u7J%2FbtsGFBZCOMJ%2FREiKN6KKL0GNxZyELswUfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;627&quot; height=&quot;308&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 자바스크립트로 구현하면 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBZKXP/btsGFgatnIJ/kdzhjlmqg0GK1hVO0Jk0f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBZKXP/btsGFgatnIJ/kdzhjlmqg0GK1hVO0Jk0f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBZKXP/btsGFgatnIJ/kdzhjlmqg0GK1hVO0Jk0f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBZKXP%2FbtsGFgatnIJ%2Fkdzhjlmqg0GK1hVO0Jk0f1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;589&quot; height=&quot;563&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 살펴보면 결과는 &lt;code&gt;true&lt;/code&gt;로 가정하고 배열에 값이 있을 경우에만 콜백을 통해 &lt;code&gt;false&lt;/code&gt;를 반환하는걸 볼 수 있다. 빈 배열이면 콜백 함수를 실행할 기회 자체가 없기 때문에 &lt;code&gt;false&lt;/code&gt;를 반환할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 &lt;code&gt;every()&lt;/code&gt; 함수는 왜 이렇게 동작하게 만든 걸까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;수학과 자바스크립트에서 전체 양화사 (for all(모든 값에 대한)&quot; 양화사(quantifier))&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MDN 페이지에서 &lt;code&gt;every()&lt;/code&gt; 함수가 빈 배열을 &lt;code&gt;true&lt;/code&gt;로 반환하는 이유에 대한 답변을 볼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;every acts like the &quot;for all&quot; quantifier in mathematics. In particular, for an empty array, it returns true. (It is vacuously true that all elements of the empty set satisfy any given condition.)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;번역하면 아래와 같다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;every는 수학의 &quot;모든 ~에 대해(for all)&quot; 양화사처럼 작동합니다. 특별히 빈 배열은 true를 반환합니다. (빈 집합의 모든 요소가 주어진 조건을 만족하는 것은 공허 참입니다.)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;공허한 참(Vacuous truth)&quot;은 주어진 조건이 충족될 수 없는 경우(즉, 주어진 조건이 참이 아닌 경우) 무언가가 참임을 의미하는 수학적 개념이다. 전제 자체가 거짓이라 거기에서 도출되는 것이 아무것도 없으므로 해당 참은 무의미하다는 의미이다. 이것을 자바스크립트로 표현하면 &lt;code&gt;every()&lt;/code&gt; 함수에서 빈 배열에 대해 콜백을 호출할 수 없기 때문에, 즉 조건을 충족할 수 없기 때문에 &lt;code&gt;true&lt;/code&gt;를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;for all&lt;/code&gt; 양화사는 데이터 집합에 대해 추론할 수 있게 해주는 &quot;공허한 참&quot;라고 불리는 수학의 더 큰 주제의 일부다. 특히 형식화된 배열의 경우 수학적 계산을 수행하는 데 자바스크립트 배열의 중요성을 고려하면 이러한 작업을 기본적으로 지원하는 것이 합리적이다. &lt;code&gt;every()&lt;/code&gt;가 이것의 유일한 예는 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;수학과 자바스크립트에서의 존재 양화사&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트의 &lt;code&gt;some()&lt;/code&gt; 함수는 &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%A1%B4%EC%9E%AC_%EC%96%91%ED%99%94%EC%82%AC&quot;&gt;존재 양화사&lt;/a&gt;를 구현한 것이다. 존재 양화사는 어떠한 빈 집합에 대해서도 결과가 거짓임을 나타낸다. 따라서 &lt;code&gt;some()&lt;/code&gt; 함수는 빈 배열에 대해 false를 반환하고 콜백도 실행하지 않는다. 아래는 이에 대한 예제다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wx8k0/btsGEVqTbRa/CyVnjK5x9RNThIVk8GM48k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wx8k0/btsGEVqTbRa/CyVnjK5x9RNThIVk8GM48k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wx8k0/btsGEVqTbRa/CyVnjK5x9RNThIVk8GM48k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWx8k0%2FbtsGEVqTbRa%2FCyVnjK5x9RNThIVk8GM48k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;483&quot; height=&quot;229&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;다른 언어에서의 양화사&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;Collections&lt;/code&gt;이나 &lt;code&gt;iterables&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;Python : &lt;code&gt;all()&lt;/code&gt; 함수는 전체 양화사. &lt;code&gt;any()&lt;/code&gt; 함수는 존재 양화사&lt;/li&gt;
&lt;li&gt;Rust : &lt;code&gt;Iterator:all()&lt;/code&gt; 함수는 전체 양화사. &lt;code&gt;any()&lt;/code&gt; 함수는 존재 양화사&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&quot;전체&quot; every()의 의미&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;every()&lt;/code&gt;의 동작이 직관적이지 않다고 여기는 여부는 논쟁의 여지가 있다. 하지만 이런 생각과 관계없이 에러를 방지하기 위해서는 &lt;code&gt;every()&lt;/code&gt;의 &quot;전체&quot; 특성을 염두에 두어야 한다. 즉, 만약 &lt;code&gt;every()&lt;/code&gt; 또는 비어있을 수 있는 배열을 사용하려면, 미리 명시적인 검사를 추가해야 한다. 예를 들어, 만약 숫자 배열에 의존하는 연산이 있고 빈 배열에 대해서 연산이 실패해야 한다면, &lt;code&gt;every()&lt;/code&gt;를 사용하기 전에 배열이 비었는지를 확인해야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HI0em/btsGGXOIi7Y/K4m93YLQt9WpC9k0EEi5x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HI0em/btsGGXOIi7Y/K4m93YLQt9WpC9k0EEi5x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HI0em/btsGGXOIi7Y/K4m93YLQt9WpC9k0EEi5x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHI0em%2FbtsGGXOIi7Y%2FK4m93YLQt9WpC9k0EEi5x0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;719&quot; height=&quot;232&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 말하면, 이는 비어있을 때 연산에 사용하면 안 되는 배열이 있을 때만 중요하다. 그렇지 않은 경우라면 추가적인 확인이 없어도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 빈 배열에 대한 &lt;code&gt;every()&lt;/code&gt;의 동작에 놀랐지만, 연산의 더 넓은 맥락을 이해하고 이러한 기능이 다른 언어에도 확장된 것을 확인하면서 납득할 수 있었다. 만약 이런 동작 때문에 혼란스럽다면, &lt;code&gt;every()&lt;/code&gt;를 마주할 때 생각하는 방법을 바꿔보는 걸 추천한다. &lt;code&gt;every()&lt;/code&gt;를 &quot;배열의 모든 아이템이 조건을 만족하는가?&quot;로 읽는 대신, &quot;배열에 조건을 만족하지 않는 아이템이 있는가?&quot;로 생각해 봐라. 이러한 사고의 전환은 앞으로 자바스크립트 코드의 오류를 방지하는 데 도움이 될 것이다.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://tc39.es/ecma262/#sec-array.prototype.every&quot;&gt;https://tc39.es/ecma262/#sec-array.prototype.every&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>자바스크립트</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/260</guid>
      <comments>https://donggov.tistory.com/260#entry260comment</comments>
      <pubDate>Tue, 16 Apr 2024 22:00:12 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트 every 함수 구현 (feat. ECMA-262)</title>
      <link>https://donggov.tistory.com/259</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;ECMA-262 규격대로 every 함수 구현해 보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 every는 배열의 모든 요소가 제공된 함수로 구현된 테스트를 통과하는지 테스트하는 함수다. ECMA-262에 나와있는 every 함수의 스펙대로 이 기능을 자바스크립트로 구현해 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트로 구현에 앞서 ECMA-262의 every 함수의 명세를 살펴보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;every의 동작을 설명한 내용은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgzA4n/btsGCxvEIRp/ydm7DaRrao5oplN9MieT8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgzA4n/btsGCxvEIRp/ydm7DaRrao5oplN9MieT8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgzA4n/btsGCxvEIRp/ydm7DaRrao5oplN9MieT8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgzA4n%2FbtsGCxvEIRp%2Fydm7DaRrao5oplN9MieT8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1256&quot; height=&quot;470&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;470&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;그리고 이 내용을 단계별로 의사코드(Pseudo-code)로 표현한 내용이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GXG9D/btsGCck0sbp/RevxMOKfpQuqar7knJ8Nyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GXG9D/btsGCck0sbp/RevxMOKfpQuqar7knJ8Nyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GXG9D/btsGCck0sbp/RevxMOKfpQuqar7knJ8Nyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGXG9D%2FbtsGCck0sbp%2FRevxMOKfpQuqar7knJ8Nyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;401&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;401&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 한글로 해석하면&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;1. O는 this이다.
2. O의 길이를 len으로 선언
3. 만약 callbackfn이 함수가 아니면 타입에러가 발생한다.
4. k를 0으로 선언
5. 길이가 k보다 크면 반복한다.
   a. k를 문자열 Pk로 선언
   b. O가 Pk 속성을 가지면 kPresnet로 선언
   c. 만약 kPresent가 참이면
        i. O[Pk] 값은 kValue로 선언
        ii. callbackfn 함수에 kValue, k, O 인자를 넘겨서 실행한 결과를 testResult 로 선언
        iii. testResult가 false이면 false를 반환
    d. k에 k+1 저장
6. true를 반환&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;v8 엔진의 every 함수 구현&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v8 엔진에서는 Torque로 구현되어 있다. Torque는 v8에서 사용하는 언어다. CSA로 구현된 내용들을 Torque로 옮겨가고 있는데 이 이상의 자세한 건 굳이 알 필요 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Torque 코드를 살펴보면 ECMA-262의 스펙대로 구현한 걸 볼 수 있다. 친절하게 주석까지 잘 달려있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 라인에 관계없이, 의사코드 순서대로 코드만 살펴보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beduuN/btsGBb1GSUg/SgRKOnF8ZmA3j0QbtwWwLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beduuN/btsGBb1GSUg/SgRKOnF8ZmA3j0QbtwWwLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beduuN/btsGBb1GSUg/SgRKOnF8ZmA3j0QbtwWwLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeduuN%2FbtsGBb1GSUg%2FSgRKOnF8ZmA3j0QbtwWwLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;684&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqacYr/btsGC2926N6/cBVrIlKtb1KkF7XcIaxy1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqacYr/btsGC2926N6/cBVrIlKtb1KkF7XcIaxy1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqacYr/btsGC2926N6/cBVrIlKtb1KkF7XcIaxy1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqacYr%2FbtsGC2926N6%2FcBVrIlKtb1KkF7XcIaxy1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;645&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 보면 빈 배열일 경우에는 무조건 true를 반환한다. 왜 빈배열은 true를 반환하도록 명세를 작성했을까? 이에 대한 내용은&amp;nbsp;&lt;i&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://donggov.tistory.com/260&quot;&gt;자바스크립트 every 함수가 빈 배열을 true로 반환하는 이유&lt;/a&gt;&lt;/i&gt;에서 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;자바스크립트로 every 함수 구현&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이걸 자바스크립트로 구현해 보자. 의사코드 그대로 구현하면 된다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;Array.prototype.every = function (callbackfn, thisArg) {
  const O = this // 1. Let O be ? ToObject(this value).
  const len = O.length // 2. Let len be ? LengthOfArrayLike(O).

  if (typeof callbackfn !== &quot;function&quot;) {
    // 3. If IsCallable(callbackfn) is false, throw a TypeError exception.
    throw new TypeError(&quot;Callback isn't callable&quot;)
  }

  let k = 0 // 4. Let k be 0.

  while (k &amp;lt; len) {
    // 5. Repeat, while k &amp;lt; len,

    const Pk = String(k) // a. Let Pk be ! ToString( (k)).
    const kPresent = O.hasOwnProperty(Pk) // b. Let kPresent be ? HasProperty(O, Pk).

    if (kPresent) {
      // c. If kPresent is true, then

      const kValue = O[Pk] // i. Let kValue be ? Get(O, Pk).

      // ii. Let testResult be ToBoolean(? Call(callbackfn, thisArg, &amp;laquo; kValue,  (k), O &amp;raquo;)).
      const testResult = Boolean(callbackfn.call(thisArg, kValue, k, O))

      if (testResult === false) {
        // iii. If testResult is false, return false.
        return false
      }
    }

    k = k + 1 // d. Set k to k + 1.
  }

  return true // Return true.
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://tc39.es/ecma262/#sec-array.prototype.every&quot;&gt;ECMA-262 sec-array.prototype.every&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/v8/v8/blob/main/src/builtins/array-every.tq&quot;&gt;array-every.tq&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/259</guid>
      <comments>https://donggov.tistory.com/259#entry259comment</comments>
      <pubDate>Mon, 15 Apr 2024 00:20:02 +0900</pubDate>
    </item>
    <item>
      <title>영유아, 소아 독감 주의사항 정리</title>
      <link>https://donggov.tistory.com/258</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;독감 걸리면 약 먹는거보다 일단 수액 맞는게 가장 좋다. 응급실을 가던 무조건 수액부터 맞는게 좋음.&lt;br&gt;&lt;br&gt;아래는 아산병원에서 독감 관련된 자주 나오는 질문들 정리한 내용인데 좋은 내용이라 기록한다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 독감치료제(타미플루/페라미플루 등) 투약 후 주의해야 할 사항&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;소아환자에서 인과관계는 불분명하지만 항인플루엔자 바이러스 치료제를 투약 후 환각, 환 청과 같은 이상행동등의 정신신경증세 사례가 보고되고 있어서 최소 이틀은 옆에서 지켜봐야 함. 돌발행동을 할 수도 있음. 특히 수면 시에는 아이의 안전을 위해 창문을 모두 잠거야 한다. 창문 밖으로 뛰어내리는 애들도 있다고 하니 조심&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 타미플루와 해열제를 동시에 먹여도 되나?&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;해열제는 일이 날 때 열을 경감시킴으로써 환자의 컨디션을 호전될 수 있게 도와주는 약이며 타미플루는 독감바이러스 치료약이다. 결론적으로 타미플루와 해열제는 다른 성분이기 때문에 동시에 먹어도 됨&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 타미플루 먹고 열이 떨어졌는데 계속 먹어야 하나?&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;내성 바이러스 출현을 예방하기 위해서는 처방된 타미플루의 횟수와 일수대로 끝까 지 복용해야 함&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. 독감 치료제 투약 후에도 열이 계속 나는데, 언제까지 열이 나나?&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;약의 효과가 좋으면 복용 후 수시간 이내, 보통은 투약 후 약 2일이 지나고 나면 발열은 호전됨&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. 타미플루를 먹고 토했는데 다시 먹여야 하나?&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;타미플루 복용 후 바로 구토했을 경우에는 바로 다시 먹이고, 20-30분 지나 구토한 경우에는 다시 먹이실 필요는 없음. 보통은 약 복용 2일 안에 구토가 나타나는데, 계속 먹이면 적응되어 구토가 없어지는 경우가 많다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6. 약이 부족해요. 최소한 몇 번까지 먹어야 하나?&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;총 10회(1일 2회 5일 간) 복용을 권장함. 구토 등으로 여러 번 먹여서 약이 부족한 경우에는 가까운 병원을 방문하셔서 부족한 횟수만큼 다시 처방받아 복용하는 게 좋음&lt;/p&gt;</description>
      <category>정보</category>
      <category>건강</category>
      <category>독감</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/258</guid>
      <comments>https://donggov.tistory.com/258#entry258comment</comments>
      <pubDate>Sun, 14 Apr 2024 15:30:06 +0900</pubDate>
    </item>
    <item>
      <title>알트 전량 현금화</title>
      <link>https://donggov.tistory.com/257</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;본능이 말한다. 당분간 피해있으라고&lt;br&gt;이럴땐 감을 믿는게 답이다.&lt;br&gt;오를수도 있지만 찝찝하게 들고 있느니 현금화하는게 낫지&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1SHJ0/btsGwC42aRI/w3ZkeobLHT2xNYPjMs0yWK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1SHJ0/btsGwC42aRI/w3ZkeobLHT2xNYPjMs0yWK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1SHJ0/btsGwC42aRI/w3ZkeobLHT2xNYPjMs0yWK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1SHJ0%2FbtsGwC42aRI%2Fw3ZkeobLHT2xNYPjMs0yWK%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;1170&quot; height=&quot;844&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;현금 99%&lt;br&gt;&lt;br&gt;지금까지 누적 수익률은 약 38%&lt;br&gt;50%까지 찍었었는데 며칠사이에 내리꽂힘&lt;br&gt;당분간 알트는 관망&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1847&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WqD3i/btsGvrpEwMm/hjul4kvApN9KF96alPlFe0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WqD3i/btsGvrpEwMm/hjul4kvApN9KF96alPlFe0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WqD3i/btsGvrpEwMm/hjul4kvApN9KF96alPlFe0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWqD3i%2FbtsGvrpEwMm%2Fhjul4kvApN9KF96alPlFe0%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;1170&quot; height=&quot;1847&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1847&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;알트 관종 목록인데, 더 떨어져라. 더 떨어져라&lt;br&gt;현금화한 자의 여유.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wYifb/btsGuN0NceN/h34vDK6zkhEKywoSkkCVU0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wYifb/btsGuN0NceN/h34vDK6zkhEKywoSkkCVU0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wYifb/btsGuN0NceN/h34vDK6zkhEKywoSkkCVU0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwYifb%2FbtsGuN0NceN%2Fh34vDK6zkhEKywoSkkCVU0%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;1170&quot; height=&quot;1195&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;근본 비트는 사팔사팔할 생각없다.&lt;br&gt;비트는 월급 받을때마다 꾸준히 매수 중&lt;br&gt;비트 최소 1.3억 믿는다.&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>재테크</category>
      <category>코인</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/257</guid>
      <comments>https://donggov.tistory.com/257#entry257comment</comments>
      <pubDate>Wed, 10 Apr 2024 12:21:31 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트 엔진과 런타임 차이</title>
      <link>https://donggov.tistory.com/256</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자바스크립트 엔진과 자바스크립트 런타임은 어떻게 다를까?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 엔진과 런타임과 엔진은 동일한 것으로 잘못 언급되는 경우가 많다.&lt;br /&gt;아마도 &quot;자바스크립트 엔진&quot;과 &quot;자바스크립트 런타임&quot;이라는 용어가 &quot;자바스크립트를 실행하는 프로그램&quot;을 의미하는 것으로 같은 의미로 사용되는 것을 들어봤을 것이다. V8, Node.js 또는 기타 관련 프로그램에서 종종 혼합하여 참조되기도 한다.&lt;br /&gt;그러나 범위와 기능 측면에서 자바스크립트 엔진과 자바스크립트 런타임 간에는 상당한 차이가 있다. 이 차이점을 이해하는 것은 자바스크립트 언어를 잘 이해하는데 있어 중요하다.&lt;br /&gt;자바스크립트 엔진과 런타임이 각각 무엇인지 이야기하기 전에 엔진과 런타임 모두와 함께 사용되는 몇 가지 용어(ECMAScript 및 자바스크립트)를 알아보자&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;ECMAScript란&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1996년 Netscape와 Sun Microsystems는 자바스크립트 표준화에 관해 비영리 표준 조직인 ECMA International에 접근했다. 이러한 노력의 결과로 1997년에 출시된 ECMA-262가 탄생했다. ECMA-262는 자바스크립트 구현의 작동 방식을 정의하는 사양이다.&lt;br /&gt;Sun이 자바스크립트 상표를 기부하기를 원하지 않았기 때문에, ECMA-262 사양은 다른 이름을 가져야 했다. 그래서 ECMA-262는 &quot;ECMAcript Language Specification&quot;이라고 제목이 붙여졌다. 즉, ECMAcript는 ECMA-262에 명시된 언어의 이름이다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자바스크립트란&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;자바스크립트&quot;라는 용어는 공식적인 정의가 없지만 ECMAScript 언어의 상위 집합으로 널리 이해되고 있다. 이는 자바스크립트가 다른 사양 및 기타 기능 외에도 ECMAScript를 구현한다는 것을 의미한다. 초기 형태의 자바스크립트는 ECMAScript와 DOM(문서 개체 모델)과 같은 웹 기반 API 및 History API와 같은 브라우저 기반 API로 간주되었다. 그리고 하지만 오늘날 자바스크립트는 ECMAScript와 기타 호스트 제공 API의 조합으로 간주된다. 여기에는 브라우저용 web API와 Node.js와 같은 호스트용 서버별 API가 포함된다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자바스크립트 엔진이란&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 자바스크립트 엔진이라고 불리는 것은 추가 기능 없이 ECMA-262를 구현하기 때문에 더 정확하게는 ECMAScript 엔진이라고 할 수 있다. 자바스크립트 엔진은 호스트에 내장되어 입력 및 출력에 대한 추가 기능을 정의한다. 가장 잘 알려진 자바스크립트 엔진은 아래 3가지이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;V8 : Chromium 프로젝트를 위한 자바스크립트 엔진으로 생성되었으며 이제 Node.js 및 Deno에서도 사용된다. Edge와 Opera는 Chromium을 기반으로 하기 때문에 V8이 가장 자주 사용되는 자바스크립트 엔진이다.&lt;/li&gt;
&lt;li&gt;SpiderMonkey : Firefox용 자바스크립트 엔진&lt;/li&gt;
&lt;li&gt;JavaScriptCore : MacOS와 iOS 모두에서 Safari용 자바스크립트 엔진으로 생성되었으며 Bun에서도 사용된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자바스크립트 런타임이란&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 런타임은 ECMAScript 호스트이다. 즉, 자바스크립트 엔진이 내장된 프로그램이다. Chrome, Firefox, Edge, Safari, Node.js, Deno 및 Bun은 자바스크립트 엔진을 내장하고 자바스크립트를 통해 접근할 수 있는 추가 기능을 정의하므로 모두 자바스크립트 런타임이다. 웹 브라우저는 DOM 및 기타 웹 API를 구현하는 반면 서버 측 런타임은 파일 시스템 액세스를 구현한다.&lt;br /&gt;&lt;br /&gt;그러나 자바스크립트 런타임을 고유하게 만드는 것은 자바스크립트 API만이 아니다. 이는 또한 그들이 자바스크립트 엔진을 사용하는 방식이기도 하다.&lt;br /&gt;&lt;br /&gt;예를 들어 런타임이 자바스크립트 실행과 다른 작업 수행 사이를 전환할 수 있도록 하는 프로세스인 Event Loop는 ECMA-262에 정의되어 있지 않으므로 어떤 자바스크립트 엔진에서도 구현되지 않는다. 자체 Event Loop를 구현하는 것은 각 자바스크립트 런타임에 달려있다. 웹 브라우저에는 HTML에 정의된 Event Loop 버전이 있지만 Node.js와 같은 서버 측 런타임은 자체적으로 정의한다. 자바스크립트 런타임에는 Event Loop가 필요하지 않지만 범용 자바스크립트 런타임에는 Event Loop가 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 엔진과 자바스크립트 런타임은 서로 관련되어 있지만 같은 건 아니다. 자바스크립트 엔진은 ECMA-262 표준에 정의된 대로 ECMAScript를 구현한다. ECMA-262는 입력 또는 출력에 대한 어포던스 없이 자바스크립트의 핵심 기능을 정의한다. 자바스크립트 런타임은 자바스크립트 엔진을 내장하고 런타임에 필요한 다른 모든 것과 함께 입력 및 출력을 위한 추가 기능으로 이를 강화하는 ECMAScript 호스트이다. 추가 기능에는 웹 브라우저의 DOM 또는 서버 측 런타임의 파일 시스템 액세스가 포함될 수 있다. 런타임은 다른 표준을 따를 의무가 없으며 필요에 따라 자체 API를 정의할 수 있다. 이것이 바로 Node.js, Deno 및 Bun이 모두 다른 파일 시스템 API를 갖는 이유이다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;원문 및 참고&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://humanwhocodes.com/blog/2024/03/javascript-engines-runtimes/&quot; target=&quot;_self&quot;&gt;&lt;span&gt;https://humanwhocodes.com/blog/2024/03/javascript-engines-runtimes/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://html.spec.whatwg.org/multipage/webappapis.html#event-loops&quot; target=&quot;_self&quot;&gt;&lt;span&gt;HTML Living Standard - Event Loops&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://nodejs.org/en/learn/asynchronous-work/event-loop-timers-and-nexttick#what-is-the-event-loop&quot; target=&quot;_self&quot;&gt;&lt;span&gt;Node.js - Event Loop, Timers, and process.nextTick()&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>자바스크립트</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/256</guid>
      <comments>https://donggov.tistory.com/256#entry256comment</comments>
      <pubDate>Sat, 6 Apr 2024 23:00:48 +0900</pubDate>
    </item>
    <item>
      <title>제주 삼양 맛집 - 갈치국 벌랑포구</title>
      <link>https://donggov.tistory.com/255</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;동네 아저씨들이 가는 로컬 맛집&lt;/b&gt;&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;사실 동네 아저씨들이 가면 게임 끝이다.&lt;br&gt;낮술 마시는 아저씨들 연륜 무시 못함.&lt;br&gt;&lt;br&gt;대표 메뉴는 갈치국이다. 갈치국이 육지에서는 흔한 메뉴가 아니다. 그리고 호불호가 크게 갈리는 음식이니 처음 먹는 사람은 가기 전에 어느 정도 감안하고 가야 한다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EVmut/btsGpX9OQEf/qafsEkoELUncmLJzX0T1R0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EVmut/btsGpX9OQEf/qafsEkoELUncmLJzX0T1R0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EVmut/btsGpX9OQEf/qafsEkoELUncmLJzX0T1R0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEVmut%2FbtsGpX9OQEf%2FqafsEkoELUncmLJzX0T1R0%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tggCl/btsGrg1ktST/YBH5ZNWy9foiji2HUXh5f1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tggCl/btsGrg1ktST/YBH5ZNWy9foiji2HUXh5f1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tggCl/btsGrg1ktST/YBH5ZNWy9foiji2HUXh5f1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtggCl%2FbtsGrg1ktST%2FYBH5ZNWy9foiji2HUXh5f1%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;밑반찬 깔끔하게 나옴.&lt;br&gt;배추에 찍은 건 갈치젓이다. 이거 엄청 맛있음. 갈치젓은 자리젓보다 조금 더 연하다. 자리젓 좋아하는 사람은 갈치젓도 좋아할 것임. 나는 리필해서 먹었다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eXL1AE/btsGpNl8pae/ZE89Hd1hgculqLsIHjzIG1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eXL1AE/btsGpNl8pae/ZE89Hd1hgculqLsIHjzIG1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eXL1AE/btsGpNl8pae/ZE89Hd1hgculqLsIHjzIG1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeXL1AE%2FbtsGpNl8pae%2FZE89Hd1hgculqLsIHjzIG1%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFS4xD/btsGpM8BAfJ/2lSmsGfCvpXVe0hLh6I8qk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFS4xD/btsGpM8BAfJ/2lSmsGfCvpXVe0hLh6I8qk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFS4xD/btsGpM8BAfJ/2lSmsGfCvpXVe0hLh6I8qk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFS4xD%2FbtsGpM8BAfJ%2F2lSmsGfCvpXVe0hLh6I8qk%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKHxcV/btsGq1XEu5x/2ftsenJTIgCxqVIVohiH51/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKHxcV/btsGq1XEu5x/2ftsenJTIgCxqVIVohiH51/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKHxcV/btsGq1XEu5x/2ftsenJTIgCxqVIVohiH51/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKHxcV%2FbtsGq1XEu5x%2F2ftsenJTIgCxqVIVohiH51%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;대망의 갈치국.&lt;br&gt;양 많음. 갈치 4-5 덩어리 정도 들어있음&lt;br&gt;맑은 지리탕 생각하면 된다.&lt;br&gt;차 몰고 오면 손해&lt;/p&gt;</description>
      <category>취미</category>
      <category>맛집</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/255</guid>
      <comments>https://donggov.tistory.com/255#entry255comment</comments>
      <pubDate>Fri, 5 Apr 2024 22:10:59 +0900</pubDate>
    </item>
    <item>
      <title>알테오젠 대주주 매도는 악재가 맞다</title>
      <link>https://donggov.tistory.com/254</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대주주 매도는 악재고 희망회로는 독이다.&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;블록딜 했으니 오히려 유동시총이 늘어나서 좋은 거다.&lt;br&gt;지금 정리해야 나중에 정리할 때 주주들에게 피해가 덜 온다. 등&lt;br&gt;찬티들은 이 꽉 깨물고 대주주 매도가 아니라는 반응을 보인다.&lt;br&gt;인간은 기본적으로 악하다. 난 맹자보다는 순자 편&lt;br&gt;남의 이득보다는 본인의 이득을 챙기는 게 인간의 본성이다. 특히 자본주의 꽃인 주식판에서 주주를 위한 매도다? 찬티들아 옆집 개를 믿어라.&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYjWF1/btsGkS0xQet/KkGkf6ukL3vkpp32XsysM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYjWF1/btsGkS0xQet/KkGkf6ukL3vkpp32XsysM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYjWF1/btsGkS0xQet/KkGkf6ukL3vkpp32XsysM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYjWF1%2FbtsGkS0xQet%2FKkGkf6ukL3vkpp32XsysM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;690&quot; height=&quot;608&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차트는 거짓말을 하지 않는다.&lt;br&gt;금리 인하가 미뤄질 수 있어서 그랬다는 등 하락에 대해 다른 이유를 갖다 붙이지만&lt;br&gt;하락의 가장 큰 이유는 대주주 매도다. 회사의 사정을 가장 잘 알고 있는 대주주의 매도는 무엇을 의미할까?&lt;br&gt;&lt;br&gt;&lt;b&gt;투심박살&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;매도한 대주주는 2대 주주이다. 주주총회 당일 밤에 3천억을 매도했다.&lt;br&gt;&lt;span style=&quot;color: #333333;&quot;&gt;주주총회에서 한마디 말도 없었다.&lt;/span&gt;&lt;br&gt;가격도 10% 정도 할인해서 정리했다.&lt;br&gt;그리곤 직원들 스톡옵션가를 21만 원 정도로 측정했다.&lt;br&gt;&amp;nbsp;&lt;br&gt;왜 지금이었어야 했을까?&lt;br&gt;오른 다음에 정리하면 오히려 주주들에게 부담이 될까 봐?&lt;br&gt;전혀 아니다. 올해 7월에 어떤 이벤트가 있는지 보자.&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FqCKu/btsGkvdq2kJ/yXo7TzCcyuk7JyheCBfqIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FqCKu/btsGkvdq2kJ/yXo7TzCcyuk7JyheCBfqIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FqCKu/btsGkvdq2kJ/yXo7TzCcyuk7JyheCBfqIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFqCKu%2FbtsGkvdq2kJ%2FyXo7TzCcyuk7JyheCBfqIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;269&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;대주주가 블록딜을 할 경우, 사전 공시하는 법안이 &lt;span style=&quot;color: #333333;&quot;&gt;국회 본회의를 통과했다.&lt;/span&gt;&lt;br&gt;이거 통과되면 먹튀 하기 힘들다.&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;물론 이후 주가가 어떻게 될지 모른다.&lt;br&gt;매도 가격보다 오를 수도 있지만 그건 결과론적인 이야기고 대주주 매도는 악재가 맞다.&lt;br&gt;&amp;nbsp;&lt;br&gt;알테오젠에 찬티 많다. 이 사실을 이 꽉 깨물고 부정해도 본인에게 좋을 건 없다.&lt;br&gt;물론 나도 주주로써 대주주 고점 매도 통수는 꽤 아프다.&lt;br&gt;하지만 대주주도 사람이다. 그도 수익실현을 하고 싶지 않았을까?&lt;br&gt;&lt;br&gt;기다려라 한발 더 남았다.&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>알테오젠</category>
      <category>재테크</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/254</guid>
      <comments>https://donggov.tistory.com/254#entry254comment</comments>
      <pubDate>Wed, 3 Apr 2024 06:04:26 +0900</pubDate>
    </item>
    <item>
      <title>나의 관상학</title>
      <link>https://donggov.tistory.com/253</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;나이가 들면 본인 얼굴에 책임을 져야 한다.&lt;/b&gt;&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;관상은 나이가 들면서 점점 변한다. 그래서 살아온 흔적이 그 사람의 얼굴에 나타나게 된다. 그래서 나이가 들면 본인 얼굴에 책임을 져야 하고, 관상은 과학이다라는 말이 그래서 나온 것일 수 있다.&lt;br&gt;&lt;br&gt;얼굴은 사회에서 자신을 나타내는 플래카드와 같다. 얼굴은 마 음을 표현하는 거울이고, 사람과 대화하고 소동하는 도구이고, 자신의 아이덴티티를 상징하는 존재다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1819&quot; data-origin-height=&quot;1819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C8vqo/btsGfgCf6mh/lSwvRgD4CuFyBMeraaDwVK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C8vqo/btsGfgCf6mh/lSwvRgD4CuFyBMeraaDwVK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C8vqo/btsGfgCf6mh/lSwvRgD4CuFyBMeraaDwVK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC8vqo%2FbtsGfgCf6mh%2FlSwvRgD4CuFyBMeraaDwVK%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;1819&quot; height=&quot;1819&quot; data-origin-width=&quot;1819&quot; data-origin-height=&quot;1819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;이 책에서는 관상학이 과거에 어떻게 사용되었는지 이야기하는 내용 반, 대략적인 관상학 반으로 구성되어 있다.&lt;br&gt;&lt;br&gt;이 책에서는 특히 미즈노 남보쿠의 말을 많이 인용하고 있다. 미즈노 남보쿠는 일본인으로 관상학의 아버지라 불리는 인물이다.&lt;br&gt;&lt;br&gt;미즈노 남보쿠는 사람의 상을 볼 때는 가장 먼저 그 사람의 일 상생활을 통해 전체적인 모습을 살피는 게 바람직하다고 말한다. 그 뒤에 기력의 강약을 살펴보고, 다음으로 충효에 대한 생각, 남을 배려하거나 보살피는 마음을 살피라는 것이다.&lt;br&gt;&lt;br&gt;다음으로 그 사람이 하는 일이 처음과 끝이 목적한 대로 한결같이 추진되는지, 또 그 사람이 보고 듣는 것과 말과 행동은 어떤지 관찰한다. 마지막으로 골격, 혈색, 연령을 살핀 후 종합적 좋고 나쁨을 판단하는 것이 올바른 관상법이라고 말한다.&lt;br&gt;&lt;br&gt;소설 읽는 느낌으로 읽어서 관상 보는 방법이 기억에 거의 남지 않는다. 관상은 암기를 기반으로 다양한 관상을 보면서 경험을 쌓는 게 중요한 것 같다. 내 관상, 가족 관상으로 시작해서 나만의 분석력을 갖춰보자.&lt;/p&gt;</description>
      <category>취미</category>
      <category>관상</category>
      <category>책</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/253</guid>
      <comments>https://donggov.tistory.com/253#entry253comment</comments>
      <pubDate>Tue, 2 Apr 2024 05:50:22 +0900</pubDate>
    </item>
    <item>
      <title>미국 주식 포트폴리오 정비 - 에볼루스, 페이팔 신규 편입</title>
      <link>https://donggov.tistory.com/252</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;미국 주식 포트폴리오를 정비했다.&lt;br /&gt;작년 말에 IVV와 QQQ를 다 정리했고, 이번에는 개별주 들로만 포트폴리오를 구성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NcMJX/btsGgdqn3Dm/fBm1zGQuoXam9s0rmUlAMk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NcMJX/btsGgdqn3Dm/fBm1zGQuoXam9s0rmUlAMk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NcMJX/btsGgdqn3Dm/fBm1zGQuoXam9s0rmUlAMk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNcMJX%2FbtsGgdqn3Dm%2FfBm1zGQuoXam9s0rmUlAMk%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;400&quot; height=&quot;1278&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 6개 종목이다. 애플, 인텔, 엔비디아, 디즈니, 에볼루스, 페이팔&lt;br /&gt;아마 상반기까지는 변동없이 이 6개 종목으로만 이어갈 듯싶다.&lt;br /&gt;달러가 좀 남아있는데 변동성 보면서 추매를 좀 할 생각&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;애플&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s1eRF/btsGdZf5vdt/VUebFZf01KAbuwQyzreuGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s1eRF/btsGdZf5vdt/VUebFZf01KAbuwQyzreuGK/img.jpg&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1915&quot; data-is-animation=&quot;false&quot; width=&quot;400&quot; height=&quot;655&quot; style=&quot;width: 49.5088%; margin-right: 10px;&quot; data-widthpercent=&quot;50.09&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s1eRF/btsGdZf5vdt/VUebFZf01KAbuwQyzreuGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs1eRF%2FbtsGdZf5vdt%2FVUebFZf01KAbuwQyzreuGK%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;1170&quot; height=&quot;1915&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU7B3i/btsGexiWNR1/YAf99B83zsekgoNk4v1nv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU7B3i/btsGexiWNR1/YAf99B83zsekgoNk4v1nv1/img.jpg&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1922&quot; data-is-animation=&quot;false&quot; width=&quot;400&quot; height=&quot;657&quot; style=&quot;width: 49.3284%;&quot; data-widthpercent=&quot;49.91&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU7B3i/btsGexiWNR1/YAf99B83zsekgoNk4v1nv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU7B3i%2FbtsGexiWNR1%2FYAf99B83zsekgoNk4v1nv1%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;1170&quot; height=&quot;1922&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플은 죽었다, AI 안 해서 말했다, 더 이상 혁신이 없다 말이 많은데 애플은 그냥 그런 거에 휘둘리지 말고 누를 때 조금씩 매수하면 된다. 애플은 그냥 갈길 잘 가는 놈임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인텔&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1916&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yB2ic/btsGfLU45CE/9NaMhOf31Ri1dizX3wTzs1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yB2ic/btsGfLU45CE/9NaMhOf31Ri1dizX3wTzs1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yB2ic/btsGfLU45CE/9NaMhOf31Ri1dizX3wTzs1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyB2ic%2FbtsGfLU45CE%2F9NaMhOf31Ri1dizX3wTzs1%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;400&quot; height=&quot;1916&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1916&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 많이 매수함. 이게 내가 생각하는 눌림이 맞길 바란다. 바이든 영감만 아니었어도 조정이 이렇게 길거 같진 않은데 정치가 역시 가장 큰 리스트다. 현재 수익률 8%&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;엔비디아&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수익률 200% 넘었는데 팔기 싫은 녀석. 추세가 꺾일 기세가 안 보인다. 1000 달러 넘기면 1200-1300까지는 갈듯.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;디즈니&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TH7sG/btsGfy2A4RG/KZgmaQL8Rxc6AV16knIuT1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TH7sG/btsGfy2A4RG/KZgmaQL8Rxc6AV16knIuT1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TH7sG/btsGfy2A4RG/KZgmaQL8Rxc6AV16knIuT1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTH7sG%2FbtsGfy2A4RG%2FKZgmaQL8Rxc6AV16knIuT1%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;400&quot; height=&quot;1914&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추세 전환했다고 느껴짐. 3월 초에 진입했는데 잘 가고 있다. 현재 수익률 15%&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;에볼루스&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1921&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzqEJG/btsGey3egDC/wPJtn6DukrKAZkB54CKdoK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzqEJG/btsGey3egDC/wPJtn6DukrKAZkB54CKdoK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzqEJG/btsGey3egDC/wPJtn6DukrKAZkB54CKdoK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzqEJG%2FbtsGey3egDC%2FwPJtn6DukrKAZkB54CKdoK%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;400&quot; height=&quot;1921&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1921&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;페이팔&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ueojr/btsGe7xpmkj/DRFuuukdY6SpnBUTSjxht0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ueojr/btsGe7xpmkj/DRFuuukdY6SpnBUTSjxht0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ueojr/btsGe7xpmkj/DRFuuukdY6SpnBUTSjxht0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fueojr%2FbtsGe7xpmkj%2FDRFuuukdY6SpnBUTSjxht0%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;400&quot; height=&quot;1922&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1922&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;살벌한 차트다. 고점에서 80% 정도 빠짐. 이제 스테이블 코인 관련 사업을 시작했다. 스테이블 코인을 기점으로 턴 어라운드하길 기대하며 포트에 편입했다. 현재 수익률 3%인데 역시 의미없는 수치다.&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>디즈니</category>
      <category>애플</category>
      <category>에볼루스</category>
      <category>엔비디아</category>
      <category>인텔</category>
      <category>재테크</category>
      <category>주식</category>
      <category>페이할</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/252</guid>
      <comments>https://donggov.tistory.com/252#entry252comment</comments>
      <pubDate>Sun, 31 Mar 2024 23:21:45 +0900</pubDate>
    </item>
    <item>
      <title>알트코인 오픈북 시험 1개월 현황</title>
      <link>https://donggov.tistory.com/251</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2월 말부터 알트코인에 투기하기 시작했으니까 투기한 지 한 달 정도 됐네.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;한 달 동안 수익률은 60% 정도.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;생각보다 불장이 아니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ2liZ/btsGfJCMjog/i5koOH1QUWGz7kcUneGcb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ2liZ/btsGfJCMjog/i5koOH1QUWGz7kcUneGcb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ2liZ/btsGfJCMjog/i5koOH1QUWGz7kcUneGcb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ2liZ%2FbtsGfJCMjog%2Fi5koOH1QUWGz7kcUneGcb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;305&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m5jFo/btsGeOYViDV/SRAcMs3rJtLPIEYB4kpJN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m5jFo/btsGeOYViDV/SRAcMs3rJtLPIEYB4kpJN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m5jFo/btsGeOYViDV/SRAcMs3rJtLPIEYB4kpJN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5jFo%2FbtsGeOYViDV%2FSRAcMs3rJtLPIEYB4kpJN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;189&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;주피터로 크게 수익을 내고 일부 익절해서 월드코인을 포트에 편입했다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;월드코인은 차트를 보니 AI 메타 순환메가 한번 더 올경우 50%는 더 가지 않을까 싶어서 편입.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;물론 그때가 언제일지는 모르겠지만.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;비중이 가장 큰 스타크넷이 안 간다. 이더리움 2레이어 계열이 안 가는 거 같은데 차트상으로는 아직 잠재력이 보임.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;4월 내로는 한번 쏴주겠지?&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 지금 비중이 스타크넷 40, 주피터 35, 월드 25 정도.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;4월내로 원금 2배 만들어보자.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/251</guid>
      <comments>https://donggov.tistory.com/251#entry251comment</comments>
      <pubDate>Sun, 31 Mar 2024 14:03:18 +0900</pubDate>
    </item>
    <item>
      <title>인텔이 가야할 길을 못가고 있다.</title>
      <link>https://donggov.tistory.com/250</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;바이든이 다 된 밥에 재를 뿌리는 중&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정치가 잘 가고 있는 차트 모습을 망쳐버린 좋은 예다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/so3Vz/btsFZIkmyoX/f6HhJrp9g2uFH0eHA0qTTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/so3Vz/btsFZIkmyoX/f6HhJrp9g2uFH0eHA0qTTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/so3Vz/btsFZIkmyoX/f6HhJrp9g2uFH0eHA0qTTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fso3Vz%2FbtsFZIkmyoX%2Ff6HhJrp9g2uFH0eHA0qTTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1281&quot; height=&quot;730&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주봉을 보면 거대자본이 들어온 형태&lt;br /&gt;본격적인 상승의 시작을 알리는 모습이다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9aZoJ/btsFZBFHvHL/NaKic6iwrfrJnsQT3RfZV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9aZoJ/btsFZBFHvHL/NaKic6iwrfrJnsQT3RfZV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9aZoJ/btsFZBFHvHL/NaKic6iwrfrJnsQT3RfZV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9aZoJ%2FbtsFZBFHvHL%2FNaKic6iwrfrJnsQT3RfZV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1267&quot; height=&quot;730&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1/26에 갭하락으로 크게 흔듦&lt;br /&gt;반등, 떨구고, 반등, 떨구고 진저리나게 흔드는 모습이다.&lt;br /&gt;그러나 이 구간이 수량 모으기 아주 좋은 구간. 2-3주 정도 수량을 모으는 구간이라 생각하고 모으고 있는데, 갑자기 바이든 영감이 재를 뿌리기 시작함&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uwZz0/btsFW4bnq4r/s18kdco7t6X0R5X3QedjmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uwZz0/btsFW4bnq4r/s18kdco7t6X0R5X3QedjmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uwZz0/btsFW4bnq4r/s18kdco7t6X0R5X3QedjmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuwZz0%2FbtsFW4bnq4r%2Fs18kdco7t6X0R5X3QedjmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;959&quot; height=&quot;115&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3/15에 갑자기 뜬금없이 인텔 반도체 보조금 발표 예고를 한다.&lt;br /&gt;왜?&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M9D5T/btsF032h0KN/a2yyDaBm1A6JJwIshoxbsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M9D5T/btsF032h0KN/a2yyDaBm1A6JJwIshoxbsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M9D5T/btsF032h0KN/a2yyDaBm1A6JJwIshoxbsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM9D5T%2FbtsF032h0KN%2Fa2yyDaBm1A6JJwIshoxbsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1009&quot; height=&quot;111&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nRB0g/btsFYDxeAg6/bOekAMk6EPdOvAP5LngkH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nRB0g/btsFYDxeAg6/bOekAMk6EPdOvAP5LngkH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nRB0g/btsFYDxeAg6/bOekAMk6EPdOvAP5LngkH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnRB0g%2FbtsFYDxeAg6%2FbOekAMk6EPdOvAP5LngkH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;118&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이든은 지금 똥줄을 타고 있다.&lt;br /&gt;그래서 애꿎은 인텔을 걸고 넘어진다. 바이든 덕분에 인텔은 갈길을 못가고 있다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLQJJA/btsFZGNDrRI/vWC5Iif0f5LHwWhiqkzSN1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLQJJA/btsFZGNDrRI/vWC5Iif0f5LHwWhiqkzSN1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLQJJA/btsFZGNDrRI/vWC5Iif0f5LHwWhiqkzSN1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLQJJA%2FbtsFZGNDrRI%2FvWC5Iif0f5LHwWhiqkzSN1%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;1170&quot; height=&quot;241&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;241&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>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/250</guid>
      <comments>https://donggov.tistory.com/250#entry250comment</comments>
      <pubDate>Fri, 22 Mar 2024 06:37:56 +0900</pubDate>
    </item>
    <item>
      <title>율촌화학 신규 진입</title>
      <link>https://donggov.tistory.com/249</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;포트폴리오에 2차전지 관련주로 율촌화학 추가&lt;br /&gt;&lt;br /&gt;농심 계열산데 원래 라면 포장지 만드는 회사에서 2차전지 쪽으로 진출함&lt;br /&gt;2차전지 쪽에서 파우치 필름 쪽인데 이게 포장용지 만드는 거랑 비슷해서 이쪽으로 사업영역을 넓히게 됨. 비슷하게 참치캔 만드는 동원시스템즈도 2차전지 진출함.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7UigC/btsFYDxesQ1/u4MaNujCgNvkfojtKKqBZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7UigC/btsFYDxesQ1/u4MaNujCgNvkfojtKKqBZk/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;715&quot; data-is-animation=&quot;false&quot; width=&quot;400&quot; height=&quot;716&quot; data-widthpercent=&quot;50&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7UigC/btsFYDxesQ1/u4MaNujCgNvkfojtKKqBZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7UigC%2FbtsFYDxesQ1%2Fu4MaNujCgNvkfojtKKqBZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;715&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTTO1D/btsFZCxPV6N/gINTiH6CdwyfzMcrLBnccK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTTO1D/btsFZCxPV6N/gINTiH6CdwyfzMcrLBnccK/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;715&quot; data-is-animation=&quot;false&quot; width=&quot;400&quot; height=&quot;715&quot; data-widthpercent=&quot;50&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTTO1D/btsFZCxPV6N/gINTiH6CdwyfzMcrLBnccK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTTO1D%2FbtsFZCxPV6N%2FgINTiH6CdwyfzMcrLBnccK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;715&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일봉이랑 주봉 차트를 보면 거래량이 아주 씨가 말라있다. 며칠동안 주포가 있나 하고 미끼를 던져보는데 반응이 없다.&lt;br /&gt;즉, 아예 소외주라는 얘기. 단기 스윙 목적으로 들어왔는데 제법 괜찮은 회사라 그냥 비중 좀 늘려서 3~6개월 지켜보기로 결정.&lt;br /&gt;율촌화학 특징이 IR에서 일을 거의 안한다. 너무 폐쇄적임. 주가 올릴 생각이 아예 없는 회사로 보임.&lt;br /&gt;회사 주가 부양에 소극적인 이유는 크게 두 가지가 있는데,&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째는 상속 관련 문제 때문에 주가를 올리면 안 되는 경우이다. 이런 케이스는 오히려 주가를 내려야 함.&lt;br /&gt;두 번째는 쩐주가 준비 중일 경우. 주가 올릴 때 상승분을 먹을 쩐주가 아직 준비가 덜됐을 경우다.&lt;br /&gt;상속 문제는 없는 거 같고 쩐주가 아직 올릴 준비가 덜됐나 싶음. 큰 재료를 숨기고 있다가 한번 올릴 때 터뜨리면서 쭉쭉 가려고 하는 걸 수도&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cut4FL/btsF0tUriQ0/f8fVNtWk2tqxe05ubMG4o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cut4FL/btsF0tUriQ0/f8fVNtWk2tqxe05ubMG4o0/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;589&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; style=&quot;width: 54.1595%; margin-right: 10px;&quot; data-widthpercent=&quot;54.8&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cut4FL/btsF0tUriQ0/f8fVNtWk2tqxe05ubMG4o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcut4FL%2FbtsF0tUriQ0%2Ff8fVNtWk2tqxe05ubMG4o0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;589&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOMyB/btsF0mHSI79/1UZhVWWXGj7DJCcTvum75K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOMyB/btsF0mHSI79/1UZhVWWXGj7DJCcTvum75K/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; style=&quot;width: 44.6778%;&quot; data-widthpercent=&quot;45.2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOMyB/btsF0mHSI79/1UZhVWWXGj7DJCcTvum75K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOMyB%2FbtsF0mHSI79%2F1UZhVWWXGj7DJCcTvum75K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;같이 봐야 하는 GM, LG엔솔.&lt;br /&gt;일단 목표는 상반기 내에 30~50% 수익&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>율촌화학</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/249</guid>
      <comments>https://donggov.tistory.com/249#entry249comment</comments>
      <pubDate>Thu, 21 Mar 2024 17:40:49 +0900</pubDate>
    </item>
    <item>
      <title>지금은 오픈북 시험 중 03 - 2.5류 포지션</title>
      <link>https://donggov.tistory.com/248</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;힘들때 존버하는건 이류다&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;조정이 왔을때&lt;br /&gt;매도하는건 삼류&lt;br /&gt;존버하는건 이류&lt;br /&gt;추매하는자가 일류다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pUimQ/btsFQUL5FkT/u8KCDkK24lRJkuNkc3wYIk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pUimQ/btsFQUL5FkT/u8KCDkK24lRJkuNkc3wYIk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pUimQ/btsFQUL5FkT/u8KCDkK24lRJkuNkc3wYIk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpUimQ%2FbtsFQUL5FkT%2Fu8KCDkK24lRJkuNkc3wYIk%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;400&quot; height=&quot;681&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;936&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;나는 이류다.&lt;br /&gt;이번 조정에서 나는 존버했다.&lt;br /&gt;이게 가짜 조정이든 조정석이든 관심없다&lt;br /&gt;내 관점은 변하지 않았기 때문에 존버가 나의 선택&lt;br /&gt;&lt;br /&gt;그 결과&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXVpSy/btsFRAGnX7K/aYkcgwCLZDL6j5HKaMkA30/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXVpSy/btsFRAGnX7K/aYkcgwCLZDL6j5HKaMkA30/img.jpg&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1999&quot; data-is-animation=&quot;false&quot; width=&quot;400&quot; height=&quot;683&quot; style=&quot;width: 49.7988%; margin-right: 10px;&quot; data-widthpercent=&quot;50.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXVpSy/btsFRAGnX7K/aYkcgwCLZDL6j5HKaMkA30/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXVpSy%2FbtsFRAGnX7K%2FaYkcgwCLZDL6j5HKaMkA30%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;1170&quot; height=&quot;1999&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hvjgy/btsFPekJNuq/4kxm7ymDe9BuRw2OSsdnI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hvjgy/btsFPekJNuq/4kxm7ymDe9BuRw2OSsdnI1/img.jpg&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2030&quot; data-is-animation=&quot;false&quot; width=&quot;400&quot; height=&quot;694&quot; style=&quot;width: 49.0384%;&quot; data-widthpercent=&quot;49.62&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hvjgy/btsFPekJNuq/4kxm7ymDe9BuRw2OSsdnI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHvjgy%2FbtsFPekJNuq%2F4kxm7ymDe9BuRw2OSsdnI1%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;1170&quot; height=&quot;2030&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFuueL/btsFR23IBXZ/dl81b4MwfogL4HpXbS8haK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFuueL/btsFR23IBXZ/dl81b4MwfogL4HpXbS8haK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFuueL/btsFR23IBXZ/dl81b4MwfogL4HpXbS8haK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFuueL%2FbtsFR23IBXZ%2Fdl81b4MwfogL4HpXbS8haK%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;400&quot; height=&quot;493&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;주피터 133%&lt;br /&gt;스타크넷 9% 수익중&lt;br /&gt;처음에 스타크넷, 주피터 비중 2:1에서 3:2로 조정했는데, 비중 조정해서 수익를 조금 더 낼 수 있었다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyxemW/btsFPcf9LVj/1552T8QvHC4NkLf7ANWYT1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyxemW/btsFPcf9LVj/1552T8QvHC4NkLf7ANWYT1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyxemW/btsFPcf9LVj/1552T8QvHC4NkLf7ANWYT1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyxemW%2FbtsFPcf9LVj%2F1552T8QvHC4NkLf7ANWYT1%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;400&quot; height=&quot;284&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;831&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;주피터 50% 수익 실현함&lt;br /&gt;어제에 조정이 한번이 아닐꺼 같음&lt;br /&gt;2.5류 포지션 잡고 다시 2류로 복귀 예정&lt;br /&gt;&lt;br /&gt;이번 수익실현으로 코인도 주식과 비슷하다는걸 배웠다.&lt;br /&gt;처음 시드에 300%까지 불리는게 이번 장 목표&lt;br /&gt;수익 실현한 현금으로 리밸런싱 혹은 리포트폴리오를 어떻게 할지 재밌는 결정을 할때다.&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>오픈북</category>
      <category>재테크</category>
      <category>코인</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/248</guid>
      <comments>https://donggov.tistory.com/248#entry248comment</comments>
      <pubDate>Sat, 16 Mar 2024 23:28:33 +0900</pubDate>
    </item>
    <item>
      <title>제주 삼양 맛집 - 낙지볶음 정낭집</title>
      <link>https://donggov.tistory.com/247</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;여기 낙지볶음 진짜 꼭 먹어야된다. 두번 드세요.&lt;/b&gt;&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;1인분에 1.2만원. 2인 이상&lt;br&gt;우린 어른셋가서 3인분 시켰는데 겨우 다 먹음&lt;br&gt;아, 배불러서 소면은 건들지도 못함&lt;br&gt;양 충분히 많음&lt;br&gt;낙지 엄청 포동포동&lt;br&gt;맵기는 보통, 매움 선택 가능인데 내가 매운걸 못먹어서 보통으로 시킴. 맛있음&lt;br&gt;된장찌개도 굉장히 맛있음&lt;br&gt;공기밥은 포함&lt;br&gt;몇몇 반찬은 셀프&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DJz2O/btsFOCy80kG/cRCgEckPxAoSQpFqbnNCHk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DJz2O/btsFOCy80kG/cRCgEckPxAoSQpFqbnNCHk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DJz2O/btsFOCy80kG/cRCgEckPxAoSQpFqbnNCHk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDJz2O%2FbtsFOCy80kG%2FcRCgEckPxAoSQpFqbnNCHk%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OcryC/btsFPoUK5hS/6kWzrPk9gMpuYeTlzRvU9k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OcryC/btsFPoUK5hS/6kWzrPk9gMpuYeTlzRvU9k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OcryC/btsFPoUK5hS/6kWzrPk9gMpuYeTlzRvU9k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOcryC%2FbtsFPoUK5hS%2F6kWzrPk9gMpuYeTlzRvU9k%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;바다 근처라 먹고 바다 산책 가능&lt;br&gt;삼양해수욕장 바로 앞&lt;br&gt;식당 앞에 공영주차장있음&lt;br&gt;거기말고 그냥 길에 차 세울곳 많아서 주차 걱정X&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7rIXn/btsFQWpCZVR/KDkWIhrzXKzN319VFkars0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7rIXn/btsFQWpCZVR/KDkWIhrzXKzN319VFkars0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7rIXn/btsFQWpCZVR/KDkWIhrzXKzN319VFkars0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7rIXn%2FbtsFQWpCZVR%2FKDkWIhrzXKzN319VFkars0%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;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBxoqc/btsFQexv4eV/CDEeAR36sbOnlgjLK6DRAK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBxoqc/btsFQexv4eV/CDEeAR36sbOnlgjLK6DRAK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBxoqc/btsFQexv4eV/CDEeAR36sbOnlgjLK6DRAK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBxoqc%2FbtsFQexv4eV%2FCDEeAR36sbOnlgjLK6DRAK%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;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;[네이버 지도]&lt;br&gt;제주정낭집&lt;br&gt;제주 제주시 지석11길 6 제주정낭집&lt;br&gt;&lt;a href=&quot;https://naver.me/5lxmAiSV&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://naver.me/5lxmAiSV&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;네이버 지도&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;제주정낭집&quot; data-og-host=&quot;map.naver.com&quot; data-og-source-url=&quot;https://map.naver.com/p/entry/place/1562357796&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bF11ay/hyVBKM3pNz/LPGZQlrqSURkvOktIJMpa1/img.jpg?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256&quot; data-og-url=&quot;https://map.naver.com/p/entry/place/1562357796&quot;&gt;&lt;a href=&quot;https://map.naver.com/p/entry/place/1562357796&quot; target=&quot;_blank&quot; data-source-url=&quot;https://map.naver.com/p/entry/place/1562357796&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bF11ay/hyVBKM3pNz/LPGZQlrqSURkvOktIJMpa1/img.jpg?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;네이버 지도&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;제주정낭집&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;map.naver.com&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>정보</category>
      <category>맛집</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/247</guid>
      <comments>https://donggov.tistory.com/247#entry247comment</comments>
      <pubDate>Sat, 16 Mar 2024 23:05:35 +0900</pubDate>
    </item>
    <item>
      <title>지금은 오픈북 시험 중 02 - 이게 되네</title>
      <link>https://donggov.tistory.com/246</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;대불장을 기대하며 알트 사놓고 묵혀둔지 열흘 정도 지났다. 지난번 내가 제출한 정답은 이더 혹은 솔라나 관련 코인. 하지만 정답은 동물 밈 코인이었다.&lt;br&gt;저때 개나 고양이 코인 샀으면 수익률 300~400%&lt;br&gt;&lt;br&gt;중간고사 정답은 동물 코인이었고 이제 기말고사 남았다.&lt;br&gt;이더, 솔라나 계열 사놓거 존버해본다.&lt;br&gt;고장난 시계처럼 한번만 맞으면 된다는 전략.&lt;br&gt;그래도 알트 생태계 잘 모르고 주식 차트 보는 관점으로 종목 접근해서 매수하고 이정도면 수익률 나름 선방했다.&lt;br&gt;불장에서 코인은 필승이구나.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uGFdE/btsFCznkLRs/sbdy8ZpKyMiPwKvHAlynw0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uGFdE/btsFCznkLRs/sbdy8ZpKyMiPwKvHAlynw0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uGFdE/btsFCznkLRs/sbdy8ZpKyMiPwKvHAlynw0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuGFdE%2FbtsFCznkLRs%2Fsbdy8ZpKyMiPwKvHAlynw0%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;1170&quot; height=&quot;1468&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;그리고 알트 차트 재밌는게 한국과 미국 차트가 많이 다르다. 김프, 거래 특성도 묻어서 그런거 같다.&lt;br&gt;미국 차트보면 이미 저항 뚫은 모습. 그리고 윗꼬리 매뭏 어떻게 소화하나 싶기도한데 저게 과연 시체일까 하는 생각도 듦. 주식에서도 가끔 보이는 허매수로 인한 윗꼬리 같다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvUus8/btsFA9way7w/5dS2Emij4QZD9t8DBpsxuK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvUus8/btsFA9way7w/5dS2Emij4QZD9t8DBpsxuK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvUus8/btsFA9way7w/5dS2Emij4QZD9t8DBpsxuK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvUus8%2FbtsFA9way7w%2F5dS2Emij4QZD9t8DBpsxuK%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;1170&quot; height=&quot;2391&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2391&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1039&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rsELD/btsFAitrMo9/3Z6kkB6tKB7u7GGRGcpyN0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rsELD/btsFAitrMo9/3Z6kkB6tKB7u7GGRGcpyN0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rsELD/btsFAitrMo9/3Z6kkB6tKB7u7GGRGcpyN0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrsELD%2FbtsFAitrMo9%2F3Z6kkB6tKB7u7GGRGcpyN0%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;1170&quot; height=&quot;1039&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1039&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>재테크</category>
      <category>코인</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/246</guid>
      <comments>https://donggov.tistory.com/246#entry246comment</comments>
      <pubDate>Thu, 7 Mar 2024 05:54:53 +0900</pubDate>
    </item>
    <item>
      <title>알테오젠 불타기 매수 전략</title>
      <link>https://donggov.tistory.com/245</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;알테오젠 시외가 5.98% 상승&lt;br&gt;무슨 일인가 보니 미래에서 시총 31조 예상 리포트가 뜸&lt;br&gt;처음에 리포트 떴을 때 31조를 31만원으로 보고&lt;br&gt;또 대학생 과제 수준의 리포트 떴구나 하고 무시했는데 31만이 아니라 31조였다. 이 리포트 때문에 시외에서 폭등한 걸로 보인다. 내가 너무 안일했다. 그래서 이제 불타기 전략을 다시 세워야 한다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct9D1T/btsFoGaZiI8/Pu0M2H4thP3p3C18c4Dwl1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct9D1T/btsFoGaZiI8/Pu0M2H4thP3p3C18c4Dwl1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct9D1T/btsFoGaZiI8/Pu0M2H4thP3p3C18c4Dwl1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct9D1T%2FbtsFoGaZiI8%2FPu0M2H4thP3p3C18c4Dwl1%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;1170&quot; height=&quot;770&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;지금 알테오젠이 투자 경고 상태인데 투경 해제 조건에는 두 가지가 있다.&lt;br&gt;첫 번째, 5일간 상승률 60%&lt;br&gt;두 번째, 15일간 상승률 100%&lt;br&gt;&lt;br&gt;오늘 거래 마감까지만 저 중에 첫 번째 조건에 베팅을 하고 매수 시점을 노리고 있었다. 그래서 15.6만 정도를 추가 매수 시점으로 생각하고 기다리는 중이었다. 매매정지를 당하지 않고 갈거라 생각했기 때문.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;오늘부로 저 전략은 무효화 됐다.&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;이제 판이 바뀌었기 때문에 전략 수정이 필요하다. 투경 해제 조건 중 5일간 상승률 60%는 사실상 어려워 보인다.&lt;br&gt;지금 와서 생각해 보면 첫 번째 조건을 배제하지 말고 목표 매수량에서 20-30% 정도라도 미리 매수했어야하지 않았나라는 생각이 든다. 너무 확실한 재료라 다른 급등주와 흐름과 다르게 생각했어야 했는데 내가 왜 그랬을까...&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2mdY0/btsFI5tYQ4h/tqdEDpj5Izkq1fFG8qkK80/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2mdY0/btsFI5tYQ4h/tqdEDpj5Izkq1fFG8qkK80/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2mdY0/btsFI5tYQ4h/tqdEDpj5Izkq1fFG8qkK80/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2mdY0%2FbtsFI5tYQ4h%2FtqdEDpj5Izkq1fFG8qkK80%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;1170&quot; height=&quot;1357&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;며칠전 추격 매수할때 화끈하게 할&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;껄&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;암튼 15일간 상승률 100%가 관건이라고 보면&lt;/b&gt;&lt;br&gt;3/13 174,200원&lt;br&gt;3/14 187,800원&lt;br&gt;3/15 210,000원&lt;br&gt;3/18 262,400원&lt;br&gt;3/19 313,200원 미만&lt;br&gt;단, 당일 종가가 15일간 최고가이면 안됨&lt;br&gt;&lt;br&gt;무조건 18~20만 밑에서 담는다고 생각하고 접근하자&lt;br&gt;내일 상한가 간다면 21.7만 정도&lt;br&gt;시초 예상은 6~15% 정도. 177,200~192,300원임&lt;br&gt;&lt;br&gt;내일 목표 매수 비중은 30%&lt;br&gt;정지 피한다고 가정하고 18만 아래에서 20%&lt;br&gt;그냥 정지 먹고 간다는 케이스 고려해서 19만 밑에서 10%&lt;br&gt;만약 마이너스가 뜬다면 50%까지 투입.&lt;br&gt;&lt;br&gt;그나마 정말 다행인 건 1) 수급이 갈 곳이 많다. 코인, 반도체, 초전도체(?)가 아직 살아있다는 것. 2) 코스피, 코스닥이 차트상 저항을 받고 있다는 것. 그리고 마지막으로 3) 한국장은 실적 따위 주가에 쉽게 반영 안 해준다는 것.&lt;br&gt;&lt;br&gt;내일은 이 세 가지만 믿어보자.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>알테오젠</category>
      <category>재테크</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/245</guid>
      <comments>https://donggov.tistory.com/245#entry245comment</comments>
      <pubDate>Tue, 5 Mar 2024 01:10:04 +0900</pubDate>
    </item>
    <item>
      <title>바이오 투자를 위한 기본 &amp;amp; 필수 지식</title>
      <link>https://donggov.tistory.com/244</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;바이오 투자를 한다면 반드시 알아야하는 기본, 필수 지식들&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;IV&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;정맥주사&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;SC&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;피하주사(SC). 짧은 바늘을 사용해 피부와 근육 사이의 조직층에 약물을 주사하는 방법이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이러한 방식으로 투여되는 약물은 일반적으로 정맥에 주사하는 것보다 더 천천히 흡수된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;LO(License Out)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;기술이전&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ADC (Antibody-drug conjugate)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;항체-약물 접합체(Antibody-drug conjugate)로 ADC라고 부른다. 암세포 표면의 특정 표적 항원에 결합하는 항체(Antibody)와 강력한 세포사멸 기능을 갖는 약물(Drug)을 공유 결합 (conjugation)시켜 만든 것으로, 항체의 표적에 대한 선택성과 약물의 강력한 사멸 활성을 이용하여 약물이 암세포에만 선택적으로 작용하게 함으로써 치료효과는 높이고 부작용은 최소화할 수 있는 차세대 항암 약물이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;히알루로니다제 (rHuPH20)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;히알루로니다제(hyaluronidase)는 히알루론산(HA)를 분해하는 효소이다. 히알루로니다제는 체내 널리 분포되어 있는 세포외 기질의 핵심성분인 히알루론산의 분해를 통해 약물의 효율적인 조직 투과 목적으로 사용되어진다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;여기서 히알루론산(HA or Hyaluronan)이란 겔과 같은 물질을 형성해 피하(SC) 공간에서 대량 유체 흐름에 대한 장벽을 제공해 피하(SC)약물의 투여 속도와 분산 및 흡수를 제한하는 물질이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;하이브로자임 (ALT-B4)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;하이브로자임은 인간 히알루로니다제를 기반으로 바이오의약품의 IV를 SC 제형으로 바꿔주는 플랫폼이다. (주)알테오젠이 개발한 Hybrozyme Technology은 원래 효소의 고유한 작용기작을 유지하면서 단백질 구조의 유연성과 안정성을 향상시키는 단백질공학 기술이다. (주)알테오젠은 인간 히알루로니다제(Hyaluronidase)의 하나에 Hybrozyme Technology을 적용하여 효소 활성과 열 안정성이 증가한 신규한 인간 히알루로니다제를 개발하였다. ALT-B4는 피하의 히알루론산을 가수분해하여 정맥주사에서 피하주사 방식으로 약물전달 방식을 변경할 수 있어 5분 이내의 주사시간으로 환자 편의성을 증가시킨다. 또한, 안과 수술에서 마취제의 확산과 미용 분야에서 피부에 주입한 히알루론산 필러를 분해할 때도 사용된다.&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;&lt;span style=&quot;color: #333333;&quot;&gt;참고&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt; : &lt;a style=&quot;color: #333333;&quot; href=&quot;http://www.alteogen.com/technology_5&quot;&gt;http://www.alteogen.com/technology_5&lt;/a&gt;&lt;/span&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;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;바이오베터 (Biobetter)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;바이오베터는기존 신약의 약효나 복용법 등을 개선하는 것. 바이오베터는 오리지널 약물보다 효능, 안전성, 편의성 등 기능성을 개선한 일종의 개량신약이다. 오리지널 보다 약물의 선택성(Selectivity), 안정성(Stability), 면역원성(Immunogenicity), 반감기(Half-life) 등을 개선해 기존 신약과 다른 새로운 신약을 만드는 것.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;따라서 독자적 특허로 보호받을 수 있고 &amp;lsquo;특허 절벽(Patent Cliff)&amp;rsquo;에서도 자유롭다. 무엇보다 효능(Efficacy)과 안전성(Safety) 측면에서 기존 신약보다 더 뛰어난 우월성을 입증해야 하기 때문에 개발에 성공하면 오리지널 보다도 2~3배 비싼 가격으로 판매할 수 있다.&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;&lt;span style=&quot;color: #333333;&quot;&gt;참고&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.hkn24.com/news/articleView.html?idxno=328263&quot;&gt;https://www.hkn24.com/news/articleView.html?idxno=328263&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.etoday.co.kr/news/view/2328961&quot;&gt;https://www.etoday.co.kr/news/view/2328961&lt;/a&gt;&lt;/span&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;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;키트루다 (Keytruda)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;키트루다(Keytruda)는 MSD(머크)가 개발한 면역항암제이다. 키트루다는 상표명이고, 공식적인 의약품 명칭은 MK-3475, 펨브롤리주맙(Pembrolizumab)이라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Pembrolizumab (펨브롤리주맙)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;키트루다의 공식적인 의약품 명칭. 키트루다 참고.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;옵디보&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;옵디보(Opdivo) 또는 니볼루맙(Nivolumab)은 면역관문억제제로서, 우리 몸의 면역계를 활성화 시켜 암 세포를 공격하도록 도움을 주는 면역항암제이다. 옵디보는 세계 최초로 승인 받은 PD-1(programmed cell death-1) 표적 면역항암제다. BMS(브리스톨마이어스퀴브)에서 면역항암제 옵디보를 할로자임의 기술로 피하주사제로 개발하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;물질이전계약 (MTA, Material Transfer Agreement)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;주로 신약 공동연구개발을 위한 기술이전 과정 중에 한 회사가 개발한 물질의 효능과 연구결과 등을 평가하기 위해 상대회사에 물질을 전달하며 맺는 계약이다. 본 계약의 전 단계에서 새로 개발된 물질의 효능 등을 평가하기 위해 물질의 효능에 관심이 있는 당사자가 물질의 소유자에게 물질의 제공을 요청하여 맺어지게 되는 계약인 경우가 많지만, 기술이전 여부와는 상관없이 진행하려는 연구의 재료를 공급받는 차원에서 체결되기도 하는 계약이다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;참고 : &lt;a style=&quot;color: #333333;&quot; href=&quot;https://brunch.co.kr/@nowlee/64&quot;&gt;https://brunch.co.kr/@nowlee/64&lt;/a&gt;&lt;/span&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;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;IRA(인플레이션감축법&lt;/b&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;IRA(인플레이션감축법). 미국 의료 보험 시장에 IRA가 도입되면서 고가의 신약에 대한 약가 인하 요구가 거세다. 미국에서는 원료 물질을 통해 제형을 변경하면 신약으로 인정받기 때문에 IRA를 회피할 수 있다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>정보</category>
      <category>바이오</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/244</guid>
      <comments>https://donggov.tistory.com/244#entry244comment</comments>
      <pubDate>Sun, 3 Mar 2024 16:52:24 +0900</pubDate>
    </item>
    <item>
      <title>지금은 오픈북 시험 중 01</title>
      <link>https://donggov.tistory.com/243</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FWJKr/btsFoDcP39c/B3KKPONUIMXzXOAK9LLbhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FWJKr/btsFoDcP39c/B3KKPONUIMXzXOAK9LLbhk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FWJKr/btsFoDcP39c/B3KKPONUIMXzXOAK9LLbhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFWJKr%2FbtsFoDcP39c%2FB3KKPONUIMXzXOAK9LLbhk%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;1170&quot; height=&quot;1792&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;예상대로 한국 비트코인은 전고점 뚫었다.&lt;br&gt;어제 기관이 한 번에 11%나 올려버림&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIJUfE/btsFiQLAlqc/cXmdjVp9jRDhGe8Q7lDuyk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIJUfE/btsFiQLAlqc/cXmdjVp9jRDhGe8Q7lDuyk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIJUfE/btsFiQLAlqc/cXmdjVp9jRDhGe8Q7lDuyk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIJUfE%2FbtsFiQLAlqc%2FcXmdjVp9jRDhGe8Q7lDuyk%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;1170&quot; height=&quot;1794&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;환율 때문에 한국은 전고점 뚫은 거고 아직 미국은 전고점이 좀 남았다. 당연히 뚫을 걸로 보임&lt;br&gt;&lt;br&gt;개미들이 어버버 하는 사이에 기회 주지 않고 확 올려버려서 탑승하지 못한 개미들이 수두룩.&lt;br&gt;그리고 과거 2번의 공포 때문인지 매수를 쉽게 못하는 거 같음.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;역사는 반복된다고 가정하면 지금 이거 완전 오픈북 시험이다.&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;span style=&quot;color: #333333;&quot;&gt;근데 문제는 정답을 모르겠다&lt;/span&gt;. 과거 2번 모두 코인을 안 했고 지금도 코인에 대해서 잘 몰라서 오픈북인데도 정답을 모르겠어. 미리 공부를 좀 해놨어야 했다...&lt;br&gt;&lt;br&gt;역사를 봤을 때 비트 -&amp;gt; 이더 -&amp;gt; 알트순인 거 같은데, 이번에도 마찬가질까? 여기에 솔라나를 추가하면 비트 -&amp;gt; 이더, 솔라나 -&amp;gt; 알트 일까??&lt;br&gt;&lt;br&gt;비트는 추매 하긴 그렇고 그냥 알트.&lt;br&gt;그래서 내 지금 전략은 코인 관련주와 알트 공략&lt;br&gt;현금 500 투입해서 바로 실전 간다.&lt;br&gt;&lt;br&gt;일단 코인 관련주 어제 종배로 250 투입&lt;br&gt;그리고 알트 2개 골라서 250 투입&lt;br&gt;알트 고른 기준은&lt;br&gt;1. 주식과 비슷한 파동을 일으키는거&lt;br&gt;2. 시체 없는거&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LWPAs/btsFmitJAeQ/WF09d6M48HQOmlbkiMwAh1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LWPAs/btsFmitJAeQ/WF09d6M48HQOmlbkiMwAh1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LWPAs/btsFmitJAeQ/WF09d6M48HQOmlbkiMwAh1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLWPAs%2FbtsFmitJAeQ%2FWF09d6M48HQOmlbkiMwAh1%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;1170&quot; height=&quot;2389&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2389&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lbK0Y/btsFmkkGKEI/khqtPu7O6mvgKUuTknNitK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lbK0Y/btsFmkkGKEI/khqtPu7O6mvgKUuTknNitK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lbK0Y/btsFmkkGKEI/khqtPu7O6mvgKUuTknNitK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlbK0Y%2FbtsFmkkGKEI%2FkhqtPu7O6mvgKUuTknNitK%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;1170&quot; height=&quot;2402&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd19BG/btsFygXm0w8/0Tq3feBITLH2Q3cdMEKbak/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd19BG/btsFygXm0w8/0Tq3feBITLH2Q3cdMEKbak/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd19BG/btsFygXm0w8/0Tq3feBITLH2Q3cdMEKbak/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd19BG%2FbtsFygXm0w8%2F0Tq3feBITLH2Q3cdMEKbak%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;1170&quot; height=&quot;1471&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1471&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;일단 물리고 시작...&lt;br&gt;&lt;br&gt;돈은 던져졌고 이제 필요한건&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;681&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD0Fr2/btsFjWLBeR2/gKnKvVQGGYwJY9mjqNKH00/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD0Fr2/btsFjWLBeR2/gKnKvVQGGYwJY9mjqNKH00/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD0Fr2/btsFjWLBeR2/gKnKvVQGGYwJY9mjqNKH00/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD0Fr2%2FbtsFjWLBeR2%2FgKnKvVQGGYwJY9mjqNKH00%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;1049&quot; height=&quot;681&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;681&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>오픈북</category>
      <category>재테크</category>
      <category>코인</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/243</guid>
      <comments>https://donggov.tistory.com/243#entry243comment</comments>
      <pubDate>Thu, 29 Feb 2024 13:35:25 +0900</pubDate>
    </item>
    <item>
      <title>Vue 반응성 분석 (2) : Vue2 반응성 구현</title>
      <link>https://donggov.tistory.com/241</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이 글에서는 Vue2의 반응성을 직접 구현해 보며 동작원리를 살펴볼 것이다. Vue3의 반응성을 바로 살펴보지 않고 Vue2 먼저 하는 이유는 Vue2의 반응성을 알면 Vue3도 쉽게 이해할 수 있기 때문이다. 미리 스포를 하자면 Vue2와 Vue3의 반응성의 가장 큰 차이점은 Vue2는 &lt;code&gt;Object.defineProperty&lt;/code&gt;를 사용하여 반응성이 구현하고, Vue3는 &lt;code&gt;Proxy&lt;/code&gt;를 사용하여 반응성을 구현한다는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Vue2 예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c41PJM/btsFjJ4KJDM/sT4RG9xT4zrTb04KyHoWy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c41PJM/btsFjJ4KJDM/sT4RG9xT4zrTb04KyHoWy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c41PJM/btsFjJ4KJDM/sT4RG9xT4zrTb04KyHoWy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc41PJM%2FbtsFjJ4KJDM%2FsT4RG9xT4zrTb04KyHoWy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;686&quot; height=&quot;310&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;간단한 Vue2 코드이다. 이 글에서 구현해볼 샘플 코드이기도 하다. &lt;code&gt;data&lt;/code&gt; 안에 &lt;code&gt;price&lt;/code&gt;와 &lt;code&gt;count&lt;/code&gt; 값이 있다. Vue2는 Vue 인스턴스에 &lt;code&gt;data&lt;/code&gt; 옵션으로 전달되는 객체의 모든 속성을 순회하며 &lt;code&gt;Object.defineProperty&lt;/code&gt;의 getter, setter를 사용하여 반응형을 구현한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;data&lt;/code&gt; 안에 있는 &lt;code&gt;price&lt;/code&gt;와 &lt;code&gt;count&lt;/code&gt; 값이 변하면 &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt; 값이 자동으로 계산되는 코드다. &lt;code&gt;price&lt;/code&gt;와 &lt;code&gt;count&lt;/code&gt;에 반응성이 주입되어 있어서 &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt; 값이 자동으로 계산되는 것이다. 그리고 &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt;도 반응성이 간접적으로 주입되게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;data, total 선언&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;아래와 같이 &lt;code&gt;data&lt;/code&gt;와 &lt;code&gt;total&lt;/code&gt; 정의되어있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m9TFI/btsFhrp81dE/kkzMbxYenKdVusRNTzyX2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m9TFI/btsFhrp81dE/kkzMbxYenKdVusRNTzyX2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m9TFI/btsFhrp81dE/kkzMbxYenKdVusRNTzyX2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm9TFI%2FbtsFhrp81dE%2FkkzMbxYenKdVusRNTzyX2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;192&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;price&lt;/code&gt;가 변경되었을 때 &lt;code&gt;total&lt;/code&gt;이 자동으로 계산되길 원한다면 어떻게 해야 할까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;방법은 간단하다. &lt;code&gt;price&lt;/code&gt;가 변경될 때마다 &lt;code&gt;total&lt;/code&gt;을 다시 계산해 주면 된다. total을 계산하는 &lt;code&gt;totalFn&lt;/code&gt; 함수를 만들어서 실행해 주자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdw4fW/btsFfdT0WxA/4M4rfUNxX6qojpSsKDcDAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdw4fW/btsFfdT0WxA/4M4rfUNxX6qojpSsKDcDAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdw4fW/btsFfdT0WxA/4M4rfUNxX6qojpSsKDcDAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdw4fW%2FbtsFfdT0WxA%2F4M4rfUNxX6qojpSsKDcDAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;682&quot; height=&quot;244&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;하지만 이 방법이 문제점은 price가 변할 때마다 매번 total 값을 다시 계산해줘야 한다는 것이다. 이 문제점을 해결하려면 price가 변할때마다 total 값을 다시 계산해 주도록 하면 된다. 어떻게 할 수 있을까? Vue2에서는 &lt;code&gt;Object.defineProperty&lt;/code&gt;를 사용해서 이 문제점을 해결하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Object.defineProperty 사용&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;Object.defineProperty&lt;/code&gt; 함수를 사용하면 객체의 속성을 세밀하게 추가하거나 수정할 수 있다. 이 함수에 대한 자세한 설명은 &lt;a style=&quot;color: #333333;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty&quot;&gt;MDN 문서&lt;/a&gt;를 참고하기 바라며, 이 글에서는 코드를 작성하기 위해 알아야 하는 내용들만 간단히 다루겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;Object.defineProperty&lt;/code&gt;의 구문은 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YTPZR/btsFgOMICdt/ZAbVciuLGHa2eoTBUoXb8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YTPZR/btsFgOMICdt/ZAbVciuLGHa2eoTBUoXb8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YTPZR/btsFgOMICdt/ZAbVciuLGHa2eoTBUoXb8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYTPZR%2FbtsFgOMICdt%2FZAbVciuLGHa2eoTBUoXb8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;45&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;obj&lt;/code&gt;는 객체, &lt;code&gt;prop&lt;/code&gt;은 새로 정의하거나 수정하려는 속성의 이름 또는 Symbol, 마지막 파라미터는 &lt;code&gt;descriptor&lt;/code&gt;로 속성 서술자라고 부른다. 속성 서술자(descriptor)는 데이터 서술자(data descriptors)와 접근자 서술자(accessor descriptors) 두 가지 형식을 취할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7EWkm/btsFhfXBUYe/1W0Nr3KPl43kC1lsdLgRW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7EWkm/btsFhfXBUYe/1W0Nr3KPl43kC1lsdLgRW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7EWkm/btsFhfXBUYe/1W0Nr3KPl43kC1lsdLgRW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7EWkm%2FbtsFhfXBUYe%2F1W0Nr3KPl43kC1lsdLgRW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;166&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;예를 들어 위에서 obj.price는 definePropery에서 value로 지정한 10이며, &lt;code&gt;writable&lt;/code&gt;가 false 이기 때문에 &lt;code&gt;obj.price = 20&lt;/code&gt; 이렇게 값을 변경할 수 없다. &lt;code&gt;value&lt;/code&gt; 데이터 서술자는 실제로 Vue2의 &lt;code&gt;computed&lt;/code&gt;에서 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eh8O7/btsFjJjmzPs/ig7E1cCX4G0mMXEO4R8zYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eh8O7/btsFjJjmzPs/ig7E1cCX4G0mMXEO4R8zYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eh8O7/btsFjJjmzPs/ig7E1cCX4G0mMXEO4R8zYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEh8O7%2FbtsFjJjmzPs%2Fig7E1cCX4G0mMXEO4R8zYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;295&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;getter, setter를 설정한 예제이다. 참고로 &lt;code&gt;value&lt;/code&gt;와 함께 사용할 수 없다. 이렇게 설정하면 &lt;code&gt;obj.price&lt;/code&gt;에 값을 설정하면 &lt;code&gt;set&lt;/code&gt;이 호출되고, &lt;code&gt;obj.price&lt;/code&gt; 값을 조회하면 &lt;code&gt;get&lt;/code&gt;이 호출된다. Vue2는 이 접근자 서술자를 활용해서 반응성을 구현하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUE6JV/btsFjHFQXo9/EcKUxnCIKN03VImlUpWdE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUE6JV/btsFjHFQXo9/EcKUxnCIKN03VImlUpWdE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUE6JV/btsFjHFQXo9/EcKUxnCIKN03VImlUpWdE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUE6JV%2FbtsFjHFQXo9%2FEcKUxnCIKN03VImlUpWdE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;267&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;set 함수에 &lt;code&gt;totalFn&lt;/code&gt; 함수 호출 로직을 추가했다. &lt;code&gt;definePropery&lt;/code&gt;의 get/set 안에서 &lt;code&gt;data.price&lt;/code&gt;를 직접 호출하면 재귀호출로 인해 Maximum call stack size 에러가 발생하기 때문에 별도 변수 &lt;code&gt;value&lt;/code&gt;를 선언했다. 그리고 price의 set이 호출될 때마다 &lt;code&gt;totalFn&lt;/code&gt; 함수를 호출해 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;price가 변경될 때뿐만 아니라 count가 변경될 때도 total 값을 다시 계산해줘야 한다. 동일한 기능을 캡슐화를 시켜보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDgwfJ/btsFfdzJEvB/ujmOfp7N5DCxjfiO6vNkj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDgwfJ/btsFfdzJEvB/ujmOfp7N5DCxjfiO6vNkj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDgwfJ/btsFfdzJEvB/ujmOfp7N5DCxjfiO6vNkj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDgwfJ%2FbtsFfdzJEvB%2FujmOfp7N5DCxjfiO6vNkj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;370&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 &lt;code&gt;count&lt;/code&gt;가 변할 때에도 total이 자동으로 계산된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;만약 &lt;code&gt;total&lt;/code&gt; 외에 할인된 가격을 계산해 주는 &lt;code&gt;totalSaled&lt;/code&gt; 값 계산 로직을 넣어보자. 그리고 이런 로직들이 여러 개 있다고 가정해보자. 그럼 코드가 아래처럼 set에 계속 추가될 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I6qc9/btsFfcAPVJm/cBuH7ugi7vDCkfJFNjbA00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I6qc9/btsFfcAPVJm/cBuH7ugi7vDCkfJFNjbA00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I6qc9/btsFfcAPVJm/cBuH7ugi7vDCkfJFNjbA00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI6qc9%2FbtsFfcAPVJm%2FcBuH7ugi7vDCkfJFNjbA00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;487&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이 문제를 해결하는 방법은 간단하다. 수행해야 하는 함수들을 저장하는 변수를 선언한 후, 그 변수에 함수들을 저장해 놓는다. 그리고 set 안에서는 그 변수에 저장된 함수들을 모두 수행하기만 하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUAvvS/btsFeC7CB7i/fhRq1MI7irhLlU0euLxAUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUAvvS/btsFeC7CB7i/fhRq1MI7irhLlU0euLxAUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUAvvS/btsFeC7CB7i/fhRq1MI7irhLlU0euLxAUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUAvvS%2FbtsFeC7CB7i%2FfhRq1MI7irhLlU0euLxAUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;264&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;dep&lt;/code&gt; 변수는 자동으로 수행되어야 할 함수들을 저장하는 변수이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;track&lt;/code&gt; 함수는 &lt;code&gt;dep&lt;/code&gt; 변수에 함수를 저장하는 함수이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;trigger&lt;/code&gt; 함수는 dep에 저장된 함수들을 모두 수행하는 함수이다. 이제 &lt;code&gt;Object.defineProperty&lt;/code&gt;의 set 안에서 &lt;code&gt;trigger&lt;/code&gt; 함수를 호출해 주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDf5ey/btsFfVFDcwN/Qm4sd6mO66oIxm1dD5UIl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDf5ey/btsFfVFDcwN/Qm4sd6mO66oIxm1dD5UIl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDf5ey/btsFfVFDcwN/Qm4sd6mO66oIxm1dD5UIl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDf5ey%2FbtsFfVFDcwN%2FQm4sd6mO66oIxm1dD5UIl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;730&quot; height=&quot;759&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;지금까지 짠 코드이다. &lt;code&gt;totalFn&lt;/code&gt;와 &lt;code&gt;totalSaledFn&lt;/code&gt;은 vue에서 computed 기능과 유사하다. 하지만 위 코드에는 매우 불편한 점 두 가지가 있다. 아마 눈치가 좋은 사람이라면 눈치챘을 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;첫 번째는 계산하는 함수, 여기서는 &lt;code&gt;totalFn&lt;/code&gt;와 &lt;code&gt;totalSaledFn&lt;/code&gt;를 최초에 직접 한 번씩 수행해줘야 한다는 것이다. 만약 최초에 직접 수행하지 않는다면 최초의 &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt; 값은 모두 0일 것이다. 두 번째는 dep에 계산 로직도 직접 push 해야 한다는 점이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;어떻게 하면 이 두 가지도 자동으로 수행되게 할 수 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;watcher&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biIlXl/btsFkHS8Pqu/a9o7y9tepxP91oEYuSP910/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biIlXl/btsFkHS8Pqu/a9o7y9tepxP91oEYuSP910/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biIlXl/btsFkHS8Pqu/a9o7y9tepxP91oEYuSP910/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiIlXl%2FbtsFkHS8Pqu%2Fa9o7y9tepxP91oEYuSP910%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;653&quot; height=&quot;326&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;watcher&lt;/code&gt;라는 함수를 만들었다. Composition API와 사용방법을 비슷하게 만들었다. &lt;code&gt;watcher&lt;/code&gt; 함수는 수행되어야 할 함수를 인자로 받는다. 그리고 인자로 받은 함수를 한번 수행한 후에 dep 배열에 추가한다. 두 가지 역할을 &lt;code&gt;watcher&lt;/code&gt; 함수에 위임함으로써 중복로직을 제거할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;하지만 이렇게 했을 경우 함수에는 치명적인 단점이 있다. 만약 &lt;code&gt;data&lt;/code&gt;에 &lt;code&gt;name&lt;/code&gt;이라는 키가 있다면 어떻게 될까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceCXz6/btsFh667Y65/xGi5O8LTeJhvSfBp8wfEfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceCXz6/btsFh667Y65/xGi5O8LTeJhvSfBp8wfEfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceCXz6/btsFh667Y65/xGi5O8LTeJhvSfBp8wfEfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceCXz6%2FbtsFh667Y65%2FxGi5O8LTeJhvSfBp8wfEfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;173&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;data.name&lt;/code&gt; 값을 변경하면 &lt;code&gt;Object.defineProperty&lt;/code&gt;의 set 함수가 실행되어 그 안에 있는 trigger 함수가 호출될 것이다. 즉, &lt;code&gt;name&lt;/code&gt;을 변경하면 &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt; 값도 다시 계산된다. &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt;은 &lt;code&gt;name&lt;/code&gt;에 영향을 받지 않는 값이기 때문에 다시 계산될 필요가 없다. 그럼 어떻게 하면 이 단점을 해결할 수 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ec1Kp/btsFiqYFLLR/NKJh1iDNussVbRGk2dwOXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ec1Kp/btsFiqYFLLR/NKJh1iDNussVbRGk2dwOXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ec1Kp/btsFiqYFLLR/NKJh1iDNussVbRGk2dwOXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEc1Kp%2FbtsFiqYFLLR%2FNKJh1iDNussVbRGk2dwOXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;325&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;325&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;방법은 이외로 간단하다. &lt;code&gt;dep&lt;/code&gt; 변수를 &lt;code&gt;Object.defineProperty&lt;/code&gt;에서 사용되는 &lt;code&gt;value&lt;/code&gt; 값처럼 &lt;code&gt;Object.keys(data).forEach&lt;/code&gt; 안에 선언하면 된다. &lt;code&gt;dep&lt;/code&gt;을 해당 클로저로 이동하면 &lt;code&gt;dep&lt;/code&gt;을 사용하는 &lt;code&gt;track&lt;/code&gt;과 &lt;code&gt;trigger&lt;/code&gt; 함수도 같은 범위 안으로 이동되어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb0wWM/btsFkJDqfly/mddfCIZ6yh6SKHQN0ip1Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb0wWM/btsFkJDqfly/mddfCIZ6yh6SKHQN0ip1Wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb0wWM/btsFkJDqfly/mddfCIZ6yh6SKHQN0ip1Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb0wWM%2FbtsFkJDqfly%2FmddfCIZ6yh6SKHQN0ip1Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;675&quot; height=&quot;89&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 남은 건 &lt;code&gt;watcher&lt;/code&gt; 안에서 &lt;code&gt;track&lt;/code&gt; 함수를 처리하는 일이다. &lt;code&gt;track&lt;/code&gt; 함수는 &lt;code&gt;dep&lt;/code&gt;과 같은 범위로 이동되었기 때문에 &lt;code&gt;watcher&lt;/code&gt;에서 실행될 수 없다. 아래처럼 바꿔보자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZql3E/btsFeSvJnYK/q6joMQ0rkwExNZoiDk1zBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZql3E/btsFeSvJnYK/q6joMQ0rkwExNZoiDk1zBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZql3E/btsFeSvJnYK/q6joMQ0rkwExNZoiDk1zBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZql3E%2FbtsFeSvJnYK%2Fq6joMQ0rkwExNZoiDk1zBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;683&quot; height=&quot;558&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;activeEffect&lt;/code&gt;라는 전역변수를 하나 만들었다. 그리고 &lt;code&gt;get&lt;/code&gt;에서 &lt;code&gt;track&lt;/code&gt;을 실행하게 해줬다. 이렇게 하면 어떤 일이 일어날까.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLFsPa/btsFf2SgIvn/aDvwuKOfVVXQnJEPceDsO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLFsPa/btsFf2SgIvn/aDvwuKOfVVXQnJEPceDsO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLFsPa/btsFf2SgIvn/aDvwuKOfVVXQnJEPceDsO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLFsPa%2FbtsFf2SgIvn%2FaDvwuKOfVVXQnJEPceDsO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;679&quot; height=&quot;46&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;watcher 함수를 호출하면 일어나는 일은 아래와 같다.&lt;/span&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;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;watcher&lt;/code&gt;를 함수를 호출한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;activeEffect&lt;/code&gt; 변수에 &lt;code&gt;() =&amp;gt; (total = data.price * data.count)&lt;/code&gt; 함수가 저장된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;() =&amp;gt; (total = data.price * data.count)&lt;/code&gt; 함수가 호출된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;data.price에 접근하면서 defineProperty의 get 함수가 호출된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;activeEffect에 값이 존재함으로 track 함수가 호출되면서 &lt;code&gt;data.price&lt;/code&gt; 클로저에 있는 &lt;code&gt;dep&lt;/code&gt;에 &lt;code&gt;total&lt;/code&gt; 계산 함수가 저장되고 &lt;code&gt;data.price&lt;/code&gt; 값이 반환된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;data.count 접근하면서 get 함수가 호출된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;code&gt;5)&lt;/code&gt; 단계가 반복된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 &lt;code&gt;data.name&lt;/code&gt; 값을 변경해도 &lt;code&gt;total&lt;/code&gt;과 &lt;code&gt;totalSaled&lt;/code&gt;이 다시 계산되지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rT13k/btsFhVxPPYj/iXtZu564oKEGMHhbDfysy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rT13k/btsFhVxPPYj/iXtZu564oKEGMHhbDfysy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rT13k/btsFhVxPPYj/iXtZu564oKEGMHhbDfysy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrT13k%2FbtsFhVxPPYj%2FiXtZu564oKEGMHhbDfysy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;391&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Vue2 공식 홈페이지에 있는 그림이 이해가 될것이다. &lt;span style=&quot;color: #333333;&quot;&gt;Vue2의 반응성은 &lt;code&gt;Object.defineProperty&lt;/code&gt;를 사용해서 구현되었다. 위의 코드는 실제 Vue2 코드를 참고해서 핵심 부분만 구현해 본 코드이며 실제 코드는 훨씬 복잡하게 되어있다. 다음 글에서는 Vue3의 반응성에 대해서 알아보겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전글 : &lt;a title=&quot;Vue 반응성 분석 (1) : 인트로 (Intro)&quot; href=&quot;https://donggov.tistory.com/238&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://donggov.tistory.com/238&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>reactive</category>
      <category>VUE</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/241</guid>
      <comments>https://donggov.tistory.com/241#entry241comment</comments>
      <pubDate>Sun, 25 Feb 2024 15:59:22 +0900</pubDate>
    </item>
    <item>
      <title>의대증원, 혼합진료 꿀통이 중요한게 아니다. 내 꿀통을 찾아야 할때</title>
      <link>https://donggov.tistory.com/240</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;의대증원, 혼합진료 꿀통이 중요한게 아니다. 내 꿀통을 찾아야 할때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쏟아지는 의대증원 뉴스들&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의대생들이 단체로 휴학하겠다고 하고 전공의들이 단체로 사직하겠다고 하는 뉴스들이 계속 쏟아진다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알만한 사람들은 다 알겠지만 지금 시위의 핵심은 의대증원보다는 혼합진료다. 이 꿀통을 잃을 수 없기 때문에 이렇게까지 여론에 몰매를 맞아가면서까지 시위를 하고 있는 것 같음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의사 꿀통은 그렇다치고 내 꿀통은 뭔가? 당연히 없음. 연예인, 의사 걱정은 하는게 아니다. 그 시간에&amp;nbsp;내 꿀통을 찾아야 한다. 저렇게 머리 좋고 공부 많이 한 사람들도 자기들 꿀통 지키겠다고 시위하는데 나도 뭔가 해야 하지 않을까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 의사 꿀통 방지 관련 뉴스가 쏟아지고 모든 관심이 거기 쏠려있을때 다른 곳에서는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;449&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOJkVb/btsFisoCund/pAbcgKbMiyxK15ByouKVUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOJkVb/btsFisoCund/pAbcgKbMiyxK15ByouKVUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOJkVb/btsFisoCund/pAbcgKbMiyxK15ByouKVUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOJkVb%2FbtsFisoCund%2FpAbcgKbMiyxK15ByouKVUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;668&quot; height=&quot;449&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;449&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국 증시 신고가 경신&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dc5VGv/btsFfUGGkzl/u6Q4hsPT2TUbu6N2j3zINK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dc5VGv/btsFfUGGkzl/u6Q4hsPT2TUbu6N2j3zINK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dc5VGv/btsFfUGGkzl/u6Q4hsPT2TUbu6N2j3zINK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdc5VGv%2FbtsFfUGGkzl%2Fu6Q4hsPT2TUbu6N2j3zINK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;388&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔비디아 미친 실적으로 신고가 경신. 이 밖에도 대부분 기술주들 최고가 릴레이 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;574&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgLxfm/btsFg4We5By/GCUIKHvN7EPtvrDGE3dj8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgLxfm/btsFg4We5By/GCUIKHvN7EPtvrDGE3dj8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgLxfm/btsFg4We5By/GCUIKHvN7EPtvrDGE3dj8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgLxfm%2FbtsFg4We5By%2FGCUIKHvN7EPtvrDGE3dj8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;349&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;574&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트코인 전고점 노리는 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;하지만 미국주식은 세금이 너무 비싸. 연 수익 250만 초과하면 세금을 22%나 가져가는 게 말이 되나?&lt;/p&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;코인은 잘 모르는 영역이지만 비트코인을 자산 가치에는 어느 정도 동의를 한다. 그래서 작년부터 무지성으로 월 30 정도씩 넣고 있는데 지금 수익률이 30%를 넘어가고 있다. 적금 들 돈으로 이거 올인했어야 했는데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 알트에 관심이 조금 가져야 할 때가 아닌가 싶다. 알트에 2~3백 정도만 넣어놓고 싶은데 뭐가 좋을까&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>재테크</category>
      <category>코인</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/240</guid>
      <comments>https://donggov.tistory.com/240#entry240comment</comments>
      <pubDate>Sun, 25 Feb 2024 14:39:31 +0900</pubDate>
    </item>
    <item>
      <title>알테오젠 - 단기냐 장기냐 그것이 문제로다</title>
      <link>https://donggov.tistory.com/239</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;엔비디아, 반도체로 난리인 와중에 알테오젠이 오늘 11% 상승을 함&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s6htx/btsFcNG4MEf/MSVds10oDBeQPNjQ3dKg6k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s6htx/btsFcNG4MEf/MSVds10oDBeQPNjQ3dKg6k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s6htx/btsFcNG4MEf/MSVds10oDBeQPNjQ3dKg6k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs6htx%2FbtsFcNG4MEf%2FMSVds10oDBeQPNjQ3dKg6k%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;300&quot; height=&quot;377&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;오늘 재밌었던 게 일봉을 보면 밑꼬리가 길게 보이는데&lt;br /&gt;저 때 3분 봉 보면 재밌음&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blGqSl/btsFftAM3TO/TylPLk65Ezj2QcGWkgae11/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blGqSl/btsFftAM3TO/TylPLk65Ezj2QcGWkgae11/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blGqSl/btsFftAM3TO/TylPLk65Ezj2QcGWkgae11/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblGqSl%2FbtsFftAM3TO%2FTylPLk65Ezj2QcGWkgae11%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;300&quot; height=&quot;389&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;순식간에 하방 vi를 찍음&lt;br /&gt;저 시간에 공시가 뜬 게 있는데 내용을 보면&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnWjUO/btsFfb72Ejl/qFk5CLKjcOmASsbG0kOCjk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnWjUO/btsFfb72Ejl/qFk5CLKjcOmASsbG0kOCjk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnWjUO/btsFfb72Ejl/qFk5CLKjcOmASsbG0kOCjk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnWjUO%2FbtsFfb72Ejl%2FqFk5CLKjcOmASsbG0kOCjk%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;500&quot; height=&quot;635&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;머크랑 계약함 -&amp;gt; 이건 이미 다 아는 사실이고&lt;br /&gt;독점 계약이다&lt;br /&gt;추가 마일스톤 432만 달러&lt;br /&gt;로열티 지급 -&amp;gt; 근데 몇% 인지는 안 나오고&lt;br /&gt;&lt;br /&gt;암튼 저 공시 올라오고 하방 vi를 찍고 다시 올라온 건데 이때 개미들 많이 털렸을 거로 보인다&lt;br /&gt;나는 일반인은 저 공시가 악잰지 호잰지 바로 알 수 없다고 생각한다. 저걸 보자마자 정확히 이해하고 계산이 돌아갈 만큼 능력있는 사람이면 개미가 아니겠지...&lt;br /&gt;&lt;br /&gt;일단 공시는 떴고 주가가 밀리니까 겁먹고 판 개미들 수두룩할것 같아 보인다. 이럴 땐 그냥 공시를 이해하려고 하지 말고 차트와 호가창 보면서 머리 굴리는 게 맞다고 생각한다.&lt;br /&gt;지금 시총 5조짜리 회사 주가가 하방 vi를 맞았는데 다시 끌어올린다? 하방이 멈춘 상황에서 호가창이 채워지고 있다? 이건 슈퍼 고래나 기관이 들어오고 있다고 보면 됨. 이것도 안되면 그냥 직감을 믿으면 되고. 나도 직감 많이 믿는 편이고&lt;br /&gt;&amp;nbsp;&lt;br /&gt;결과론적으로 공시는 호재인 건데 이제 남은 건 시장에서 어떻게 반응하느냐다. 아무리 좋은 호재일지라도 인정해주지 않는 이곳은 바로 K장이기 때문&lt;br /&gt;지금 시총이 5조. 주가가 20만 원을 가면 10조가 되는 거고, 30만 원을 가면 15조.&lt;br /&gt;아무리 좋은 호재라도 단기간에 2배 오르긴 어렵고. 15만 원은 갈 수 있으려나&lt;br /&gt;단기냐 장기냐 그것이 문젠데, 지금 반도체로 온 관심이 쏠려있어서 더 좋아보임. 오히려 스포트라이트를 안받아야 더 갈수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2071&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQAgFE/btsFcC6Pb0q/kwJcVOwVGcXLC80ynTO0qK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQAgFE/btsFcC6Pb0q/kwJcVOwVGcXLC80ynTO0qK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQAgFE/btsFcC6Pb0q/kwJcVOwVGcXLC80ynTO0qK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQAgFE%2FbtsFcC6Pb0q%2FkwJcVOwVGcXLC80ynTO0qK%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;300&quot; height=&quot;531&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2071&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2년 전에 일동제약 4만원 아래에서 잘 탑승해놓고 30%도 수익 못 내고 나온 이력이 있는데, 지금의 나는 2년 전과 달라져 있을까? 야수의 종목이라는 바이오에서 나는 야수 테스트를 통과할 수 있을 것인가. 야수 테스트라고 하기에 너무 소액 주주긴 하지만..&lt;br /&gt;&amp;nbsp;&lt;br /&gt;아무튼 지금 필요한 건 뭐다?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pRK1O/btsFesbjq3C/NwGknJJkWuWkSkbnPfZVvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pRK1O/btsFesbjq3C/NwGknJJkWuWkSkbnPfZVvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pRK1O/btsFesbjq3C/NwGknJJkWuWkSkbnPfZVvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpRK1O%2FbtsFesbjq3C%2FNwGknJJkWuWkSkbnPfZVvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;272&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>알테오젠</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/239</guid>
      <comments>https://donggov.tistory.com/239#entry239comment</comments>
      <pubDate>Fri, 23 Feb 2024 00:07:26 +0900</pubDate>
    </item>
    <item>
      <title>Vue 반응성 분석 (1) : 인트로 (Intro)</title>
      <link>https://donggov.tistory.com/238</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리액트(react), 뷰(Vue) 등 많은 SPA 프레임워크(라이브러리라고 부르기도 함)은 자신만의 반응성(Reactivity) 엔진을 가지고 있다. 반응성은 선언적 방법으로 변경 사항을 적용할 수 있게 해주는 프로그래밍 패러다임이다. 예를 들어 어떤 데이터가 변경되었을 때 화면 렌더링이 자동으로 수행된다면 이걸 반응성이 있다고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 프론트엔드 개발이 화면을 어떻게 그릴지에 초점을 맞추고 개발했다면, SPA 프레임워크들이 나온 이후에는 데이터를 중심으로 데이터가 변경되면 화면이 어떻게 변할지에 초점을 맞추고 개발을 하게 되었다. 개발자는 데이터를 다루는 데 집중하고 데이터가 바뀌면 데이터에 맞는 화면 렌더링은 프레임워크에 위임하는 것이다. 그래서 요즘 SPA 웹 개발을 반응형 프로그래밍이라고 부르기도 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반응성이 프론트엔드 개발에 핵심인 만큼 반응성이 어떻게 동작하는지 제대로 이해하는 것이 중요하다. 마치 마법처럼 느껴지는 이 반응성을 직접 구현해 보자. 코드는 Vue의 반응성 원리를 기준으로 구현할 것이고, 원리 위주로 구현할 것이며 실제 Vue 코드와 정확히 일치하진 않는다. Vue의 반응성은 Vue2와 Vue3가 다르게 구현이 되어있다. Vue2, Vue3 각 반응성 모두 구현해 보자. 아래는 Vue 관련해서 많이 받았던 질문들인데, 이 글을 읽으면 질문들이 다 해결될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Vue2 관련&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왜 처음에 data 옵션에 미리 프로퍼티가 선언이 되어있어야 하는지&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arr[2] = 3&lt;/code&gt; 이런 식으로 데이터를 변경했을 때는 왜 반응성이 동작을 안 하는지&lt;/li&gt;
&lt;li&gt;&lt;code&gt;computed&lt;/code&gt;는 함수인데, 사용할 때는 어떻게 &lt;code&gt;this.total&lt;/code&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;&lt;b&gt;Vue3 관련&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Vue2와 Vue2 반응성 구현 차이&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reactive&lt;/code&gt;와 &lt;code&gt;ref&lt;/code&gt; 차이점&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ref&lt;/code&gt;와 &lt;code&gt;computed&lt;/code&gt;를 사용할 때 &lt;code&gt;.value&lt;/code&gt;를 사용하는 이유&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>VUE</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/238</guid>
      <comments>https://donggov.tistory.com/238#entry238comment</comments>
      <pubDate>Wed, 21 Feb 2024 22:54:47 +0900</pubDate>
    </item>
    <item>
      <title>반드시 알아야하는 혈액검사(피검사) 종류와 해석</title>
      <link>https://donggov.tistory.com/237</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;건강검진이나 병원에서 피검사를 종종 하게 된다. 그럴 때마다 피검사 결과를 보고 보통 의사들은 &quot;음, 괜찮네요~&quot;, &quot;빈혈이 좀 있네요~&quot; 정도만 알려줄 뿐 정확히 어디가 어떻게 안 좋고, 어느 정도 안 좋은지 설명을 해주지 않는다. 하지만 나를 포함한 대부분 사람들은 거기에 대해서 구체적으로 물어보기를 꺼려한다. 의사에 대한 믿음보다는, 괜한 미안함이랄까.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;결국 구체적인 내 현재 상태를 파악하려면 스스로 공부하는 수밖에 없다. 어디가 어떻게 안 좋고, 내가 지금 어떤 상황인지 알려면 환자도 공부를 해야 한다. 요즘은 세상이 좋아져서 피검사를 하면 각 병원 어플에서 수치를 바로 볼 수 있다. 피검사도 종류에 따라 나오는 게 다양한데, 검사 결과가 실시간으로 어플에 올라온다. (경험에 의하면 1시간 후부터 하나씩 올라오기 시작하는 듯)&lt;br /&gt;&amp;nbsp;&lt;br /&gt;피검사한 목적에 따라서 봐야하는 종류가 다르겠지만, 기본적으로 알면 좋을 것 같은 항목에 대해서 기록해 둔다. 특히 중요하다고 생각하는 항목은 별(&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;) 표시했다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxkO1G/btsEZCes37k/Lh7fEFlldBCQa8j7NbsXkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxkO1G/btsEZCes37k/Lh7fEFlldBCQa8j7NbsXkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxkO1G/btsEZCes37k/Lh7fEFlldBCQa8j7NbsXkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxkO1G%2FbtsEZCes37k%2FLh7fEFlldBCQa8j7NbsXkK%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;400&quot; height=&quot;425&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 일반혈액&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hgb or Hb (헤모글로빈) &lt;/b&gt;&lt;br /&gt;산소 결합하여 운반하는 철분을 함유한 단백질이다. &lt;br /&gt;- 미달 : 빈혈, 골수장애, 영양부족 &lt;br /&gt;- 초과 : 간경변 폐섬유화 및 폐질환, 탈수증 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;WBC (백혈구 수)&lt;/b&gt; &lt;br /&gt;백혈구는 골수에서 생성되어 감염이 있을 때 신체를 방어하고 면역반응에 관여한다. 이 검사는 전혈 검체에서 백혈구 수를 측정한다. 백혈구의 생성에 영향을 끼치는 질환 또는 감염이 있다고 판단될 때와 치료효과를 모니터링할 때 시행한다. &lt;br /&gt;- 미달 : 항암, 방사선치료, 면역질환 &lt;br /&gt;- 초과 : 감염, 종양, 염증, 심한 운동과 스트레스 상황 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;RBC (적혈구) &lt;/b&gt; &lt;br /&gt;- 미달 : 출혈, 빈혈등 &lt;br /&gt;- 초과 : 설사등의 체액손실 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;MCH (혈색소)&lt;/b&gt; &lt;br /&gt;전혈 검체 내의 적혈구에 존재하는 단백질인 혈색소(hemo globin)의 양. 환자에게 빈혈이나 적혈구증 가증이 있을 때 상태의 중등도를 평가하고 치료에 대한 반응을 추적조사하기 위해 검사한다. &lt;br /&gt;- 미달 : 빈혈 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;MCHC (적혈구내 평균헤모글로빈 농도)&lt;/b&gt; &lt;br /&gt;- 미달 : 빈혈 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;PLT&lt;/b&gt;&lt;b&gt;&amp;nbsp; (혈소판 수)&lt;/b&gt;&lt;br /&gt;혈소판은 혈관이나 조직이 손상되면 최초로 활성화되어 혈액응괴를 만들기 시작하는 단계에 가장 중요한 역할을 한다. 혈소판 수는 전혈 검체에서 혈소판의 수를 측정하는 검사이다. 출혈질환 또는 골수질환을 진단하기 위해 검사한다. &lt;br /&gt;- 미달 : 골수질환 골수암 &lt;br /&gt;- 초과 : 골수증식종양, 알레르기, 감염, 조직손상, 탈수, 철결핍성 빈혈. 용혈. 심한 운동 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;ANC (기기절대호중구수) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;반드시 확인해야 하는 항목. 면역상태 및 컨디션을 확인하는 기본 중에 기본인 수치.&lt;br /&gt;백혈구에는 호중구, 림프구, 단구, 호산구, 호염구의 5가지 종류가 있는데, 이중 절대호중구수가 감소하면 감염의 위험 인자가 된다. 주로 골수이식 후 생착 여부 판정 및 감염 위 험평가 목적으로 검사한다. &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;Lymphocyte (림프구) &lt;/b&gt;&lt;br /&gt;몸에서 면역 기능을 담당하는 면역세포로 백혈구의 일종 &lt;br /&gt;- 미달 : 루프스, 에이즈 감염 &lt;br /&gt;- 초과 : 바이러스감염, 방사선치료 시 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;Monocyte (단핵구) &lt;/b&gt;&lt;br /&gt;선천 면역을 담당하면서도, 후천 면역 과정에도 영향을 끼친다. &lt;br /&gt;단핵구는 특정 감염에 대항하여 싸우는 백혈구의 한 유형으로 다른 백혈구를 도와 죽거나 손상된 조직을 제거하고, 암세포를 파괴하고 이물질에 대한 면역을 조절한다. &lt;br /&gt;미달 : 골수부전, 혈류감염 &lt;br /&gt;초과 : 감염, 염증질환, 혈액질환, 특정 암 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;MPV (평균혈소판용적) &lt;/b&gt;&lt;br /&gt;평균 혈소판&amp;nbsp;부피를 나타내는 지표 &lt;br /&gt;- 미달 : 비장기 항진증, 철결핍성 빈혈, 갑상선기능저하 &lt;br /&gt;- 초과 : 구상적혈구증, 유상적혈구증, 겸상적혈구빈혈 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 일반화학&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Glucose (&lt;/b&gt;&lt;b&gt;혈당)&lt;/b&gt; &lt;br /&gt;혈액 내 포도당의 양. 고혈당 혹은 저혈당을 감지하 고, 당뇨를 진단하고, 당뇨환자에게서 모니터링을 위하여 사용. &lt;br /&gt;정상범위 내에서 낮게 유지할수록 좋음.&lt;br /&gt;높은 혈당이 염증을 유발하고 염증은 암생성과도 관계가 밀접함.&lt;br /&gt;지속적인 염증반응이 암을 만든다는 게 정설.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;T. Protein (&lt;/b&gt;&lt;b&gt;총 단백질) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;단백은 대부분의 장기의 구조 일 부를 형성하고 신체 기능을 조절하는 효소와 호르몬을 만든다. 혈액의 혈장 내 다양한 종류의 단백질의 총 양을 측정한다. &lt;br /&gt;- 미달 : 영양실조, 부종, 중증감염, 갑상선 종양, 갑상선 항진 &lt;br /&gt;- 초과 : 면역글로불린 G의 증가에 의한 만성 간 장애 또는 염증. 다발성 골수종, 단백혈증 의심 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;알부민 (Albumin) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;알부민은 혈액의 액상 부분인 혈장에 가장 많이 존재하는 단백질로써 혈관으로 부 터 액체의 유출을 막고, 조직에 영양분을 제공하며, 호르몬, 비타민, 약물, 칼슘 같은 이온을 신체로 전달한다. 알부민은 간에서 만들어지며 간 손상에 극히 예민함 &lt;br /&gt;- 미달 : 염증질환, 간질환, 신증후군, 영양불량 &lt;br /&gt;- 초과 : 급성탈수증 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;CA or Calcium (칼슘)&lt;/b&gt; &lt;br /&gt;- 미달 : 신부전, 부갑상선기능저하, 구루병, 골연화증, 비타민D 결핍 &lt;br /&gt;- 초과 : 악성종양의 골전이, 다발성 골주종, 원발성 부갑상선기능항진증 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;Na (나트륨)&lt;/b&gt; &lt;br /&gt;- 미달 : 탈수증 &lt;br /&gt;- 초과 : 혈액량 증가, 부종 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;K (칼륨)&lt;/b&gt; &lt;br /&gt;- 미달 : 이뇨제 장기투여, 알도스테론증 &lt;br /&gt;- 초과 : 급성 신부전, 에디슨병, 당뇨병성 케톤산증, 칼륨과잉수액 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;CI (&lt;/b&gt;&lt;b&gt;염소)&lt;/b&gt; &lt;br /&gt;클로라이드, 염화물. 체내의 각 조직에 산소를 공급하는 역할 &lt;br /&gt;- 미달 : 폐기종, 폐렴, 신장장애, 구토, 설사 &lt;br /&gt;- 초과 : 탈수증, 신부전, 과환기증후군 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;Uric Acid (&lt;/b&gt;&lt;b&gt;요산&lt;/b&gt;&lt;b&gt;)&lt;/b&gt; &lt;br /&gt;혈액 요산 검사는 통풍의 감별 목적으로 혈액 중에 요산이 증가여부를 확인하기 위해 시행된다. 또한 화학치료 및 방사선 치료를 받는 환자에서 요산 농도를 보기 위해 이용된다. &lt;br /&gt;- 초과 : 통풍, 신결석&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;T. bilirubin or TB (&lt;/b&gt;&lt;b&gt;총 빌리루빈) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;반드시 확인해야 하는 항목. 빌리루빈 농도가 높으면 황달이 발생하며 원인을 밝히기 위한 추가 검사가 필요하다. 매우 높은 빌리루빈 농도는 빌 리루빈의 생성이 크게 증가(보통 용혈이 심한 경우)했음을 의미하거나, 담관폐쇄, 간경변이나 급성 간염 같은 간질환, 또는 빌리루빈 대사과정의 유전적 문제로 인해 간이 제때에 빌리루빈을 충분히 제거하지 못함을 의미한다. 따라서 빌 리루빈은 간경변, 간염 혹은 담석 등의 간질환을 진단하고 모니터하기 위해 측정한다. &lt;br /&gt;- 초과 : 폐쇄황달, 용혈빈혈 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;AST(GOT) (아스파르테이트아미노전달효소) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;AST는 온몸의 세포에서 발견되는 효소이지만 주로 심장과 간에 존재하며, 신장 및 근육에는 이보다 적게 존재한다. 간이나 근육에 손상이 생겼을 때 조직에서 혈액으로 AST가 방출되며, 방출에 의해 증가된 AST 농도는 간손상을 발견하는데 유용한 검사이다. &lt;br /&gt;초과 : 알콜성 간 손상, 심장에 무리가 발생한 경우, 심장 관련질환, 간 질환, 뼈나 근육의 손상 시 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;ALT (알라닌 아미노전이요소) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;ALT는 대부분 간과 신장의 세포에서 발견되는 효소이며 심장과 근육에서 소량이 발견된다. 간이 손상되면 대개 황달 같은 명확한 증상이 나타나기 전에 ALT가 혈류로 방출된다. 이러한 이유로 ALT는 간 손상 발견을 위해 유용한 검사가 됩니다. &lt;br /&gt;- 초과 : 급성간염, 간 손상, 심근경색, 근질환, 암, 폐쇄성 황달, 알콜성간염등, 뼈나 근육의 손상 시 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;알칼리성 인산분해효소, 알칼리포스타파제 (ALP) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;담즙배출 기능, 뼈전이.&lt;br /&gt;담도암에서 초과되는 경우는 있으나 수치가 500 이상 오르면 안 된다.&lt;br /&gt;- 미달 : 급성간염, 간암, 담도암, 골질환 &lt;br /&gt;- 초과 : 갑상선 기능 저하, 악성빈혈, 담관폐쇄와 뼈전이 의심&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;Creatinine&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;(&lt;/b&gt;&lt;b&gt;크레아티닌)&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;거의 모든 크레아티닌은 신장을 통해 배출되므로 혈액 내 농도는 신장이 얼마나 잘 작용하는지 보여주는 좋은 지표이다. 혈액 크레아티닌 검사는 BUN(혈중요소질소)과 함께 신 장기능을 평가하기 위해 사용된다.&lt;br /&gt;BUN 20:1 이상 Cr 100:1 이상&lt;br /&gt;고단백식이, 단백질 이화증상, 근육소실, 위장관 출혈로 인한 단백의 재흡수, 신장관 혈류량감소, 폐혈증, 스테로이드제, 심부전, 간경변, 요로폐색, 기아, 탈수&lt;br /&gt;BUN 10:1-20:1 (정상범위) Cr 40:1-100:1(정상범위)&lt;br /&gt;정상값이지만 신부전, 사구체질환, 뇨세질환등이 있어도 BUN과 크레아티닌수치가 정상보다 놉은 수치로 이 비율에 있으며, 식이요법과 치료를 하면서 정상범위를 유지해야 함&lt;br /&gt;BUN 10:1 이하 Cr 40:1 이하&lt;br /&gt;급성세뇨관괴사, 저단백식이, 기아, 탈수, 간질환, 투석 등&lt;br /&gt;상승 시 고단백 식이를 줄이고 물을 충분히 마셔야 함&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 종양 &amp;amp;&lt;/b&gt;&lt;b&gt; 암 관련&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 CT를 찍을 때 수행된다. CT 결과 전에 확인할 수 있다. &lt;br /&gt;항암반응도나 재발을 감시하는 목적으로 사용되지만 절대적인 수치로 활용하기 어렵고 CT 등 다른 검사와 병행되어야 의미가 있다. &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;CA19-9 &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;당지질로 루이스 혈액형 항원이 변형된 것. 주로 소화기계의 암세포들이 발현함 &lt;br /&gt;혈액형 항원 중 루이스 항원의 변형이기 때문에 루이스항원을 가지지 않은 혈액형에서는 증가하지 않음 &lt;br /&gt;루이스항원 항체 반응이 약한 경우 상승되지 않음 &lt;br /&gt;암의 예후, 중증도, 재발, 치료평가에 사용되지만 선별검사나 진단 기준으로는 사용하지 않는다. &lt;br /&gt;- 암인 경우 : 췌장암, 담도암, 담낭암, 간세포암에서 높은 빈도로 증가.&lt;br /&gt;위암, 난소암, 결직장암에서도 증가할 수 있음&lt;br /&gt;폐암, 유방암 자궁암에서 드물게 증가 &lt;br /&gt;- 암이 아닌 경우 : 급성 담관염, 간경화증, 담석, 만성간염 &lt;br /&gt;- 초과 : 암의 재발, 나쁜 예후를 시사함, 급성 담관염, 간경화증, 담석 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;CEA (당단백) &lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;★&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;위장관 암에서 가장 자주 사용되는 암표지자&lt;br /&gt;진단보다는 치료 시 추적관찰에 유용함.&lt;br /&gt;간에서 대사 되므로 간가능이 좋지 않은 경우 배출이 되지 않아 증가됨 &lt;br /&gt;초과 암이 간으로 전이된 경우, 황달이 생기는 진행 암, 재발, 나쁜 예후&lt;/p&gt;</description>
      <category>정보</category>
      <category>건강</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/237</guid>
      <comments>https://donggov.tistory.com/237#entry237comment</comments>
      <pubDate>Sun, 18 Feb 2024 18:08:40 +0900</pubDate>
    </item>
    <item>
      <title>디즈니 주가 무슨일이지</title>
      <link>https://donggov.tistory.com/236</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1729&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oAHpO/btsEEDZUkT4/LoZLZkDEhRPKG3RcIOgWv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oAHpO/btsEEDZUkT4/LoZLZkDEhRPKG3RcIOgWv1/img.jpg&quot; data-alt=&quot;디즈니 갭상승&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oAHpO/btsEEDZUkT4/LoZLZkDEhRPKG3RcIOgWv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoAHpO%2FbtsEEDZUkT4%2FLoZLZkDEhRPKG3RcIOgWv1%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;400&quot; height=&quot;591&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1729&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;디즈니 갭상승&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이틀 전에 디즈니 신규 진입했는데 자고 하루 만에 11% 이상 급등했다. 무슨 일이 있었던 걸까. 뉴스를 좀 찾아봤다.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkC0SX/btsEEGvyC93/1gr2UEefKFIZvMdDDdwg4K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkC0SX/btsEEGvyC93/1gr2UEefKFIZvMdDDdwg4K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkC0SX/btsEEGvyC93/1gr2UEefKFIZvMdDDdwg4K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkC0SX%2FbtsEEGvyC93%2F1gr2UEefKFIZvMdDDdwg4K%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;500&quot; height=&quot;188&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;실적이 좋았단다. &lt;br /&gt;근데 제목말고 내용에서 실적 수치보다 더 의미 있는 내용을 볼 수 있었는데&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRaJpf/btsEHp6V6sK/lE3LxK7eRgMukZpmxd7Qo0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRaJpf/btsEHp6V6sK/lE3LxK7eRgMukZpmxd7Qo0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRaJpf/btsEHp6V6sK/lE3LxK7eRgMukZpmxd7Qo0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRaJpf%2FbtsEHp6V6sK%2FlE3LxK7eRgMukZpmxd7Qo0%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;500&quot; height=&quot;232&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;배당금을 작년보다 50% 늘린다고 한다. 그래봤자 주당 1달러도 안 되는 금액인데 배당금을 늘린다는 거 자체가 주주들에게 큰 의미가 있다. 코로나 터지고 배당을 없앤 걸로 알고 있었는데 배당을 주긴 줬나 보네.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cI5Kf5/btsEFdl50z2/KEnItHDGkSJYp0M2YYA7Q0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cI5Kf5/btsEFdl50z2/KEnItHDGkSJYp0M2YYA7Q0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cI5Kf5/btsEFdl50z2/KEnItHDGkSJYp0M2YYA7Q0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI5Kf5%2FbtsEFdl50z2%2FKEnItHDGkSJYp0M2YYA7Q0%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;500&quot; height=&quot;130&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtppHS/btsED0VCsIk/2RoDQlp1knDX0YYM1sM6wk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtppHS/btsED0VCsIk/2RoDQlp1knDX0YYM1sM6wk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtppHS/btsED0VCsIk/2RoDQlp1knDX0YYM1sM6wk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtppHS%2FbtsED0VCsIk%2F2RoDQlp1knDX0YYM1sM6wk%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;500&quot; height=&quot;156&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이거 내가 기대하던 뉴스다. 단순 캐릭터 라이선스만 받는 게 아니라 게임 개발에 참여하는 거다. 근데 에픽게임즈 투자, 지분 인수보다는 게임 회사 하나를 통째로 인수하는 게 낫지 않나라는 생각을 좀 해본다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diuv7W/btsEGh2vr9F/l8JmvD32C2ENMu7hG6cNd0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diuv7W/btsEGh2vr9F/l8JmvD32C2ENMu7hG6cNd0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diuv7W/btsEGh2vr9F/l8JmvD32C2ENMu7hG6cNd0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdiuv7W%2FbtsEGh2vr9F%2Fl8JmvD32C2ENMu7hG6cNd0%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;400&quot; height=&quot;197&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;허리띠 졸라매어서 결과가 좋았다는데 이건 좀 안 좋아 보인다. 비용절감은 일시적인 거라...&lt;br /&gt;그리고 파업 여파라고는 하지만 어쨌든 콘텐츠 영역에서 매출이 줄었다. 이게 빨리 턴어라운드 해야 할 텐데&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM5wje/btsEFQYpn8z/mYONE6jRF5OjpmeUQCkQE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM5wje/btsEFQYpn8z/mYONE6jRF5OjpmeUQCkQE1/img.jpg&quot; data-alt=&quot;불타기 pixabay&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM5wje/btsEFQYpn8z/mYONE6jRF5OjpmeUQCkQE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM5wje%2FbtsEFQYpn8z%2FmYONE6jRF5OjpmeUQCkQE1%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;400&quot; height=&quot;259&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;758&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;불타기 pixabay&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 무엇보다 이렇게 급등한 이유는 내가 정찰용으로 5주만 밖에 매수를 안 해서다. 내가 몇백만 원어치 샀으면 안 올랐을 듯. 갭상했으니 이제 불타기를 가느냐 마느냐 그것이 문제로다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>투자 혹은 투기</category>
      <category>디즈니</category>
      <category>재테크</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/236</guid>
      <comments>https://donggov.tistory.com/236#entry236comment</comments>
      <pubDate>Fri, 9 Feb 2024 20:08:42 +0900</pubDate>
    </item>
    <item>
      <title>신규 종목 매수 (디즈니, 넷마블)</title>
      <link>https://donggov.tistory.com/235</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;투자글은 오랜만이다. 작년 말에 미장 대부분 종목을 매도하고 수익 실현을 하였다. 관망하면서 좀 떨어지면 다시 사야지 하고 있었는데 역시 내가 팔면 오른다고 다시 살 기회를 주지 않고 더 올라버렸다. 그렇다고 불나방처럼 달려들면 안 되기 때문에 지켜보면서 기다리는 중이다.&lt;br /&gt;&lt;br /&gt;그러다 문득 이런 생각이 들었다. 어쩌면 AI보다 메타버스가 더 가까이 있지 않을까. 메타의 실적이나 출시하자마자 많은 비아냥을 받은 애플의 비전프로가 첫 시발점으로 보인다. 개인적으로 지금의 애플 비전프로는 기술력을 떠나 너무 멋이 없기 때문에 보급이 많이 되진 않을 것으로 보인다. 뭐니 뭐니 해도 멋이 중요하기 때문. 하지만 만약 이게 많이 보급이 된다면이라는 가정을 세워봤다.&lt;br /&gt;그럼 비전프로에서 사용되는 앱들이 많이 나올텐데 이것들이 굉장히 수혜를 볼 것이다. 그럼 그 앱들은 무엇일까? 가장 먼저 떠오른 게 콘텐츠와 게임이다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x6RpR/btsEGLPHo9n/kIgAyoTWQGuZqKb4kuTxCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x6RpR/btsEGLPHo9n/kIgAyoTWQGuZqKb4kuTxCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x6RpR/btsEGLPHo9n/kIgAyoTWQGuZqKb4kuTxCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx6RpR%2FbtsEGLPHo9n%2FkIgAyoTWQGuZqKb4kuTxCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;324&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;넷플릭스&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;컨텐츠의 왕은 누가 뭐라 해도 넷플릭스다. 이 구역의 왕이라고 할 수 있다. 그리고 넷플릭스는 이미 게임 시장에도 진출했다. 자체 콘텐츠를 활용한 게임들을 이미 출시 중이고 넷플릭스에서 바로 다운로드하여서 플레이할 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Fvz7/btsEF4BNkbp/9ojoKMkqPkcZLA4wvR23m0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Fvz7/btsEF4BNkbp/9ojoKMkqPkcZLA4wvR23m0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Fvz7/btsEF4BNkbp/9ojoKMkqPkcZLA4wvR23m0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Fvz7%2FbtsEF4BNkbp%2F9ojoKMkqPkcZLA4wvR23m0%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;400&quot; height=&quot;308&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;902&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZKDqh/btsEEFbWZbh/SFDoyhme7KBxPFEltz1dA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZKDqh/btsEEFbWZbh/SFDoyhme7KBxPFEltz1dA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZKDqh/btsEEFbWZbh/SFDoyhme7KBxPFEltz1dA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZKDqh%2FbtsEEFbWZbh%2FSFDoyhme7KBxPFEltz1dA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;866&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이거 만약 비전프로로 만들면 꽤 재밌지 않을까?&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dy5d48/btsEFfDProx/SrejFcFDZOPKwjXY7w9N4k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dy5d48/btsEFfDProx/SrejFcFDZOPKwjXY7w9N4k/img.jpg&quot; data-alt=&quot;넷플릭스 주봉&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dy5d48/btsEFfDProx/SrejFcFDZOPKwjXY7w9N4k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdy5d48%2FbtsEFfDProx%2FSrejFcFDZOPKwjXY7w9N4k%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;400&quot; height=&quot;584&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1708&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;넷플릭스 주봉&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 지금 주식을 매수하기에는 부담스러운 자리다. 관종에만 넣어두고 지켜보자.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;디즈니&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;다음으로 떠오른건 디즈니다. 이상한 PC주의에 집착하면서부터 콘텐츠들, 특히 마블이 맛탱이가 갔지만 정신 차릴 거라 본다. 맛탱이가 갔더라도 IP들이 강력한 건 인정 안 할 수가 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QB56z/btsED7mrvET/jN0kD9m4fVzaoZKNON30O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QB56z/btsED7mrvET/jN0kD9m4fVzaoZKNON30O1/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QB56z/btsED7mrvET/jN0kD9m4fVzaoZKNON30O1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQB56z%2FbtsED7mrvET%2FjN0kD9m4fVzaoZKNON30O1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AaGod/btsED705nYF/KqrKmKmSDhbB3DiEB4oo4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AaGod/btsED705nYF/KqrKmKmSDhbB3DiEB4oo4K/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AaGod/btsED705nYF/KqrKmKmSDhbB3DiEB4oo4K/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAaGod%2FbtsED705nYF%2FKqrKmKmSDhbB3DiEB4oo4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tJkw5/btsEE3KmJTI/Q1Ww7AakK83QncjtQfye51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tJkw5/btsEE3KmJTI/Q1Ww7AakK83QncjtQfye51/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tJkw5/btsEE3KmJTI/Q1Ww7AakK83QncjtQfye51/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtJkw5%2FbtsEE3KmJTI%2FQ1Ww7AakK83QncjtQfye51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;디즈니 일봉, 주봉, 월봉&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;차트를 보니 코로나 전까지 떨어졌고(오히려 더 떨어짐) 서서히 반등하기 시작한것으로 보인다.&lt;br /&gt;정찰병 50만원 어치 보내본다. 죽지 말아라. 기다려라.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;883&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C42Bg/btsEEY3wFmi/vferErm6Uoxi8U4rACYCk1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C42Bg/btsEEY3wFmi/vferErm6Uoxi8U4rACYCk1/img.jpg&quot; data-alt=&quot;살아 돌아와라&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C42Bg/btsEEY3wFmi/vferErm6Uoxi8U4rACYCk1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC42Bg%2FbtsEEY3wFmi%2FvferErm6Uoxi8U4rACYCk1%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;400&quot; height=&quot;302&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;883&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;살아 돌아와라&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;넷마블&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;한국에 있는 게임회사를 생각해봤다. 한국 게임은 아무리 생각해도 노답이다. 그래도 망하지 않을 거 같은 게임회사를 생각했을 때 떠오르는 건 넷마블이다. 사실 넷마블 2년 전에 매수했다가 손절한 회사다. 그래서 미련이 조금 남았는지도 모른다. 이 회사는 게임회사지만 투자 회사이기도 하다. 하이브, 정수기 등 왜 게임에 집중하지 않고 자꾸 딴거하는지 모르겠지만...&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ft4DU/btsEE1zbzxQ/1KNbt7Jk9dvPSRT74KXiu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ft4DU/btsEE1zbzxQ/1KNbt7Jk9dvPSRT74KXiu0/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ft4DU/btsEE1zbzxQ/1KNbt7Jk9dvPSRT74KXiu0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFt4DU%2FbtsEE1zbzxQ%2F1KNbt7Jk9dvPSRT74KXiu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7HZRC/btsEDoIWTtw/vCjo4GcYIIYLWGc84nr4Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7HZRC/btsEDoIWTtw/vCjo4GcYIIYLWGc84nr4Wk/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7HZRC/btsEDoIWTtw/vCjo4GcYIIYLWGc84nr4Wk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7HZRC%2FbtsEDoIWTtw%2FvCjo4GcYIIYLWGc84nr4Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSsSIl/btsEEyYFKfO/3toKkm5L1XMV9itPUsTPl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSsSIl/btsEEyYFKfO/3toKkm5L1XMV9itPUsTPl1/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSsSIl/btsEEyYFKfO/3toKkm5L1XMV9itPUsTPl1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSsSIl%2FbtsEEyYFKfO%2F3toKkm5L1XMV9itPUsTPl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;넷마블 일봉, 주봉, 월봉&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;물론 노답이지만 설마 여기서 더 떨어질까라는 생각으로 정찰병 100만원 보냈다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7651e/btsEFgv8pW7/0QdHZZetdOuJndqmLY3dCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7651e/btsEFgv8pW7/0QdHZZetdOuJndqmLY3dCK/img.jpg&quot; data-alt=&quot;커피값이라도 벌고오길&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7651e/btsEFgv8pW7/0QdHZZetdOuJndqmLY3dCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7651e%2FbtsEFgv8pW7%2F0QdHZZetdOuJndqmLY3dCK%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;400&quot; height=&quot;483&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1412&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;</description>
      <category>투자 혹은 투기</category>
      <category>넷마블</category>
      <category>디즈니</category>
      <category>재테크</category>
      <category>주식</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/235</guid>
      <comments>https://donggov.tistory.com/235#entry235comment</comments>
      <pubDate>Thu, 8 Feb 2024 21:56:58 +0900</pubDate>
    </item>
    <item>
      <title>오사카 마라톤 D-56</title>
      <link>https://donggov.tistory.com/234</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;오사카 마라톤까지 56일 남았다.&lt;br /&gt;준비는 잘 되어가고 있는가&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbliJd/btsCUBBKusj/Xr4KRPkODiwmj4drpl0X4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbliJd/btsCUBBKusj/Xr4KRPkODiwmj4drpl0X4k/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1466&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.3342%; margin-right: 10px;&quot; data-widthpercent=&quot;49.91&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbliJd/btsCUBBKusj/Xr4KRPkODiwmj4drpl0X4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbliJd%2FbtsCUBBKusj%2FXr4KRPkODiwmj4drpl0X4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;1466&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tu4tG/btsCVJsNtkb/vKy5eJvKhF0irAaMJEDxzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tu4tG/btsCVJsNtkb/vKy5eJvKhF0irAaMJEDxzK/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1461&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.503%;&quot; data-widthpercent=&quot;50.09&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tu4tG/btsCVJsNtkb/vKy5eJvKhF0irAaMJEDxzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTu4tG%2FbtsCVJsNtkb%2FvKy5eJvKhF0irAaMJEDxzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;1461&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;2023년 러닝 기록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이번달 누적 134km. 올해 누적 550km&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;작년부터 러닝을 쉬다가 올해부터 다시 달리기 시작했다. 8월에 월 누적 50km 정도 달리면서 슬슬 몸이 다시 풀리기 시작했고 10월부터는 월 누적 100km를 넘겼다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdrZD2/btsCZ5B4yQg/tKfhsBvoI4hK7cIsJPVOf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdrZD2/btsCZ5B4yQg/tKfhsBvoI4hK7cIsJPVOf0/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdrZD2/btsCZ5B4yQg/tKfhsBvoI4hK7cIsJPVOf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdrZD2%2FbtsCZ5B4yQg%2FtKfhsBvoI4hK7cIsJPVOf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dw03PF/btsCSadJs17/xiSoVmQjqYEFdN8RLC1uz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dw03PF/btsCSadJs17/xiSoVmQjqYEFdN8RLC1uz0/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dw03PF/btsCSadJs17/xiSoVmQjqYEFdN8RLC1uz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdw03PF%2FbtsCSadJs17%2FxiSoVmQjqYEFdN8RLC1uz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;이번달 무릎 부상&lt;br /&gt;열흘 정도 치료받으면서 재발 방지를 위해 거리와 페이스를 확 낮췄다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이번달 훈련 목표는 이틀마다 10km를 540 페이스로 달리고 격주로 15km 이상 LSD를 하는 것이었지만, 역시 계획은 계획일 뿐. 매일 5km 정도를 600 페이스로 조깅하는 걸로 훈련 변경&lt;br /&gt;치료는 열흘 정도 받은 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TVygM/btsCUySzkdZ/ApBZktjP5KMfiXuQknmpy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TVygM/btsCUySzkdZ/ApBZktjP5KMfiXuQknmpy1/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;817&quot; data-filename=&quot;edited_blob&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.3277%; margin-right: 10px;&quot; data-widthpercent=&quot;49.91&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TVygM/btsCUySzkdZ/ApBZktjP5KMfiXuQknmpy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTVygM%2FbtsCUySzkdZ%2FApBZktjP5KMfiXuQknmpy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;817&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFzgyx/btsCU1G6eaK/yPID9PlMVG1jqCoFxUNUxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFzgyx/btsCU1G6eaK/yPID9PlMVG1jqCoFxUNUxK/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;814&quot; data-filename=&quot;edited_blob&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.5095%;&quot; data-widthpercent=&quot;50.09&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFzgyx/btsCU1G6eaK/yPID9PlMVG1jqCoFxUNUxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFzgyx%2FbtsCU1G6eaK%2FyPID9PlMVG1jqCoFxUNUxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;814&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gf3Lr/btsCRhD2awF/gwOvHNDWdvDbk0j4Oqv1K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gf3Lr/btsCRhD2awF/gwOvHNDWdvDbk0j4Oqv1K1/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;604&quot; data-filename=&quot;edited_edited_blob&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;44.89&quot; style=&quot;width: 44.3685%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gf3Lr/btsCRhD2awF/gwOvHNDWdvDbk0j4Oqv1K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGf3Lr%2FbtsCRhD2awF%2FgwOvHNDWdvDbk0j4Oqv1K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;604&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7UIOU/btsCRiCUNJM/dGII4HhXgOfjzYzwlag651/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7UIOU/btsCRiCUNJM/dGII4HhXgOfjzYzwlag651/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;492&quot; data-filename=&quot;edited_edited_blob&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;55.11&quot; style=&quot;width: 54.4687%; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7UIOU/btsCRiCUNJM/dGII4HhXgOfjzYzwlag651/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7UIOU%2FbtsCRiCUNJM%2FdGII4HhXgOfjzYzwlag651%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;492&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;2023년 마지막 러닝&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 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 올해 마무리로 25km를 목표로 달렸지만 19km에서 포기&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;부상이 아직 완전히 회복된 게 아니더라. 빙판 조심하고, 무릎도 의식하고 달리니까 18km쯤부터 골반이랑 발목에 무리가 왔다. 부상도 부상이지만 근력 운동이 부족하다고 느꼈고 근력 보강운동을 좀 빡세게 해야겠다고 생각함&lt;br /&gt;&lt;br /&gt;풀 뛰기 전에 30km는 달려보고 가야 한다던데 할 수 있을까. 서브 4 할 수 있을까. 그럼 완주는?&lt;br /&gt;오사카 마라톤을 준비하면서부터 러닝이 취미를 넘어서 부담으로 느껴지기 시작했다. 이렇게까지 훈련을 해야 하나 싶기도 하고 억지로 달리고 있다는 생각도 든다. 풀 코스는 이번 오사카 마라톤이 마지막이 아닐까라는 생각도 든다. 이럼 곤란한데&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;아무튼 끝까지 포기하지말고 최선은 다해보자. 화이팅&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; 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://donggov.tistory.com/234</guid>
      <comments>https://donggov.tistory.com/234#entry234comment</comments>
      <pubDate>Sun, 31 Dec 2023 21:33:48 +0900</pubDate>
    </item>
    <item>
      <title>애플워치에서 NRC로 데이터 보내기 (feat 런갭)</title>
      <link>https://donggov.tistory.com/233</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;런갭(RunGap)을 사용해서 러닝 데이터 연동하기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://donggov.tistory.com/232&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;가민, 애플워치 비교 및 후기&lt;/a&gt;&amp;nbsp;에 이은 애플워치와 NRC 연동하는 방법&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;애플워치 트레이닝 앱을 쓰고 러닝을 하면 러닝 데이터가 NRC와 동기화되지 않는다. 스트라바로는 데이터를 잘 보내주는데 NRC로만 데이터를 못 보낸다. 그래서 애플워치 유저 중에 NRC에도 데이터를 쌓아야 하는 러너 들은 아예 러닝앱으로 NRC를 사용하거나 트레이닝, NRC 모두 킨다고&lt;br /&gt;&lt;br /&gt;가민 쓸 때는 가민이 NRC에게 바로 데이터를 쏴줬다면, 애플워치에서 NRC로 데이터를 보내려면 중간에 가민을 한번 끼고 데이터를 보내야 한다. 애플워치 -&amp;gt; 가민 -&amp;gt; NRC 이렇게. 근데 애플워치에서 가민으로 데이터를 바로 보낼 수 없는데 이걸 할 수 있게 해주는 앱이 런갭(RunGap)이다.&lt;br /&gt;&lt;br /&gt;사용법은 간단하다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdLgvs/btsCzDttYSc/iH9es0OrqjAuk00ACb2A80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdLgvs/btsCzDttYSc/iH9es0OrqjAuk00ACb2A80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdLgvs/btsCzDttYSc/iH9es0OrqjAuk00ACb2A80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdLgvs%2FbtsCzDttYSc%2FiH9es0OrqjAuk00ACb2A80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;624&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Activity에 나의 러닝 데이터들이 보인다.&lt;br /&gt;자동 갱신 안되기 때문에 화면을 아래로 한번 스와이핑해야 리프레쉬가 된다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZxP2F/btsCzSKM3gN/97DhiadjFNfgHWcbtnGy1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZxP2F/btsCzSKM3gN/97DhiadjFNfgHWcbtnGy1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZxP2F/btsCzSKM3gN/97DhiadjFNfgHWcbtnGy1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZxP2F%2FbtsCzSKM3gN%2F97DhiadjFNfgHWcbtnGy1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;502&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1185&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;그리고 왼쪽 위 햄버거 메뉴에서 Share &amp;amp; Export 터치&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;955&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhabbf/btsCF7NNxuv/92YriDnrcmFjNUbDWhJGsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhabbf/btsCF7NNxuv/92YriDnrcmFjNUbDWhJGsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhabbf/btsCF7NNxuv/92YriDnrcmFjNUbDWhJGsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhabbf%2FbtsCF7NNxuv%2F92YriDnrcmFjNUbDWhJGsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;955&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;1611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oR98B/btsCyxAyPCO/pcZ2PfvHXkEvqnf7125QJ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oR98B/btsCyxAyPCO/pcZ2PfvHXkEvqnf7125QJ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oR98B/btsCyxAyPCO/pcZ2PfvHXkEvqnf7125QJ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoR98B%2FbtsCyxAyPCO%2FpcZ2PfvHXkEvqnf7125QJ0%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;400&quot; height=&quot;551&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;1611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;가민 선택하면 어떤 활동을 가민으로 내보내기 할 건지 묻는다. 신규 1건에 활성화되어 있는 상태고 오른쪽 위에 Share 터치하면 끝&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JUgJm/btsCzIapTUd/YzM7mIas9BkndQKaimcR70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JUgJm/btsCzIapTUd/YzM7mIas9BkndQKaimcR70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JUgJm/btsCzIapTUd/YzM7mIas9BkndQKaimcR70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJUgJm%2FbtsCzIapTUd%2FYzM7mIas9BkndQKaimcR70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;473&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kDxWA/btsCyKNhinu/eaUsku2f4Txyk8JQv6QrGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kDxWA/btsCyKNhinu/eaUsku2f4Txyk8JQv6QrGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kDxWA/btsCyKNhinu/eaUsku2f4Txyk8JQv6QrGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkDxWA%2FbtsCyKNhinu%2FeaUsku2f4Txyk8JQv6QrGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;470&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;NRC에는 연동 데이터에 가민이라고 표시된다.&lt;/p&gt;</description>
      <category>취미</category>
      <category>가민</category>
      <category>러닝</category>
      <category>런갭</category>
      <category>애플워치</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/233</guid>
      <comments>https://donggov.tistory.com/233#entry233comment</comments>
      <pubDate>Mon, 25 Dec 2023 06:43:34 +0900</pubDate>
    </item>
    <item>
      <title>가민, 애플워치 비교 및 후기</title>
      <link>https://donggov.tistory.com/232</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;가민포러너 45, 애플워치 SE2 (2세대) 비교 - 러닝 위주&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;가민 5년 가까이 썼더니 배터리가 맛이 갔다. 5년이면 많이 썼지...&lt;br /&gt;가민 45를 큰 불편함 없이 썼던 터라 같은 모델을 재구매(가장 저렴함 모델이었다. 내 기억엔 10만원 초반이었다.) 하려고 봤는데, 더 이상 팔지 않더라. 내가 전문 러너도 아니고 취미용으로 하는 거라 GPS, 페이스, 심박수 정도만 볼 수 있는 모델로 찾아봤다. &lt;span style=&quot;color: #333333;&quot;&gt;다음으로 저렴한 모델이 가민 55인데 가격이 무려(?) 24만원이다.&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt; 내가 사용하던 45보다 10만원이다 비싸다. 이때 갑자기 떠오른 게 애플워치&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt; SE 2세대다. 가격은 30만원으로 6만원 차이다.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZicah/btsB7QTGudy/ASCOelGQYLeUulZajvH36k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZicah/btsB7QTGudy/ASCOelGQYLeUulZajvH36k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZicah/btsB7QTGudy/ASCOelGQYLeUulZajvH36k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZicah%2FbtsB7QTGudy%2FASCOelGQYLeUulZajvH36k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;714&quot; height=&quot;183&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edpuqq/btsB5FlnJdL/slY7fsYAMe3nXkSBakBwak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edpuqq/btsB5FlnJdL/slY7fsYAMe3nXkSBakBwak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edpuqq/btsB5FlnJdL/slY7fsYAMe3nXkSBakBwak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fedpuqq%2FbtsB5FlnJdL%2FslY7fsYAMe3nXkSBakBwak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;715&quot; height=&quot;179&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;179&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;가민을 살지 애플워치를 살지 큰 고민에 빠졌다. 가장 큰 차이는 크게 배터리와 활용도다. 배터리는 가민이 압도적으로 오래간다. 하지만 일상에서 활용도는 애플워치가 압도적이다. 배터리냐 일상에서 활용도냐의 큰 갈림길에서 애플워치를 선택했다. 이유는 애플워치로도 충분히 풀코스 혹은 LSD를 할 수 있고, 만약 배터리가 없는 상태면 운동 가기 전에 30분 정도만 충전해도 운동에 아무 지장을 받지 않기 때문이다. (자기 합리화)&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;애플워치가 도착하고 가민과 비교를 해보기 위해 왼손에는 애플워치, 오른손에는 가민을 차고 달렸다. 코스는 올림픽공원 외곽 반복으로 거리는 20.8km 정도 달렸다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOsbPR/btsB6iXNoxQ/oXnmjBdHjujnKYsiKj4EQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOsbPR/btsB6iXNoxQ/oXnmjBdHjujnKYsiKj4EQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOsbPR/btsB6iXNoxQ/oXnmjBdHjujnKYsiKj4EQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOsbPR%2FbtsB6iXNoxQ%2FoXnmjBdHjujnKYsiKj4EQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 요약&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1kmYm/btsB5CvwgZp/0ILEN2tiJoXIqu71HUQWe0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1kmYm/btsB5CvwgZp/0ILEN2tiJoXIqu71HUQWe0/img.jpg&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1101&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.9671%; margin-right: 10px;&quot; data-widthpercent=&quot;52.58&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1kmYm/btsB5CvwgZp/0ILEN2tiJoXIqu71HUQWe0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1kmYm%2FbtsB5CvwgZp%2F0ILEN2tiJoXIqu71HUQWe0%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;1170&quot; height=&quot;1101&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b20njC/btsB3uLeElc/mgvOVWmtWI4r3rhfZXiaR0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b20njC/btsB3uLeElc/mgvOVWmtWI4r3rhfZXiaR0/img.jpg&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;1155&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.8701%;&quot; data-widthpercent=&quot;47.42&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b20njC/btsB3uLeElc/mgvOVWmtWI4r3rhfZXiaR0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb20njC%2FbtsB3uLeElc%2FmgvOVWmtWI4r3rhfZXiaR0%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;1107&quot; height=&quot;1155&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;왼쪽 가민. 오른쪽 애플워치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;거리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;가민 20.74, 애플워치 20.77. 애플워치가 30m 정도 더 달린 것으로 나옴&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;평균 페이스&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;가민 532, 애플워치 531.&amp;nbsp;이 정도면 똑같이 나왔다고 봐도 무방.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;평균 심박수&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;가민 154, 애플워치 163.&amp;nbsp;심박수 비교는 의미가 없다. 내가 달릴 때 시계를 히트텍 위로 찼기 때문에 신뢰도가 떨어짐&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 거리 및 GPS 비교&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhf61u/btsB7lT0Pum/9xvQHIEyKnjgxxlNXGFjS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhf61u/btsB7lT0Pum/9xvQHIEyKnjgxxlNXGFjS1/img.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhf61u/btsB7lT0Pum/9xvQHIEyKnjgxxlNXGFjS1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdhf61u%2FbtsB7lT0Pum%2F9xvQHIEyKnjgxxlNXGFjS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bch24h/btsB3ss2ymZ/QQhE80CFIUi4uiI3EkEKx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bch24h/btsB3ss2ymZ/QQhE80CFIUi4uiI3EkEKx1/img.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot; style=&quot;width: 49.4186%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bch24h/btsB3ss2ymZ/QQhE80CFIUi4uiI3EkEKx1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbch24h%2FbtsB3ss2ymZ%2FQQhE80CFIUi4uiI3EkEKx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;왼쪽 가민, 오른쪽 애플워치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;가민 20.74km, 애플워치 20.77km로 애플워치가 30m 더 높게 나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;러닝 코스가 시계방향으로 4바퀴 도는 코스였는데, 애플워치를 왼손에 차서 더 길게 나온 것으로 보인다. 같이 운동하는 사람들에게 물어보니 어느 손에 차느냐에 따라 거리 차이가 꽤 난다고 한다. 이 점 감안하면 거리는 거의 비슷하게 나오는 듯. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;GPS는 거의 비슷하게 나왔다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 페이스 비교&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNNVZO/btsB7c3LjE6/jGcF7iehI7NKQtwxS7kDd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNNVZO/btsB7c3LjE6/jGcF7iehI7NKQtwxS7kDd0/img.png&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;666&quot; style=&quot;width: 45.669%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;46.21&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNNVZO/btsB7c3LjE6/jGcF7iehI7NKQtwxS7kDd0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNNVZO%2FbtsB7c3LjE6%2FjGcF7iehI7NKQtwxS7kDd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3dVrA/btsCaxTGuUS/44ILqif2zIXqWWuUYkWwT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3dVrA/btsCaxTGuUS/44ILqif2zIXqWWuUYkWwT1/img.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;565&quot; style=&quot;width: 53.1682%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;53.79&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3dVrA/btsCaxTGuUS/44ILqif2zIXqWWuUYkWwT1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3dVrA%2FbtsCaxTGuUS%2F44ILqif2zIXqWWuUYkWwT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;565&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;왼쪽 가민, 오른쪽 애플워치 11km, 10km 비교&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약에서 봤듯이 평균 페이스는 가민 532, 애플워치 531로 거의 비슷하게 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 랩별 페이스를 보면 차이가 좀 난다. 대체적으로 비슷하긴 하지만 오차가 좀 큰 구간이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 11km 구간 : 가민 528 &amp;lt; 애플워치 536. 가민이 8초 빨랐다고 나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 13km 구간 : 가민 531 &amp;gt; 애플워치 524. 애플워치가 7초 빨랐다고 나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 러닝 할 때 랩별 페이스가 가장 중요하다고 생각하는데, 7~8초 오차면 굉장히 크다고 생각된다. 근데 한쪽이 빠르거나 느리다고 치우치지 않아서 어떤 게 더 정확한지 판단을 못하겠다. 이건 나 혼자 시계를 두 개를 차기보다는 다른 러너와 함께 달리면서 그 러너의 데이터와 비교를 해봐야 할 듯.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 심박수 비교&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6CC5e/btsB7nj6AJS/XDH44wkhJHfFq2DraHtN4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6CC5e/btsB7nj6AJS/XDH44wkhJHfFq2DraHtN4k/img.png&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;631&quot; data-is-animation=&quot;false&quot; style=&quot;width: 43.2163%; margin-right: 10px;&quot; data-widthpercent=&quot;43.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6CC5e/btsB7nj6AJS/XDH44wkhJHfFq2DraHtN4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6CC5e%2FbtsB7nj6AJS%2FXDH44wkhJHfFq2DraHtN4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;367&quot; height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bABxvN/btsB5zeth01/awNJYG43o5F9Iv3kxCqkQK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bABxvN/btsB5zeth01/awNJYG43o5F9Iv3kxCqkQK/img.jpg&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1563&quot; data-is-animation=&quot;false&quot; style=&quot;width: 55.6209%;&quot; data-widthpercent=&quot;56.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bABxvN/btsB5zeth01/awNJYG43o5F9Iv3kxCqkQK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbABxvN%2FbtsB5zeth01%2FawNJYG43o5F9Iv3kxCqkQK%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;1170&quot; height=&quot;1563&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;왼쪽 가민. 오른쪽 애플워치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가민 154 &amp;lt; 애플워치 163. 심박수 비교는 의미가 없다. 내가 달릴 때 시계를 히트텍 위로 찼기 때문에 신뢰도가 떨어진다. 인터넷에서 가민과 애플워치 심박수 비교한 데이터를 보면 심박수는 애플워치가 가민을 포함해서 웬만한 스마트 워치들보다 정확하다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 조작법 및 UI&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;조작법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가민 &amp;gt; 애플워치. 이유는 가민은 조작법이 버튼 기반인데 애플워치는 디스플레이 터치 기반이다. 터치형이 은근히 불편한 게 잠깐 멈췄다가 달려야 하는 경우에 가민은 시계를 보지 않고도 버튼을 눌러서 시작/정지가 편하지만, 애플워치는 디스플레이를 보면서 정확하게 눌러야 한다. 그리고 애플워치 순정 트레이닝 앱을 사용해서 러닝을 할 경우에는 화면을 옆으로 한번 넘긴 다음에 시작/정리를 해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UI&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가민 &amp;gt; 애플워치. 애플워치 SE2라서 글자 크기가 너무 작다. 가민이 시원시원해서 대충 봐도 잘 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;크기 및 무게&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거의 비슷함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 후기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가민 재구매 대신 애플워치를 선택한 것에 후회가 없다. 러닝 데이터도 가민과 차이가 없고, 가장 큰 걱정이던 배터리도 문제가 되지 않았다. 20km 뛰어도 배터리가 넉넉하게 남아있었어서 풀코스도 충분히 소화할 수 있을 것으로 보인다. 애플 데이터가 NRC로 바로 넘어가지 않는 건 좀 불편하다. 스트라바, 런데이로는 동기화가 되는데 NRC로는 바로 데이터가 동기화가 되지 않는다. 그래서 순정앱을 사용하지 않고, NRC를 사용하는 사람들도 있더라. 나는 애플과 NRC 중간에 런갭을 거쳐서 운동 끝난 후에 애플과 NRC 간에 데이틀 동기화 시켜주고 있다. 방법은 &lt;a href=&quot;https://donggov.tistory.com/233&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;애플워치에서 NRC로 데이터 보내기 (feat 런갭)&lt;/a&gt;&amp;nbsp;참고. 이 외에는 모두 만족스럽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>취미</category>
      <category>가민</category>
      <category>러닝</category>
      <category>애플워치</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/232</guid>
      <comments>https://donggov.tistory.com/232#entry232comment</comments>
      <pubDate>Sun, 17 Dec 2023 12:05:40 +0900</pubDate>
    </item>
    <item>
      <title>jackson objeckMapper List 타입 역직렬화(deserialize) 분석</title>
      <link>https://donggov.tistory.com/231</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;동일한 값을 반환하는 이름만 다른 getter는 어떻게 &lt;span style=&quot;text-align: start;&quot;&gt;deserialize&amp;nbsp;&lt;/span&gt;될까?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;자바에서 직렬화, 역직렬화 시, 많이(거의) 사용되는 jackson 라이브러리의 deseialize 처리에 관한 글이다. 예상하지 못한 결과가 발생해서 jackson 라이브러리 코드 구현부를 살펴보았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;현상&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCq47x/btsmOMts31Z/i6lkt3PP3skHcrL5ynQBO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCq47x/btsmOMts31Z/i6lkt3PP3skHcrL5ynQBO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCq47x/btsmOMts31Z/i6lkt3PP3skHcrL5ynQBO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCq47x%2FbtsmOMts31Z%2Fi6lkt3PP3skHcrL5ynQBO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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-origin-width=&quot;776&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위는 name, itemList 변수가 선언되어 있는 Store 클래스이다. 각 변수에 대한 getter는 lombok으로 정의되어 있다. 알 수 없는 프로퍼티를 무시하는 @JsonIgnoreProperties(ignoreUnknown = true) 어노테이션도 추가되어 있다. 그리고 name을 대문자로 반환하는 getUpperName, itemList를 반환하는 getDiscountedItemList가 정의되어 있다. getDiscountedItemList 함수는 itemList를 그대로 반환하는 getter 함수이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그리고 아래와 같은 json이 있다. 이 json을 Store 클래스로 역직렬화하면 어떻게 될까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;{&quot;name&quot;:&quot;store1&quot;, &quot;upperName&quot;:&quot;STORE1&quot;, &quot;itemList&quot;:[&quot;apple, banana&quot;],&quot;discountedItemList&quot;:[&quot;banana&quot;]}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rrfmV/btsmRokOQJz/eRHePpu2bXVYvgEVYcKQ10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rrfmV/btsmRokOQJz/eRHePpu2bXVYvgEVYcKQ10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rrfmV/btsmRokOQJz/eRHePpu2bXVYvgEVYcKQ10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrrfmV%2FbtsmRokOQJz%2FeRHePpu2bXVYvgEVYcKQ10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;161&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;역직렬화 시, 필드 인식을 setter -&amp;gt; field -&amp;gt; getter 순으로 한다는건 배경지식으로 이미 알고 있었다. 하지만 getUpperName과 getDiscountedItemList는 @JsonIgnoreProperties(ignoreUnknown = true) 옵션으로 인해 자연스럽게 무시될 거라 생각했다. 그래서 결과는 아래처럼 나올 거라 생각했지만, 결과는 그게 아니었다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1688680284953&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ObjectMapperTest.Store(name=store1, itemList=[apple, banana])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;실제 결과는 아래처럼 itemList에 banana가 2번 나왔다. itemList에 discountedItemList의 데이터가 추가된 것이다. 왜 이런 결과가 나온 것일까?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T2Xqz/btsmROjgRhI/oxzZ17MbLkcKAXagG7nJAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T2Xqz/btsmROjgRhI/oxzZ17MbLkcKAXagG7nJAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T2Xqz/btsmROjgRhI/oxzZ17MbLkcKAXagG7nJAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT2Xqz%2FbtsmROjgRhI%2FoxzZ17MbLkcKAXagG7nJAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;563&quot; height=&quot;91&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;91&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;분석&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;jackson 라이브러리를 코드를 분석해 보자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) @JsonIgnoreProperties(ignoreUnknown = true) 오해&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;먼저 JsonIgnoreProperties 어노테이션이 내가 생각한 것처럼 동작하지 않았다. ignoreUnknown = true 속성을 주면 json에 있는 upperName과 discountedItemList 모두 무시될 거라 생각했다. @JsonIgnoreProperties을 빼서 돌려보자&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HT0f0/btsmPzgC8PP/v7mSJK0DdD1FowNb78xVp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HT0f0/btsmPzgC8PP/v7mSJK0DdD1FowNb78xVp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HT0f0/btsmPzgC8PP/v7mSJK0DdD1FowNb78xVp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHT0f0%2FbtsmPzgC8PP%2Fv7mSJK0DdD1FowNb78xVp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1113&quot; height=&quot;534&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 코드는 이전 코드에서 Store 클래스에 @JsonIgnoreProperties 옵션만 뺀 코드이다. 결과가 어떻게 나올까?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SMjbW/btsmQQ9JaPZ/BgsKZaOWmtt0vj1vuHkLCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SMjbW/btsmQQ9JaPZ/BgsKZaOWmtt0vj1vuHkLCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SMjbW/btsmQQ9JaPZ/BgsKZaOWmtt0vj1vuHkLCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSMjbW%2FbtsmQQ9JaPZ%2FBgsKZaOWmtt0vj1vuHkLCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;91&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;91&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;예상했던 대로 에러가 나온다. 그런데 에러에 이상한 메시지가 보인다. 3개의 알려진 프로퍼티에 discountedItmeList 항목이 보인다. json에서 upperName을 제외해서 다시 돌려보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbBS4r/btsmP6ytYKL/3lZECqYq93EfLtlDcx3FKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbBS4r/btsmP6ytYKL/3lZECqYq93EfLtlDcx3FKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbBS4r/btsmP6ytYKL/3lZECqYq93EfLtlDcx3FKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbBS4r%2FbtsmP6ytYKL%2F3lZECqYq93EfLtlDcx3FKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;907&quot; height=&quot;156&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcJrzs/btsmRn0vaWS/XcbLlnPcvdKhMkibZSYGb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcJrzs/btsmRn0vaWS/XcbLlnPcvdKhMkibZSYGb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcJrzs/btsmRn0vaWS/XcbLlnPcvdKhMkibZSYGb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcJrzs%2FbtsmRn0vaWS%2FXcbLlnPcvdKhMkibZSYGb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;598&quot; height=&quot;73&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;@JsonIgnoreProperties이 없어도 discountedItem을 찾을 수 없다는 에러가 발생하지 않고, 결과도 처음과 동일하게 나온다. 왜 discountedItem은 @JsonIgnoreProperties가 없어도 에러가 발생하지 않을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1-1) addBeanProps&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;@JsonIgnoreProperties 속성은&amp;nbsp;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;BeanDeserializeFactory 클래스의 addBeanProps 함수에서 설정된다. 이 함수는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;빈 역직렬화기가 사용하기 위한 설정가능한 속성을 파악하기 위한 함수이다. ignoreUnknown = true로 설정했다면 builder.setIgnoreUnknownProperties 함수에서 _ignoreAllUnknown을 true로 설정하고 나중에 이 속성으로 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;upperName 같은 &lt;/span&gt;알 수 없는 json 키를 예외처리한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MWXM3/btsmQfV5k1l/8DrWkMdkMiI7oKX3LVQld1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MWXM3/btsmQfV5k1l/8DrWkMdkMiI7oKX3LVQld1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MWXM3/btsmQfV5k1l/8DrWkMdkMiI7oKX3LVQld1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMWXM3%2FbtsmQfV5k1l%2F8DrWkMdkMiI7oKX3LVQld1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;348&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;이후에 BeanDeserializer 클래스에서 &amp;nbsp;_beanProperties에서 해당 키가 있는지 체크하고, 없으면 handelUnkownProperty 함수를 호출한다. &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;handelUnkownProperty 함수에서는 최종적으로 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;_ignoreAllUnknown 검사를 한번 더 수행하고, 설정되지 않았으면 &lt;/span&gt;&lt;/span&gt;에러를 발생시킨다.&lt;span style=&quot;text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGpk87/btsmRnsP5ej/Ou3TDdEwRaDAXffkdkXnsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGpk87/btsmRnsP5ej/Ou3TDdEwRaDAXffkdkXnsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGpk87/btsmRnsP5ej/Ou3TDdEwRaDAXffkdkXnsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGpk87%2FbtsmRnsP5ej%2FOu3TDdEwRaDAXffkdkXnsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;778&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&amp;nbsp;결과적으로 _beanProperties에 역직렬화하려는 json의 키가 있어야 한다는 이야기인데,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;_beanProperties에&amp;nbsp;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;upperName은&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;없지만&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;discountedItmeList은 있어서 에러가 발생하지 않는 것이다.&amp;nbsp;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;_beanProperties은 json을 파싱하기 전에 이미 설정된다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) 왜 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;discountedItmeList은 있고, upperName은 없을까?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;질문에 대한 해답은 타입이다. addBeanProps 함수에서는 ignore 설정 세팅 외에 properties 세팅도 이루어진다. 클래스에 선언된 필드(name, itemList) 외에도 getter 함수도 properties 대상으로 선정된다. getUpperName 함수와 getDiscountedItemList 함수도 properties 대상이다. get으로 시작하는 함수는 앞에 get을 제외한 뒤에 있는 텍스트가 properties 이름으로 추가된다. 예를 들어 getTitle이라는 함수는 title로 properties에 후보에 추가된다. 후보라고 한 이유는 모두 역직렬화 properties로 대상으로 추가되는 게 아니라 마지막 최종 필터링 절차가 남아있기 때문이다. 이 필터링 절차에서 upperName이 대상에서 걸러지게 되는데 이 부분 코드를 보자.&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv5fWN/btsm4ChKH90/TkDclPX65viXq78EfTmxu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv5fWN/btsm4ChKH90/TkDclPX65viXq78EfTmxu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv5fWN/btsm4ChKH90/TkDclPX65viXq78EfTmxu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv5fWN%2Fbtsm4ChKH90%2FTkDclPX65viXq78EfTmxu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;846&quot; height=&quot;702&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 코드에서 propDefs에는 Store 클래스에 있던 필드, getter 등의 함수에서 가져온 properties 후보들이 있다. 이 값들을 순회하면서 최종적으로 propertie를 선별한다. 조건은 3가지이다. 1) setter가 있는지, 2) 필드값인지, 3) getter가 있는지.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;upperName 함수와 discountedItemList는 3번째 조건인 getter에 해당된다. 하지만 getter라고 충족되는 건 아니고 조건이 하나 더 있다. Collection 타입이거나 Map 타입일 경우에만 최종적으로 deserialize 할 수 있는 propertie에 추가된다. (주석에 JACKSON-88에 따른다고 나와있는데, 이게 뭔지 찾지 못했다. 혹시 아시는 분은 댓글로 공유 부탁드립니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;아래는 최종적으로 조건에 맞는 prop을 _properties에 추가하는 코드이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd94u8/btsmUvKEgdc/e33n4UB74QKoUFKqherDuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd94u8/btsmUvKEgdc/e33n4UB74QKoUFKqherDuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd94u8/btsmUvKEgdc/e33n4UB74QKoUFKqherDuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd94u8%2FbtsmUvKEgdc%2Fe33n4UB74QKoUFKqherDuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;736&quot; height=&quot;248&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzmKSS/btsmUwph9Z0/HgSq0Cbad5ETR2u2zvxka1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzmKSS/btsmUwph9Z0/HgSq0Cbad5ETR2u2zvxka1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzmKSS/btsmUwph9Z0/HgSq0Cbad5ETR2u2zvxka1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzmKSS%2FbtsmUwph9Z0%2FHgSq0Cbad5ETR2u2zvxka1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;902&quot; height=&quot;156&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) 왜 discontedItemList 데이터가 itemList 데이터에 add가 되는 것일까?&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;itemList와 discountedItemList의 propertie의 타입이 다르다.&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rQ8eK/btsmQepGjjk/LVJWBG7HLkn9S75ut7tBYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rQ8eK/btsmQepGjjk/LVJWBG7HLkn9S75ut7tBYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rQ8eK/btsmQepGjjk/LVJWBG7HLkn9S75ut7tBYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrQ8eK%2FbtsmQepGjjk%2FLVJWBG7HLkn9S75ut7tBYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;147&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;itemList propertie는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;필드에 직접 할당하도록 설정된 특성을 가진 FieldProperty 타입인 반면에 discountedItemList propertie는&amp;nbsp;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;특성 값을 가져와서 직접 수정하여 간접적으로 Collection 또는 Map 특성을 구현하는 SetterlessProperty 타입이다. 실제 필드가 아닌 getter로 정의된 propertie는 직접 할당이 아닌 값을 가져와서 수정하는 식으로 역직렬화하는 것이다. 역직렬화 코드를 살펴보자.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;각 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;FieldProperty 클래스와 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;SetterlessProperty 클래스는 모두&lt;/span&gt;&amp;nbsp;&lt;/span&gt;SettableBeanProperty 추상클래스를 상속하고 있고, deserializeAndSet 함수를 구현하게 되어있다. 각 구현체를 비교해 보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;3-1) FieldProperty&amp;nbsp;클래스&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;createUsingDefault 함수를 호출해서 기본 객체를 생성한 후, set 함수를 통해 instance에 값을 넣는다. 여기서 instance는 물론 Store 객체이다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4rDmQ/btsnGjJrDrO/hK2KhrxxV3UHNjtOioGG1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4rDmQ/btsnGjJrDrO/hK2KhrxxV3UHNjtOioGG1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4rDmQ/btsnGjJrDrO/hK2KhrxxV3UHNjtOioGG1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4rDmQ%2FbtsnGjJrDrO%2FhK2KhrxxV3UHNjtOioGG1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1007&quot; height=&quot;695&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;3-2) SetterlessProperty&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 클래스&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;SetterlessProperty 클래스는 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;FieldProperty 클래스와 다르다. 주석에도 &quot;need to fetch Collection/Map to modify라고 쓰여있듯이 getter를 통해 수정할 객체(toModify)를 가져온다. 그러면 toModify 객체에는 &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;getDiscountedItemList 함수 안에서 itemList를 반환하기 때문에 이전에 이미 역직렬화가 수행된 itemList의 값인 &lt;/span&gt;[&quot;apple&quot;, banana&quot;]가 세팅된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfMR4i/btsnLbjBTro/yulyskjfBXLwB5oXQEOGqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfMR4i/btsnLbjBTro/yulyskjfBXLwB5oXQEOGqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfMR4i/btsnLbjBTro/yulyskjfBXLwB5oXQEOGqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfMR4i%2FbtsnLbjBTro%2FyulyskjfBXLwB5oXQEOGqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1013&quot; height=&quot;745&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이후에는 FieldProperty와 동일하게 객체에 값을 add 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtELR3/btsnGkO8x5W/njGPX3fcyzpEQvQ2yt83ZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtELR3/btsnGkO8x5W/njGPX3fcyzpEQvQ2yt83ZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtELR3/btsnGkO8x5W/njGPX3fcyzpEQvQ2yt83ZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtELR3%2FbtsnGkO8x5W%2FnjGPX3fcyzpEQvQ2yt83ZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1006&quot; height=&quot;483&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;483&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre data-ke-language=&quot;java&quot;&gt;&lt;code&gt;{&quot;name&quot;:&quot;store1&quot;, &quot;upperName&quot;:&quot;STORE1&quot;, &quot;itemList&quot;:[&quot;apple, banana&quot;],&quot;discountedItemList&quot;:[&quot;banana&quot;]}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 json을 역직렬화 Store 클래스로 역직렬화했을 때 itmeList 값이 &quot;apple&quot;, &quot;banana&quot;, &quot;banana&quot; 이렇게 나오는 이유는 discountedItemList가 역직렬화될 때 이미 역직렬화된 itemList 값에 add 되었기 때문이다. List 타입 &lt;span style=&quot;text-align: start;&quot;&gt;field 객체와 getter 함수 &lt;/span&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;&lt;span style=&quot;color: #333333;&quot;&gt;field 객체는 역직렬화 시, &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;FieldProperty 클래스를 사용한다. FieldProperty는 새로운 객체를 생성하고, json 값을 add 한다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;getter 함수는 역직렬화 시, Setterless&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;Property &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;클래스를 &lt;/span&gt;사용한다. &lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;Setterless&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;Property는 getter에 instance를 주입하여 객체를 생성하고, json 값을 add 한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&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;&lt;span style=&quot;color: #333333;&quot;&gt;마지막으로 여기에서 알 수 있는 건, 만약 json에 discountedItemList 값만 있고, itemList 값이 없으면 에러가 발생할 것이다. 이유는 SetterlessProperty에서 getter에 invoke하여 생성한 객체가 null일 것이고, null에 값을 add 할 수 없기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>deserialize</category>
      <category>Jackson</category>
      <category>Java</category>
      <category>ObjectMapper</category>
      <category>자바</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/231</guid>
      <comments>https://donggov.tistory.com/231#entry231comment</comments>
      <pubDate>Sun, 16 Jul 2023 07:29:45 +0900</pubDate>
    </item>
    <item>
      <title>무코다 이발소</title>
      <link>https://donggov.tistory.com/230</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwFx7I/btsl6NkNJeu/01K50TzMWha9GZVESihQiK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwFx7I/btsl6NkNJeu/01K50TzMWha9GZVESihQiK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwFx7I/btsl6NkNJeu/01K50TzMWha9GZVESihQiK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwFx7I%2Fbtsl6NkNJeu%2F01K50TzMWha9GZVESihQiK%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;1818&quot; height=&quot;1818&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;한동안 하루하루 먹고 살기 바빠서 책 읽을 여유가 없었는데 이제 좀 여유가 생겼다. 스스로 바쁘게 산탓도 있지만 오랜만에 주말내내 여유롭게 책도 읽고 드라마도 보고 낮잠도 즐기니 세상을 다 가진것 같다.&lt;br&gt;&lt;br&gt;무코다 이발소는 한때 탄광산업으로 번성했지만 지금은 소멸위기에 놓인 도마자와 마을과 주민들의 이야기다. 무코다 이발소는 도마자와 마을에 있는 이발소이고 이발소에 대한 이야기는 아니다. 일본도 그렇고 한국도 그렇고 농촌 소멸위기는 공통된 사회문제이다.&lt;br&gt;&lt;br&gt;책을 읽는 내내 고향 생각, 어릴적 생각이 많이 나고 소설속 모습과 많이 오버랩되었다. 동네 사람들은 한다리 건너면 아는 사이고, 주변 이웃집 문은 항상 열려있었고 마치 우리집인냥 마음껏 드나들며 거리낌없이 지내던 시절. 그게 당연한줄 알았던 시절이었는데 지금은 상상도 못할 일이 되었다. 나는 지금이라도 돌아가고 싶은 마음반, 아직은 서울에 계속 있고 싶은 마음반이다. 소설속 이야기처럼 현실적인 문제가 큰데, 고향에 일자리와 의료시설만 확충된다면 귀촌 가능성은 90까지 올라가지 않을까 싶다. 도마자와 같은 이야기가 판타지가 아닌 현실이 되길&lt;/p&gt;</description>
      <category>취미</category>
      <category>독서</category>
      <category>무코다이발소</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/230</guid>
      <comments>https://donggov.tistory.com/230#entry230comment</comments>
      <pubDate>Sun, 2 Jul 2023 21:36:00 +0900</pubDate>
    </item>
    <item>
      <title>Sentry onpromise 설치 및 vue 애플리케이션 설정</title>
      <link>https://donggov.tistory.com/229</link>
      <description>&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #060b11; text-align: start;&quot;&gt;Sentry는&lt;span&gt; &lt;/span&gt;&lt;/span&gt;로그 취합 및 분석 도구이자 모니터링 플랫폼이다. Front-End 로그 수집에도 많이 사용되는 플랫폼이다. 다양한 프레임워크를 지원하고, 로그 시각화 도구까지 지원한다. Saas 형태로도 제공하고 onpromise 방법도 제공한다. docker compose나 helm chart를 사용하여 쉽게 설치할 수 있다. 개인 서버가 있고, freetier가 부족하면 직접 설치해서 사용하는 것도 좋은 선택이다.&lt;span style=&quot;background-color: #ffffff; color: #060b11; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br3ixa/btskiTHsGso/rKcW8cL90STYiRKBasbkQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br3ixa/btskiTHsGso/rKcW8cL90STYiRKBasbkQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br3ixa/btskiTHsGso/rKcW8cL90STYiRKBasbkQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr3ixa%2FbtskiTHsGso%2FrKcW8cL90STYiRKBasbkQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1101&quot; height=&quot;536&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Self-Hosted 설치&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Docker compose 또는 helm chart를 사용하여 설치한다.&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;가이드&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://github.com/getsentry/self-hosted&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/getsentry/self-hosted&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;git : &lt;a href=&quot;https://github.com/getsentry/self-hosted&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/getsentry/self-hosted&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;helm&amp;nbsp;chart&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://github.com/sentry-kubernetes/charts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/sentry-kubernetes/charts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Sentry 설치가 완료되었으면 아래 주요 애플리케이션 설정을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;install &amp;amp; config&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;vuejs 기준이다. 먼저 sentry/vue와 sentry/tracing를 설치한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687077366299&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Using yarn
yarn add @sentry/vue @sentry/tracing

# Using npm
npm install --save @sentry/vue @sentry/tracing&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;sentry 가이드에서처럼 index.js에서 바로 해도 되지만 설정 파일을 따로 만들어서 관리하는 게 좋다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;/sentry/index.js 같은 파일을 만들어서 관리하자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687077449521&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// sentry/index.js
import Vue from &quot;vue&quot;;
import * as Sentry from &quot;@sentry/vue&quot;;
import { Integrations } from &quot;@sentry/tracing&quot;;

export default Sentry.init({
  Vue,
  dsn: VUE_APP_SENTRY_DSN,  // env 파일에 저장
  integrations: [new Integrations.BrowserTracing()],

  // Set tracesSampleRate to 1.0 to capture 100%
  // of transactions for performance monitoring.
  // We recommend adjusting this value in production
  tracesSampleRate: 1.0,
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 sentry/vue sdk는 init에서 구성 옵션을 허용한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #231c3d; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;attachProps (default :&lt;span&gt;&amp;nbsp;&lt;/span&gt;true) : 모든 Vue 구성 요소의 소품을 이벤트와 함께 포함할지 여부&lt;/li&gt;
&lt;li&gt;logErrors (default :&lt;span&gt;&amp;nbsp;&lt;/span&gt;true) : SDK가 Vue의 원래&lt;span&gt;&amp;nbsp;&lt;/span&gt;logError 함수도 호출할지 여부&lt;/li&gt;
&lt;li&gt;trackComponents (&lt;span style=&quot;background-color: #ffffff; color: #231c3d; text-align: left;&quot;&gt;default : &lt;/span&gt;false) : 앱의 &lt;a href=&quot;https://docs.sentry.io/platforms/javascript/guides/vue/features/component-tracking/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구성 요소&lt;/a&gt;를 추적한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Timezone 설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;최초에 UTC 00:00으로 지정되어 있는 Timezone을 원하는 Timezone으로 변경한다.&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;&lt;span style=&quot;color: #333333;&quot;&gt;경로 : Settings &amp;gt; Account &amp;gt; Details&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTOJvJ/btsknOd4wFB/i8u2gaAjzqXkryJaq0Wkak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTOJvJ/btsknOd4wFB/i8u2gaAjzqXkryJaq0Wkak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTOJvJ/btsknOd4wFB/i8u2gaAjzqXkryJaq0Wkak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTOJvJ%2FbtsknOd4wFB%2Fi8u2gaAjzqXkryJaq0Wkak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1158&quot; height=&quot;268&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;Breadcrumbs&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Sentry는&amp;nbsp;이동 경로를&amp;nbsp;사용하여 문제 이전에 발생한 이벤트의 흔적을 만든다.&amp;nbsp;이러한 이벤트는 기존 로그와 매우 유사하지만 보다 자세한 데이터를 기록할 수 있다. &lt;a style=&quot;color: #333333;&quot; href=&quot;http://%20https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/#breadcrumb-types&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Breadcrumbs 속성&lt;/a&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;&lt;span style=&quot;color: #333333;&quot;&gt;type : 탐색경로의 유형&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;category : 이벤트가 무엇인지 또는 어디에서 왔는지 나타내는 항목. 예) ui.click&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;message : 이동 경로에 대한 메시지&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;data : 이동 경로와 관련된 임의의 데이터&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;원하는 breadcrumb 정보를 추가하려면 addBreadcrumb 함수를 사용하면 된다. 아래는 axios interceptor에서 request, response 데이터를 breadcrumb에 추가하는 예제다. 아래는 예제일 뿐이고 실제 axios 데이터를 추가하는 건 context에서 하는 게 가독성이 더 좋다. context 추가는 아래에서 한번 더 다룰 예정이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687049861646&quot; class=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;Javascript&quot;&gt;&lt;code&gt;import axios from 'axios';
import * as Sentry from '@sentry/vue';

axios.interceptors.request.use(config =&amp;gt; {
&amp;nbsp;&amp;nbsp;// 요청 전 데이터 캡처
&amp;nbsp;&amp;nbsp;Sentry.addBreadcrumb({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;category: 'xhr',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message: 'XHR Request',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data: config.data, // 요청 데이터
&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;return config;
}, error =&amp;gt; {
&amp;nbsp;&amp;nbsp;return Promise.reject(error);
});

axios.interceptors.response.use(response =&amp;gt; {
&amp;nbsp;&amp;nbsp;// 응답 후 데이터 캡처
&amp;nbsp;&amp;nbsp;Sentry.addBreadcrumb({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;category: 'xhr',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message: 'XHR Response',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data: response.data, // 응답 데이터
&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;return response;
}, error =&amp;gt; {
&amp;nbsp;&amp;nbsp;return Promise.reject(error);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Context 추가&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;context를 사용하면 임의의 데이터를 이벤트에 첨부할 수 있다. 검색은 할 수 없지만 이슈 페이지에서 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oWjk6/btskg61ICwE/4sOTmLZ4Ok2ZeiUgR4hLtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oWjk6/btskg61ICwE/4sOTmLZ4Ok2ZeiUgR4hLtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oWjk6/btskg61ICwE/4sOTmLZ4Ok2ZeiUgR4hLtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoWjk6%2Fbtskg61ICwE%2F4sOTmLZ4Ok2ZeiUgR4hLtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;410&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위에서 axios 데이터를 Breadcrumb에 추가하는 예제가 있었는데, Breadcrumb 외에 context에도 추가하는 방법도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;nbsp;axios error 객체에 담겨있는 다양한 정보를 아래처럼 context에 추가적으로 설정할 수 있다. 이렇게 하면 Breadcrumb에 추가하는 것보다 데이터를 더 보기 편해진다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687058541761&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import * as Sentry from &quot;@sentry/browser&quot;;

const { method, url, params, data, headers } = error.config; // axios의 error객체
const { data, status } = error.response; // axios의 error객체

Sentry.setContext('API Request Detail', {
  method,
  url,
  params,
  data,
  headers,
});

Sentry.setContext('API Response Detail', {
  status,
  data,
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;태그(Tags)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;tag는 매우 강력한 기능이다. &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&lt;/span&gt;tag&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;는&amp;nbsp;&lt;/span&gt;키와 값이 쌍으로 이루어진 문자열이&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;다. &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;Sentry는 tag 빈도, 마지막 시간뿐만 아니라 이벤트에 대한 모든 태그를 자동으로 인덱싱 한다. &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;태그는 관련 이벤트에 빠르게 접근하고 일련의 이벤트에 대한 태그 배포를 보는 데 도움을 준다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;tag의 키는 32 글자이고, 값은 200자까지 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687051683528&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import * as Sentry from &quot;@sentry/browser&quot;;
Sentry.setTag(&quot;page_locale&quot;, &quot;de-at&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZheub/btskrn8BfFu/tUbu8j6KCbHiuRzhKwdWfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZheub/btskrn8BfFu/tUbu8j6KCbHiuRzhKwdWfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZheub/btskrn8BfFu/tUbu8j6KCbHiuRzhKwdWfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZheub%2Fbtskrn8BfFu%2FtUbu8j6KCbHiuRzhKwdWfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;751&quot; height=&quot;206&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Scope 설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Scope는 이벤트와 함께 전송되어야 하는 유용한 정보를 보유한다다. Context 또는 Breadcrumb도 Scope에 저장된다. 이벤트가 전송되면 해당 이벤트의 데이터를 현재 Scope의 데이터와 합친다. 이런 특성을 이용해서 각 이벤트마다 원하는 데이터를 추가할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Scope는 &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;configureScope와 &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;withScope&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 두 종류가 있다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #060b11; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #060b11; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;configureScope&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #060b11; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot;&gt;현재 범위를 재구성할 때&amp;nbsp;사용된다. 사용자 같은 공통 데이터를 설정하는데 주로 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687061126952&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import * as Sentry from &quot;@sentry/browser&quot;;

Sentry.configureScope(function (scope) {
  scope.setTag(&quot;my-tag&quot;, &quot;my value&quot;);
  scope.setUser({
    id: 42,
    email: &quot;john.doe@example.com&quot;,
  });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;withScope&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;단일 호출 내에서 Data를 재구성할 때 사용된다. 하나의 특정 이벤트에 대한 데이터만 전송하려는 경우 매우 유용하다. 현재 범위의 데이터 복제본을 만들고 변경 사항은&amp;nbsp;withScope콜백 함수 내에서 격리된 상태로 유지된다.&amp;nbsp;이렇게 하면 context 정보의 일부를 코드의 특정 위치로 더 쉽게 분리하거나 호출하여 모든 context 정보를 간단히 제거할 수도 있다. &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;오류에 따라 서로 다른 데이터를 추가적으로 전송해야 할 필요가 있을 때 유용하게 사용할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;다음은 하나의 특정 오류에만&amp;nbsp;withScope를 사용하여&amp;nbsp;level과 tag를 추가하는 예제이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687061269602&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Sentry.withScope(function (scope) {
  scope.setTag(&quot;my-tag&quot;, &quot;my value&quot;);
  scope.setLevel(&quot;warning&quot;);
  // will be tagged with my-tag=&quot;my value&quot;
  Sentry.captureException(new Error(&quot;my error&quot;));
});

// will not be tagged with my-tag
Sentry.captureException(new Error(&quot;my other error&quot;));&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;민감한 데이터 스크러빙&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot;&gt;개인 식별 정보 등 수집 데이터에 민감한 데이터가 포함되어 있다면 수집되지 않도록 데이터에서 삭제해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;beforeSend&lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt; 또는&amp;nbsp;&lt;/span&gt;beforeSendTransaction 훅을 사용하면 좋다. (더 자세한 내용은 &lt;a style=&quot;color: #333333;&quot; href=&quot;https://docs.sentry.io/platforms/javascript/guides/vue/data-management/sensitive-data/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;sensitive-data&lt;/a&gt;를 참고)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686982532439&quot; class=&quot;mel&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Sentry.init({
  dsn: &quot;https://examplePublicKey@o0.ingest.sentry.io/0&quot;,

  // Called for message and error events
  beforeSend(event) {
    // Modify or drop the event here
    if (event.user) {
      // Don't send user's email address
      delete event.user.email;
    }
    return event;
  },
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;참고&lt;/b&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;&lt;a href=&quot;https://docs.sentry.io/platforms/javascript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.sentry.io/platforms/javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tech.kakaopay.com/post/frontend-sentry-monitoring/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://tech.kakaopay.com/post/frontend-sentry-monitoring/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>sentry</category>
      <category>VUE</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/229</guid>
      <comments>https://donggov.tistory.com/229#entry229comment</comments>
      <pubDate>Sun, 18 Jun 2023 17:57:07 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트 Vite Github octokit 세팅 에러</title>
      <link>https://donggov.tistory.com/222</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;깃허브 octokit 라이브러리 사용 에러 조치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드 환경 : Vite&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rest api를 사용하려면 octokit 설치할 필요 없고 @octokit/core만 설치해도 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1682459425102&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yarn add @octokit/core&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vite에 아무 설정도 하지 않으면 아래 에러가 발생한다.&lt;/p&gt;
&lt;pre id=&quot;code_1682459448188&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;caught ReferenceError: global is not defined
    at index.mjs:657:16&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vite.config 파일에 아래 global 설정 추가&lt;/p&gt;
&lt;pre id=&quot;code_1682459536568&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;define: {
  global: {},
},&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;global 설정 추가했는데 아래 에러가 뜨면&lt;/p&gt;
&lt;pre id=&quot;code_1682459824732&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dex.mjs:1165 Uncaught TypeError: Cannot read properties of undefined (reading 'prototype')
    at index.mjs:1165:65&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;isomorphic-fetch 설치 후, alias에 node-fetch를 추가한다.&lt;/p&gt;
&lt;pre id=&quot;code_1682459959035&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;isomorphic-fetch&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1682459850944&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;resolve: {
    alias: {
      'node-fetch': 'isomorphic-fetch',
    },
},&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>github</category>
      <category>octokit</category>
      <category>Vite</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/222</guid>
      <comments>https://donggov.tistory.com/222#entry222comment</comments>
      <pubDate>Wed, 26 Apr 2023 07:01:22 +0900</pubDate>
    </item>
    <item>
      <title>vercel 404 NOT_FOUND 에러 해결</title>
      <link>https://donggov.tistory.com/221</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;vercel에 간단한 SPA 앱을 만들어서 배포했는데 아래와 같은 에러가 발생하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W1gWI/btr5OQlgr5g/Gs8sCZaklyLl2h9XTSylW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W1gWI/btr5OQlgr5g/Gs8sCZaklyLl2h9XTSylW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W1gWI/btr5OQlgr5g/Gs8sCZaklyLl2h9XTSylW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW1gWI%2Fbtr5OQlgr5g%2FGs8sCZaklyLl2h9XTSylW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;223&quot; data-origin-width=&quot;440&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;test.com/about 같은 하위 URL로 접근했을 경우, 서버(vercel)는 해당 URL을 처리하는 방법을 모른다. SPA의 라우팅 처리가 아닌&amp;nbsp;해당 리소스를 찾으려고 하기 때문에 404 에러가 발생하는 것이다. 이럴 때는 vercel에 내 SPA 앱의 인덱스 경로를 설정해 주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://vercel.com/docs/concepts/projects/project-configuration#rewrites&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;vercel rewrites&lt;/a&gt;를 참고해 vercel.json에 rewrite 설정을 하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1679726418815&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;rewrites&quot;: [{ &quot;source&quot;: &quot;/(.*)&quot;, &quot;destination&quot;: &quot;/&quot; }]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 rewrites 방법은 단순하지만 단점이 있다. 어떤 이유로 이미지나 번들, html에 직접 접근하지 못한다. 이럴 경우에는 routes 설정을 한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680009886773&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;routes&quot;: [{ &quot;src&quot;: &quot;/[^.]+&quot;, &quot;dest&quot;: &quot;/&quot;, &quot;status&quot;: 200 }]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://vercel.com/docs/concepts/projects/project-configuration&quot;&gt;https://vercel.com/docs/concepts/projects/project-configuration&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1680009946307&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Configuring Projects with vercel.json&quot; data-og-description=&quot;Learn how to use vercel.json to configure and override the default behavior of Vercel from within your project.&quot; data-og-host=&quot;vercel.com&quot; data-og-source-url=&quot;https://vercel.com/docs/concepts/projects/project-configuration&quot; data-og-url=&quot;https://vercel.com/docs/concepts/projects/project-configuration&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPh9TO/hyR5sbkiXm/Rf8kPxl1FGuqZQFKUzZkb1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://vercel.com/docs/concepts/projects/project-configuration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://vercel.com/docs/concepts/projects/project-configuration&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPh9TO/hyR5sbkiXm/Rf8kPxl1FGuqZQFKUzZkb1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;Configuring Projects with vercel.json&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to use vercel.json to configure and override the default behavior of Vercel from within your project.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;vercel.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>vercel</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/221</guid>
      <comments>https://donggov.tistory.com/221#entry221comment</comments>
      <pubDate>Sat, 25 Mar 2023 15:41:21 +0900</pubDate>
    </item>
    <item>
      <title>자바 벨리데이터(validator)과 리플렉션(reflection)</title>
      <link>https://donggov.tistory.com/220</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;validator는 null을 검사하지 않고 순서를 보장하지 않는다.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 클래스처럼 벨리데이터를 사용하던 중 의문이 든 내용이다.&lt;/p&gt;
&lt;pre id=&quot;code_1678584992720&quot; class=&quot;reasonml&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class User {
    @Size(min = 1, max = 50)
    @Pattern(regexp = &quot;^[a-zA-Z]$&quot;)
    private String name;

    @Min(value = 18)
    private int age;

    @Min(value = 130)
    private int tall;

    public User(String name, int age, int tall) {
        this.name = name;
        this.age = age;
        this.tall = tall;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- name에 null이 들어와도 에러가 발생하지 않는다. @size, @pattern 동작 안 함&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1) null은 검증 대상에서 무시된다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째로 먼저 name에 null이 들어왔을 때 동작이 안 하는 건 쉽게 알 수 있었다. 이유는 JRS 303 스펙에 &quot;Null references are ignored.&quot;이라고 명시되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;The&amp;nbsp;@Valid&amp;nbsp;annotation on a given association (i.e. object reference or collection, array,&amp;nbsp;Iterable&amp;nbsp;of objects), dictates the Bean Validator implementation to apply recursively the Bean Validation routine on (each of) the associated object(s). This mechanism is recursive: an associated object can itself contain cascaded references.&lt;br /&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Null references are ignored.&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 null을 체크하려면 @NotNull 또는 @NotBlank 등의 어노테이션을 추가하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1678585452826&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Size(min = 1, max = 50)
@Pattern(regexp = &quot;^[a-zA-Z]$&quot;)
@NotBlank
private String name;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2) 검증은 클래스에 선언한 필드 및 어노테이션 순서대로 수행하지 않는다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;User 클래스 필드에서 모든 필드 값이 오류일 경우, name, age, tall 순서로 에러를 반환하지 않는다.&lt;/p&gt;
&lt;pre id=&quot;code_1678586312745&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static void main(String[] args) {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();

    User user = new User(&quot;&quot;, 8, 100);

    Set&amp;lt;ConstraintViolation&amp;lt;User&amp;gt;&amp;gt; violations = validator.validate(user);
    for (ConstraintViolation&amp;lt;User&amp;gt; violation : violations) {
        System.out.println(violation.getPropertyPath() + &quot;: &quot; + violation.getMessage());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;name, age, tall에 &quot;&quot;, 8, 100을 입력하면 아래처럼 에러를 반환한다. 결과 순서가 클래스 내 필드 순서와 어노테이션 순서와 맞지 않는다.&lt;/p&gt;
&lt;pre id=&quot;code_1678588605101&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: size must be between 1 and 50
name: must match &quot;^[a-zA-Z]$&quot;
age: must be greater than or equal to 18
name: must not be blank
tall: must be greater than or equal to 130&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 결과 순서는 수행할 때마다 바뀐다.&lt;/p&gt;
&lt;pre id=&quot;code_1678586828081&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static void main(String[] args) {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();

    for (int i=0; i&amp;lt;3; i++) {
        User user = new User(&quot;&quot;, 8, 100);
        Set&amp;lt;ConstraintViolation&amp;lt;User&amp;gt;&amp;gt; violations = validator.validate(user);
        for (ConstraintViolation&amp;lt;User&amp;gt; violation : violations) {
            System.out.println(violation.getPropertyPath() + &quot;: &quot; + violation.getMessage());
        }
        System.out.println(&quot;========================================&quot;);
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1678588679291&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: size must be between 1 and 50
name: must match &quot;^[a-zA-Z]$&quot;
age: must be greater than or equal to 18
name: must not be blank
tall: must be greater than or equal to 130
========================================
name: must match &quot;^[a-zA-Z]$&quot;
age: must be greater than or equal to 18
name: must not be blank
name: size must be between 1 and 50
tall: must be greater than or equal to 130
========================================
name: must match &quot;^[a-zA-Z]$&quot;
name: size must be between 1 and 50
age: must be greater than or equal to 18
tall: must be greater than or equal to 130
name: must not be blank
========================================&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 User 객체를 매번 생성하지 않고, 이미 생성된 객체에 대해서 수행하면 순서는 동일하게 나온다.&lt;/p&gt;
&lt;pre id=&quot;code_1678586931637&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;User user = new User(&quot;&quot;, 8, 100);
for (int i=0; i&amp;lt;3; i++) {
    Set&amp;lt;ConstraintViolation&amp;lt;User&amp;gt;&amp;gt; violations = validator.validate(user);
    for (ConstraintViolation&amp;lt;User&amp;gt; violation : violations) {
        System.out.println(violation.getPropertyPath() + &quot;: &quot; + violation.getMessage());
    }
    System.out.println(&quot;========================================&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1678588650356&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: size must be between 1 and 50
name: must match &quot;^[a-zA-Z]$&quot;
age: must be greater than or equal to 18
name: must not be blank
tall: must be greater than or equal to 130
========================================
name: size must be between 1 and 50
name: must match &quot;^[a-zA-Z]$&quot;
age: must be greater than or equal to 18
name: must not be blank
tall: must be greater than or equal to 130
========================================
name: size must be between 1 and 50
name: must match &quot;^[a-zA-Z]$&quot;
age: must be greater than or equal to 18
name: must not be blank
tall: must be greater than or equal to 130
========================================&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서론이 길었는데 결론부터 말하자면, 순서가 다른 이유는 validator는 리플렉션(reflection)을 사용하고 있고 리플렉션은 순서를 보장하지 않기 때문이다.&lt;/p&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;하지만 리플렉션 API들은 순서를 보장하지 않는다. 예를 들어 아래 두 개 API를 보자. 각각 클래스에 선언된 필드와 메서드를 조회하는 API이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;getDeclaredFields&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Returns an array of Field objects reflecting all the fields declared by the class or interface represented by this Class object. This includes public, protected, default (package) access, and private fields, but excludes inherited fields. If this Class object represents a class or interface with no declared fields, then this method returns an array of length 0. If this Class object represents an array type, a primitive type, or void, then this method returns an array of length 0. &lt;i&gt;&lt;u&gt;&lt;b&gt;The elements in the returned array are not sorted and are not in any particular order.&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;getDeclaredMethods&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Returns an array containing Method objects reflecting all the declared methods of the class or interface represented by this Class object, including public, protected, default (package) access, and private methods, but excluding inherited methods. If this Class object represents a type that has multiple declared methods with the same name and parameter types, but different return types, then the returned array has a Method object for each such method. If this Class object represents a type that has a class initialization method &amp;lt;clinit&amp;gt;, then the returned array does not have a corresponding Method object. If this Class object represents a class or interface with no declared methods, then the returned array has length 0. If this Class object represents an array type, a primitive type, or void, then the returned array has length 0. &lt;b&gt;&lt;i&gt;&lt;u&gt;The elements in the returned array are not sorted and are not in any particular order.&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;리플렉션이 순서를 보장하지 않는다는 건 알았는데, 그럼 왜 순서를 보장하지 않을(못할)까?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 이유를 알기 위해선 자바의 메타데이터(Metadata)와 메타스페이스(Metaspace)와 에 대한 지식이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Metaspace(&lt;/b&gt;&lt;/b&gt;메타스페이스)&lt;/b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Metaspace는 자바 8 이후부터 도입된 개념으로 JVM의 메모리 영역 중 하나이다. JVM의 메모리 영역 중 Permgen(Permanent Generation) 대신 새로 생긴 메모리 영역이다. 가장 큰 차이는 Permgen은 Heap 영역에 있었지만 Metaspace는 Native Memory 영역에 위치한다는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwvNLW/btr3gOCufIC/Mylh9p7b5xT5DUoIUaYNy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwvNLW/btr3gOCufIC/Mylh9p7b5xT5DUoIUaYNy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwvNLW/btr3gOCufIC/Mylh9p7b5xT5DUoIUaYNy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwvNLW%2Fbtr3gOCufIC%2FMylh9p7b5xT5DUoIUaYNy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;583&quot; height=&quot;322&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;322&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;자바에서 클래스는 최초에 모두 로딩되는 것은 아니고 필요 시점에 로딩되는데, Metaspace는 클래스가 로드되고 런타임이 JVM에 준비될 때 클래스로더(loader)에 의해 할당된다. 그리고 Metaspace 릴리즈는 클래스 로더가 언로드(unload) 될 때 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Metadata(&lt;/b&gt;&lt;/b&gt;메타데이터)&lt;/b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;metadata(메타데이터)는 클래스의 정보를 기술하는 데이터이다. metadata는 클래스의 이름, 필드, 메서드, 생성자, 상위 클래스, 인터페이스 등과 같은 정보를 포함한다. 그리고 metadata는 heap이 아닌 native memory 영역에 위치하며, 이 영역이 바로 Metaspace이다. 클래스는 heap 영역 안에 있는 object이지만, metadata는 object가 아니며 heap 안에 위치하지 않고, native memory의 metaspace 영역에 위치한다. 그리고 JVM은 클래스 멤버를 내부적으로 저장하는 방법을 정의하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 자바 validator는 리플렉션을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 리플렉션은 metadata를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- metadata는 metaspace에 위치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- mestaspace는 클래스가 로드될 때 생성되고, 언로드될때 해지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- metadata는 JVM이 클래스를 로드할 때 수집된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- JVM은 클래스 멤버를 내부적으로 저장하는 방법을 정의하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그래서 리플렉션을 사용하여 클래스 멤버를 가져오는 validator는 순서가 보장되지 않는다.&lt;/p&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://beanvalidation.org/1.0/spec/#constraintdeclarationvalidationprocess-validationroutine-graphvalidation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://beanvalidation.org/1.0/spec/#constraintdeclarationvalidationprocess-validationroutine-graphvalidation&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://stackoverflow.com/questions/1097807/java-reflection-is-the-order-of-class-fields-and-methods-standardized&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/1097807/java-reflection-is-the-order-of-class-fields-and-methods-standardized&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://jaemunbro.medium.com/java-metaspace%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-ac363816d35e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jaemunbro.medium.com/java-metaspace%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-ac363816d35e&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>Java</category>
      <category>Reflection</category>
      <category>validation</category>
      <category>자바</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/220</guid>
      <comments>https://donggov.tistory.com/220#entry220comment</comments>
      <pubDate>Wed, 15 Mar 2023 05:57:10 +0900</pubDate>
    </item>
    <item>
      <title>vue 여러개의 값을 동시에 watch 하는 방법</title>
      <link>https://donggov.tistory.com/219</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;여러 프로퍼티를 한 번에 watch 하는 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 코드가 있다. car와 coffee 값이 변하면 동일한 doSomething 함수를 호출한다. 여러 개를 watch 해야 하는 상황에서 모든 프로퍼티마다 watch를 선언하지 않고 한 번에 하는 방법이 있다.&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1670893059767&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;watch: {
    car: function (val, oldVal) {
      doSomething();
    },
    coffee: function (val, oldVal) {
      doSomething();
    },
    // .. so on
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Vue 3&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vue 3에서는 아래처럼 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1670893164133&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { watch, ref } from 'vue';

export default {
  setup(() =&amp;gt; {
    const car = ref('car'), coffee = ref('coffe');

    watch([car, coffee], ([newA, newB], [prevA, prevB]) =&amp;gt; {
      doSomething();
    });
  });
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Vue 2&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vue 2에서는 아래처럼 $&lt;span&gt;watch instance를 사용하여&lt;span&gt; 구현&lt;/span&gt;&lt;/span&gt;할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1670893504176&quot; class=&quot;reasonml&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;this.$watch(vm =&amp;gt; [vm.car, vm.coffe].join(), val =&amp;gt; {
  doSomething();
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 위 방법이 새로운 배열을 만들기 때문에 성능에 문제를 초래할 수 있다고 생각되면 아래처럼 하면된다.&lt;/p&gt;
&lt;pre id=&quot;code_1670893450997&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;this.$watch(
    (vm) =&amp;gt; (vm.car, vm.coffe, Date.now()),
    function () {
    	doSomething();
    }
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>javascript</category>
      <category>VUE</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/219</guid>
      <comments>https://donggov.tistory.com/219#entry219comment</comments>
      <pubDate>Tue, 13 Dec 2022 18:57:25 +0900</pubDate>
    </item>
    <item>
      <title>다크모드가 근시와 난시를 유발할 수 있다고 한다</title>
      <link>https://donggov.tistory.com/218</link>
      <description>&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;722&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/epEOYz/btrTkhUSQDn/bssEbO2WY1FNqEseB5ykJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/epEOYz/btrTkhUSQDn/bssEbO2WY1FNqEseB5ykJ0/img.png&quot; data-alt=&quot;크랩&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/epEOYz/btrTkhUSQDn/bssEbO2WY1FNqEseB5ykJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FepEOYz%2FbtrTkhUSQDn%2FbssEbO2WY1FNqEseB5ykJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;274&quot; data-filename=&quot;다크모드.PNG&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;330&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;b&gt;1. 다크 모드는 근시와 난시가 유발될 수 있는 것은 맞다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다크 모드를 쓰게 되면 빛의 양이 줄어들기 때문에 더 잘 보기 위해서 눈의 조절력이 더 많이 소모된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.&amp;nbsp;빛이 줄어들게 되면 동공이 더 확장된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장이 되면 눈 안에 들어온 빛들이 한곳에 모이지 못해서 깨끗하고 선명한 상을 만들지 못한다. 그렇게 되면 눈 안의 수정체의 위치가 약간 앞으로 이동을 하게 되고 근시가 유발될 수 있다. 근시가 유발되는 환경에서는 난시도 같이 진행될 수 있기 때문에 같이 묶어서 생각하면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 정말 최악은 어두운 곳에서 엎드린 상태로 휴대폰 사용하는 것&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러면 더욱더 수정체가 앞으로 쏠리면서 근시 유발뿐 아니라 방수(눈 안의 물)가 원활히 빠져나가지 못해 안압이 급격하게 상승한다. 그럼&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;녹내장&lt;/b&gt;&lt;/span&gt;까지 발생할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 그럼 다크모드는 왜 생긴 거냐&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제조사가 다크모드를 만든 이유는 따로 있다. OLED는 스스로 빛을 내는물질이라서 어두운 색을 표현할 땐 발광할 필요가 없기 때문에 전력 소모량을 아낄 수 있다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 OLED는 특성상 같은 화면을 오랫동안 켜놓으면 잔상이 생기는데 다크모드를 쓰면 이런 현상도 덜하다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외에도 플리커 현상과 블루라이트를 줄여주는 효과가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=m_67BIzkN-w&quot;&gt;https://www.youtube.com/watch?v=m_67BIzkN-w&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=m_67BIzkN-w&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bqUT7C/hyQQCUKQM4/ZbGBL1coGIrsTk8jH5JIwk/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;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/m_67BIzkN-w&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/218</guid>
      <comments>https://donggov.tistory.com/218#entry218comment</comments>
      <pubDate>Sat, 10 Dec 2022 19:46:40 +0900</pubDate>
    </item>
    <item>
      <title>git gone 원격에서 삭제된 로컬 브랜치들을 한번에 삭제하는 방법</title>
      <link>https://donggov.tistory.com/216</link>
      <description>&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;git gone 명령어를 만들어서 로컬 브랜치들 정리해보자&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;보통 이미 반영 또는 머지된 원격(remote) 브랜치들은 삭제된다. 하지만 그 브랜치들을 체크아웃(checkout)한 로컬 브랜치들은 여전히 우리 로컬에 존재한다. 이 브랜치들을 정리하지 않으면 로컬에 무수히 많은 브랜치들이 남게 되는데 이 브랜치들을 편하게 삭제할 수 있는 방법이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;트래킹하는 원격 브랜치가 없는 로컬 브랜치는 지워지지 않으니 안심하고 사용해도 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;git gone 명령어를 새로 만들 거다. git config 명령어를 통해 바로 등록해도 alias를 등록해도 되고, gitconfig 파일을 열어서 직접 입력해도 된다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;방법 1) config 명령어로 바로 등록&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git config --global alias.gone &quot;! git fetch -p &amp;amp;&amp;amp; git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '\$2 == \&quot;[gone]\&quot; {print \$1}' | xargs -r git branch -D&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;방법 2). gitconfig 파일 열어서 등록&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[alias]
&amp;nbsp;&amp;nbsp;gone = ! &quot;git fetch -p &amp;amp;&amp;amp; git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '$2 == \&quot;[gone]\&quot; {print $1}' | xargs -r git branch -D&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;git gone 명령어 설명&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;git gone 명령어는 트래킹 하는 원격 브랜치가 삭제되면 로컬에서 해당 브랜치의 상태가 [gone]으로 변한다는 점을 이용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&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;&lt;span style=&quot;color: #333333;&quot;&gt;git fetch -p : 원격 브랜치가 삭제된 로컬 브랜치들의 상태를 갱신한다. 이때 상태가 [gone]으로 변한다. git prune 명령어는 unreachable 한 git object들을 로컬에서 정리하는 작업이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://git-scm.com/docs/git-for-each-ref&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;git for-each-ref&lt;/a&gt; : 쉽게 생각해서 반복문이다. 업스트림(upstream) 브랜치이고 상태가 gone인 로컬 브랜치를 조회한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;브랜치명을 파라미터로 받아 브랜치를 삭제한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;트래킹하는 원격 브랜치가 없는 로컬 브랜치는 지워지지 않으니 안심하고 사용해도 된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 git gone 명령어로 쉽게 로컬 브랜치들을 정리하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.erikschierboom.com/2020/02/17/cleaning-up-local-git-branches-deleted-on-a-remote/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.erikschierboom.com/2020/02/17/cleaning-up-local-git-branches-deleted-on-a-remote/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>GIT</category>
      <category>개발팁</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/216</guid>
      <comments>https://donggov.tistory.com/216#entry216comment</comments>
      <pubDate>Sat, 10 Dec 2022 17:20:22 +0900</pubDate>
    </item>
    <item>
      <title>GitHub 파일 아이콘 적용하기 (feat. 크롬 확장프로그램)</title>
      <link>https://donggov.tistory.com/215</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;깃허브에서 파일 아이콘 적용하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크롬 확장 프로그램에서 귀여운 프로그램을 발견했다. 바로 깃허브 사이트에서 파일 확장자에 따라 아이콘을 적용해서 보여주는 프로그램인데 적용하면 귀엽고 가독성도 좋아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/file-icons-for-github-and/ficfmibkjjnpogdcfhfokmihanoldbfe/related&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;File Icons for GitHub and GitLab&lt;/a&gt; 익스텐션 설치 후, 적용하면 아래처럼 파일 아이콘이 적용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조만간 이 귀여운 크롬 익스텐션 개발에 대해서 알아봐야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;github-icon-after.PNG&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pJqP9/btrStP0dbrW/dAeJ0um57pOLdS4Nugo921/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pJqP9/btrStP0dbrW/dAeJ0um57pOLdS4Nugo921/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pJqP9/btrStP0dbrW/dAeJ0um57pOLdS4Nugo921/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpJqP9%2FbtrStP0dbrW%2FdAeJ0um57pOLdS4Nugo921%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;860&quot; height=&quot;737&quot; data-filename=&quot;github-icon-after.PNG&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개발</category>
      <category>깃허브</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/215</guid>
      <comments>https://donggov.tistory.com/215#entry215comment</comments>
      <pubDate>Wed, 30 Nov 2022 19:00:54 +0900</pubDate>
    </item>
    <item>
      <title>k8s pod 삭제해도 계속 생성될 때</title>
      <link>https://donggov.tistory.com/214</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;delete 명령어를 사용하여 k8s pod를 삭제했는데 계속 생성되는 pod를 삭제하는 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 pod를 삭제했는데 다시 생성된다면 pod가 deployment, job 등의 워크로드에 의해 관리되고 있는 건 아닌지 확인해봐야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pod를 관리하는 워크로드들은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;- ReplicationController&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;ReplicaSet&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Deployment&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;StatefulSet&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;DaemonSet&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Job&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CronJob&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 위의 워크로드에 의해 생성되고 관리되고 있는 pod라면 위 워크로드를 삭제하면 pod도 함께 삭제된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 정보는 metadata.ownerReference를 보면 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 경우를 예를들면 해당 pod는 my-repset ReplicaSet 워크로드에 관리되고 있고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 ReplicaSet을 삭제하면 &lt;span&gt;&lt;a href=&quot;https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/&quot;&gt;garbase collection&lt;/a&gt;에 의해 자식 pod도 삭제된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;metadata.ownerReference.png&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsYax5/btrSkDeumXj/FNAKEo6KW9iCME1hHrqLyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsYax5/btrSkDeumXj/FNAKEo6KW9iCME1hHrqLyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsYax5/btrSkDeumXj/FNAKEo6KW9iCME1hHrqLyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsYax5%2FbtrSkDeumXj%2FFNAKEo6KW9iCME1hHrqLyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;243&quot; data-filename=&quot;metadata.ownerReference.png&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>k8s</category>
      <category>Kubernetes</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/214</guid>
      <comments>https://donggov.tistory.com/214#entry214comment</comments>
      <pubDate>Mon, 28 Nov 2022 19:06:22 +0900</pubDate>
    </item>
    <item>
      <title>axios major version 업데이트</title>
      <link>https://donggov.tistory.com/213</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;axios v1.x 버전의 몇 가지 변경점을 살펴보자&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;axios 버전이 v0.x에서 v1.x으로 업데이트되었다. v0.x에서 오랫동안 업데이트되지 않고 있었는데 한 번에 v1.x이 릴리즈 되었다. 당연히 메이저 버전이 올라갔으니 바뀐 사항들이 많을 것이고, 기존에 동작하던 기능들이 동작하지 않을 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://semver.org/lang/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;semantic-versioning&lt;/a&gt;에도 메이저 버전 변경 시에는 기존 API가 삭제/변경되거나 호환되지 않을 수 있다고 나와있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckWnxg/btrR8tb2wQ9/XI313XfESDaVAmnMSX8VqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckWnxg/btrR8tb2wQ9/XI313XfESDaVAmnMSX8VqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckWnxg/btrR8tb2wQ9/XI313XfESDaVAmnMSX8VqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckWnxg%2FbtrR8tb2wQ9%2FXI313XfESDaVAmnMSX8VqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;234&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;Major Version: 기존 API의 변경/삭제로 update하면 동작하지 않을 수 있다는 경고의 의미&lt;/li&gt;
&lt;li&gt;Minor Version: 이전 버전과 호환되는 방식으로 API가 추가되었으니 살펴보라는 의미&lt;/li&gt;
&lt;li&gt;Patch Version: &lt;span&gt;이전&lt;/span&gt; &lt;span&gt;버전과&lt;/span&gt; &lt;span&gt;호환되는&lt;/span&gt; &lt;span&gt;버그&lt;/span&gt; &lt;span&gt;수정을&lt;/span&gt; &lt;span&gt;했을&lt;/span&gt; &lt;span&gt;경우&lt;/span&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;&lt;a href=&quot;https://github.com/axios/axios/blob/v1.x/CHANGELOG.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v1.x의 CHANGELOG&lt;/a&gt;를 보면 변경된 사항이 많이 보인다. v0.x을 사용하다가 v1.x로 버전을 올렸더니 역시나 제대로 에러가 발생하는 곳이 있어서 에러가 발생하는 부분에 대한 변경점을 몇 가지 살펴보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1) URL params serializer&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 기존에 사용하던 paramsSerializer이 변경되었다. 기존에는 paramsSerializer를 함수로 바로 사용하였지만 v1.x부터는 스펙 자체가 변경되었다. 그래서 v0.x 버전에서 이 내용을 적용하지 않으면 &quot;options must be an object&quot; 에러가 발생한다. 새로운 paramsSerializer에서는 기존에 사용하던 customSerializer을 serialize로 넣으면 그대로 사용할 수 있을 뿐만 아니라 인코딩과 indexes 옵션을 통한 기본 직렬화(serialize)도 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1564&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwqUxm/btrR8yxzi4o/H0I9umIQsbVwp0oFdSUkTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwqUxm/btrR8yxzi4o/H0I9umIQsbVwp0oFdSUkTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwqUxm/btrR8yxzi4o/H0I9umIQsbVwp0oFdSUkTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwqUxm%2FbtrR8yxzi4o%2FH0I9umIQsbVwp0oFdSUkTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1564&quot; height=&quot;198&quot; data-origin-width=&quot;1564&quot; data-origin-height=&quot;198&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;encode는 커스텀 인코딩이 필요한 경우 넣는 옵션이고, seiralize는 기존에 paramSerializer로 넣던 customSerializer를 넣는 부분이다. indexes는 기본 직렬화 옵션이다. 여기서 주목해야 할 건 indexes 옵션이다. 이번 버전부터는 axios 라이브러리 자체에서 기본 직렬화를 제공한다. 거기에 indexes 옵션을 함께 사용하면 배열 직렬화도 용도에 맞게 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 내에서 직렬화를 실제로 수행하는 건 buildURL 함수이다. 아래처럼 테스트 코드를 작성하여 buildURL 함수를 실행해보면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qELhe/btrR8a5rkHI/JiltcnX0thKPVKl57Y6Wm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qELhe/btrR8a5rkHI/JiltcnX0thKPVKl57Y6Wm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qELhe/btrR8a5rkHI/JiltcnX0thKPVKl57Y6Wm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqELhe%2FbtrR8a5rkHI%2FJiltcnX0thKPVKl57Y6Wm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;352&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w1uXY/btrR9NtMIhZ/OeenV933mw1UkkBqfK0Uo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w1uXY/btrR9NtMIhZ/OeenV933mw1UkkBqfK0Uo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w1uXY/btrR9NtMIhZ/OeenV933mw1UkkBqfK0Uo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw1uXY%2FbtrR9NtMIhZ%2FOeenV933mw1UkkBqfK0Uo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;195&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;336&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;indexes가 null이면 URL에서 괄호(bracket)가 없는 것을 볼 수 있고, false면 인덱스가 없고, true면 인덱스가 있는 걸 볼 수 있다. 보통 나는 null로 세팅했을 때 나오는 결과, 괄호가 없는 버전의 직렬화된 URL만 사용했기 때문에 다른 직렬화 옵션이 왜 필요할까 찾아봤고, 그 이유를&amp;nbsp; &lt;a href=&quot;https://stackoverflow.com/questions/3061273/send-an-array-with-an-http-get&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Send an Array with an HTTP Get&lt;/a&gt;에서 찾을 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL에 array를 자바(서블릿)는 괄호가 없이 &quot;foo=value1&amp;amp;foo=value2&amp;amp;foo=value3&quot;처럼 보내면 되지만, PHP, RoR 같은 언어에서는 &quot;foo[]=value1&amp;amp;foo[]=value2&amp;amp;foo[]=value3&quot;처럼 괄호를 사용한다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2) interceptor에서 일부 header 키 접근 불가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v1.x부터는 interceptor안에서 get, post, common 등의 헤더키에 바로 접근할 수 없다. 아래처럼 인터셉터가 동작하기 전에 delete, get, head, post, put, patch, common를 헤더에서 삭제한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dm4XOT/btrR9uPyb5P/86KbwkwB6EJN6ZRnQFGDgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dm4XOT/btrR9uPyb5P/86KbwkwB6EJN6ZRnQFGDgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dm4XOT/btrR9uPyb5P/86KbwkwB6EJN6ZRnQFGDgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm4XOT%2FbtrR9uPyb5P%2F86KbwkwB6EJN6ZRnQFGDgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;418&quot; height=&quot;117&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;117&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;common은 Global Header용도로만 사용하도록 바뀌었으며, 인터셉터 안에서는 헤더 값을 세팅해야 하는 경우에는 common을 사용하지 않고 직접 세팅하면 된다. Global 헤더를 세팅하는 경우에는 아래처럼 세팅하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4ANZu/btrR8yyqMrW/wmxz4BfcNGmTnNeK6u6540/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4ANZu/btrR8yyqMrW/wmxz4BfcNGmTnNeK6u6540/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4ANZu/btrR8yyqMrW/wmxz4BfcNGmTnNeK6u6540/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4ANZu%2FbtrR8yyqMrW%2Fwmxz4BfcNGmTnNeK6u6540%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;763&quot; height=&quot;197&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 axios-extensions 라이브러리 코드를 보면서 &lt;a href=&quot;https://donggov.tistory.com/208&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;axios에 캐시를 어떻게 구현하였는지&lt;/a&gt; 본적이 있었는데, 이번엔 axios 코드를 직접 보게 되었는데 많은 인사이트를 얻었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>axios</category>
      <category>오픈소스</category>
      <category>자바스크립트</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/213</guid>
      <comments>https://donggov.tistory.com/213#entry213comment</comments>
      <pubDate>Sat, 26 Nov 2022 17:49:05 +0900</pubDate>
    </item>
    <item>
      <title>JSONP 용도, 동작 정리</title>
      <link>https://donggov.tistory.com/212</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;JSONP가 무엇이고 어떻게 사용하는지 알아보자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JSONP(JSON with Padding)는 cross-origin 도메인으로의 요청을 우회할 때 사용되는 방법이다. 예를 들어 &lt;a href=&quot;http://www.abc.com에서&quot;&gt;www.abc.com에서&lt;/a&gt; &lt;a href=&quot;http://www.example.com을&quot;&gt;www.example.com을&amp;nbsp;&lt;/a&gt;&amp;nbsp; 요청하는 경우를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JSONP는 &amp;lt;script&amp;gt; 태그를 통해 cross-origin 도메인에 요청을 한다. 보통 callback 쿼리로 요청을 하는데 예를 들면 &lt;a href=&quot;https://example.com?callback=printData&quot;&gt;https://example.com?callback=myCallback&lt;/a&gt; 처럼 요청할 수 있다. 그러면 example 서버는 myCallback 함수로 콜백을 보낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 jsonp를 지원하는 서버로 요청을 해보자. 아래는 도시 정보를 조회하는 샘플 jsonp 타입의 api이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mayors24.cityofboston.gov/open311/v2/services.json?callback=cities&quot;&gt;https://mayors24.cityofboston.gov/open311/v2/services.json?callback=cities&lt;/a&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;이 주소를 브라우저에 바로 입력하면 아래처럼 응답이 온다. 응답을 보면 callback 쿼리명으로 데이터가 래핑 되어서 오는 것을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wNqvu/btrRbZDvf00/5ULPLK93KHNhiwPOBZW4IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wNqvu/btrRbZDvf00/5ULPLK93KHNhiwPOBZW4IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wNqvu/btrRbZDvf00/5ULPLK93KHNhiwPOBZW4IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwNqvu%2FbtrRbZDvf00%2F5ULPLK93KHNhiwPOBZW4IK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1772&quot; height=&quot;774&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;774&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;즉 html에서 아래처럼 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1668464327338&quot; class=&quot;xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  function cities(data) {
    console.log(data);
  }
&amp;lt;/script&amp;gt;

&amp;lt;script src=&quot;https://mayors24.cityofboston.gov/open311/v2/services.json?callback=cities&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMwgke/btrReGh9LIC/U99Z6v5iqqFQO3NuLWBai1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMwgke/btrReGh9LIC/U99Z6v5iqqFQO3NuLWBai1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMwgke/btrReGh9LIC/U99Z6v5iqqFQO3NuLWBai1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMwgke%2FbtrReGh9LIC%2FU99Z6v5iqqFQO3NuLWBai1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1298&quot; height=&quot;366&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;366&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;단, JSONP cross-origin 요청이기 때문에 안전하지 않다. 권장되는 접근방식은&lt;span&gt;&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Cross-origin_resource_sharing&quot;&gt;&lt;span&gt;CORS&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/2067472/what-is-jsonp-and-why-was-it-created/2067584#2067584&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/2067472/what-is-jsonp-and-why-was-it-created/2067584#2067584&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>Front-end</category>
      <category>자바스크립트</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/212</guid>
      <comments>https://donggov.tistory.com/212#entry212comment</comments>
      <pubDate>Sat, 19 Nov 2022 09:31:54 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트에서 몽키패치(Monkey patch)</title>
      <link>https://donggov.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;몽키패치(Monkey patch)가 무엇인지 알아보고 예제와 단점을 알아보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;몽키패치란(Monkey patch)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몽키패치는 원래 소스코드를 변경하지 않고 실행 시 코드 기본 동작을 추가, 변경 또는 억제하는 기술이다. 쉽게 말해 어떤 기능을 위해 이미 있던 코드에 삽입하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XKwRy/btrNu8qK7c0/IWiSznHgpLmv7SSzdRDfKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XKwRy/btrNu8qK7c0/IWiSznHgpLmv7SSzdRDfKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XKwRy/btrNu8qK7c0/IWiSznHgpLmv7SSzdRDfKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXKwRy%2FbtrNu8qK7c0%2FIWiSznHgpLmv7SSzdRDfKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;378&quot; height=&quot;292&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트의 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;endwWith&lt;/a&gt; 함수를 예를 들어보자. 이 함수는 어떤 문자열에서 특정 문자열로 끝나는지를 확인할 수 있으며, 그 결과를 true 혹은 false로 반환한다. 만약 이 함수가 없었다면 이 기능을 어떻게 구현했을까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 방법은 유틸리티 객체를 만드는 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1664607787509&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var Utility = {
   endsWith: function(string, suffix) {
      return string.indexOf(suffix, string.length - suffix.length) !== -1;
   }
};

var isSuffix = Utility.endsWith('hello world', 'ld');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 방법은 String 내장 객체에 함수를 정의하는 것인데, 이게 &lt;span&gt;바로 몽키패치이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664607874137&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String.prototype.endsWith = function(suffix) {
   return this.indexOf(suffix, this.length - suffix.length) !== -1;
};

	
var isSuffix = 'hello world'.endsWith('ld');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몽키패치의 다른 예로 console.log에 타임스탬프를 찍어보자&lt;/p&gt;
&lt;pre id=&quot;code_1664609024940&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var log = console.log;
console.log = function() {
   log.apply(console, [(new Date()).toString()].concat(arguments));
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몽키패치를 사용하면 console.log를 재정의 또는 확장하여 타임스탬프를 찍는 console.log를 만들 수 있다. 이렇게 보면 몽키패치가 편하고 좋아 보이지만 꼭 그런 건 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;the-cons-of-monkey-patching&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;몽키패치의 단점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원숭이 패치는 종종 위험한 기술로 간주된다. 왜냐하면 몽키패치는 기존 코드와의 충돌이 있을 수 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String.prototype.constains()가 String.prototype.includes()로 변경된 일이 있었는데, 그 이유는&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://mootools.net/&quot;&gt;MooTools&lt;/a&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;라이브러리를 사용하는 코드들이 String.prototype.containts 함수의 충돌로 인해 버그가 발생한 것이다. &lt;/span&gt;&lt;a href=&quot;https://github.com/mootools/mootools-core/issues/2402&quot;&gt;MooTool's String.prototype.contains conflicts with ES6&lt;/a&gt; 깃헙 이슈를 보면 더 자세히 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 몽키패치가 내장 객체에 사용될 때 언어의 발전을 방해할 수 있다. 몽키패치는 언어, 라이브러리, 프레임워크 등 모든 코드로 확장될 수 있다. 몽키패치를 사용할 때 기능이 충돌하여 버그가 발생할 가능성을 염두해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;when-to-use-monkey-patching&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;몽키패치를 사용하는 경우&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몽키패치가 좋은 케이스 중 한 가지는 이미 ECMAScript 표준의 일부이고 모든 브라우저에서 지원되지 않는 메서드를 폴리필하는 경우이다.&lt;span&gt;&amp;nbsp;&lt;/span&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;예를 들어 String.prototype.includes() 함수를 지원하지 않는 브라우저에서는 아래처럼 몽키패치를 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1664608372736&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }

    if (start + search.length &amp;gt; this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <category>몽키패치</category>
      <category>자바스크립트</category>
      <author>동고킴</author>
      <guid isPermaLink="true">https://donggov.tistory.com/211</guid>
      <comments>https://donggov.tistory.com/211#entry211comment</comments>
      <pubDate>Mon, 3 Oct 2022 12:09:19 +0900</pubDate>
    </item>
  </channel>
</rss>