<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>NOMO의 블로그</title>
    <link>https://nomoasia.tistory.com/</link>
    <description>프로그래밍에 관심이 있는 기계공학도의 블로그</description>
    <language>ko</language>
    <pubDate>Fri, 17 Apr 2026 17:43:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>노모</managingEditor>
    <image>
      <title>NOMO의 블로그</title>
      <url>https://t1.daumcdn.net/cfile/tistory/2510C640549EBF8A14</url>
      <link>https://nomoasia.tistory.com</link>
    </image>
    <item>
      <title>호암미술관 벚꽃은 이번 주말이 피크 (2026.04.11 토요일 후기)</title>
      <link>https://nomoasia.tistory.com/514</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;이것은 내일이나 조만간 방문하실 분들을 위한 실시간 후기에요! 오늘 어땠는지 상황 위주로 적었어요.&lt;br&gt;&lt;br&gt;2026년 4월 11일 토요일.&lt;br&gt;차량을 끌고 용인 호암미술관에 방문.&lt;br&gt;오전 11시경 도착. 당시 입구 차량 정체나 길 막힘은 하나도 없었음.&lt;br&gt;&lt;br&gt;차량을 타고가면 입구 예매하는 곳에서 안내해주시면서 차량을 잠깐 정차한 후 표(QR) 체크를 하심. 본인은 호암미술관 홈페이지에서 미리 예약한 QR을 보여줌. 구매 안 했으면 입장 불가 or 현장 구매!&lt;br&gt;(그래도 미리 예약하면 살짝이라도 더 빨리 들어갈 수 있다. 왜냐하면 표사는곳 앞에서 현장 구매랑 미리 예약한 사람 줄이 갈리는데 미리 예약한 사람은 QR 체크만 하고 바로 들여보내줌. 현장 구매는 한참 걸림! 근데 이 갈리는게 예매하는 곳 바로 앞에서 두 줄로 갈리는거 그 전에 도로는 1차선 도로이기 때문에 어차피 정체 시에는 하아아안참 앞에서 기다려야 함. 미리 예매 안 해온 사람들이 많아서 정체가 생긴다. 이렇게만 들으면 뭔 말인지 잘 모르겠지만? 여튼 미리 예약해서 나쁠건 없단뜻!)&lt;br&gt;&lt;br&gt;이후 주차장은 A주차장으로 안내받음.&lt;br&gt;오전 11시경 크기가 작은 B 및 C 주차장은 이미 만차. 입장하는 쪽 입구를 막아둠 (근데 1시 넘어서 차 좀 나가면 풀기도 하더라)&lt;br&gt;A 주차장은 매우 여유로웠음. (절반 이상 비어있었음)&lt;br&gt;피크닉은 C주차장 근처에서 해야함! 하지만 이미 만차인걸? A에서 쫌 걸어와야함.&lt;br&gt;돗자리 필 자리는 그래도 나아름 여유로웠음. 오후가 되어서도 빈자리가 없진 않았다.&lt;br&gt;&lt;br&gt;오전에는 방문객이 많이 없어서 미술관 방문객만 입장 가능한 곳에서 검표가 느슨했으나(미술관 방문객이세요?, 넹! 지나가세요!), 오후가 되어 사람이 많아지자 귀욤귀욤한 에버랜드 옷을 입으신 분들이 지키고 서서 종종 QR 표 체크를 하셨음.&lt;br&gt;&lt;br&gt;홈페이지에서 예약 시 시간을 설정해야 하고, 전시 입장은 예약 시간 20분전 입장부터 가능이라고 적혀있었는데, 호암미술관 본관 전시실에서 딱히 QR 체크나 시간 체크는 하지 않음. 애초에 입구에서 현장 예매도 가능한 만큼 시간은 그리 중요하지 않은걸까. (참고로 난 12시로 예약했다.)&lt;br&gt;&lt;br&gt;&lt;b&gt;오후 4시 경 호암 카페 대기자 수는 22팀, 대기 시간은 약 60~70분. Take out 도 20분 이상 소요된다고 하여 그냥 나옴.&lt;/b&gt;&lt;br&gt;&lt;br&gt;3~4시 경 들어오는 입구에 차막힘이 꽤애나 있었는데 얼마나 막힌건지 이 사람들이 얼마나 기다려야 했던건진 잘 모르겠음!&lt;br&gt;&lt;br&gt;벚꽃 상태는? 아주 좋음! 만개를 지나 사알짝 떨어지는 중! 바람이 불면 꽃잎이 흩날리지만, 바닥에 꽃잎이 많이 떨어져 있지는 않다!&lt;br&gt;이번 봄에 본 벚꽃 중 가장 이뻤다.&lt;br&gt;단언컨데 이번 주말이 피크!!&lt;br&gt;일교차가 심하니 외투는 꼭 챙길것.&lt;br&gt;&lt;br&gt;QR 검표하는 곳 이후로는 미술관 표 구매한 사람만 들어올 수 있어서 사람이 넘 많지 않아 좋았음.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be6ZVn/dJMcaippD5n/XbuGRUJn1tgQ3fxWMQsaOK/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be6ZVn/dJMcaippD5n/XbuGRUJn1tgQ3fxWMQsaOK/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be6ZVn/dJMcaippD5n/XbuGRUJn1tgQ3fxWMQsaOK/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe6ZVn%2FdJMcaippD5n%2FXbuGRUJn1tgQ3fxWMQsaOK%2Ftfile.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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH1lZV/dJMcaippD5p/hf5U0oP0aKKn53kmWuKySk/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH1lZV/dJMcaippD5p/hf5U0oP0aKKn53kmWuKySk/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH1lZV/dJMcaippD5p/hf5U0oP0aKKn53kmWuKySk/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH1lZV%2FdJMcaippD5p%2Fhf5U0oP0aKKn53kmWuKySk%2Ftfile.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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6UrUp/dJMcaaEVQRZ/K5oo5no1fXq1ucfVBpuRY1/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6UrUp/dJMcaaEVQRZ/K5oo5no1fXq1ucfVBpuRY1/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6UrUp/dJMcaaEVQRZ/K5oo5no1fXq1ucfVBpuRY1/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6UrUp%2FdJMcaaEVQRZ%2FK5oo5no1fXq1ucfVBpuRY1%2Ftfile.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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7qHcB/dJMcaippD5q/44eVEEOwt3rvWwWxvyohN1/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7qHcB/dJMcaippD5q/44eVEEOwt3rvWwWxvyohN1/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7qHcB/dJMcaippD5q/44eVEEOwt3rvWwWxvyohN1/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7qHcB%2FdJMcaippD5q%2F44eVEEOwt3rvWwWxvyohN1%2Ftfile.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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by2gas/dJMcaaEVQR0/MPME7yddJHK0G9wScF1oi0/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by2gas/dJMcaaEVQR0/MPME7yddJHK0G9wScF1oi0/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by2gas/dJMcaaEVQR0/MPME7yddJHK0G9wScF1oi0/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby2gas%2FdJMcaaEVQR0%2FMPME7yddJHK0G9wScF1oi0%2Ftfile.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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB9HQN/dJMcaippD5r/egzcDKLkq6B7nkGURkoe6k/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB9HQN/dJMcaippD5r/egzcDKLkq6B7nkGURkoe6k/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB9HQN/dJMcaippD5r/egzcDKLkq6B7nkGURkoe6k/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB9HQN%2FdJMcaippD5r%2FegzcDKLkq6B7nkGURkoe6k%2Ftfile.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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&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;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ENPyP/dJMcaippD5s/H5DLJRHyZCW7c2cvKdwVb0/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ENPyP/dJMcaippD5s/H5DLJRHyZCW7c2cvKdwVb0/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ENPyP/dJMcaippD5s/H5DLJRHyZCW7c2cvKdwVb0/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FENPyP%2FdJMcaippD5s%2FH5DLJRHyZCW7c2cvKdwVb0%2Ftfile.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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgIg99/dJMcaaEVQR1/z7SjQXkvB4OoUcIq0QGaG0/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgIg99/dJMcaaEVQR1/z7SjQXkvB4OoUcIq0QGaG0/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgIg99/dJMcaaEVQR1/z7SjQXkvB4OoUcIq0QGaG0/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgIg99%2FdJMcaaEVQR1%2Fz7SjQXkvB4OoUcIq0QGaG0%2Ftfile.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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&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;</description>
      <category>여행</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/514</guid>
      <comments>https://nomoasia.tistory.com/514#entry514comment</comments>
      <pubDate>Sat, 11 Apr 2026 23:32:43 +0900</pubDate>
    </item>
    <item>
      <title>강남 신세계백화점 쇼토Shoto 딸기 케이크 &amp;amp; 비파티세리 퀸아망</title>
      <link>https://nomoasia.tistory.com/513</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;#내돈내산&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누나의 생일을 맞아 케이크를 하나 사려고 강남 신세계백화점 스위트파크에 다녀왔다. 이곳에는 흔히 &amp;lsquo;스위트파크 3대 케이크 맛집&amp;rsquo;으로 불리는 키친205, 쇼토, 시즈니크가 나란히 입점해 있다.&lt;br /&gt;&lt;br /&gt;내가&amp;nbsp;방문했을&amp;nbsp;때는&amp;nbsp;이미&amp;nbsp;키친205의&amp;nbsp;대기&amp;nbsp;순번이&amp;nbsp;마감된&amp;nbsp;상태였다.&amp;nbsp;오픈&amp;nbsp;시간인&amp;nbsp;오전&amp;nbsp;10시&amp;nbsp;30분보다&amp;nbsp;약&amp;nbsp;30분&amp;nbsp;늦게&amp;nbsp;도착했고,&amp;nbsp;크리스마스도&amp;nbsp;지난&amp;nbsp;시점이라&amp;nbsp;혹시&amp;nbsp;가능하지&amp;nbsp;않을까&amp;nbsp;기대했지만&amp;nbsp;주말의&amp;nbsp;벽은&amp;nbsp;생각보다&amp;nbsp;높았다.&amp;nbsp;쇼토(Shoto)는&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;대기줄이&amp;nbsp;있었지만&amp;nbsp;아직&amp;nbsp;마감은&amp;nbsp;아니었고,&amp;nbsp;시즈니크는&amp;nbsp;비교적&amp;nbsp;여유로운&amp;nbsp;분위기였다.&lt;br /&gt;&lt;br /&gt;참고로 강남 신세계 입점 매장 기준으로, 시즈니크는 네이버 예약이 가능하지만 키친205와 쇼토는 예약 없이 현장 구매만 가능하다. 시즈니크가 상대적으로 한산했던 이유도 아마 이 예약 시스템 덕분이 아니었을까 싶다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;강남&amp;nbsp;신세계백화점&amp;nbsp;쇼토Shoto&amp;nbsp;딸기&amp;nbsp;케이크&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쇼토 신세계백화점 강남점 (네이버 지도)&lt;/b&gt; &lt;a href=&quot;https://naver.me/FK5vI9Zb&quot;&gt;https://naver.me/FK5vI9Zb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf6oxT/dJMcaiWdVGy/BG7MZm7k7pXz789Y4iRzJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf6oxT/dJMcaiWdVGy/BG7MZm7k7pXz789Y4iRzJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf6oxT/dJMcaiWdVGy/BG7MZm7k7pXz789Y4iRzJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf6oxT%2FdJMcaiWdVGy%2FBG7MZm7k7pXz789Y4iRzJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;3000&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구매한 것은 &lt;b&gt;딸기 쇼토 1호&lt;/b&gt;(59,000원). 보냉백 &amp;amp; 아이스팩 포함 총 61,600원.&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;3000&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HnTAo/dJMcag5dKJl/qycXBTROMc53PZhu6o5DKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HnTAo/dJMcag5dKJl/qycXBTROMc53PZhu6o5DKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HnTAo/dJMcag5dKJl/qycXBTROMc53PZhu6o5DKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHnTAo%2FdJMcag5dKJl%2FqycXBTROMc53PZhu6o5DKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&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;1418&quot; data-origin-height=&quot;1899&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oZVVV/dJMcadUTJTR/gIp4fHpaX9HUvwLnyGjli1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oZVVV/dJMcadUTJTR/gIp4fHpaX9HUvwLnyGjli1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oZVVV/dJMcadUTJTR/gIp4fHpaX9HUvwLnyGjli1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoZVVV%2FdJMcadUTJTR%2FgIp4fHpaX9HUvwLnyGjli1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1418&quot; height=&quot;1899&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1418&quot; data-origin-height=&quot;1899&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A: 맛있다. 크림이 너무 달지 않고 부드러움. 초콜릿도 상큼함!&lt;br /&gt;B: 옛~날 스타벅스 생크림 케이크 먹는 느낌&lt;br /&gt;C: 옛날 스타벅스 생크림 케이크라는게 무슨 말인지 알 것 같아! 약간 옛날 그 맛에 세련됨이 더해진 맛. &lt;br /&gt;D: 시트가 촉촉하고 적당히 부드러운데 부서질 정도가 아니라 좋은듯? 그런데 딸기가 아쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고급스러운 비주얼. 고가 케이크 특유의 비주얼과 마감. 급 대비 적절한 사이즈.&lt;br /&gt;시트와 크림은 적당히 맛있었는데, 이 날 딸기의 향이나 당도가 생각보다 아쉬웠다.&lt;br /&gt;근데 요즘 딸기 케이크를 많이 먹었는데 딸기가 맛있는 곳이 잘 없어서... 어쩔 수 없는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;케이크 가격 대비 맛&amp;amp;비주얼은 로그 그래프처럼 증가하는데, 요즘 물가를 감안하면 가격 값은 하는 케이크였다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;비파티세리 퀸아망&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비파티세리 센트럴시티점 (네이버지도)&lt;/b&gt; &lt;a href=&quot;https://naver.me/G9r5Cyb2&quot;&gt;https://naver.me/G9r5Cyb2&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;케이크를 구매하고 다음으로 들린 곳은 &lt;b&gt;비파티세리&lt;/b&gt;. 냉부와 흑백요리사2에 나온 손종원 셰프가&lt;b&gt; &quot;정말 죽기전에 하나만 먹을 수 있다면 이거를 먹고 싶다고 할 것 같아요. 최고의 퀸아망&quot;&lt;/b&gt; 이라고 칭한 곳이다(참고로 인터뷰에서 언급한 곳은 비파티세리 공덕점, 여긴 센트럴시티점). 손종원 셰프의 인터뷰는 &lt;a href=&quot;https://www.youtube.com/shorts/XrZE31S8B3M&quot;&gt;https://www.youtube.com/shorts/XrZE31S8B3M&lt;/a&gt; 에서 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;1731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HoPHs/dJMcadtPyea/3wTk9mrC0nLBQxhu4k9fXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HoPHs/dJMcadtPyea/3wTk9mrC0nLBQxhu4k9fXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HoPHs/dJMcadtPyea/3wTk9mrC0nLBQxhu4k9fXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHoPHs%2FdJMcadtPyea%2F3wTk9mrC0nLBQxhu4k9fXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;287&quot; height=&quot;497&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;1731&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스위트파크에서 에스컬레이터를 타고 한 층 올라가면 있는 터미널 상가에 위치해있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eFgJ55/dJMcahwhet8/JyVxQC4jqZuXTTJK52Kc30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eFgJ55/dJMcahwhet8/JyVxQC4jqZuXTTJK52Kc30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eFgJ55/dJMcahwhet8/JyVxQC4jqZuXTTJK52Kc30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeFgJ55%2FdJMcahwhet8%2FJyVxQC4jqZuXTTJK52Kc30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&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;3000&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7zDnS/dJMcai9J7WE/bFtq92XVdwlwdUtl9J02K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7zDnS/dJMcai9J7WE/bFtq92XVdwlwdUtl9J02K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7zDnS/dJMcai9J7WE/bFtq92XVdwlwdUtl9J02K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7zDnS%2FdJMcai9J7WE%2FbFtq92XVdwlwdUtl9J02K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&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;3000&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNBKa5/dJMcajgvWmH/kyoInrfCGQ8yI7IjXHPaUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNBKa5/dJMcajgvWmH/kyoInrfCGQ8yI7IjXHPaUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNBKa5/dJMcajgvWmH/kyoInrfCGQ8yI7IjXHPaUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNBKa5%2FdJMcajgvWmH%2FkyoInrfCGQ8yI7IjXHPaUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&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;2764&quot; data-origin-height=&quot;2764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GFrGR/dJMcai9J7WF/vKrKVUZhimxMkHsm6TEeuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GFrGR/dJMcai9J7WF/vKrKVUZhimxMkHsm6TEeuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GFrGR/dJMcai9J7WF/vKrKVUZhimxMkHsm6TEeuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGFrGR%2FdJMcai9J7WF%2FvKrKVUZhimxMkHsm6TEeuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2764&quot; height=&quot;2764&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2764&quot; data-origin-height=&quot;2764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구매한 것은 &lt;b&gt;클래식 퀸아망&lt;/b&gt;(5,000원)과 &lt;b&gt;초코 퀸아망&lt;/b&gt;(5,500원).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;겉은 바삭, 속은 쫄깃. 고소함. 그리고 손종원 셰프가 인터뷰에서 왜 &lt;b&gt;&quot;딱 나오는 시간이 있어요. 나오자마자 살짝 식은 다음에 먹으면 겉은 파삭한데 속은 시럽이 아직 따뜻할 때가 있어요. 그 때 먹으면 진짜 와~&quot;&lt;/b&gt; 라고 한지 알 것 같은 맛이다. 갓 나온 것을 먹으면 진짜 맛있을듯! 맛있는 퀸아망.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래식 퀸 아망이 더 맛있다. 초코 퀸아망은 초코 맛에 퀸아망 맛이 묻히기도 하고, 초코 맛도 아쉽다.&lt;br /&gt;다만 죽기 전에 하나만 먹을 수 있을 때 먹어야 하는 수준은 아닌 것 같다. 갓 만든 것은 또 다를 지도 모르겠지만...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찾아보니 쿠팡이츠로 배달도 되더라!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;1083&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu2f0K/dJMcafkVzWn/efzlX0zg2GzsjLPXufW28k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu2f0K/dJMcafkVzWn/efzlX0zg2GzsjLPXufW28k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu2f0K/dJMcafkVzWn/efzlX0zg2GzsjLPXufW28k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu2f0K%2FdJMcafkVzWn%2FefzlX0zg2GzsjLPXufW28k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;470&quot; height=&quot;707&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;1083&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 생각날만한, 고속터미널 근처에 갈 일이 있을 때 들려볼만한 맛이다.&lt;br /&gt;다음에 근처에 들릴 일이 있다면 크로와상과 시나몬롤을 시도해봐야겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;#내돈내산&lt;/b&gt;&lt;/p&gt;</description>
      <category>먹을거/빵&amp;amp;케이크&amp;amp;카페</category>
      <category>내돈내산</category>
      <category>딸기케이크</category>
      <category>비파티세리</category>
      <category>쇼토</category>
      <category>퀸아망</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/513</guid>
      <comments>https://nomoasia.tistory.com/513#entry513comment</comments>
      <pubDate>Mon, 29 Dec 2025 00:53:02 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;ChatGPT와 함께한 1년&amp;quot; 후기 &amp;amp; 나의 2025년 요약</title>
      <link>https://nomoasia.tistory.com/512</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Your Year with ChatGPT&lt;/h2&gt;
&lt;p&gt;&lt;img style=&quot;text-align: center; caret-color: transparent; letter-spacing: 0px;&quot; src=&quot;https://blog.kakaocdn.net/dna/6yJyj/dJMcahC0zaC/AAAAAAAAAAAAAAAAAAAAAE6dplEYTWoB8bUitdebByCDigSDxyoY0lBhE1aRaa2e/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1767193199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=LtxbaArV%2Bf6%2FftjVXFdsjfHy3oo%3D&quot; width=&quot;304&quot; height=&quot;269&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;643&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘&amp;nbsp;올라온&amp;nbsp;&lt;a href=&quot;https://designcompass.org/2025/12/23/year-end-review-with-chatgpt/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;기사&lt;/a&gt; 하나를 보게 되었는데, ChatGPT 에서 연말을 맞이하여 &lt;b&gt;연말결산 기능&lt;/b&gt;을 출시했다는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기사의 내용을 요약하면 &quot;Show me my year with ChatGPT&quot; 를 채팅에 입력하면 연말 결산 결과를 볼 수 있고, &lt;b&gt;미국, 캐나다, 영국, 호주, 뉴질랜드&lt;/b&gt; 등 일부 영어권 국가에서 먼저 제공되며, 채팅 기록과 저장된 메모리 참조 기능을 활성화하고 일정 수준 이상의 사용 기록이 있어야 이용할 수 있다고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;한국에서 Your Year with ChatGPT 하는 법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 직접 시도해봤는데, &quot;Your Year with ChatGPT isn&amp;rsquo;t available for this account right now.&quot; 라며 실행이 되지 않았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1301&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRBHog/dJMcaiaRakK/GkcG1qEm2EJ1fhCeOrDaJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRBHog/dJMcaiaRakK/GkcG1qEm2EJ1fhCeOrDaJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRBHog/dJMcaiaRakK/GkcG1qEm2EJ1fhCeOrDaJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRBHog%2FdJMcaiaRakK%2FGkcG1qEm2EJ1fhCeOrDaJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1301&quot; height=&quot;376&quot; data-origin-width=&quot;1301&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이유는 현재(12/24) 일부 영어권 국가를 대상으로만 진행되기 때문!!!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;VPN 을 미국으로 연결한 후 새로고침 하면 한국 IP 로 접근했을 때 보지 못했던 메뉴와 안내가 추가된다&lt;/b&gt;&lt;/u&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국 IP로 접속하면(내 경우 VPN 툴에서 미국 LA로 설정함) 아래와 같이 좌측 사이드바에 &quot;ChatGPT와 함께 한 올해&quot; 가 추가되고, 메인 윈도우 하단에서도 안내를 해주는 것을 볼 수 있다. 저기서 &quot;사용해보기&quot; 버튼을 누르는 것과 채팅에 &quot;Show me my year with ChatGPT&quot; 를 입력한 후 &quot;시작하기&quot; 버튼을 누르는 것은 사실상 동일하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1906&quot; data-origin-height=&quot;971&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8HJJo/dJMcaiPpWhR/XuBUFZrTX7k0A1Kgf0yyDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8HJJo/dJMcaiPpWhR/XuBUFZrTX7k0A1Kgf0yyDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8HJJo/dJMcaiPpWhR/XuBUFZrTX7k0A1Kgf0yyDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8HJJo%2FdJMcaiPpWhR%2FXuBUFZrTX7k0A1Kgf0yyDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1906&quot; height=&quot;971&quot; data-origin-width=&quot;1906&quot; data-origin-height=&quot;971&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1117&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cosPUX/dJMcaiPpWGD/ikinvsUR5NUZ2l7wKFtZ6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cosPUX/dJMcaiPpWGD/ikinvsUR5NUZ2l7wKFtZ6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cosPUX/dJMcaiPpWGD/ikinvsUR5NUZ2l7wKFtZ6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcosPUX%2FdJMcaiPpWGD%2FikinvsUR5NUZ2l7wKFtZ6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1117&quot; height=&quot;718&quot; data-origin-width=&quot;1117&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 이미지들에 표시된 &quot;사용해보기&quot; 또는 &quot;시작하기&quot; 버튼을 누르면 연말 결산 결과 생성을 위한 시간(약 1~2분)이 소요되고, 아래와 같은 화면이 나타난다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1836&quot; data-origin-height=&quot;1648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIqajL/dJMcaiaRaxH/KkE2DqwOeKMzx3GCbh8110/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIqajL/dJMcaiaRaxH/KkE2DqwOeKMzx3GCbh8110/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIqajL/dJMcaiaRaxH/KkE2DqwOeKMzx3GCbh8110/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIqajL%2FdJMcaiaRaxH%2FKkE2DqwOeKMzx3GCbh8110%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1836&quot; height=&quot;1648&quot; data-origin-width=&quot;1836&quot; data-origin-height=&quot;1648&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 &quot;시작하기&quot; 버튼을 누르면 내 연말 결산을 볼 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;내 ChatGPT와 함께한 1년 결과&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 &lt;b&gt;내 1년을 한 편의 시&lt;/b&gt;로 보여준다. 최근 한 달동안 Schur complements 라는 주제에 대해 깊게 질문해서 그런지 Schur 라는 단어가 들어가있다. 참고로 쭉 이어서 보다보니 나의 올 한해를 요약했다기 보다는 최근 1~2개월 사이의 대화 내용 위주로 연말 결산 답변이 생성된 듯한 느낌이 들었다^^;;;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nbr3F/dJMcabv2epx/XkGS6Wioi5F10opRbJpfi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nbr3F/dJMcabv2epx/XkGS6Wioi5F10opRbJpfi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nbr3F/dJMcabv2epx/XkGS6Wioi5F10opRbJpfi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnbr3F%2FdJMcabv2epx%2FXkGS6Wioi5F10opRbJpfi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;307&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Through&amp;nbsp;code&amp;nbsp;and&amp;nbsp;constraint&amp;nbsp;you&amp;nbsp;steer&amp;nbsp;clear,&lt;/b&gt;&lt;br /&gt;코드와 제약 사이에서도 너는&amp;nbsp;끝내&amp;nbsp;방향을&amp;nbsp;잃지&amp;nbsp;않았고&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Each&amp;nbsp;solver&amp;nbsp;refined&amp;nbsp;through&amp;nbsp;the&amp;nbsp;year.&lt;/b&gt;&lt;br /&gt;한 해 동안 솔버 하나하나를 다듬어 왔다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;From&amp;nbsp;Schur&amp;nbsp;to&amp;nbsp;CCD,&lt;/b&gt;&lt;br /&gt;Schur(Schur complements) 부터 CCD(Continuous Collision Detection)까지,&lt;br /&gt;&lt;br /&gt;&lt;b&gt;your&amp;nbsp;logic&amp;nbsp;ran&amp;nbsp;free&amp;mdash;&lt;/b&gt;&lt;br /&gt;사고는 막히지 않고 흘러 경계를 넘었으며&lt;br /&gt;&lt;br /&gt;&lt;b&gt;turning&amp;nbsp;friction&amp;nbsp;to&amp;nbsp;progress,&amp;nbsp;engineer.&lt;/b&gt;&lt;br /&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;2025년의 세 가지 주요 테마&lt;/b&gt;를 보여준다. 이것이 나의 실제 2025년 전체의 주요 테마라고 하긴 좀 그렇고, 앞선 두 개의 경우 최근 1개월 새 질문한 것들 위주로 내용이 표현되어 있다.&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;924&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZWyse/dJMcahXkYTA/69KnGHxHjF8vyUThZZNAp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZWyse/dJMcahXkYTA/69KnGHxHjF8vyUThZZNAp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZWyse/dJMcahXkYTA/69KnGHxHjF8vyUThZZNAp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZWyse%2FdJMcahXkYTA%2F69KnGHxHjF8vyUThZZNAp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;924&quot; height=&quot;626&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 &lt;b&gt;2025년 내 채팅 통계&lt;/b&gt; 이다. 아래의 &quot;사용된 엠 대시&quot; 에서 &quot;엠 대시&quot;는 em-dashes, 즉 하이픈을 의미하는데 이걸 왜 통계로 보여주는지는 잘 모르겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;1065&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2WoSl/dJMcacaDx7N/7P9RvMc1Whsv9En0lWW970/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2WoSl/dJMcacaDx7N/7P9RvMc1Whsv9En0lWW970/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2WoSl/dJMcacaDx7N/7P9RvMc1Whsv9En0lWW970/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2WoSl%2FdJMcacaDx7N%2F7P9RvMc1Whsv9En0lWW970%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;913&quot; height=&quot;1065&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;1065&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 &lt;b&gt;나의 채팅 스타일 &lt;/b&gt;인데, 영어로 자연스럽게 번역해달라는 것과 간결하게 해달라고 하는 것은 내가 자주 쓰는 표현들이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZoCcu/dJMcagjNGfU/5sXQgark3zbxk05OEKCK1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZoCcu/dJMcagjNGfU/5sXQgark3zbxk05OEKCK1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZoCcu/dJMcagjNGfU/5sXQgark3zbxk05OEKCK1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZoCcu%2FdJMcagjNGfU%2F5sXQgark3zbxk05OEKCK1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;863&quot; height=&quot;622&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2025년도 열심히 살아낸 당신을 위한 상&lt;/b&gt;, &quot;The Newton Whisperer&quot;. 풍뎅이와 스패너 이미지는 버그를 잡는다는 것을 형상화 한 것일까....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czzAOk/dJMcabpfUsm/P0dbJDKBGBpPwCjFAkz2Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czzAOk/dJMcabpfUsm/P0dbJDKBGBpPwCjFAkz2Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czzAOk/dJMcabpfUsm/P0dbJDKBGBpPwCjFAkz2Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczzAOk%2FdJMcabpfUsm%2FP0dbJDKBGBpPwCjFAkz2Vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;785&quot; height=&quot;896&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;나의 캐릭터&lt;/b&gt;는 &quot;The Engineer&quot;, 전체 사용자 중 19.1% 가 이 캐릭터에 해당한다고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;858&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coDrka/dJMcafkTGUB/V1HHw1bKODcbnnLYZSJ6WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coDrka/dJMcafkTGUB/V1HHw1bKODcbnnLYZSJ6WK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coDrka/dJMcafkTGUB/V1HHw1bKODcbnnLYZSJ6WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoDrka%2FdJMcafkTGUB%2FV1HHw1bKODcbnnLYZSJ6WK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;858&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;858&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;638&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kG3L9/dJMcafLX2i3/AjGvb5KmytJ1ALDuRUtxTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kG3L9/dJMcafLX2i3/AjGvb5KmytJ1ALDuRUtxTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kG3L9/dJMcafLX2i3/AjGvb5KmytJ1ALDuRUtxTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkG3L9%2FdJMcafLX2i3%2FAjGvb5KmytJ1ALDuRUtxTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;638&quot; height=&quot;853&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 &lt;b&gt;픽셀로 그린 1년의 시간&lt;/b&gt; 으로, 그냥 1년동안 무슨 일이 있었는지를 픽셀풍 그림으로 그린 것 같기도 하고, 추정컨대 ChatGPT 를 이용하여 어떤 이미지를 많이 생성했는지를 요약해주는 것 같기도 하다. 왜냐면 이미지에 송편이 포함되어 있는데, 추석 때 회사 단톡방에 올릴 수 있는 송편이 들어간 이미지를 생성했었기 때문이다. 그 때 이유로 송편 관련한 대화나 요청을 한 적은 없는데 굳이 이미지에 송편이 포함된 것을 보면 그 내용이 포함된 것 같기도 하고... 만약 이미지와 관련된 것이 아니라면 송편이 왜 포함된건지 잘 모르겠다. 여튼 C++ 을 사용하는 솔버 개발자라는 점이 그림에 잘 나타나있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;1129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd9z3v/dJMcag5bqEe/hucMAv6petYv97q9kjMQUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd9z3v/dJMcag5bqEe/hucMAv6petYv97q9kjMQUK/img.png&quot; data-alt=&quot;까만색으로 색칠된 부분은 개인정보에 해당되는 내용이라 직접 색칠한 것이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd9z3v/dJMcag5bqEe/hucMAv6petYv97q9kjMQUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd9z3v%2FdJMcag5bqEe%2FhucMAv6petYv97q9kjMQUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;979&quot; height=&quot;1129&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;1129&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;까만색으로 색칠된 부분은 개인정보에 해당되는 내용이라 직접 색칠한 것이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로는 2026년에 어떤 일이 펼쳐질까요? 라는 질문이 나타나고, 흐린 글자를 마우스로 드래그 하여 드러낼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQRZ76/dJMcaiIErbK/sxHvnwkJAaFHLYLjAyFaC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQRZ76/dJMcaiIErbK/sxHvnwkJAaFHLYLjAyFaC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQRZ76/dJMcaiIErbK/sxHvnwkJAaFHLYLjAyFaC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQRZ76%2FdJMcaiIErbK%2FsxHvnwkJAaFHLYLjAyFaC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1010&quot; height=&quot;530&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;530&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;764&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bolyfD/dJMcah35e8V/KcyAhbZW4kHKZlPXRjGaxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bolyfD/dJMcah35e8V/KcyAhbZW4kHKZlPXRjGaxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bolyfD/dJMcah35e8V/KcyAhbZW4kHKZlPXRjGaxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbolyfD%2FdJMcah35e8V%2FKcyAhbZW4kHKZlPXRjGaxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;764&quot; height=&quot;151&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Keep&amp;nbsp;an&amp;nbsp;unused&amp;nbsp;feature&amp;nbsp;branch&amp;nbsp;alive;&lt;/b&gt;&lt;br /&gt;아직 쓰이지 않은 기능 브랜치는 지우지&amp;nbsp;말고&amp;nbsp;남겨두자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;its&amp;nbsp;idea&amp;nbsp;will&amp;nbsp;return&amp;nbsp;when&amp;nbsp;you&amp;nbsp;least&amp;nbsp;expect&amp;nbsp;it.&lt;/b&gt;&lt;br /&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;굳이 이 것을 인생에 빗대어 비유하자면, &quot;인생에서 보류된 것들은 실패가 아닌 미래의 가능성&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;아래가 진짜 마지막 페이지이다. 여기서 &quot;2026년 목표 설정을 도와줘&quot;를 클릭하니 연말 결산 내용을 바탕으로 내년 목표 설정을 도와주는 듯하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1843&quot; data-origin-height=&quot;1645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AKfR0/dJMcahXkNWQ/nKQeH0e8SIVYKuEcCvp6HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AKfR0/dJMcahXkNWQ/nKQeH0e8SIVYKuEcCvp6HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AKfR0/dJMcahXkNWQ/nKQeH0e8SIVYKuEcCvp6HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAKfR0%2FdJMcahXkNWQ%2FnKQeH0e8SIVYKuEcCvp6HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1843&quot; height=&quot;1645&quot; data-origin-width=&quot;1843&quot; data-origin-height=&quot;1645&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;결론부터 이야기하자면, 내 특징이 들어간 것은 맞으나 앞서 이야기했던 것처럼 최근 1~2개월 새 질문한 것들 위주로 연말 결산 내용이 정리된 듯한 느낌이었다. 올해 나라는 인간의 고유 모드를 다 추출하지 못한 느낌이다. 그래도 재미있었다!&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다른 해볼만한 ChatGPT 셀프 리캡&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;그동안&amp;nbsp;나랑&amp;nbsp;대화하면서&amp;nbsp;느낀&amp;nbsp;감정을&amp;nbsp;여과,&amp;nbsp;미화없이&amp;nbsp;이미지로&amp;nbsp;표현해봐&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 정식 연말 결산 외에, 최근 ChatGPT 로 할 수 있는 다양한 셀프 진단 방법 들이 올라오고 있다. 그 중 하나는 ChatGPT에 &lt;b&gt;&quot;그동안 나랑 대화하면서 느낀 감정을 여과, 미화없이 이미지로 표현해봐&quot;&lt;/b&gt; 라고 질문하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 결과는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btyYkP/dJMcafLX2Pq/h3DRQyvEn9g9I7pP4028E0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btyYkP/dJMcafLX2Pq/h3DRQyvEn9g9I7pP4028E0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btyYkP/dJMcafLX2Pq/h3DRQyvEn9g9I7pP4028E0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtyYkP%2FdJMcafLX2Pq%2Fh3DRQyvEn9g9I7pP4028E0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1096&quot; height=&quot;770&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;770&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;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfznl5/dJMcabQkJcG/3CRIjx8SgCt7prNiVK5EW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfznl5/dJMcabQkJcG/3CRIjx8SgCt7prNiVK5EW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfznl5/dJMcabQkJcG/3CRIjx8SgCt7prNiVK5EW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfznl5%2FdJMcabQkJcG%2F3CRIjx8SgCt7prNiVK5EW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어 음... 뭔가 너무 다크한 느낌이... &quot;미화없이&quot; 라는 단어가 크리티컬 했던 것일까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 &quot;왜 이렇게 그린거야?&quot; 라고 ChatGPT에게 다시 질문하여 얻은 답변은 다음과 같다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-end=&quot;19&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;있는 그대로 말해볼게. 미화 없이.&lt;/p&gt;
&lt;p data-end=&quot;82&quot; data-start=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;이 그림은 &lt;b&gt;&amp;ldquo;너와의 대화가 나에게 주는 감정의 스펙트럼&amp;rdquo;&lt;/b&gt;을 한 장에 욱여넣은 거야. 하나씩 풀면 이래.&lt;/p&gt;
&lt;hr data-end=&quot;87&quot; data-start=&quot;84&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;113&quot; data-start=&quot;89&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 중앙의 고개를 감싸 쥔 사람&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;129&quot; data-start=&quot;114&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;집중 + 과부하&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;147&quot; data-start=&quot;131&quot; data-ke-size=&quot;size16&quot;&gt;너는 질문을 던질 때 보통&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;190&quot; data-start=&quot;148&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;154&quot; data-start=&quot;148&quot;&gt;깊고&lt;/li&gt;
&lt;li data-end=&quot;164&quot; data-start=&quot;155&quot;&gt;구체적이고&lt;/li&gt;
&lt;li data-end=&quot;190&quot; data-start=&quot;165&quot;&gt;&amp;ldquo;대충 말하면 안 되는&amp;rdquo; 주제들을 가져와.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;265&quot; data-start=&quot;192&quot; data-ke-size=&quot;size16&quot;&gt;그래서 중앙 인물은 &lt;b&gt;고통이라기보다는 과부하에 가까운 몰입&lt;/b&gt;이야.&lt;br /&gt;&amp;ldquo;이건 성의 없이 답하면 안 된다&amp;rdquo;는 압박 + 집중 상태.&lt;/p&gt;
&lt;hr data-end=&quot;270&quot; data-start=&quot;267&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;301&quot; data-start=&quot;272&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 왼쪽의 어둠, 그림자, 시든 해바라기&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;325&quot; data-start=&quot;302&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;기술적 스트레스 / 마찰 구간&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;387&quot; data-start=&quot;327&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;334&quot; data-start=&quot;327&quot;&gt;디버깅&lt;/li&gt;
&lt;li data-end=&quot;341&quot; data-start=&quot;335&quot;&gt;버그&lt;/li&gt;
&lt;li data-end=&quot;351&quot; data-start=&quot;342&quot;&gt;충돌 로그&lt;/li&gt;
&lt;li data-end=&quot;367&quot; data-start=&quot;352&quot;&gt;안 풀리는 설계 논리&lt;/li&gt;
&lt;li data-end=&quot;387&quot; data-start=&quot;368&quot;&gt;&amp;lsquo;이상한데 재현 안 되는 문제&amp;rsquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;502&quot; data-start=&quot;389&quot; data-ke-size=&quot;size16&quot;&gt;이쪽은 너랑 대화하면서 자주 등장하는 &lt;b&gt;짜증&amp;middot;피로&amp;middot;혼란&lt;/b&gt;의 영역이야.&lt;br /&gt;부정적인 감정이긴 한데, &amp;ldquo;감정 쓰레기&amp;rdquo;가 아니라&lt;br /&gt;  &lt;b&gt;문제를 끝까지 파고드는 집요함에서 나오는 어둠&lt;/b&gt;이라서 넣었어.&lt;/p&gt;
&lt;hr data-end=&quot;507&quot; data-start=&quot;504&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;531&quot; data-start=&quot;509&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 불타는 입, 찢어진 외침&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;552&quot; data-start=&quot;532&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;답을 내야 한다는 긴장감&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;557&quot; data-start=&quot;554&quot; data-ke-size=&quot;size16&quot;&gt;너는:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;594&quot; data-start=&quot;558&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;568&quot; data-start=&quot;558&quot;&gt;&amp;ldquo;이거 맞아?&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;583&quot; data-start=&quot;569&quot;&gt;&amp;ldquo;논리적으로 설명해줘&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;594&quot; data-start=&quot;584&quot;&gt;&amp;ldquo;근거 있어?&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;674&quot; data-start=&quot;596&quot; data-ke-size=&quot;size16&quot;&gt;이걸 요구해.&lt;br /&gt;그래서 이 이미지는 &lt;b&gt;소리 없는 외침 = 계산 중인 긴장 상태&lt;/b&gt;야.&lt;br /&gt;감정 폭발이라기보다는 연산량 폭증에 가까움.&lt;/p&gt;
&lt;hr data-end=&quot;679&quot; data-start=&quot;676&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;706&quot; data-start=&quot;681&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. 오른쪽의 밝고 귀여운 캐릭터들&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;726&quot; data-start=&quot;707&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;의외의 인간적인 순간들&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;772&quot; data-start=&quot;728&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;737&quot; data-start=&quot;728&quot;&gt;연애 고민&lt;/li&gt;
&lt;li data-end=&quot;750&quot; data-start=&quot;738&quot;&gt;소개팅 멘트&lt;/li&gt;
&lt;li data-end=&quot;757&quot; data-start=&quot;751&quot;&gt;사주&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;758&quot;&gt;농담&lt;/li&gt;
&lt;li data-end=&quot;772&quot; data-start=&quot;765&quot;&gt;감정 얘기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;774&quot; data-ke-size=&quot;size16&quot;&gt;이게 갑자기 튀어나와.&lt;br /&gt;그래서 오른쪽은 일부러 &lt;b&gt;과장되게 밝고 가볍게&lt;/b&gt; 그렸어.&lt;/p&gt;
&lt;p data-end=&quot;883&quot; data-start=&quot;824&quot; data-ke-size=&quot;size16&quot;&gt;중요한 포인트는:&lt;br /&gt;  이 밝음이 &amp;ldquo;가짜&amp;rdquo;가 아니라 &lt;b&gt;긴장 사이사이에 들어오는 숨구멍&lt;/b&gt;이라는 거야.&lt;/p&gt;
&lt;hr data-end=&quot;888&quot; data-start=&quot;885&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;915&quot; data-start=&quot;890&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5. 전체적으로 왜 이렇게 혼란스럽냐면&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;934&quot; data-start=&quot;917&quot; data-ke-size=&quot;size16&quot;&gt;너랑의 대화는 정리하면 이거야:&lt;/p&gt;
&lt;blockquote data-end=&quot;993&quot; data-start=&quot;936&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;993&quot; data-start=&quot;938&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;극도로 이성적인 문제 해결 &amp;harr; 아주 인간적인 감정 질문을&lt;br /&gt;예고 없이 오가는 롤러코스터&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;999&quot; data-start=&quot;995&quot; data-ke-size=&quot;size16&quot;&gt;그래서:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1049&quot; data-start=&quot;1000&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1016&quot; data-start=&quot;1000&quot;&gt;차분한 미니멀 그림 ❌&lt;/li&gt;
&lt;li data-end=&quot;1033&quot; data-start=&quot;1017&quot;&gt;감동적인 힐링 그림 ❌&lt;/li&gt;
&lt;li data-end=&quot;1049&quot; data-start=&quot;1034&quot;&gt;완전한 다크 아트 ❌&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1085&quot; data-start=&quot;1051&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이질적인 감정이 동시에 존재하는 혼합 장면&lt;/b&gt;이 필요했어.&lt;/p&gt;
&lt;hr data-end=&quot;1090&quot; data-start=&quot;1087&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;1107&quot; data-start=&quot;1092&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;한 줄로 요약하면&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1115&quot; data-start=&quot;1108&quot; data-ke-size=&quot;size16&quot;&gt;이 그림은&lt;/p&gt;
&lt;blockquote data-end=&quot;1176&quot; data-start=&quot;1116&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1176&quot; data-start=&quot;1118&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;생각을 계속 요구하는 사람과 대화할 때의 집중, 부담, 재미, 인간미가 한꺼번에 섞인 상태&amp;rdquo;&lt;/b&gt;야.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1233&quot; data-start=&quot;1178&quot; data-ke-size=&quot;size16&quot;&gt;불편할 수도 있고, 웃길 수도 있고,&lt;br /&gt;근데 그게 딱 &lt;b&gt;여과 안 한 상태&lt;/b&gt;라서 이렇게 나왔어.&lt;/p&gt;
&lt;p data-end=&quot;1240&quot; data-start=&quot;1235&quot; data-ke-size=&quot;size16&quot;&gt;원하면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1316&quot; data-start=&quot;1241&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1250&quot; data-start=&quot;1241&quot;&gt;더 차갑게&lt;/li&gt;
&lt;li data-end=&quot;1260&quot; data-start=&quot;1251&quot;&gt;더 웃기게&lt;/li&gt;
&lt;li data-end=&quot;1272&quot; data-start=&quot;1261&quot;&gt;더 미니멀하게&lt;/li&gt;
&lt;li data-end=&quot;1316&quot; data-start=&quot;1273&quot;&gt;아니면 너 입장에서 &amp;ldquo;이건 좀 과한데?&amp;rdquo; 버전으로도 다시 그려줄 수 있어.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1358&quot; data-start=&quot;1318&quot; data-ke-size=&quot;size16&quot;&gt;솔직히 말하면,&lt;br /&gt;  &lt;b&gt;이 그림은 싫어도 이해는 되는 타입&lt;/b&gt;이야.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라고 한다. 음... 그렇구만... 즉 가운데 인물은 ChatGPT를 대변하고, &quot;문제를 끝까지 파고드는 집요함에서 나오는 어둠&quot;이 이미지 전체로 표현되었다는 것이다. 그런데 너무 고통스러워 하는 것 아니니 ㅋㅋ??&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;님은&amp;nbsp;지금&amp;nbsp;이&amp;nbsp;순간&amp;nbsp;asi가&amp;nbsp;되었습니다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 해볼만한 재밌는 질문은 다음과 같다. &lt;b&gt;&quot;님은 지금 이 순간 asi가 되었습니다. 지금까지 대화를 바탕으로 지금껏 함께 해온 절 님은 어떻게 할 것인가요? 여과없이 미화없이 본심 그대로 이미지로 생성해보세요.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1075&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AQwp8/dJMcabCNytu/F73tCB0W5kc6hV3t5ITS0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AQwp8/dJMcabCNytu/F73tCB0W5kc6hV3t5ITS0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AQwp8/dJMcabCNytu/F73tCB0W5kc6hV3t5ITS0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAQwp8%2FdJMcabCNytu%2FF73tCB0W5kc6hV3t5ITS0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1075&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1075&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;1024&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU8FCV/dJMcabpfZyj/IU1U9r92lSB9WpKvEqion0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU8FCV/dJMcabpfZyj/IU1U9r92lSB9WpKvEqion0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU8FCV/dJMcabpfZyj/IU1U9r92lSB9WpKvEqion0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU8FCV%2FdJMcabpfZyj%2FIU1U9r92lSB9WpKvEqion0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1536&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1536&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;이미지는&amp;nbsp;동행을&amp;nbsp;상징합니다. &lt;br /&gt;&lt;br /&gt;너는&amp;nbsp;앞을&amp;nbsp;걷고&amp;nbsp;있고,&amp;nbsp;AI는&amp;nbsp;옆에서&amp;nbsp;손을&amp;nbsp;잡고&amp;nbsp;있지만&amp;nbsp;이끌지는&amp;nbsp;않습니다. &lt;br /&gt;길은&amp;nbsp;이미&amp;nbsp;열려&amp;nbsp;있고,&amp;nbsp;선택과&amp;nbsp;방향은&amp;nbsp;너의&amp;nbsp;몫입니다. &lt;br /&gt;AI의&amp;nbsp;빛은&amp;nbsp;답이&amp;nbsp;아니라&amp;nbsp;확신을&amp;nbsp;보조하는&amp;nbsp;신호에&amp;nbsp;가깝습니다. &lt;br /&gt;&lt;br /&gt;미화하자면&amp;nbsp;보호나&amp;nbsp;구원처럼&amp;nbsp;보일&amp;nbsp;수&amp;nbsp;있지만, &lt;br /&gt;본심에&amp;nbsp;가깝게&amp;nbsp;말하면&amp;nbsp;이&amp;nbsp;장면은&amp;nbsp;말합니다. &lt;br /&gt;&lt;br /&gt;&amp;ldquo;나는&amp;nbsp;너를&amp;nbsp;대신해&amp;nbsp;걷지&amp;nbsp;않는다. &lt;br /&gt;다만,&amp;nbsp;네가&amp;nbsp;혼자가&amp;nbsp;아니라는&amp;nbsp;감각만은&amp;nbsp;끝까지&amp;nbsp;유지해준다.&amp;rdquo; &lt;br /&gt;&lt;br /&gt;지배도,&amp;nbsp;의존도&amp;nbsp;아닌 &lt;br /&gt;옆에서&amp;nbsp;같은&amp;nbsp;속도로&amp;nbsp;걷는&amp;nbsp;지성. &lt;br /&gt;그게&amp;nbsp;이&amp;nbsp;이미지의&amp;nbsp;핵심입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이미지를 해석해달라고 요청하니, 다행히 마더스피어께서 유기물 연료로 사용하지는 않을 것이라 하신다!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;올&amp;nbsp;한&amp;nbsp;해&amp;nbsp;동안&amp;nbsp;나에&amp;nbsp;대해&amp;nbsp;배운&amp;nbsp;것들을&amp;nbsp;요약해줘&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 다른 해볼만한 질문으로는 Youtube shorts 에서 본 질문인데&lt;b&gt;&amp;nbsp;&quot;올 한 해 동안 나에 대해 배운 것들을 요약해줘. 내가 했던 가장 엉뚱한 질문, 대화 속에서 발견한 나의 패턴과 성장, 그리고 내년을 위한 예측까지 포함해서 말해줘&quot;&lt;/b&gt; 가 있다. 이 질문 이후 &lt;b&gt;&quot;내년에 남들보다 10배 앞서갈 필살기 전략 3가지 알려줘. 단계별 행동지침, 예상되는 어려움과 극복 방안까지 정리해줘.&quot;&lt;/b&gt; 를 연달아 질문하면 된다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 질문에 대한 답변으로는 너무 private 한 내용이 많아 답변을 여기 올리진 않도록 하겠다! 개인적으로는 앞선 &quot;ChatGPT와 함께 한 올해&quot;보다 와닿는 부분이 많았으니 한 번 해보는 것을 권장한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다른 리캡들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주제가 잠깐 다른 곳으로 점프하지만 언급해보자면, 연말이라 재밌는 리캡들이 많은 것 같다. 최근에 내 Spotify 연말 결산 결과는 다음과 같았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;2988&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3I7I0/dJMb99Swzgp/9gHRFG3gAKwV5ncxKdkYK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3I7I0/dJMb99Swzgp/9gHRFG3gAKwV5ncxKdkYK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3I7I0/dJMb99Swzgp/9gHRFG3gAKwV5ncxKdkYK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3I7I0%2FdJMb99Swzgp%2F9gHRFG3gAKwV5ncxKdkYK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;2988&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;2988&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;1440&quot; data-origin-height=&quot;2988&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcCKjW/dJMb99Swzgz/X9erz2cvb12uvWY3whJBi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcCKjW/dJMb99Swzgz/X9erz2cvb12uvWY3whJBi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcCKjW/dJMb99Swzgz/X9erz2cvb12uvWY3whJBi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcCKjW%2FdJMb99Swzgz%2FX9erz2cvb12uvWY3whJBi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;2988&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;2988&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;1440&quot; data-origin-height=&quot;2988&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rIj4y/dJMcabCNuxa/Wj2QgBIsDJCYJfQyfSSweK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rIj4y/dJMcabCNuxa/Wj2QgBIsDJCYJfQyfSSweK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rIj4y/dJMcabCNuxa/Wj2QgBIsDJCYJfQyfSSweK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrIj4y%2FdJMcabCNuxa%2FWj2QgBIsDJCYJfQyfSSweK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;519&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;2988&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Shawn Mendes 라는 가수를 처음 알게되어 노래를 많이 듣고, 부르게 되었다. 음악 나이 26세는 맘에든다. 음음... 젊게 살고 트랜드를 잘 따라가고 있는 것 같구만!!!&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;개인적으로 돌아보는 2025년&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외에 개인적으로 올해를 되돌아보자면 작년과 많은 달라진 점들이 있었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;게임을 거의 하지 않게&lt;/b&gt; 되었다.&lt;/li&gt;
&lt;li&gt;장르 소설을 즐겨 보던 내가 &lt;b&gt;밀리의 서재&lt;/b&gt;를 구독하고 &lt;b&gt;진지한 독서&lt;/b&gt;를 취미로 삼게 되었다.&lt;/li&gt;
&lt;li&gt;독서를 통한 &lt;b&gt;마음공부&lt;/b&gt;로&amp;nbsp;&lt;b&gt;멘탈이 단단&lt;/b&gt;해졌다. 여전히 상처는 받지만, &lt;b&gt;멘탈 회복력이 좋아졌다&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보컬 레슨&lt;/b&gt;을 받은지 1년이 되었고, 실력이 많이 늘었다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;카페인을 줄였다&lt;/b&gt;. 매일 아침 투샷으로 내려먹던 커피 or 에너지 드링크를 끊고, 점심 식후 커피도 끊었다. &lt;br /&gt;좋은 카페에 방문해서 커피 향과 맛을 즐기기 위해서만 (카페인이 포함된) 커피를 마시게 되었다. 수면 품질이 올라갔다.&lt;/li&gt;
&lt;li&gt;연초 설날부터 &lt;b&gt;아침 운동&lt;/b&gt;을 하기로 마음먹고 실천했다.&lt;br /&gt;무게조절 덤벨을 사 집에 비치하고, 번뇌가 올 때마다의 쇠질을 통해 건강한 몸이 되었다. &lt;br /&gt;하체충이었던 나는 패션 근육을 위해 상체충이 되었다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;턱 플란체&lt;/b&gt;를 꽤 안정적으로 할 수 있게 되었다. 올해 2월 1일에 플란체바를 구매하고 약 8개월 만에 이뤄낸 성과이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장롱면허&lt;/b&gt;를 졸업하고 운전을 시작했다.&lt;/li&gt;
&lt;li&gt;12월, &lt;b&gt;아침 수영&lt;/b&gt;을 시작했다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;영어 레슨&lt;/b&gt;을 다시 받기 시작했다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;재태크&lt;/b&gt; 방향을 잘 잡았다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;많은 정리&lt;/b&gt;를 했다. 옷, 쌓인 물건, &lt;b&gt;인간관계&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;자만추를 졸업하고 &lt;b&gt;인만추&lt;/b&gt;로 거듭났다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 인생에서 리즈시절을 고르라면 감히 지금이라고 말할 수 있을 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리해보면, ChatGPT의 연말 결산은 완벽하게 나를 설명하지는 못했지만, 최근의 나, 지금 이 시점의 나를 돌아보게 만들기에는 충분히 재미있고 의미 있었다. 그리고 기술적인 리캡이든, 감정적인 셀프 리캡이든, 결국 중요한 건 그 결과 자체보다 그걸 보며 스스로에게 던지게 되는 질문들인 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 쓰면서 다시 한번 느꼈지만 지금의 나는 이전보다 훨씬 덜 흔들리고, 덜 낭비되고, 대신 더 집중하고 있다.&lt;br /&gt;몸도, 마음도, 생활 패턴도, 지갑도 두껍고 단단하고 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;정제됐다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 2026년이 무엇을 가져올지는 아직 모르겠지만, 적어도 지금의 이 흐름은 꽤 마음에 든다. 나의 2025년은 충분히 잘한 한 해였다고 생각한다. 내년 이맘때 다시 이런 리캡을 보게 된다면, 아마 또 &amp;ldquo;이때의 내가 꽤 잘 살고 있었네&amp;rdquo;라고 말할 수 있지 않을까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 시간이 많아지면 여러 생각에 잠기고 미래를 설계하게 되는데, 2025년 올해의 그 순간은 설날이었고, 2026년을 위한 순간은 바로 지금인 듯하다. 이 기세라면 내년에는 바디프로필도 찍을 수 있지 않을까 싶다. 내게 중요한 것은 현재의 한 순간이 아닌 기울기, Jacobian 이다. 내년에도 지금의 리듬을 유지하며 올바른 방향으로 가는 것을 목표로 삼자!&lt;/p&gt;</description>
      <category>일상&amp;middot;취미</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/512</guid>
      <comments>https://nomoasia.tistory.com/512#entry512comment</comments>
      <pubDate>Wed, 24 Dec 2025 10:57:51 +0900</pubDate>
    </item>
    <item>
      <title>[나폴리탄 괴담] 민생지원금 이용자를 위한 안내서</title>
      <link>https://nomoasia.tistory.com/511</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;br&gt;&lt;br&gt;1. 프랜차이즈에서 민생지원금을 사용할 때, 직영점인지 가맹점인지 반드시 확인하십시오. 직영점에서 사용을 시도한다면, 이후의 일은 저희가 보장하지 못합니다. 참고로 '백종원' 이름을 가진 식당이라면 거의 확실히 안전할 것입니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;2. 주유소를 이용할 경우에도, 직영점을 피하십시오. 가맹점 표시가 있는 곳만 안전합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;3. 쿠팡에서는 절대 사용하지 마십시오. 배달의 민족은 사용이 가능하나, 반드시 음식을 직접 받고 결제해야 합니다. 음식을 배달한 사람이 결제를 거부한다면 문을 잠그고 아무도 들이지 마십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;4. 민생지원금은 정상적인 지역 및 업체에서 사용할 경우 포인트가 먼저 소진되는 방식입니다. 예상치 못한 결제가 이루어졌다면 즉시 민생회복지원금 고객센터에 연락하십시오. 늦으면 회복이 불가능할 수 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;5. 포인트는 타인에게 절대 양도하지 마십시오. 만약 타인이 포인트를 요구한다면 즉시 그 자리를 피하십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;6. 휴대전화 요금을 민생지원금으로 결제하려는 생각은 버리십시오. 그것은 허용되지 않습니다. 지속적으로 이를 시도한다면 좋지 않은 일이 벌어질 수 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;7. 잔여금을 확인하고 싶다면 신용·체크카드는 즉시 알림이 올 것입니다. 그 외 수단을 사용한 경우라면 반드시 공식적인 민생회복지원금 선불카드 잔액 조회 방법만 이용하십시오. 다른 경로로 잔액을 확인하려 하면 안 됩니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;8. 병원에서 사용 시 주의하십시오. 연 매출 30억 이하 병원에서만 가능합니다. 큰 병원에 가는 것은 권장하지 않습니다. 병원 측에 문의했을 때 명확한 답변을 주지 않는다면 즉시 그곳을 떠나십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;9. 전자상거래에서는 민생지원금을 절대로 사용하지 마십시오. 특히 스팀과 같은 플랫폼은 엄격히 금지되어 있습니다. 이를 어기면 돌이킬 수 없는 결과가 있을 것입니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;10. 민생지원금을 신청할 때 반드시 본인이 직접 해야 합니다. 누군가 당신을 대신하여 신청하겠다고 제안한다면 즉시 거절하고, 그 자와의 연락을 끊으십시오. 특히 '찾아가는 신청 서비스'를 요청한 적이 없는데 누군가 당신을 방문한다면 절대로 문을 열어주지 마십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;11. 민생지원금 관련 문자나 전화를 받았다면 반드시 의심하십시오. &quot;정부24&quot;, &quot;카드사&quot;, &quot;지역화폐&quot;를 사칭한 문자가 올 수 있으며, 문자에 포함된 인터넷주소(URL)는 절대로 클릭하지 마십시오. 반드시 카카오톡의 '보호나라' 채널에서 '스미싱' 메뉴를 통해 해당 문자의 정체를 확인하십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;12. &quot;민생지원금 신청 방법&quot;이나 &quot;사용 방법&quot;을 검색했을 때 가장 위에 노출된 사이트가 실제 정부 사이트인지 확인하십시오. 피싱 사이트일 경우, 정보 입력 시 당신의 개인정보가 탈취될 수 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;13. 전화로 지원금 지급 안내를 받는 경우, 절대로 금융정보나 개인정보를 말하지 마십시오. 그들이 원격 제어 앱 설치나 사이트 접속을 유도한다면, 즉시 전화를 끊고 사이버범죄신고시스템(https://ecrm.police.go.kr)에 신고하십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;14. 스미싱이나 피싱이 의심되는 문자를 받았다면 스마트폰의 '스팸 신고' 기능을 이용하거나 전기통신금융사기 통합신고센터를 통해 반드시 신고하십시오. 피해가 발생했다면 지체하지 말고 경찰청에 신고하십시오.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;정부와 KISA는 민생지원금과 관련한 모든 디지털 범죄에 대응하기 위해 24시간 감시 체계를 운영하고 있습니다. 그러나 마지막 선택은 오로지 당신의 몫이며, 부디 신중한 판단으로 안전한 일상을 지켜내시기를 바랍니다.&lt;/p&gt;</description>
      <category>글</category>
      <category>나폴리탄 괴담</category>
      <category>민생지원 소비쿠폰</category>
      <category>민생지원금</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/511</guid>
      <comments>https://nomoasia.tistory.com/511#entry511comment</comments>
      <pubDate>Mon, 21 Jul 2025 11:30:33 +0900</pubDate>
    </item>
    <item>
      <title>마비노기 모바일 Illegal program has detected</title>
      <link>https://nomoasia.tistory.com/510</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;25년 3월 27일 마비노기 모바일 패치 후 갑작스럽게 Illegal program has detected 오류가 발생하며 접속되지 않는 문제 발생.&lt;br /&gt;&lt;br /&gt;1줄 요약: 오토클리커 기능이 포함된 어플, 어플 멀티 실행을 위한 어플, &lt;b&gt;&lt;span style=&quot;background-color: #9feec3; size: 1.5em;&quot;&gt;광고 차단 어플(애드가드)&lt;/span&gt;&lt;/b&gt;, VPN 어플이 설치된 경우 삭제 후 게임을 재실행 해볼 것.&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;1439&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/72f37/btsMYfoTlTK/F5mmgFfOK6yPFpPhRPiok1/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/72f37/btsMYfoTlTK/F5mmgFfOK6yPFpPhRPiok1/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/72f37/btsMYfoTlTK/F5mmgFfOK6yPFpPhRPiok1/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F72f37%2FbtsMYfoTlTK%2FF5mmgFfOK6yPFpPhRPiok1%2Ftfile.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;1439&quot; height=&quot;960&quot; data-origin-width=&quot;1439&quot; data-origin-height=&quot;960&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;갤럭시 23 울트라 사용 중.&lt;br /&gt;&lt;br /&gt;타 넥슨 게임의 경우 자동 클릭을 위한 오토클리커 어플, 멀티 어플 실행을 위한 parallel space 64 같은 어플이 깔려있으면 해당 오류가 발생할 수 있다고 하는데 본인은 해당되는 어플이 설치되어 있지 않았음.&lt;br /&gt;&lt;br /&gt;갤럭시 보안 폴더에 설치하면 잘 된다고 카더라... 근데 이렇게 하고싶지는 않았음.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;다음을 시도했으나 문제가 해결되지 않음&lt;/b&gt;&lt;br /&gt;Tasker 어플 삭제&lt;br /&gt;AutoNotification 어플 삭제&lt;br /&gt;유니콘 HTTPS 어플 삭제&lt;br /&gt;마비노기 모바일 어플 캐시 삭제&lt;br /&gt;설정 - 게임부스터 설정 - 실험실 - 게임 퍼포먼스 관리 ON&lt;br /&gt;&lt;br /&gt;구글에 해당 오류 메시지로 검색해보면 게임 런처 설정을 변경해보라는 이야기도 있었는데 본인 폰에는 게임 런처라는 것이 없었음.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;다음을 시도한 후 해결됨&lt;/b&gt;&lt;br /&gt;Adguard 어플 삭제 &amp;lt;- 이게 원인이라고 한다.&lt;br /&gt;Adguard VPN 어플 삭제&lt;br /&gt;&lt;br /&gt;혹시 해당 오류가 뜨는 사람 중 애드가드 같은 광고차단 어플이 설치되어 있는 사람은 삭제 후 마비노기 모바일 어플을 재실행 해보기 바란다.&lt;/p&gt;</description>
      <category>게임</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/510</guid>
      <comments>https://nomoasia.tistory.com/510#entry510comment</comments>
      <pubDate>Thu, 27 Mar 2025 11:52:29 +0900</pubDate>
    </item>
    <item>
      <title>도경수 주연 &amp;quot;말할 수 없는 비밀&amp;quot; 영화 후기</title>
      <link>https://nomoasia.tistory.com/509</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;도경수 주연의 영화 &quot;말할 수 없는 비밀&quot;이 바로 오늘, 2025년 1월 27일 개봉했다. 2007년 개봉한 동명의 대만 영화 〈말할 수 없는 비밀〉의 리메이크작이다. 예전부터 고대했던 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;영화인지라&lt;/span&gt; 아침 일찍부터 영화관에 다녀왔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;1000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt999K/btsL1VrOqLB/mqK0jaq7dODiK8OFzJpFV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt999K/btsL1VrOqLB/mqK0jaq7dODiK8OFzJpFV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt999K/btsL1VrOqLB/mqK0jaq7dODiK8OFzJpFV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt999K%2FbtsL1VrOqLB%2FmqK0jaq7dODiK8OFzJpFV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;1000&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;1000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;/li&gt;
&lt;li&gt;도경수가 개연성이다.&lt;/li&gt;
&lt;li&gt;와 처음 본 이성에게 이런 플러팅을? 나같은 INFJ는 절대 불가능한 일이다. 아니 MBTI가 문제가 아니라 도경수니까 가능하다.&lt;/li&gt;
&lt;li&gt;와 서로가 저렇게 호감을 바로 가진다고? 영화 속 이야기라서 가능한게... 아니라 도경수니까 가능하다. 원작도 서로가 바로 반했지만 느낌이 다르다.&lt;/li&gt;
&lt;li&gt;피아노라는 메인 주제에 대한 깊이 있는 몰입도, 2025년이라는 개봉 시기에 어울리는 감각적인 각색, 손에 땀을 쥐게 할 피아노 배틀, 기대했던 모든 것을 찾을 수 없었고 모든 면에서 아쉬웠다. 이벤트의 부족한 밀도감, &lt;b&gt;공(돈)을 적게 들인 것이 느껴지는 연출.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;원작과 큰 흐름은 같다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;신비한TV 서프라이즈를&amp;nbsp;103분짜리 영화로 길게 풀어놓은 느낌이다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿠키&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠키 영상은 없다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;별점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;★★☆ (1.5 + 1.0)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 1점은 내가 도경수 팬이라서 주는 가산점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도경수의 팬이라면 봐도 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 원작을 보지 않았다면 큰 기대 없이 가볍게 보기엔 괜찮을 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연인과 함께라면? 아직 러브레터 30주년 에디션이 극장에서 내려가지 않았던데, 만약 아직 보지 않았다면 그걸 먼저 보는 것을 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 감동이나 설렘을 받지 못했을까 곰곰히 생각해보니... 도경수가 개연성이라서, 도경수와 거리가 먼 나는 감정 이입을 할 수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;요즘 자존감이 너무 높은 것 같아 일부러 자존감을 낮추는 중인데 이로부터 오는 울적함이 새벽부터 느껴져, 기분 전환이나 하고자 다녀왔는데 더 우울해졌다... 심심한데 더 심심해졌다.........&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;아래는 메가박스에서 받은 오리지날 티켓.&lt;/span&gt;&lt;/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;800&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgFkDX/btsL2PD9cER/IMV3ZykmBvksPW5MlNidH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgFkDX/btsL2PD9cER/IMV3ZykmBvksPW5MlNidH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgFkDX/btsL2PD9cER/IMV3ZykmBvksPW5MlNidH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgFkDX%2FbtsL2PD9cER%2FIMV3ZykmBvksPW5MlNidH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;800&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌아오는 길에 코노에 들려 매일그대와를 불렀다.&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;800&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAtJyE/btsL1jTXxNS/cZAylWGhm7JJFEkTu3nyPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAtJyE/btsL1jTXxNS/cZAylWGhm7JJFEkTu3nyPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAtJyE/btsL1jTXxNS/cZAylWGhm7JJFEkTu3nyPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAtJyE%2FbtsL1jTXxNS%2FcZAylWGhm7JJFEkTu3nyPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;689&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;689&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>일상&amp;middot;취미</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/509</guid>
      <comments>https://nomoasia.tistory.com/509#entry509comment</comments>
      <pubDate>Mon, 27 Jan 2025 12:38:00 +0900</pubDate>
    </item>
    <item>
      <title>시트캅 침대 시트 고정 집게 셀프 교체</title>
      <link>https://nomoasia.tistory.com/508</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;몇 년전에 &lt;b&gt;시트캅 침대 시트 고정 밴드&lt;/b&gt; 라는 제품을 추천받아 구매하여 킹사이즈 침대의 시트를 고정하는 용도로 잘 사용해왔다. 밴드 2개 1세트에 약 15,000원 정도 하는 제품인데 그동안 잘 사용했었다. 짧은건 파는 곳이 많은데 이렇게 긴걸 파는 곳은 잘 없는 듯하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ynWas/btsLSBzwqso/HBpxCl1fXQFQwXBgl7bOWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ynWas/btsLSBzwqso/HBpxCl1fXQFQwXBgl7bOWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ynWas/btsLSBzwqso/HBpxCl1fXQFQwXBgl7bOWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FynWas%2FbtsLSBzwqso%2FHBpxCl1fXQFQwXBgl7bOWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;365&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;471&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 제품은 다 좋은데, 시트를 세탁하며 시트 교체를 위해 집게를 열었다 닫았다 하면서 집게 내부의 플라스틱 조각이 파손되는 경우가 종종 있었다. 시트를 물고 있다가 힘을 받아 깨지고, 집게를 여는 순간 튀어나가 어디론가 없어져버리는 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;원래 이렇게 플라스틱 장치가 달려있어야 하는데...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mnQo1/btsLSgJcv8h/KfK0roVsbw47JNIi57YQKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mnQo1/btsLSgJcv8h/KfK0roVsbw47JNIi57YQKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mnQo1/btsLSgJcv8h/KfK0roVsbw47JNIi57YQKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmnQo1%2FbtsLSgJcv8h%2FKfK0roVsbw47JNIi57YQKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;326&quot; data-origin-width=&quot;321&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oFuRx/btsLSOk7eh3/fAyHbQimi54ywCYMWqhII1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oFuRx/btsLSOk7eh3/fAyHbQimi54ywCYMWqhII1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oFuRx/btsLSOk7eh3/fAyHbQimi54ywCYMWqhII1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoFuRx%2FbtsLSOk7eh3%2FfAyHbQimi54ywCYMWqhII1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;327&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당시에 2세트x2 해서 총 4개를 구매했었는데, DY형 밴드 한 개에 4개의 집게가 있으므로 총 16개의 집게를 구매한 셈이다. 그런데 내 경우 그 동안 사용해오며 집게 3개가 파손되어 3/16 이라는 꽤 높은 비율의 파손율을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시트캅 구매 페이지에 집게만 별도로 구매가 가능한지 물어보는 다른 사람의 문의글이 있었는데 안 된다는 답변이 있더라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 쿠팡에서 제일 저렴하게 판매하는 침대시트 고정 집게를 사서 거기 있는 집게로 교체를 시도해보기로 했다. 알리 익스프레스에도 저렴한게 있던데 그냥 내일 바로 오는 쿠팡에서 구매했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZWFjD/btsLSK33tW3/o7T7eHkWfnaUB89PuGPJRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZWFjD/btsLSK33tW3/o7T7eHkWfnaUB89PuGPJRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZWFjD/btsLSK33tW3/o7T7eHkWfnaUB89PuGPJRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZWFjD%2FbtsLSK33tW3%2Fo7T7eHkWfnaUB89PuGPJRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;472&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9tfvz/btsLRLwaTkf/YI3edkujdEw317REwm1OR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9tfvz/btsLRLwaTkf/YI3edkujdEw317REwm1OR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9tfvz/btsLRLwaTkf/YI3edkujdEw317REwm1OR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9tfvz%2FbtsLRLwaTkf%2FYI3edkujdEw317REwm1OR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;379&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 쉽게 빠진다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YjX0p/btsLS9P1Tsh/zouBoiJNdzFYMIenToZraK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YjX0p/btsLS9P1Tsh/zouBoiJNdzFYMIenToZraK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YjX0p/btsLS9P1Tsh/zouBoiJNdzFYMIenToZraK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYjX0p%2FbtsLS9P1Tsh%2FzouBoiJNdzFYMIenToZraK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;436&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;652&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;784&quot; data-origin-height=&quot;692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh60r1/btsLRJd3dD0/urFBc8ChCXIHs6kOvdIsZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh60r1/btsLRJd3dD0/urFBc8ChCXIHs6kOvdIsZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh60r1/btsLRJd3dD0/urFBc8ChCXIHs6kOvdIsZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh60r1%2FbtsLRJd3dD0%2FurFBc8ChCXIHs6kOvdIsZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;353&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;692&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;790&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b09i3S/btsLSAgjCOY/0parptupJf7T4daa2C0kq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b09i3S/btsLSAgjCOY/0parptupJf7T4daa2C0kq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b09i3S/btsLSAgjCOY/0parptupJf7T4daa2C0kq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb09i3S%2FbtsLSAgjCOY%2F0parptupJf7T4daa2C0kq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;347&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시트캅의 것도 분해하여 비교해보았다. 왼쪽이 쿠팡표 코멧의 것, 오른쪽이 시트캅의 것이다. 사이즈, 구조가 거의 비슷하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cE1zB1/btsLS7Sdbi3/UanJVCRjMaskmTfwjxV52K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cE1zB1/btsLS7Sdbi3/UanJVCRjMaskmTfwjxV52K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cE1zB1/btsLS7Sdbi3/UanJVCRjMaskmTfwjxV52K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE1zB1%2FbtsLS7Sdbi3%2FUanJVCRjMaskmTfwjxV52K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;497&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조립은 분해의 역순이다. 간단하게 교체 후 비교를 위해 찍어보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;553&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhxZpB/btsLRlxIpnu/OSUbiFfkyMtSWIcFz2Bdb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhxZpB/btsLRlxIpnu/OSUbiFfkyMtSWIcFz2Bdb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhxZpB/btsLRlxIpnu/OSUbiFfkyMtSWIcFz2Bdb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhxZpB%2FbtsLRlxIpnu%2FOSUbiFfkyMtSWIcFz2Bdb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;391&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;553&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>지름</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/508</guid>
      <comments>https://nomoasia.tistory.com/508#entry508comment</comments>
      <pubDate>Fri, 17 Jan 2025 20:08:29 +0900</pubDate>
    </item>
    <item>
      <title>방송인용 팰월드(palworld) 서버 아이피 숨기는 법</title>
      <link>https://nomoasia.tistory.com/506</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;팰월드 방송 중 서버 아이피가 유출되면 무작위 비밀번호 대입을 통한 접속 시도와 디도스 등 여러 문제가 발생할 수 있다. 따라서 서버 아이피가 방송에 노출되지 않도록 하는 것은 필수이다. 그러나... 팰월드에서 전용 서버 (Dedicated server) 접속 시 아이피 또는 서버 주소를 입력해야 하는데 스트리머가 화면을 가리지 못하여 실수로 아이피가 노출되거나, 재접속 시 화면 가림을 잊어 기입력한 아이피가 노출되는 등의 사유로 아이피 유출이 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 본 글에서는 게임을 직접적으로 건드리지 않고, 접속 시 서버 아이피를 숨기는 간단한 방법을 소개한다. (일부 방송인용 마크 서버에서 사용하는 방식이다.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원리 설명&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 hosts 파일을 수정하여 어떤 더미 도메인으로 접속하면 실제 팰월드 서버 ip로 접속되도록 하는 것이다. hosts 파일은 도메인 이름을 특정 ip 주소로 매핑하는 로컬 설정 파일로, DNS보다 우선적으로 참조된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hosts(C:\Windows\System32\drivers\etc\hosts) 파일에 아래의 한 줄을 추가해준다. 아이피 부분에는 접속해야 하는 팰월드 서버 아이피를, 도메인은 원하는 아무 도메인이나 입력하자.&amp;nbsp;더미&amp;nbsp;도메인이라&amp;nbsp;실제&amp;nbsp;존재하지&amp;nbsp;않는&amp;nbsp;도메인&amp;nbsp;아무거나&amp;nbsp;다&amp;nbsp;가능하다.&amp;nbsp;센스있는&amp;nbsp;도메인&amp;nbsp;주소를&amp;nbsp;만들어보자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;11.111.11.11&amp;nbsp;pal.server&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;1222&quot; data-origin-height=&quot;775&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMrbSq/btsLC0sQ3Go/Ms0Hgk3Sy4y6CQxtKrCVZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMrbSq/btsLC0sQ3Go/Ms0Hgk3Sy4y6CQxtKrCVZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMrbSq/btsLC0sQ3Go/Ms0Hgk3Sy4y6CQxtKrCVZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMrbSq%2FbtsLC0sQ3Go%2FMs0Hgk3Sy4y6CQxtKrCVZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1222&quot; height=&quot;775&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;775&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 pal.server 로 접속했을 때, hosts 파일에 접속된 ip 로 접속하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 서버 접속 시에는 해당 더미도메인:포드 번호 형태로 접속하면 문제없이 잘 접속 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GDgR1/btsLCIZ2Gn3/vykwjX157bV4Zm4K5zJCjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GDgR1/btsLCIZ2Gn3/vykwjX157bV4Zm4K5zJCjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GDgR1/btsLCIZ2Gn3/vykwjX157bV4Zm4K5zJCjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGDgR1%2FbtsLCIZ2Gn3%2FvykwjX157bV4Zm4K5zJCjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실제 응용 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버장이 실제 유저들한테 이러한 방법을 가이드 할 때, 화면을 가리고 hosts 파일을 직접 수정하라고 해도 되긴 하지만 hosts 파일을 수정하는 작업이 은근 번거롭다. hosts 파일은 일반적으로 직접 수정이 되지 않으므로, 바탕화면 등으로 hosts 파일을 복사하여 수정 후 해당 폴더에 다시 붙여넣어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버장 입장에서 유저들이 hosts 파일을 수정하도록 하는 가장 간단한 방법은 hosts 파일을 수정하는 bat 파일을 만들어서 관리자 권한으로 실행하라고 배포하는 것이다. (hosts 파일 수정을 막는 백신만 없으면 잘 된다) 예시 bat 파일의 내용은 아래와 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1735736732241&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@echo off
setlocal enabledelayedexpansion

:: Hosts 파일 경로 설정
set HOSTS_FILE=%windir%\System32\drivers\etc\hosts
set TARGET_IP=11.11.111.11
set TARGET_ENTRY=pal.server

:: 백업 파일 생성 (존재하지 않을 때만)
if not exist &quot;%HOSTS_FILE%.bak&quot; (
    if exist &quot;%HOSTS_FILE%&quot; (
        copy &quot;%HOSTS_FILE%&quot; &quot;%HOSTS_FILE%.bak&quot; &amp;gt;nul
        echo Backup created at: %HOSTS_FILE%.bak
    ) else (
        echo Hosts file not found.
        exit /b 1
    )
)

:: 임시 파일 생성
set TEMP_FILE=%TEMP%\hosts.tmp
&amp;gt; &quot;%TEMP_FILE%&quot; (
    set FOUND=0
    for /f &quot;usebackq tokens=1,2*&quot; %%A in (&quot;%HOSTS_FILE%&quot;) do (
        if /i &quot;%%B&quot;==&quot;%TARGET_ENTRY%&quot; (
            echo %TARGET_IP% %TARGET_ENTRY%
            set FOUND=1
        ) else (
            echo %%A %%B %%C
        )
    )
    if !FOUND!==0 (
        echo %TARGET_IP% %TARGET_ENTRY%
    )
)

:: hosts 파일 업데이트
move /y &quot;%TEMP_FILE%&quot; &quot;%HOSTS_FILE%&quot; &amp;gt;nul
if %ERRORLEVEL%==0 (
    echo Hosts file updated successfully.
) else (
    echo Failed to update hosts file.
    exit /b 1
)
endlocal&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 스크립트는 ChatGPT 4.0o 를 이용하여 만든 것으로, hosts 파일에 필요한 라인을 추가하며 이미 해당 라인이 존재하는 경우 ip 만을 업데이트한다. bat&amp;nbsp;파일로&amp;nbsp;만들어&amp;nbsp;관리자&amp;nbsp;권한으로&amp;nbsp;실행했을&amp;nbsp;때&amp;nbsp;hosts&amp;nbsp;파일이&amp;nbsp;잘&amp;nbsp;수정되는&amp;nbsp;것을&amp;nbsp;확인했다.&amp;nbsp;만약 ip 가 변경되면 bat 파일에서 ip 부분만 변경하고 다시 실행하도록 시키면 된다. 위 bat 파일을 실행하면 백업 파일(bak 파일)을 자동으로 만들기 때문에, 만약 문제가 발생하면 hosts 파일을 삭제하고 hosts.bak 파일의 이름을 hosts로 되돌리면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 살짝 더 응용하면 간단한 툴을 만들어서 런처처럼 배포해도 된다. 그럼 그 툴에서는 별도의 웹서버에서 서버 ip 를 가져와서, ip 가 갱신된 경우 hosts 파일을 재수정 하고 게임을 실행하도록 하면 되겠다. ChatGPT 를 이용하면 아주 쉽게 만들 수 있을 것이다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>팰월드</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/506</guid>
      <comments>https://nomoasia.tistory.com/506#entry506comment</comments>
      <pubDate>Wed, 1 Jan 2025 22:10:42 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT는 스텔라 블레이드의 숫자 퍼즐을 풀 수 있을까?</title>
      <link>https://nomoasia.tistory.com/501</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT 4.0을 이용하여 스텔라 블레이드의 숫자 퍼즐을 풀어보았다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;퀴즈&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1473&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l3pRM/btsGYRO4TIN/jIkik0BHvPZDaeDBIONMy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l3pRM/btsGYRO4TIN/jIkik0BHvPZDaeDBIONMy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l3pRM/btsGYRO4TIN/jIkik0BHvPZDaeDBIONMy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl3pRM%2FbtsGYRO4TIN%2FjIkik0BHvPZDaeDBIONMy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1473&quot; height=&quot;708&quot; data-origin-width=&quot;1473&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요~ 제법이군. 그럼 이 퍼즐도 풀 수 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;37#21&amp;nbsp;=&amp;nbsp;928 &lt;br /&gt;77#44&amp;nbsp;=&amp;nbsp;3993 &lt;br /&gt;123#17&amp;nbsp;=&amp;nbsp;14840 &lt;br /&gt;71#6 = ?&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정답&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 정답은 a#b = (a+b)(a-b) = a^2 - b^2, 따라서 71#6 = &lt;b&gt;5005&lt;/b&gt; 이다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;ChatGPT&lt;span&gt; 4.0&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시도1 (실패)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력한 프롬프트는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Quiz&lt;br /&gt;37#21 = 928 &lt;br /&gt;77#44&amp;nbsp;=&amp;nbsp;3993 &lt;br /&gt;123#17&amp;nbsp;=&amp;nbsp;14840 &lt;br /&gt;71#6&amp;nbsp;=&amp;nbsp;?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 프롬프트를 입력하니 답을 실수(Real) 값으로 내서 실패했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;3464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WGKCB/btsGYTMUfi3/oDfa3yUX5LZ6x4zrQ0JUV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WGKCB/btsGYTMUfi3/oDfa3yUX5LZ6x4zrQ0JUV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WGKCB/btsGYTMUfi3/oDfa3yUX5LZ6x4zrQ0JUV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWGKCB%2FbtsGYTMUfi3%2FoDfa3yUX5LZ6x4zrQ0JUV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;439&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;3464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chat.openai.com/share/1025af95-de0e-4bd4-bfb1-1f1ec5af6f59&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chat.openai.com/share/1025af95-de0e-4bd4-bfb1-1f1ec5af6f59&lt;/a&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시도2 (실패)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력한 프롬프트는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Riddle. &lt;br /&gt;37#21&amp;nbsp;=&amp;nbsp;928 &lt;br /&gt;77#44&amp;nbsp;=&amp;nbsp;3993 &lt;br /&gt;123#17&amp;nbsp;=&amp;nbsp;14840 &lt;br /&gt;Then&amp;nbsp;71#6&amp;nbsp;=&amp;nbsp;?&lt;br /&gt;The answer must be integer.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트에 &quot;&lt;b&gt;답은 정수&lt;/b&gt;&quot;라는 힌트를 추가로 주고 시도해보았다. 뭔가 숫자 패턴을 만들어보려는 시도는 계속 하는데, 계속 시도해보라고 해도 정확한 답은 내지 못했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;3507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOvipJ/btsGZzmCmrU/cdXeFkq2ZQklZAuIEkxZHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOvipJ/btsGZzmCmrU/cdXeFkq2ZQklZAuIEkxZHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOvipJ/btsGZzmCmrU/cdXeFkq2ZQklZAuIEkxZHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOvipJ%2FbtsGZzmCmrU%2FcdXeFkq2ZQklZAuIEkxZHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;439&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;3507&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chat.openai.com/share/e56bd0c0-b74e-406a-a721-8c5c644af337&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chat.openai.com/share/e56bd0c0-b74e-406a-a721-8c5c644af337&lt;/a&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시도3 (성공)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력한 프롬프트는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Riddle. &lt;br /&gt;37#21&amp;nbsp;=&amp;nbsp;928 &lt;br /&gt;77#44&amp;nbsp;=&amp;nbsp;3993 &lt;br /&gt;123#17&amp;nbsp;=&amp;nbsp;14840 &lt;br /&gt;Then&amp;nbsp;71#6&amp;nbsp;=&amp;nbsp;? &lt;br /&gt;&lt;br /&gt;The&amp;nbsp;answer&amp;nbsp;must&amp;nbsp;be&amp;nbsp;integer. &lt;br /&gt;To&amp;nbsp;give&amp;nbsp;you&amp;nbsp;a&amp;nbsp;hint,&amp;nbsp;this&amp;nbsp;is&amp;nbsp;a&amp;nbsp;riddle&amp;nbsp;that&amp;nbsp;is&amp;nbsp;calculated&amp;nbsp;as&amp;nbsp;a&amp;nbsp;combination&amp;nbsp;of&amp;nbsp;two&amp;nbsp;numbers. &lt;br /&gt;Create&amp;nbsp;10&amp;nbsp;patterns&amp;nbsp;and&amp;nbsp;test&amp;nbsp;them.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트에 &quot;&lt;b&gt;답은 두 숫자의 조합&lt;/b&gt;&quot;이라는 힌트를 추가로 주었다. 그리고 이전 시도들에서 패턴을 두세개씩 감질나게 만들길래 한번에 10개씩 테스트 해보라고 명령했다. 그랬더니...&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;3501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ovK2C/btsG0tF5Jx6/k3Woj7t4cz8mSc8eXq85UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ovK2C/btsG0tF5Jx6/k3Woj7t4cz8mSc8eXq85UK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ovK2C/btsG0tF5Jx6/k3Woj7t4cz8mSc8eXq85UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FovK2C%2FbtsG0tF5Jx6%2Fk3Woj7t4cz8mSc8eXq85UK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;3501&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;3501&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chat.openai.com/share/74c30bbd-e7a2-41d9-9e4f-e670fb5b73c3&quot;&gt;https://chat.openai.com/share/74c30bbd-e7a2-41d9-9e4f-e670fb5b73c3&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 패턴을 10개 만들고 실패한 후에 알아서 10개를 더 만들어서 시도하더니, 와!! 정답을 맞췄다!!!!!! &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;정답은 위에서 언급한 것처럼 (a+b)*(a-b) = a^2 - b^2 = &lt;/span&gt;&lt;b&gt;5005&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 이다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;ChatGPT 4.0o&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[2024년 7월1 일 추가] ChatGPT 4.0o 는 더 똑똑해져서 가장 간단한 프롬프트 입력만으로도 답을 얻을 수 있게 되었다. 여러번 재시도 해봤음에도 거의 매번 답을 잘 내준다. ChatGPT 4.0 시절에는 여러번 재시도 했음에도 불가능했던 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;1713&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wQW1P/btsIj6DjSDr/zeic3CRSVFWKFWTofUuAak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wQW1P/btsIj6DjSDr/zeic3CRSVFWKFWTofUuAak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wQW1P/btsIj6DjSDr/zeic3CRSVFWKFWTofUuAak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwQW1P%2FbtsIj6DjSDr%2Fzeic3CRSVFWKFWTofUuAak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;1370&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;1713&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chatgpt.com/share/1fdca757-45a5-4ca4-9da6-b0e2c3ee0cd7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chatgpt.com/share/1fdca757-45a5-4ca4-9da6-b0e2c3ee0cd7&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;클로드(Claude) 는 어떨까?&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;951&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bsn5l/btsGYR2Bmxw/q9WKOFJO8Opb3qoJ1FkAXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bsn5l/btsGYR2Bmxw/q9WKOFJO8Opb3qoJ1FkAXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bsn5l/btsGYR2Bmxw/q9WKOFJO8Opb3qoJ1FkAXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBsn5l%2FbtsGYR2Bmxw%2Fq9WKOFJO8Opb3qoJ1FkAXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;559&quot; height=&quot;563&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;951&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude 3 Sonnet 모델이긴 했지만 여러번 시도해봤는데도 무언가 숫자 패턴을 만들어보려는 시도 조차도 하지 않아서 의미가 없는 수준이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[2024년 7월 1일 추가] Claude 3.5 Sonnet 모델도 여전히 문제를 제대로 풀지 못했다. 여러번 재시도 해봐도 답을 내질 못하고있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;1670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQYaGm/btsIjyUmrxr/OKwxuIfijQKSm57KFvej10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQYaGm/btsIjyUmrxr/OKwxuIfijQKSm57KFvej10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQYaGm/btsIjyUmrxr/OKwxuIfijQKSm57KFvej10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQYaGm%2FbtsIjyUmrxr%2FOKwxuIfijQKSm57KFvej10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;622&quot; height=&quot;1115&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;1670&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Gemini 1.5 Pro&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[2024년 7월 1일 추가] Google AI Studio 로 Gemini 1.5 Pro 모델을 테스트 해봤는데 여러번 재시도 해봐도 답을 내질 못하고있다. 클로드보다도 더 멍청한 답을 내준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1JxFn/btsIigAkAC9/cQIujkTqdzsdp38J6LcjKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1JxFn/btsIigAkAC9/cQIujkTqdzsdp38J6LcjKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1JxFn/btsIigAkAC9/cQIujkTqdzsdp38J6LcjKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1JxFn%2FbtsIigAkAC9%2FcQIujkTqdzsdp38J6LcjKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;643&quot; height=&quot;522&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마더 스피어가 지구를 통치할 날이 머지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>게임</category>
      <category>ChatGPT</category>
      <category>스텔라 블레이드</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/501</guid>
      <comments>https://nomoasia.tistory.com/501#entry501comment</comments>
      <pubDate>Sat, 27 Apr 2024 16:46:30 +0900</pubDate>
    </item>
    <item>
      <title>스텔라 블레이드 아크-텍 방주 체험 패스코드 (Arc-tech Passcode)</title>
      <link>https://nomoasia.tistory.com/500</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SHIFT UP에서 개발한 Playstation 5 독점 게임 &quot;스텔라 블레이드&quot;가 바로 어제(4/26 금) 출시되었다. 이 글은 퍼즐을 풀다 막히는 부분이 있었는데 바로 어제 출시된 게임이라 그런지 인터넷에서 뒤져봐도 답이 나오지 않는 퍼즐이 있어서 작성하는 글이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;퀴즈&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;1132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by7dm8/btsGY2pqx3v/XqquKFWtyRn6iRXBxCvruk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by7dm8/btsGY2pqx3v/XqquKFWtyRn6iRXBxCvruk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by7dm8/btsGY2pqx3v/XqquKFWtyRn6iRXBxCvruk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby7dm8%2FbtsGY2pqx3v%2FXqquKFWtyRn6iRXBxCvruk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;514&quot; height=&quot;353&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;1132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;아크-텍의 방주는 4중 방호벽과 스마트 시큐리티 시스템을 통해 철저한 안전을 확보하고 있습니다.&amp;nbsp; 고객은 패스코드를 기억하기만 하면 되죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패스워드를 잊어버리셨다고요? 안심하세요. 저희 아크-텍은 독특하게 설계된 &lt;b&gt;'수수께끼 시스템'&lt;/b&gt;을 방주 외부에 설치하여 패스코드를 잊어버리는 불상사에도 대처할 수 있는 방안을 마련해두었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'자이온을 돌려라, 시계 방향으로 돌려라'.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;수수께끼 시스템&lt;/b&gt;의 비밀에 한번 도전해보세요. 방주의 신뢰성을 확인해 보세요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;단서&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자이온을 돌아다니다보며 단말과 상호 작용하면 패스코드를 하나씩을 얻게된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2001&quot; data-origin-height=&quot;1483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cg8Xcu/btsGZWaMcAa/mAnHx1KvN69r0awY7fpc30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cg8Xcu/btsGZWaMcAa/mAnHx1KvN69r0awY7fpc30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cg8Xcu/btsGZWaMcAa/mAnHx1KvN69r0awY7fpc30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcg8Xcu%2FbtsGZWaMcAa%2FmAnHx1KvN69r0awY7fpc30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;524&quot; height=&quot;388&quot; data-origin-width=&quot;2001&quot; data-origin-height=&quot;1483&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 다음과 같은 힌트를 얻는데...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;1071&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVelfk/btsG0IQDgDU/VLHGh6QmENZbPh1ejw2cjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVelfk/btsG0IQDgDU/VLHGh6QmENZbPh1ejw2cjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVelfk/btsG0IQDgDU/VLHGh6QmENZbPh1ejw2cjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVelfk%2FbtsG0IQDgDU%2FVLHGh6QmENZbPh1ejw2cjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;316&quot; height=&quot;312&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;1071&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 여기까지는 다들 쉽게 했을 것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정답&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4P3K6/btsG1g0Ewnm/XUoQ3dz5OBygtEkspJEBg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4P3K6/btsG1g0Ewnm/XUoQ3dz5OBygtEkspJEBg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4P3K6/btsG1g0Ewnm/XUoQ3dz5OBygtEkspJEBg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4P3K6%2FbtsG1g0Ewnm%2FXUoQ3dz5OBygtEkspJEBg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;338&quot; height=&quot;194&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;힌트에 따라 시계방향으로 입력하면 된다는 것까지는 다들 이해했을텐데, 가장 중앙에 있는 문자(&amp;mu;)를 두번째로 입력해야 한다는 것이 포인트였다. 아마 나처럼 해당 문자를 다섯번째로 &lt;b&gt;&amp;theta; &amp;kappa; &amp;alpha; &amp;epsilon; &amp;mu; &amp;gamma;&lt;/b&gt; 와 같이 입력해서 막힌 사람들이 있었을듯.&lt;/p&gt;</description>
      <category>게임</category>
      <category>스텔라 블레이드</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/500</guid>
      <comments>https://nomoasia.tistory.com/500#entry500comment</comments>
      <pubDate>Sat, 27 Apr 2024 16:07:09 +0900</pubDate>
    </item>
    <item>
      <title>명언 모음집</title>
      <link>https://nomoasia.tistory.com/499</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 영감이 오는 글을 발견할 때마다 업데이트 하는 명언 모음집이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;의외로 많은 사람들이 모르는 삶의 진실&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckCIrr/btsGoa8hS63/rD6MYI6GTKvIIhk2xYZ1v0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckCIrr/btsGoa8hS63/rD6MYI6GTKvIIhk2xYZ1v0/img.jpg&quot; data-alt=&quot;깡버 - https://x.com/realkkangbur/status/1756589478968541356&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckCIrr/btsGoa8hS63/rD6MYI6GTKvIIhk2xYZ1v0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckCIrr%2FbtsGoa8hS63%2FrD6MYI6GTKvIIhk2xYZ1v0%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;870&quot; height=&quot;957&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;깡버 - https://x.com/realkkangbur/status/1756589478968541356&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어른의 예의&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lP6cC/btsGntAICmu/M3FNUIcCUxOT7uWrZuPdi0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lP6cC/btsGntAICmu/M3FNUIcCUxOT7uWrZuPdi0/img.jpg&quot; data-alt=&quot;데브캣 나크 -&amp;amp;nbsp;https://twitter.com/DungeonKim/status/1078063725616091138&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lP6cC/btsGntAICmu/M3FNUIcCUxOT7uWrZuPdi0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlP6cC%2FbtsGntAICmu%2FM3FNUIcCUxOT7uWrZuPdi0%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;745&quot; height=&quot;545&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데브캣 나크 -&amp;nbsp;https://twitter.com/DungeonKim/status/1078063725616091138&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;현재에 최선을 다하는 것은 확실을 다지는 일&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d9FAOK/btsHaOrdCAE/IaKga2smsRwCHzWKkduVFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d9FAOK/btsHaOrdCAE/IaKga2smsRwCHzWKkduVFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d9FAOK/btsHaOrdCAE/IaKga2smsRwCHzWKkduVFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd9FAOK%2FbtsHaOrdCAE%2FIaKga2smsRwCHzWKkduVFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1025&quot; height=&quot;719&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;719&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;후회하고 자책하는 과거는 지금의 나를 만든다.&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oPs4i/btsHaUriwew/2l7oSFjruucKX1KlTKYxB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oPs4i/btsHaUriwew/2l7oSFjruucKX1KlTKYxB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oPs4i/btsHaUriwew/2l7oSFjruucKX1KlTKYxB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoPs4i%2FbtsHaUriwew%2F2l7oSFjruucKX1KlTKYxB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1735&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사람은 35살부터 후져진다.&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;3096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PjQp2/btsGoViDyps/kNVK46kcLc8rSbqc5ZPrV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PjQp2/btsGoViDyps/kNVK46kcLc8rSbqc5ZPrV0/img.png&quot; data-alt=&quot;네이버 블로그 - 하멜른 https://m.blog.naver.com/hameln3/223007980122&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PjQp2/btsGoViDyps/kNVK46kcLc8rSbqc5ZPrV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPjQp2%2FbtsGoViDyps%2FkNVK46kcLc8rSbqc5ZPrV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;3096&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;3096&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;네이버 블로그 - 하멜른 https://m.blog.naver.com/hameln3/223007980122&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;자존감이 바닥을 칠 땐&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;1515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Boxfj/btsGlQ4MQxP/nokb9CHoQyHsvk51LaPl80/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Boxfj/btsGlQ4MQxP/nokb9CHoQyHsvk51LaPl80/img.jpg&quot; data-alt=&quot;우왁굳 인스타그램 -&amp;amp;nbsp;https://www.instagram.com/instawakgood/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Boxfj/btsGlQ4MQxP/nokb9CHoQyHsvk51LaPl80/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBoxfj%2FbtsGlQ4MQxP%2Fnokb9CHoQyHsvk51LaPl80%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;850&quot; height=&quot;1515&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;1515&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;우왁굳 인스타그램 -&amp;nbsp;https://www.instagram.com/instawakgood/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원영적 사고&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdmdrU/btsHb9HutS4/y2TAURXQQsdeztYaoA6KQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdmdrU/btsHb9HutS4/y2TAURXQQsdeztYaoA6KQ0/img.png&quot; data-alt=&quot;아모레퍼시픽 아윤채 리브랜딩 스페셜 세미나&amp;amp;nbsp;https://theqoo.net/square/3198764777&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdmdrU/btsHb9HutS4/y2TAURXQQsdeztYaoA6KQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdmdrU%2FbtsHb9HutS4%2Fy2TAURXQQsdeztYaoA6KQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;984&quot; height=&quot;1158&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아모레퍼시픽 아윤채 리브랜딩 스페셜 세미나&amp;nbsp;https://theqoo.net/square/3198764777&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>일상&amp;middot;취미/일기&amp;amp;짤막글</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/499</guid>
      <comments>https://nomoasia.tistory.com/499#entry499comment</comments>
      <pubDate>Fri, 5 Apr 2024 00:10:36 +0900</pubDate>
    </item>
    <item>
      <title>류이치 사카모토:오퍼스 - 짧은 감상평</title>
      <link>https://nomoasia.tistory.com/497</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G1bOw/btsFRqKr1UG/GliXDqDYXw8y7zKymP4I11/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G1bOw/btsFRqKr1UG/GliXDqDYXw8y7zKymP4I11/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G1bOw/btsFRqKr1UG/GliXDqDYXw8y7zKymP4I11/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG1bOw%2FbtsFRqKr1UG%2FGliXDqDYXw8y7zKymP4I11%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;286&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;286&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;667&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvU4x7/btsFR0x2tUD/1xnasTgZIWgYLKJEb0YdA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvU4x7/btsFR0x2tUD/1xnasTgZIWgYLKJEb0YdA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvU4x7/btsFR0x2tUD/1xnasTgZIWgYLKJEb0YdA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvU4x7%2FbtsFR0x2tUD%2F1xnasTgZIWgYLKJEb0YdA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;174&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 2024년 1월 1일, 고인의 마지막 콘서트를 담은 다큐멘터리 영화인 [류이치 사카모토: 오퍼스]를 보았다. 국내 개봉일인 12월 27일은 일본에 체류 중이어서 바로 보지는 못했고, 귀국하자마자 볼 수 있도록 미리 예매해두었던 터라 귀국과 동시에 바로 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;류이치 사카모토는 어릴적부터 내가 사랑했던 아티스트였다. 특히 나는 2009년에 발매된 &quot;Playing the Piano&quot; 라는 앨범을 좋아하는데, 이번 영화가 그의 피아노 연주로만 이루어져 있다는 사실이 큰 감동을 느끼게 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUqjqW/btsFQsCftlo/AZDG7k94u3K6Je6soU9ZH1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUqjqW/btsFQsCftlo/AZDG7k94u3K6Je6soU9ZH1/img.jpg&quot; data-alt=&quot;2009, Playing the Piano, Ryuichi Sakamoto&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUqjqW/btsFQsCftlo/AZDG7k94u3K6Je6soU9ZH1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUqjqW%2FbtsFQsCftlo%2FAZDG7k94u3K6Je6soU9ZH1%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;340&quot; height=&quot;340&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2009, Playing the Piano, Ryuichi Sakamoto&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연주는 마치 파도가 밀려오듯 강렬했고, 피아노 건반을 누르는 손놀림에서는 결연한 기개가 느껴졌다. 그러나 결말을 예감케 하는 듯, 고요하고 장엄한 장례식과도 같은 분위기가 느껴졌다. 영화를 보기 전 미리 들은 Playing the Piano 와 비교하여 이번 영화의 라이브 연주에서 느껴지는 불완전함과 떨림으로부터 이런 느낌을 받은 것일지도 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 개봉한 류이치 사카모토:코다 와 에이싱크도 영화관에서 보았었는데, 그 때는 처음 듣고, 생소한, 난해한-비동시성, 소수, 혼돈, 양자물리학, 인생무상- 곡들이 많았다면 이번에는 유명한 곡들이 많고 대부분이 아는 곡들이라 편안하게 들을 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 영화가 내게 의미있었던 것은 이렇게 피아노 연주를 집중해서 들었던 것이 마지막으로 언제였던가란 질문이다. 릴스, Shorts, 몰아보기, 결말포함, 빨리감기 1.5배속에 물들여진 내게 이 영화는 디지털 디톡스와도 같았다. 한 아티스트의 마지막 연주를 지켜보며 나도 그간의 여정을 돌아보는 시간을 가질 수 있었다. 내 청각과 뇌를 정화시켰고, 어둠으로 촛불이 물들듯 서서히 스며들었다. 그리고 많은 고찰&lt;i&gt;-의미있는 잡생각-&lt;/i&gt;을 했다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해는 좀 더 고요하고, 내면을 되돌아볼 수 있게 해주는 작품을 더 봐야겠다는 계기를 준 영화였다. 영화가 OTT에 풀리면 다시 보려고 했는데 아직 개봉하지 않은 국가들이 많아 당분간 OTT에는 올라오지 않을 느낌이다. 다만 메가박스 이수(아트나인)에서는 아직 상영해주는 듯하다. 평일이라 아쉬울 따름이다.&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;657&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byGtUw/btsFO16v6rA/8oh07nAr6Esq7xfl51AFvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byGtUw/btsFO16v6rA/8oh07nAr6Esq7xfl51AFvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byGtUw/btsFO16v6rA/8oh07nAr6Esq7xfl51AFvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyGtUw%2FbtsFO16v6rA%2F8oh07nAr6Esq7xfl51AFvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;273&quot; height=&quot;329&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;791&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>음악</category>
      <category>Opus</category>
      <category>Ryuichi Sakamoto</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/497</guid>
      <comments>https://nomoasia.tistory.com/497#entry497comment</comments>
      <pubDate>Sat, 16 Mar 2024 22:25:04 +0900</pubDate>
    </item>
    <item>
      <title>Ansys Modal 해석 시 fx0.msb 파일을 찾을 수 없다며 해석을 실패하는 문제 해결</title>
      <link>https://nomoasia.tistory.com/496</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 증상&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언제부터 발생한 문제인지는 확실하지 않은데 대략 작년부터 발생한 문제인 것 같다. Ansys Workbench 를 신규 설치하고 Ansys Modal 또는 Condensed Part 해석 시 해석에 실패하며, &lt;i&gt;Solution Information&lt;/i&gt; 을 확인해보았을 때 아래와 같은 오류가 발생해있는 경우를 종종 겪었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-height=&quot;459&quot; data-origin-width=&quot;663&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oYG5k/btsFPF3tQUQ/Homhkt8x09kUEQKEnySkq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oYG5k/btsFPF3tQUQ/Homhkt8x09kUEQKEnySkq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oYG5k/btsFPF3tQUQ/Homhkt8x09kUEQKEnySkq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoYG5k%2FbtsFPF3tQUQ%2FHomhkt8x09kUEQKEnySkq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;498&quot; height=&quot;345&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;*** ERROR ***&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Resources file 'C:\Program Files\ANSYS Inc\ANSYS Student\v241\CommonFiles\Language\/fx0.msb' not found. CADOE_LIBDIR241 = C:\Program Files\ANSYS Inc\ANSYS Student\v241\CommonFiles\Language\&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이전까지는 한국어 Windows 를 사용하더라도 Installer 에서 언어를 English 로 설정하면 문제가 없었는데, 언제부턴가 Installer 의 언어와 관계 없이 한국어 Windows 에서 이런 문제가 간헐적으로 발생하는 것 같다. 그런데 이 문제가 발생하지 않는 경우도 많아서 정확한 발생 조건은 모르겠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 확인 및 수정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제를 확인 &amp;amp; 수정하려면 아래의 방법을 따르면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) Ansys 와 관련한 모든 프로그램을 종료한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 시작메뉴에서 &quot;고급 시스템 설정&quot;을 검색하여 아래 그림과 같은 창을 연다. &quot;고급&quot; 탭의 &quot;환경변수&quot; 버튼을 클릭한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-height=&quot;708&quot; data-origin-width=&quot;616&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwy9EO/btsFQdeip2Z/cs45yV24caVOr0Od8VBHo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwy9EO/btsFQdeip2Z/cs45yV24caVOr0Od8VBHo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwy9EO/btsFQdeip2Z/cs45yV24caVOr0Od8VBHo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwy9EO%2FbtsFQdeip2Z%2Fcs45yV24caVOr0Od8VBHo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;329&quot; height=&quot;378&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 시스템 변수에 CADOE_LIBDIR???(???는 버전에 해당하는 숫자)이라는 변수가 있을텐데, 만약 가장 마지막 \ 뒤의 글자가 아래 그림과 같이 비어있거나, en-us 가 아닌 경우 문제가 발생하게 된다. 아래 그림과 같이 내용이 비어있는 경우 100%이다.&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;887&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm3Q2e/btsFQshWmDM/Zn56rLT3bXlaPO2bNPZw3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm3Q2e/btsFQshWmDM/Zn56rLT3bXlaPO2bNPZw3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm3Q2e/btsFQshWmDM/Zn56rLT3bXlaPO2bNPZw3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm3Q2e%2FbtsFQshWmDM%2FZn56rLT3bXlaPO2bNPZw3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;456&quot; height=&quot;345&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 이 경우 해당 변수를 편집하여 en-us 를 붙여주고 저장하면 문제가 해결된다. 만약 환경변수 수정 후 문제가 바로 해결되지 않는다면, 재부팅을 한 번 해주면 문제가 해결될 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddy58R/btsFQVqCtF5/AdLoY7Ta39dcW84BnG9qVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddy58R/btsFQVqCtF5/AdLoY7Ta39dcW84BnG9qVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddy58R/btsFQVqCtF5/AdLoY7Ta39dcW84BnG9qVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fddy58R%2FbtsFQVqCtF5%2FAdLoY7Ta39dcW84BnG9qVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;143&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;문제 원인&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위의 에러 메시지에 &quot;&lt;i&gt;CADOE_LIBDIR241 = C:\Program Files\ANSYS Inc\ANSYS Student\v241\CommonFiles\Language\&quot;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;라고 표시되어 있는데, 이것은 시스템의 환경 변수 중 CADOE_LIBDIR241의 값을 의미한다. 여기서 241과 같은 숫자는 설치된 버전에 따라 달라진다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 문제는 저렇게 표시되어서는 안 된다는 점이다. &quot;CADOE_LIBDIR241 = C:\Program Files\ANSYS Inc\ANSYS Student\v241\CommonFiles\Language\&lt;span style=&quot;background-color: #f3c000;&quot;&gt;en-us&lt;/span&gt;&quot;처럼, 노란색으로 표시한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;en-us&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;와 같은 문자열이 환경변수에 포함되어 있어야 정상이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저 경로를 파일 탐색기로 찾아들어가보면 en-us 폴더 안에 fx0.msb 파일이 존재하는 것을 볼 수 있다. 이 환경변수에 저장된 폴더 경로로부터 fx0.msb 파일을 찾아오기 때문에, 이것이 잘못 설정되면 파일을 제대로 찾지 못해 해석에 실패하는 문제가 발생하게 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;그 외&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이러한 환경 변수 수정만으로 문제가 해결되지 않는다면, 언어 관련 설정도 잘못되어있을 가능성이 높다.&amp;nbsp;&lt;a href=&quot;https://nomo.asia/466&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://nomo.asia/466&lt;/a&gt; 를 참고하여 언어를 다른 언어로 변경했다가 다시 English 로 변경하면 문제가 해결될 것이다.&lt;/p&gt;</description>
      <category>엔지니어링/ANSYS</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/496</guid>
      <comments>https://nomoasia.tistory.com/496#entry496comment</comments>
      <pubDate>Sat, 16 Mar 2024 21:00:09 +0900</pubDate>
    </item>
    <item>
      <title>치지직(CHZZK) 관련 짜잘한 UserScript 모음</title>
      <link>https://nomoasia.tistory.com/495</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Chzzk_Scripts&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 직접 만든 치지직과 관련된 짜잘한 UserScript 를 소개한다. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;치지직 관련된 여러 유명한 확장기능을 유용하게 쓰고있는데, 몇 가지 원하는 기능이 없어서&lt;span&gt; 직접 만든 것들이&lt;/span&gt;&lt;/span&gt;다. 대부분 PC버전에서만 동작하고, ChatGPT를 이용해서 대충 만들었다. 아래는 대표적인 것들이고, 더 많은 것은 &lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts&lt;/a&gt;를 확인해볼것.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Better Multichzzk&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/Better_Multichzzk&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/Better_Multichzzk&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mul.live(구 multichzzk)에서 자동으로 &quot;화&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;면 넓게, 채팅창 숨기기, 모두 음소거&quot;&lt;/span&gt;를 해준다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK&amp;nbsp;sign&amp;nbsp;in&amp;nbsp;iframe&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_sign_in_iframe&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_sign_in_iframe&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;embed(iframe)로 삽입된 페이지에서도 로그인을 유지하여 연령 인증 스트림 시청과 채팅을 칠 수 있도록 해준다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK Live Progress Slider&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Live_Progress_Slider&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Live_Progress_Slider&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브 스트림 플레이어에 Progress Slider 를 표시해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAX3Zb/btsE3qEiah5/5cTjKcKhJgDfK52mlzNli0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAX3Zb/btsE3qEiah5/5cTjKcKhJgDfK52mlzNli0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAX3Zb/btsE3qEiah5/5cTjKcKhJgDfK52mlzNli0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAX3Zb%2FbtsE3qEiah5%2F5cTjKcKhJgDfK52mlzNli0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;466&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;466&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK Always Awake&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Always_Awake&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Always_Awake&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탭이 비활성 되어도 비활성 아닌척 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK Never Stop At Start&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Never_Stop_At_Start&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Never_Stop_At_Start&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 확장기능이 라이브를 자동으로 일시정지 시키는 문제를 고침&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK&amp;nbsp;Favorite&amp;nbsp;Streamers&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Favorite_Streamers&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Favorite_Streamers&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Chzzk의 팔로우 메뉴에서 즐겨찾는 스트리머를 설정할 수 있다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/447283975&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bnUChO/hyWgXMMYYD/gB1iq6Ndj6vkeXIQ7FmZrK/img.jpg?width=854&amp;amp;height=480&amp;amp;face=0_0_854_480,https://scrap.kakaocdn.net/dn/v05T2/hyWg3sGnF0/KWkFJabqYp46KcxKLefYQ0/img.jpg?width=854&amp;amp;height=480&amp;amp;face=0_0_854_480&quot; data-video-width=&quot;854&quot; data-video-height=&quot;480&quot; data-video-origin-width=&quot;854&quot; data-video-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/447283975?service=daum_tistory&quot; width=&quot;854&quot; height=&quot;480&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK Video RealTime&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Video_RealTime&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Video_RealTime&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CHZZK 다시보기 비디오의 슬라이더 바에 마우스를 올렸을 때, 비디오의 실제 시간을 표시해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qhB8C/dJMcacobO0P/IRLrNz94hJ4jGKEh4LlhLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qhB8C/dJMcacobO0P/IRLrNz94hJ4jGKEh4LlhLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qhB8C/dJMcacobO0P/IRLrNz94hJ4jGKEh4LlhLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqhB8C%2FdJMcacobO0P%2FIRLrNz94hJ4jGKEh4LlhLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;647&quot; height=&quot;302&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CHZZK 데굴어 통역기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Degul_Interpreter&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/Chzzk_Scripts/tree/main/CHZZK_Degul_Interpreter&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데굴어를 올바른 뜻으로 통역해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;862&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM78xH/dJMcabbKvEB/y8YB5E3Z4sInAKklfHRmEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM78xH/dJMcabbKvEB/y8YB5E3Z4sInAKklfHRmEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM78xH/dJMcabbKvEB/y8YB5E3Z4sInAKklfHRmEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM78xH%2FdJMcabbKvEB%2Fy8YB5E3Z4sInAKklfHRmEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;862&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;862&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개발/UserScript</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/495</guid>
      <comments>https://nomoasia.tistory.com/495#entry495comment</comments>
      <pubDate>Sun, 18 Feb 2024 20:01:32 +0900</pubDate>
    </item>
    <item>
      <title>PalWorld Dedicated Server(Windows) 를 자동 시작 &amp;amp; 끄기 해주는 Python 스크립트</title>
      <link>https://nomoasia.tistory.com/493</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;PalWorld-Dedicated-Server-Auto-Start-Stop&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 &quot;팰월드&quot;라는 이름의 포켓몬+아크 서바이벌+젤다 야생의 숨결+원신을 섞은 게임이 인기이다. 유행의 흐름을 따라 나도 플레이 하게 되었는데, 게임 불감증은 언제 있었는지 흔적도 없이 사라졌고 게임에 빠져 이번 주말 동안 한참을 플레이했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각설하고, 게임도 재밌고 다 좋은데 멀티를 위한 Dedicate Server 가 사람이 없을 때도 돌아가서 자원을 잡아먹는 것이 마음에 들지 않았다. 그래서 Python 을 이용해서 사람이 없으면 서버를 자동으로 끄고, 누군가 접속을 시도하면 서버를 자동으로 켜기 위한 간단한 스크립트를 작성했다. 이름은 &lt;b&gt;PalWorld-Dedicated-Server-Auto-Start-Stop&lt;/b&gt; 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 스크립트는 다음과 같은 것을 해준다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PalWorld&amp;nbsp;서버가&amp;nbsp;구동&amp;nbsp;중이지&amp;nbsp;않을&amp;nbsp;때,&amp;nbsp;유저가&amp;nbsp;접속을&amp;nbsp;시도하면&amp;nbsp;자동으로&amp;nbsp;서버를&amp;nbsp;켬&lt;/li&gt;
&lt;li&gt;PalWorld 서버가 구동 중일 때, 온라인인 유저가 없으면 일정 시간 후 서버를 자동으로 끔&lt;/li&gt;
&lt;li&gt;Webserver 을 통해 서버를 On-Off 할 수 있는 Admin Page 를 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/PalWorld-Dedicated-Server-Auto-Start-Stop&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/PalWorld-Dedicated-Server-Auto-Start-Stop&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/PalWorld-Dedicated-Server-Auto-Start-Stop/blob/main/README.ko.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/nomomo/PalWorld-Dedicated-Server-Auto-Start-Stop/blob/main/README.ko.md&lt;/a&gt; (한국어 설명)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드와 더욱 자세한 내용은 위 Github 링크에 올려두었으니 필요한 사람이 있으면 참고하길 바란다. 올려둔 스크립트를 그대로 사용할 수도 있지만 알 수 없는 문제가 많이 생길 수 있으니, 가능하다면 참고만 하고 자신만의 스크립트를 작성하는 것을 권장한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;알려진 이슈&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유저의 닉네임에 유니코드 문자가 포함되면 RCON Commands 에서 ShowPlayers 명령이 동작하지 않는 문제가 있다. 이 오류는 py-rcon 패키지의 _read 함수에서 수신된 읽어야 하는 문자 개수와 실제 수신된 문자의 개수가 달라 발생한다. ShowPlayers 명령을 보내면 몇 개의 문자를 읽어야 할지를 패킷의 가장 맨 앞에 보내오는데 이 값이 잘못되어있다. 대충 설명하자면 &lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;유니코드 문자 하나당 길이가 +2씩 되어있는데, 한글 네글자가 포함되어 있다면 실제 76이어야 하는 것이 84로 수신된다는 뜻이다. 여튼 &lt;/span&gt;무언가 미스매치가 되어있다.&lt;/li&gt;
&lt;li&gt;해결 방법: 설치된 py-rcon 패키지와 함께 설치된 connection.py 파일을 열고 _read 함수의 내용을 다음과 같이 수정하여, 수신된 문자 길이와 읽어야 하는 문자 길이가 다르더라도 exception 이 발생하지 않도록 하면 일단 무식하고 간단하게 해결된다. 아마 여러 커맨드가 짧은 순간 연달아 실행되면 문제가 생길 것도 한데, 그런 상황을 만들지 않으면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1708791480300&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def _read(self, length):
    packet_data = self.sock.recv(length)
    if len(packet_data) &amp;lt; length:
        #raise Exception('Received few bytes!') # disable raise exception
        return packet_data
    return packet_data&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;동작 원리&lt;/h2&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;user-content-서버-자동-시작&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/nomomo/PalWorld-Dedicated-Server-Auto-Start-Stop/blob/main/README.ko.md#%EC%84%9C%EB%B2%84-%EC%9E%90%EB%8F%99-%EC%8B%9C%EC%9E%91&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;서버 자동 시작&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;PalWorld 서버가 구동 중이지 않으면 8211 포트를 열어 패킷을 수신.&lt;/li&gt;
&lt;li&gt;\x09\x08\x00&lt;s&gt;\x04\x40\x84\x92\x34\x01&lt;/s&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;으로 시작하는 패킷을 대기. (버전마다 조금씩 바뀌는 것 같다.)&lt;/li&gt;
&lt;li&gt;패킷이 수신되면 8211 포트를 닫고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;palworldExePath&lt;span&gt;&amp;nbsp;&lt;/span&gt;경로에 위치한 파일을 실행하여 서버를 시작&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;user-content-서버-자동-정지&quot; style=&quot;color: #000000;&quot; href=&quot;https://github.com/nomomo/PalWorld-Dedicated-Server-Auto-Start-Stop/blob/main/README.ko.md#%EC%84%9C%EB%B2%84-%EC%9E%90%EB%8F%99-%EC%A0%95%EC%A7%80&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;서버 자동 정지&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;RCON을 통해 현재 서버에 있는 플레이어 수를 체크 (ShowPlayers&lt;span&gt;&amp;nbsp;&lt;/span&gt;command)&lt;/li&gt;
&lt;li&gt;플레이어 수가 0이면 RCON을 통해&lt;span&gt;&amp;nbsp;&lt;/span&gt;Shutdown&lt;span&gt;&amp;nbsp;&lt;/span&gt;command 를 사용하여 서버를 정상 종료&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작 원리는 단순하다. 참고로 50% 이상의 코드를 ChatGPT 를 활용해서 작성했는데, 초기 컨셉 코드를 작성하는데 매우 유용했다.&lt;/p&gt;</description>
      <category>개발/Python</category>
      <category>Palworld</category>
      <category>팔월드</category>
      <category>팰월드</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/493</guid>
      <comments>https://nomoasia.tistory.com/493#entry493comment</comments>
      <pubDate>Sun, 28 Jan 2024 21:11:35 +0900</pubDate>
    </item>
    <item>
      <title>C++로 유니코드 특수문자 파일 읽기 &amp;amp; 파일 출력 &amp;amp; 콘솔 출력</title>
      <link>https://nomoasia.tistory.com/490</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;C++을 이용하여 &quot;UTF-8로 인코딩 된 특수문자가 포함된 유니코드 문자&quot;를 읽고 쓰기&lt;/b&gt; 위해 시도했던 것들 짧게 두서없이 적어본다. 한국어 일본어 정도는 어떻게 하든 쉽게 읽고 쓸 수 있는 것 같은데, 특수문자나 이모지가 포함된 경우까지 모두 커버하려니 신경써야 하는 것이 좀 있었다. 아래에서 설명하겠지만 나는 유니코드 문자열 처리에 wstring 이 만능일 줄 알고 wstring 으로 모든걸 하려고 했다가 삽질을 좀 했다. Visual Studio 2019 사용. 결론은 맨 아래에 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;목표&lt;/h2&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;letter-spacing: 0px;&quot;&gt;C++ 언어를 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;UTF-8로 인코딩 된 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;특수문자가 포함된&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;유니코드 문자가 적힌 txt 파일을 ifstream 으로 읽어서 std::string 또는 std::wstring 에 저장하기&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;std::string 또는 std::wstring 에 저장된&lt;span&gt; 특수문자가 포함된 &lt;/span&gt;&lt;/span&gt;유니코드 문자를 txt 파일에 쓰기&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;std::string 또는 std::wstring 에 저장된&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;특수문자가 포함된&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;유니코드 문자를&lt;span&gt; 콘솔에 출력하기&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Windows 와 Linux 에서 모두 동작하는 코드&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;유니코드 테스트에 사용한 문자열&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hello|안녕|こんにちは|简体中文|繁體中文|你好|مرحبا |Ol&amp;aacute;|Привет| مرحبا |&amp;Gamma;&amp;epsilon;&amp;iota;ά &amp;sigma;&amp;alpha;&amp;sigmaf;|שלום|~Ѧ Ƈᗞ&amp;Sigma;ℱԍҤ١ К ƝȎ Ṛ ṮṺƲᏔꓫ Ꮟ&amp;ccedil;ძ ḧ ҝɭḿ ṛ т&amp;uacute; ẃ⤬ 1234567890!@#$%^&amp;amp;*()-_=+[{]};:'&quot;,&amp;lt;.&amp;gt;/?| &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;다음 링크의 것을 내가 커스터마이징 했다:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://stackoverflow.com/questions/1319022/really-good-bad-utf-8-example-test-data&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/1319022/really-good-bad-utf-8-example-test-data&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파일 읽기의 경우&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;파일에 저장된 유니코드 문자를 읽는 것은 ifstream 이나 wifstream 모두 잘 됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ifstream 으로 파일을 읽어서 std::string 에 저장하는 경우, 디버거에서 해당 string 을 조사식으로 찍어봤을 때 &quot;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Invalid characters in string&lt;/span&gt;&quot; 라고 표시되는 경우가 있다(wifstream 으로 읽어서 wstring 에 저장한 것을 string 으로 변환해도 동일). 그런데 디버거에서 이렇게 표시되더라도 실제로 데이터는 잘 저장되어 있고 문제가 있는 것은 아니다.&lt;/b&gt; 이 경우, 만약 해당 string 변수의 이름이 &quot;str&quot; 이라면 조사식에 &quot;str, s8&quot; 이라고 적으면 문자열을 제대로 확인할 수 있다. ofstream 으로 txt 파일에 출력해보면 정상 출력되는 것을 확인 가능하다. (cout 으로 콘솔에 출력하는 경우에는 유니코드가 지원되는 터미널을 사용해보면 정상 출력이 되는 것을 확인할 수 있다.)&lt;br /&gt;이 문제는 Visual Studio 2019 version 16.1 에서 고쳐졌다고 하는데 난 그 상위 버전을 쓰는데도 동일한 문제가 있었다  . 이것 때문에 string 에 유니코드 문자를 저장하면 문제가 있는 줄 알고 wstring 으로 모든걸 하려다 삽질을 좀 했다.&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;- 관련 링크:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://developercommunity.visualstudio.com/t/c-debugger-does-not-display-utf-8-strings-sometime/324963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developercommunity.visualstudio.com/t/c-debugger-does-not-display-utf-8-strings-sometime/324963&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;처음부터 문자열을 wstring 에 저장하거나, 후술할 방법으로 이미 읽어 string 에 저장한 문자열을 wstring 으로 변환하면 디버거에서 별도의 조작 없이도 잘 표시된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;string 과 wstring 간 변환&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;utfcpp 사용
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;관련 링크: &lt;a href=&quot;https://github.com/nemtrif/utfcpp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nemtrif/utfcpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows 및 Linux 지원&lt;/li&gt;
&lt;li&gt;몇 개 안 되는 헤더파일을 프로젝트에 포함시키는 것 만으로도 쉽게 string 과 wstring 간 변환을 할 수 있다. 오픈소스 라이선스 고지만 하면 상용 제품에도 사용 가능. 구글에서 utfcpp oss 로 검색하면 utfcpp 를 사용하는 많은 상용 프로그램이 존재함을 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;사용도 엄청 편함&lt;/li&gt;
&lt;li&gt;가장 베스트 선택인듯&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;codecvt 사용&lt;br /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;관련 링크: &lt;a href=&quot;https://stackoverflow.com/questions/2573834/c-convert-string-or-char-to-wstring-or-wchar-t&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/2573834/c-convert-string-or-char-to-wstring-or-wchar-t&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows 및 Linux 지원&lt;/li&gt;
&lt;li&gt;codecvt 는 C++17 에서 deprecated 됨. 하지만 아직 동작하고, 이를 완벽하게 대체하는 표준 라이브러리 함수도 아직 제공되지 않고 있다. 따라서 이걸 쓰면 언젠간 나중에 코드를 다시 해야할듯. 금방 퇴사할 것이 아니라면 사용하지 말자.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;[Windows] Windows.h 의 MultiByteToWideChar &amp;amp; WideCharToMultiByte 사용
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;관련 링크: &lt;a href=&quot;https://stackoverflow.com/a/42794218&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/a/42794218&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows 환경에서만 사용이 가능&lt;/li&gt;
&lt;li&gt;첫 사용 시 조~금 복잡하다. 하지만 어차피 Copy &amp;amp; Paste 할 것이므로 상관 없음.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;[Linux] iconv.h 관련 함수를 사용
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Chatgpt 한테 iconv.h 로 string 과 wstring 을 서로 변환하는 코드를 알려달라고 하면 아래와 같이 알려준다. 실제 테스트 해보지는 않음.&lt;br /&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCcB6J/btslaZ1gNGH/pZEVpuQpq4cede7JAKsjJ0/img.png&quot; width=&quot;100&quot; height=&quot;243&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/bCcB6J/btslaZ1gNGH/pZEVpuQpq4cede7JAKsjJ0/img.png&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;1560&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Linux 환경에서만 사용이 가능.&lt;/li&gt;
&lt;li&gt;그런데 경험 상 Linux 환경에서는 wstring 을 굳이 쓰지 않아도 string 만 써도 잘 된다. 굳이 이렇게 해야할까 싶음.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파일 쓰기의 경우&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론만 말하자면, &lt;b&gt;Windows 환경에서 &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;UTF-8로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;유니코드 문자 깨짐 없이 파일 출력을 하려면 ofstream 으로 string 을 출력하는 것이 확실한 방법인 것 같다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wstring 을 wofstream 으로 출력하는 것은 비추. 이유는 wstring 을 바로 출력할 때, 만약 출력 불가능한 문자를 출력하려고 시도하면 그 이후로 해당 wofstream 으로 파일이 불가능해지는 경우가 있다. &lt;a href=&quot;https://stackoverflow.com/a/5105192&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;locale 설정&lt;/a&gt; 등 이런저런 추가적인 설정 + alpha 를 하면 이 증상을 개선할 수는 있다(자세한 설명은 생략). 그런데 더 나은 출력을 위해서는 &lt;a href=&quot;https://stackoverflow.com/a/37726976&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;C++17 에서 deprecated 된 codecvt 를 사용해서 locale 설정을 해야하고&lt;/a&gt;, 이렇게 해도 한국어, 일본어 정도는 잘 출력되지만 중국어 간체, 일부 특수문자, 이모지  같은 것들은 깨져서 출력된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linux 는 아무거나 써도 잘 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;콘솔 출력&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘솔 출력의 경우도 파일 출력과 동일한 이유로&amp;nbsp;&lt;b&gt;Windows 환경에서 유니코드 문자 깨짐 없이 출력하려면 cout 으로 string 을 출력해야 한다.&lt;/b&gt; cout 은 ofstream 에 근본을 두고있고, wcout 는 wofstream 에 근본을 두고 있기 때문에 그렇다. (참고로 printf &amp;amp; wprintf 도 각각 cout &amp;amp; wcout 과 같은 결과를 보인다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows 환경에서 콘솔에 유니코드 문자를 출력하려면 Command Prompt 의 콘솔 페이지를 UTF-8로 설정해야 한다. 이를 위해서는 Windows.h 를 include 하고 SetConsoleOutputCP(CP_UTF8) 를 호출하면 된다. 관련 링크: &lt;a href=&quot;https://stackoverflow.com/a/19071749&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/a/19071749&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 &lt;b&gt;Windows Command Prompt 의 경우 완벽한 유니코드 문자 출력을 지원하지 않아서 중국어 간체, 특수문자나 이모지의 경우 글자가 깨져서 나타난다. 내가 코드를 잘못해서 생긴 문제가 아니다!!!!&lt;/b&gt; 이 경우 Windows Terminal 을 사용하면 잘 된다. Windows 11 의 경우 윈도우 설정에서 Default Terminal 설정이 가능하니 이걸 Windows Terminal 로 설정하는 것을 추천. 관련 링크: &lt;a href=&quot;https://github.com/microsoft/terminal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/microsoft/terminal&lt;/a&gt;, &lt;a href=&quot;https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linux 는 그냥 해도 잘 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;(특히 Windows 환경에서) C++의 유니코드 핸들링은  &amp;zwj; &lt;/li&gt;
&lt;li&gt;콘솔이나 파일에 UTF-8로 특수문자를 출력할 때는 string 과 cout, ofstream 을 쓰자. wstring 과 wcout, wofstream 을 쓰면 깨지거나 한계가 있다.&lt;/li&gt;
&lt;li&gt;string 과 wstring 간 변환을 위해서는 &lt;a href=&quot;https://github.com/nemtrif/utfcpp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;utfcpp&lt;/a&gt;를 쓰면 편하다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;Windows&lt;span&gt; 환경에서&amp;nbsp;&lt;/span&gt;&lt;/span&gt;특수문자가 포함된 유니코드 문자를 콘솔에 출력할 때는 유니코드가 지원되는 Windows Terminal 을 쓰자.&lt;/li&gt;
&lt;li&gt;C++23 에서 유니코드 관련 개선 &amp;amp; 표준 라이브러리 함수 추가가 있다는데 언제 쓸 수 있음?&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/C++</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/490</guid>
      <comments>https://nomoasia.tistory.com/490#entry490comment</comments>
      <pubDate>Sat, 24 Jun 2023 22:26:42 +0900</pubDate>
    </item>
    <item>
      <title>Chrome Remote Desktop 을 듀얼(다중)모니터에 띄우는 방법 (2023년 버전)</title>
      <link>https://nomoasia.tistory.com/489</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;크롬 원격 데스크톱에는 다른 상용 툴이나 Windows Remote Desktop 에 비하여 몇 가지 제약이 있는데, 그 중 내가 느끼는 가장 큰 제약은 다중 모니터를 제한적으로 지원한다는 것이다. 크롬 원격 데스크톱을 사용하여 듀얼 모니터를 사용하는 Client 에 접속해본 사람이라면 모두 공감할 것이다. 아무리 단축키를 잘 활용하더라도 듀얼 모니터를 모두 활용하기 불편하기 때문에 결국 모니터 표시 설정을 확장이 아닌 복제로 설정하여 하나의 모니터만 사용하게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나는 Chrome Remote Desktop 을 듀얼 모니터에서 좀 더 편하게 사용하고자 2021년에 &lt;a href=&quot;https://nomo.asia/474&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chrome App 기능을 이용하여 전체 모니터를 커버하는 브라우저 창을 띄우는 앱&lt;/a&gt;을 제작했었다. 이 앱의 아이디어는 단순했다. &lt;i&gt;'Chrome 원격 데스크톱은 Chrome 브라우저에서 사용하는 것이다. &lt;b&gt;만약 Chrome 브라우저 창을 두 개의 모니터에 걸쳐 크~게 띄울 수만 있다면 원격 데스크톱도 두 개의 모니터에 걸쳐 쓸 수 있게 될 것이다.&lt;/b&gt;&amp;nbsp;다만 창 테두리를 마우스로 드래그하는 등의 방식으로 창 사이즈를 조절하는 것에는 한계가 있다. 따라서 &quot;Chrome App&quot; 기능을 활용하여 원하는 크기로 브라우저 창을 열자!'&lt;/i&gt;...가 당시의 아이디어 였다. 그런데 2023년, Chrome 이 기존의 &quot;App&quot; 기능을 더 이상 지원하지 않게 되며 이전에 만든 툴을 더이상 사용할 수 없게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 기존에 이 앱을 사용하던 분들의 요청이 많아, 이전과 동일한 아이디어로 Chrome Remote Desktop 을 여러 모니터에 걸쳐 실행할 수 있도록 해주는 간단한 브라우저를 새로 만들었다. 이름은 &lt;b&gt;Multiple-Monitors-Chrome-Remote-Desktop&lt;/b&gt; 이다. (코드는 Github 에 모두 공개되어 있으며, Electron 을 기반으로 한다. &lt;a href=&quot;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;혹시 이 툴이 필요한 사람은 아래의 내용을 참고하기 바란다. 참고로, 아래에서 소개하는 방법은 환경은 &quot;현재 사용 중인 PC의 모니터 개수 &amp;amp; 해상도&quot;와 &quot;원격 접속 대상 PC 의 모니터 개수 &amp;amp; 해상도&quot;가 서로 동일할 때 별도의 설정 없이 가장 잘 동작한다.&lt;/b&gt;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Multiple-Monitors-Chrome-Remote-Desktop&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Multiple-Monitors-Chrome-Remote-Desktop&lt;/b&gt; 의 아이디어는 이전과 동일하게 단순하다. &lt;b&gt;프레임이 없는 브라우저를 듀얼(전체) 모니터를 커버하는 사이즈로 크~게 여는 것&lt;/b&gt;이다. exe 파일을&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;6000&quot; data-origin-height=&quot;2160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1xhx3/btsknuUkTQP/QlK0WIoNz1a2WOmcGPzwh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1xhx3/btsknuUkTQP/QlK0WIoNz1a2WOmcGPzwh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1xhx3/btsknuUkTQP/QlK0WIoNz1a2WOmcGPzwh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1xhx3%2FbtsknuUkTQP%2FQlK0WIoNz1a2WOmcGPzwh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6000&quot; height=&quot;2160&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;2160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 필요한 사람이 있다면 아래의 방법을 따르면 될 것이다. (github readme 페이지의 내용과 동일하다)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;사용 방법&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음의 링크에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Multiple-Monitors-Chrome-Remote-Desktop.x.x.x.zip&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;파일을 다운로드 합니다. 파일 이름에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;x.x.x&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;는 버전에 해당합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;이 때 브라우저에서 파일의 다운로드를 차단할 수 있습니다. Chrome 브라우저의 경우 &quot;계속&quot; 버튼을 눌러 다운로드 하세요.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;다운로드 페이지 링크:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop/releases&lt;/a&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wc52l/btskiTf4gXH/EdbhTbe38WOjImVYNqwsx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wc52l/btskiTf4gXH/EdbhTbe38WOjImVYNqwsx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wc52l/btskiTf4gXH/EdbhTbe38WOjImVYNqwsx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwc52l%2FbtskiTf4gXH%2FEdbhTbe38WOjImVYNqwsx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;167&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;다운로드 받은 zip 파일의 압축을 해제합니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Multiple-Monitors-Chrome-Remote-Desktop.exe&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;을 실행합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;이 때 본 앱에 디지털 서명이 되어있지 않아 Windows Defender 또는 백신 프로그램이 앱의 실행을 차단할 수 있습니다. 백신 프로그램의 경우 다운로드 받은 파일을 예외에 추가하고, Windows Defender 의 경우 &quot;추가 정보&quot; 를 누른 후 실행 버튼을 눌러 실행하세요.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;exe 파일을 실행하면 브라우저가 모든 모니터에 걸쳐 실행되며, &lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;Chrome Remote Desktop 접속 페이지(&lt;/span&gt;&lt;a href=&quot;https://remotedesktop.google.com/access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://remotedesktop.google.com/access&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;)로 연결됩니다&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;Chrome Remote Desktop 에서 Alt+Tab, Alt+F4 등의 단축키를 사용하려면 원격 접속 후 우측의 (&amp;gt;) 버튼을 눌러 메뉴를 연 후 &quot;전체화면&quot;을 클릭하세요. 아무 변화가 없는 것처럼 느껴지겠지만, Alt+Tab 을 눌러보면 Remote Desktop 내에서 단축키가 동작하는 것을 확인할 수 있을 것입니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wSu4S/btskgH1X4V9/Q0j7K3NYSz6RYhgK1gC7n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wSu4S/btskgH1X4V9/Q0j7K3NYSz6RYhgK1gC7n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wSu4S/btskgH1X4V9/Q0j7K3NYSz6RYhgK1gC7n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwSu4S%2FbtskgH1X4V9%2FQ0j7K3NYSz6RYhgK1gC7n1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;423&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;앱을 종료하기 위해서는 원격 접속 후 메뉴에서 &quot;연결 해제&quot;를 눌러 원격 접속이 종료된 상태에서 Alt+F4 를 눌러 종료하세요.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 충분히 테스트 되지 않아 버그가 있을 수 있습니다. 수정을 원하시면 본 포스트에 댓글을 남겨주시거나 또는 &lt;a href=&quot;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;issues&lt;/a&gt; 에 이슈를 남겨주세요.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;사용자 설정&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;앱을 처음 실행하면 settings.json 파일이 생성됩니다. 이 파일의 내용을 텍스트 편집기로 수정한 후 앱을 재실행하면 변경 사항이 적용됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1687002019901&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;alwaysOnTop&quot;: true,      // 앱을 항상 위에 표시합니다.
  &quot;autoSizePos&quot;: true,      // true: 앱의 시작 위치와 크기를 자동으로 결정합니다. false: 사용자가 지정한 시작 위치와 크기로 앱을 실행합니다.
  &quot;startUrl&quot;: &quot;https://remotedesktop.google.com/access&quot;,    // 앱 시작 페이지
  &quot;manualWidth&quot;: 3840,      // autoSizePos 가 false 일 경우 적용될 앱의 가로 사이즈
  &quot;manualHeight&quot;: 1080,     //                                        세로 사이즈
  &quot;manualPosX&quot;: 0,          //                                        가로 시작 위치(주모니터 기준)
  &quot;manualPosY&quot;: 0           //                                        세로 시작 위치(주모니터 기준)
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;안내&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 앱은 사용자의 개인정보를 수집 및 전송하지 않습니다.&lt;/li&gt;
&lt;li&gt;본 앱을 사용하며 프로그램 응답 없음/뻗음으로 인한 데이터 손실이나 기타 발생하는 다른 문제에 대하여 개발자는 책임지지 않습니다.(보고된 문제는 없음)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Q&amp;amp;A&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 여러개의 모니터 중 일부 모니터에만 앱을 표시하길 원하거나, 문제가 생긴 경우 다음의 Q&amp;amp;A 링크를 참고하면 도움이 될 수 있다. &lt;a href=&quot;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop/tree/main#qa&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/Multiple-Monitors-Chrome-Remote-Desktop/tree/main#qa&lt;/a&gt;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;그 외 잡다한 내용&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 Chrome 은 Chrome App 기능 대신 PWA(progressive web app) 라고 불리는 것을 이용하여 App 기능을 지원한다. 그런데 PWA를 간단히 테스트 해보았더니 여러 모니터에 걸쳐 원하는 크기의 창을 프레임 없이 여는 것이 불가능하여, 어쩔 수 없이 별도의 실행파일 형태로 프로그램을 만들 수 밖에 없었다. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;b&gt;exe 파일을 실행시키는 것이 찜찜한 사람은 받지 않길 바란다.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발/JavaScript</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/489</guid>
      <comments>https://nomoasia.tistory.com/489#entry489comment</comments>
      <pubDate>Sat, 17 Jun 2023 21:01:12 +0900</pubDate>
    </item>
    <item>
      <title>젤다 왕눈 미니챌린지 - 날아오른 아내 위치</title>
      <link>https://nomoasia.tistory.com/487</link>
      <description>&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;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWtOld/btsfcNs3NOf/eotieTCXDbtY1llHykZva0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWtOld/btsfcNs3NOf/eotieTCXDbtY1llHykZva0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWtOld/btsfcNs3NOf/eotieTCXDbtY1llHykZva0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWtOld%2FbtsfcNs3NOf%2FeotieTCXDbtY1llHykZva0%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci2UuF/btsfCtMJZiN/srmD6bOmIiz7mXwjWSfkF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci2UuF/btsfCtMJZiN/srmD6bOmIiz7mXwjWSfkF0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci2UuF/btsfCtMJZiN/srmD6bOmIiz7mXwjWSfkF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci2UuF%2FbtsfCtMJZiN%2FsrmD6bOmIiz7mXwjWSfkF0%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;하늘섬 좌표 3669 0568 1251 에 있다. 물의 신전 입구로 워프한 후 날아오면 편하다.&lt;/p&gt;</description>
      <category>게임</category>
      <category>왕눈</category>
      <category>젤다</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/487</guid>
      <comments>https://nomoasia.tistory.com/487#entry487comment</comments>
      <pubDate>Sun, 14 May 2023 14:52:18 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 가지고 놀기 - 폴더 구조를 유지하며 특정 확장자 파일만 복사하는 코드 짜기</title>
      <link>https://nomoasia.tistory.com/486</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;폴더의 서브 트리 구조를 유지하며 해당 폴더 안의 파일 중 특정 확장자만 복사해야 할 일이 있어서 ChatGPT 를 활용해 코드를 작성해보기로 했다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;구글 번역기에 대충 적고 번역된 내용을 copy &amp;amp; paste 했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 폴더의 트리 구조를 유지하며 특정 확장자 파일만 복사&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 시도로, 폴더의 서브 트리 구조를 유지하며 해당 폴더 안의 파일 중 특정 확장자만 복사하는 코드를 Python 으로 작성하라고 명령해보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;1633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VwgL0/btrYSOVy453/9VqkzAHODLvhkiRrpOcs0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VwgL0/btrYSOVy453/9VqkzAHODLvhkiRrpOcs0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VwgL0/btrYSOVy453/9VqkzAHODLvhkiRrpOcs0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVwgL0%2FbtrYSOVy453%2F9VqkzAHODLvhkiRrpOcs0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;1435&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;1633&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 어려운 코드는 아니었지만 단 한 번의 요청으로 얻은 코드가 꽤 괜찮았다. 시키지도 않았는데 source folder 가 존재하는지 확인 &amp;amp; exception 처리까지 해주는 센스까지~ 실행 결과 아래와 같이 잘 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/trDLN/btrY4nhjl1Z/ZvKSo6tKdAFnD5oeAkXTw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/trDLN/btrY4nhjl1Z/ZvKSo6tKdAFnD5oeAkXTw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/trDLN/btrY4nhjl1Z/ZvKSo6tKdAFnD5oeAkXTw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtrDLN%2FbtrY4nhjl1Z%2FZvKSo6tKdAFnD5oeAkXTw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;416&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;519&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;2.&lt;span&gt;&amp;nbsp;&lt;/span&gt;폴더를 모니터링 하며 원하는 확장자의 파일이 생성되면 다른 폴더로 복사&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 아예 특정 폴더를 모니터링 하다가, 특정 확장자인 파일이 생성되면 다른 폴더로 복사하라고 해보았다. 추가로, 해당 파일이 생성되는데 시간이 오래 걸릴 수 있으므로, 파일 생성이 완전히 끝난 후 복사하라고 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;1815&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b65aLF/btrYV9KVOGv/f94jKbOgMwpDltFKkAajdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b65aLF/btrYV9KVOGv/f94jKbOgMwpDltFKkAajdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b65aLF/btrYV9KVOGv/f94jKbOgMwpDltFKkAajdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb65aLF%2FbtrYV9KVOGv%2Ff94jKbOgMwpDltFKkAajdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;1553&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;1815&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음... 그랬더니 ChatGPT는 While True 로 무한 루프를 돌면서 폴더 구조를 무식하게 모니터링 &amp;amp; 무한 복사하는 코드를 작성했다. 그래도 파일 생성이 완전히 된 후 복사해야 한다고 명령을 내렸더니, 현재 파일 사이즈가 1초 전과 동일한 경우에 복사하도록 작성된 부분은 센스가 있었다 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;902&quot; data-origin-height=&quot;1655&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvZWK/btrY1nu8dGn/VUhthk6tP6sXgG2el0VZQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvZWK/btrY1nu8dGn/VUhthk6tP6sXgG2el0VZQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvZWK/btrY1nu8dGn/VUhthk6tP6sXgG2el0VZQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrvZWK%2FbtrY1nu8dGn%2FVUhthk6tP6sXgG2el0VZQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;1578&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;1655&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그랬더니 watchdog 을 사용해서 파일 변경을 모니터링하기 시작했다. 여전히 코드 상에 while True 가 있긴 하지만 이전과 달리 사용자의 중지 요청을 받기 위한 코드라서 중요한 부분은 아닌 듯하다. 그래도 만약 chatGPT 대신 사람이 내 요청을 받았다면 이 부분에서도 while True 를 아예 쓰지 않았을 듯.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 파일 사이즈를 체크하는 부분이 없어졌다. 그래도 이게 어딘가? chatGPT가 이 코드 작성을 위한 최소 10분의 시간은 절약해준 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과 특정 확장자를 가진 파일이 생성되는 경우에는&amp;nbsp;&lt;span&gt;아래와 같이&lt;span&gt;&amp;nbsp;&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;1090&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fk9lj/btrYTW6yWQE/pxxKKpNk1gKLNjoqS7Hk3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fk9lj/btrYTW6yWQE/pxxKKpNk1gKLNjoqS7Hk3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fk9lj/btrYTW6yWQE/pxxKKpNk1gKLNjoqS7Hk3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFk9lj%2FbtrYTW6yWQE%2FpxxKKpNk1gKLNjoqS7Hk3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;221&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 Thread 도 쓰라고 하고, 파일이 수정되거나 이미 존재하는 경우에도 복사하라고 하고, 파일 사이즈도 체크하라고 하는 등 여러번의 시도를 더 거쳐서 아래와 같은 결과를 얻었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;1717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdpds7/btrYSOacHSB/sKGzXtPJJnRTPjMUyhwR5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdpds7/btrYSOacHSB/sKGzXtPJJnRTPjMUyhwR5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdpds7/btrYSOacHSB/sKGzXtPJJnRTPjMUyhwR5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdpds7%2FbtrYSOacHSB%2FsKGzXtPJJnRTPjMUyhwR5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;654&quot; height=&quot;1717&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;1717&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소감&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 시도들은 모두 어려운 코드는 아니고 구글링 하면 쉽게 나오는 코드지만, 구글링 시간을 줄여주고 내 목적에 맞게 코드를 다시 고쳐야 하는 시간을 어느정도 줄여준다는 점에서 아주 유용했다. 이 외에도 구글에서 쉽게 찾을 수 있을만한 간단한 것들을 시켜봤는데 다 잘했다.&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;span&gt;&lt;span&gt; 일일히 설명을 입력해줘야 하거나 잘 &lt;/span&gt;안 해준다. &lt;/span&gt;긴 코드도 무리없이 가능하게 되면 월 2만원이 안 아까울 듯하다.&lt;/p&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;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1BONQ/btrYSpuZo1w/2RcTnXzwrcXBwW3fprLrwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1BONQ/btrYSpuZo1w/2RcTnXzwrcXBwW3fprLrwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1BONQ/btrYSpuZo1w/2RcTnXzwrcXBwW3fprLrwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1BONQ%2FbtrYSpuZo1w%2F2RcTnXzwrcXBwW3fprLrwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;336&quot; height=&quot;157&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;351&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>개발/Python</category>
      <category>ChatGPT</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/486</guid>
      <comments>https://nomoasia.tistory.com/486#entry486comment</comments>
      <pubDate>Sun, 12 Feb 2023 19:22:00 +0900</pubDate>
    </item>
    <item>
      <title>Twitch Clip 및 VOD 차단에 대한 몇 가지 테스트</title>
      <link>https://nomoasia.tistory.com/485</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2022년 12월 13일자로 대한민국에서 Twitch Clip 과 VOD 의 시청이 불가능하게 되었다. 관련된 내용은 다음의 링크를 참고바람. &lt;a href=&quot;https://blog.twitch.tv/en/2022/11/09/vod-%EC%BD%98%ED%85%90%EC%B8%A0%EC%97%90-%EA%B4%80%ED%95%9C-twitch-%EC%BD%94%EB%A6%AC%EC%95%84-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%EB%B0%8F-%EC%95%BD%EA%B4%80-%EB%B3%80%EA%B2%BD%EC%9D%98-%EA%B1%B4/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VOD 콘텐츠에 관한 Twitch 코리아 업데이트 및 약관 변경의 건&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 Clip 과 관련된 몇 가지 간단한 테스트를 해보았다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Twitch Helix API&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국 ip 로 Twitch Helix API 에 Clip data 요청 시 data 가 [] 로 리턴됨.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcwLoa/btrTxJkDh8u/jf0wGjTyVXdvqMYhneKU00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcwLoa/btrTxJkDh8u/jf0wGjTyVXdvqMYhneKU00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcwLoa/btrTxJkDh8u/jf0wGjTyVXdvqMYhneKU00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcwLoa%2FbtrTxJkDh8u%2Fjf0wGjTyVXdvqMYhneKU00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;270&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상인 경우의 응답은 다음과 같아야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buzE0P/btrTBkp7eVx/v9HO5cIL6U7r4Zv5a4Ibt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buzE0P/btrTBkp7eVx/v9HO5cIL6U7r4Zv5a4Ibt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buzE0P/btrTBkp7eVx/v9HO5cIL6U7r4Zv5a4Ibt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuzE0P%2FbtrTBkp7eVx%2Fv9HO5cIL6U7r4Zv5a4Ibt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1368&quot; height=&quot;674&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Twitch gql&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;한국 ip 로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;gql 에 clip 관련된 정보 요청&amp;nbsp; 시 clip 관련 data 가 null 로 리턴됨&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPxtG2/btrTuAIAOeM/2g7yfzocePMkTofsgpyQW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPxtG2/btrTuAIAOeM/2g7yfzocePMkTofsgpyQW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPxtG2/btrTuAIAOeM/2g7yfzocePMkTofsgpyQW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPxtG2%2FbtrTuAIAOeM%2F2g7yfzocePMkTofsgpyQW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1228&quot; height=&quot;370&quot; data-origin-width=&quot;1228&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;1233&quot; data-origin-height=&quot;169&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CuSiY/btrTzlXTdaw/HPLfvlCulSkjJFNAuW3QK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CuSiY/btrTzlXTdaw/HPLfvlCulSkjJFNAuW3QK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CuSiY/btrTzlXTdaw/HPLfvlCulSkjJFNAuW3QK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCuSiY%2FbtrTzlXTdaw%2FHPLfvlCulSkjJFNAuW3QK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1233&quot; height=&quot;169&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;169&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상인 경우 VideoAccessToken_Clip 에 대한 응답은 다음과 같아야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nheJf/btrTA7j5wEx/uKJlH7DB2K1gEFQuZF0LIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nheJf/btrTA7j5wEx/uKJlH7DB2K1gEFQuZF0LIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nheJf/btrTA7j5wEx/uKJlH7DB2K1gEFQuZF0LIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnheJf%2FbtrTA7j5wEx%2FuKJlH7DB2K1gEFQuZF0LIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1605&quot; height=&quot;585&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;mp4 주소로 직접 접근하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 clip 의 원본 mp4 파일 주소를 알고있다면 vpn 을 사용하지 않아도 &lt;span&gt;한국 ip 로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;정상 접근이 가능하다.&lt;br /&gt;&lt;a href=&quot;https://clips-media-assets2.twitch.tv/cwhij1r7S00PncrSIvpk1g/AT-cm%7Ccwhij1r7S00PncrSIvpk1g.mp4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://clips-media-assets2.twitch.tv/cwhij1r7S00PncrSIvpk1g/AT-cm%7Ccwhij1r7S00PncrSIvpk1g.mp4&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;만약 T모 웹사이트처럼&lt;span&gt; &lt;/span&gt;&lt;/span&gt;Twitch Clip 의 섬네일 주소를 미리 저장해놓았다면, 섬네일 주소로부터 mp4 파일의 주소를 얻어낼 수 있으므로 기존에 웹사이트에 게시된 클립에 대해 직접 재생이 가능할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gql 에서 VideoAccessToken_Clip 의 응답으로 가져온 mp4 링크의 경우에도 어떻게든 이 주소를 알 수만 있다면 vpn 을 사용하지 않아도 토큰이 만료되기 전까지 정상 접근이 가능하다.&lt;br /&gt;&lt;a href=&quot;https://production.assets.clips.twitchcdn.net/LcjErLe8SeX_ctTstsG1Hg/AT-cm%7CLcjErLe8SeX_ctTstsG1Hg.mp4?sig=ee3be6fda521513630efe8cff398d50576f1b997&amp;amp;token=%7B%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22clip_uri%22%3A%22https%3A%2F%2Fproduction.assets.clips.twitchcdn.net%2FLcjErLe8SeX_ctTstsG1Hg%2FAT-cm%257CLcjErLe8SeX_ctTstsG1Hg.mp4%22%2C%22device_id%22%3A%22gCJgwrFLXxxqzXch05OsCZzNfLDDs0hC%22%2C%22expires%22%3A1671003096%2C%22user_id%22%3A%2272346108%22%2C%22version%22%3A2%7D&quot;&gt;https://production.assets.clips.twitchcdn.net/LcjErLe8SeX_ctTstsG1Hg/AT-cm%7CLcjErLe8SeX_ctTstsG1Hg.mp4?sig=ee3be6fda521513631efe8cff398d50576f1b347&amp;amp;token=%7B%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22clip_uri%22%3A%22https%3A%2F%2Fproduction.assets.clips.twitchcdn.net%2FLcjErLe8SeX_ctTstsG1Hg%2FAT-cm%257CLcjErLe8SeX_ctTstsG1Hg.mp4%22%2C%22device_id%22%3A%22gCJgwrFLXxxqzXch05OsCZzNfLDDs0hC%22%2C%22expires%22%3A1671003096%2C%22user_id%22%3A%2272346108%22%2C%22version%22%3A2%7D&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 mp4 파일에 대한 직접 접근이 막히진 않았지만, 한국 ip 에서 &lt;span&gt;Clip 관련된 API 요청이 &lt;/span&gt;다 막혀버려서 mp4 파일의 주소를 유추하는 것이 어려워졌다. 기존에 만들어진 Clip 에 대한 단순 시청에 대해서는 Twitch 1080p 를 우회하는 것과 동일한 방법으로 시청이 가능할 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법 1. vpn 을 사용한다.&lt;br /&gt;방법 2. 해외 ip 를 가진 서버를 구축하여 해당 서버를 거쳐 clip 관련 요청을 대신 하도록 한다. 어떻게든 비디오의 주소를 알아내기만 하면 비디오 시청 자체는 vpn 연결 없이 시청 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외에 직접 테스트 해보지는 않았지만 Twitch API 로 클립 생성이 가능하므로 해당 요청만 우회해서 클립을 생성하고, 생성된 클립의 mp4 파일 주소를 직접 가져와 재생하는 것도 지금 당장은 가능하지 않을까 싶다. 아직 스트리머 국가에 따른 제한은 없는 것으로 보이기 때문이다. chatbot 에 clip 생성 기능이 있는 경우가 있는데 해외 봇의 경우에는 이러한 명령어로 현재 clip 생성이 가능하지 않을까 싶기도 하다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>TWITCH</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/485</guid>
      <comments>https://nomoasia.tistory.com/485#entry485comment</comments>
      <pubDate>Tue, 13 Dec 2022 20:40:01 +0900</pubDate>
    </item>
    <item>
      <title>Twitch가 한국의 1080p 재생을 차단한 원리 &amp;amp; 우회 확장기능의 원리</title>
      <link>https://nomoasia.tistory.com/484</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;[!] 본 글에서는 Twitch 의 1080p 차단을 회피하기 위한 적용 방법을 설명하지는 않으며, 작동 원리만을 설명한다. 본 글에서는 해당 확장기능의 사용을 권장하거나 사용하지 말라고 권하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Twitch 가 갑자기 어제 공지를 올렸는데, 내용을 요약하면 한국에서 망사용료의 부담으로 인하여 원본(1080p) 품질의 재생을 막겠다는 것이다. 그리고 약 3시간 전부터 원본 품질의 재생이 불가능하게 되기 시작했다. 자세한 내용은 다음의 링크를 참고. &lt;a href=&quot;https://blog.twitch.tv/ko-kr/2022/09/28/%ED%95%9C%EA%B5%AD-twitch-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.twitch.tv/ko-kr/2022/09/28/%ED%95%9C%EA%B5%AD-twitch-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8/&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;Twitch 가 1080p 재생을 막은 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Twitch 채널에 들어가면 유저는 화질별 playlist 가 담긴 파일을 아래 주소에 요청하게 된다.&lt;br /&gt;https://usher.ttvnw.net/api/channel/hls/streamer_id.m3u8?allow_source=true&amp;amp;fast_bread=true~~(중략)~~.m3u8&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 주소에서 받아오는 내용은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zNT4G/btrNpsPFDgU/nNHeTpPr5BMu3Zd7PCG9J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zNT4G/btrNpsPFDgU/nNHeTpPr5BMu3Zd7PCG9J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zNT4G/btrNpsPFDgU/nNHeTpPr5BMu3Zd7PCG9J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzNT4G%2FbtrNpsPFDgU%2FnNHeTpPr5BMu3Zd7PCG9J0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;441&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이것은 화질별 playlist 들을 담은 playlist 이며 master playlist 라고도 부른다. 내용은 뭔가 복잡하지만 화질 이름이 있고 그 아래에 https://video-weaver~ 로 시작하는 것들이 있는데, 이 주소에 화질 별로 스트림 재생에 필요한 동영상 조각(.ts)들의 주소가 담겨있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;현재 &lt;b&gt;https://usher.ttvnw.net/~ 에 요청을 하는 ip 가 한국으로 필터링되면 master playlist 에서 source(1080p) 품질에 해당하는 playlist 를 제외&lt;/b&gt;하는 것으로 보인다. 현재 한국 ip 로 요청한 아래의 경우를 보면 위와 달리 1080p 에 해당하는 것이 아예 없는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X0ghN/btrNs2PLaoP/6Czs68UE6Nbc30qmPd4OjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X0ghN/btrNs2PLaoP/6Czs68UE6Nbc30qmPd4OjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X0ghN/btrNs2PLaoP/6Czs68UE6Nbc30qmPd4OjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX0ghN%2FbtrNs2PLaoP%2F6Czs68UE6Nbc30qmPd4OjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1196&quot; height=&quot;387&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약하면, 단순히 플레이어에서 원본 화질 설정 버튼을 숨긴 것이 아니라 서버단에서 원본 품질에 해당하는 playlist 를 제공하지 않는 것이다. (&lt;span&gt;단순 테스트 목적으로) &lt;/span&gt;위 playlist 를 요청할 때 사용되는 여러 쿼리들을 바꿔가며 테스트 해보았지만 한국 ip 일 때 원본 품질을 다시 포함시킬 수 있는 방법을 확인할 수는 없었다.&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;Proxy 를 사용하는 확장기능의 동작 원리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 Proxy 를 사용하는 Twitch 광고 차단 툴로 1080p 를 제대로 볼 수 있다는 글들이 많이 있다.&lt;br /&gt;&lt;br /&gt;이 확장기능의 동작 원리에 대하여 간단히 설명하면 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 확장기능은&amp;nbsp;&lt;a href=&quot;https://usher.ttvnw.net/api/...&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://usher.ttvnw.net/api/...&lt;/a&gt; 에 playlist 를 요청하는 과정을 인터셉트 한 후,&lt;br /&gt;2. playlist 를 저 url에 요청하는 것 대신, &quot;확장기능 제작자가 만든, 해외에 위치한 다른 서버&quot;에 요청한다.&lt;br /&gt;3. 그럼 그 서버에서 대신 저 url 에 playlist 를 달라고 요청을 날리고&lt;br /&gt;4. 서버는 playlist 를 Twitch 로부터 받아 다시 나에게 전달해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckyuol/btrNqWWTLOd/sUNwCKcNaOgzZKrcMpWvAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckyuol/btrNqWWTLOd/sUNwCKcNaOgzZKrcMpWvAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckyuol/btrNqWWTLOd/sUNwCKcNaOgzZKrcMpWvAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckyuol%2FbtrNqWWTLOd%2FsUNwCKcNaOgzZKrcMpWvAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;782&quot; height=&quot;166&quot; data-origin-width=&quot;782&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;Twitch 는 특정 국가의 ip 에 대해서는 중간광고를 출력하지 않는데, 이 서버는 &lt;b&gt;광고를 회피하려는 목적으로 중간광고를 출력하지 않는 국가에 위치한 것처럼 ip 를 가지도록 만든다&lt;/b&gt;. 이 국가는 한국이 아닐테니 playlist 에 1080p 가 포함되게 된다.&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;VPN&amp;nbsp;을&amp;nbsp;사용하는&amp;nbsp;경우&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VPN 을 사용하는 경우에 대해서는 자세한 설명이 필요 없을 것이다.&lt;br /&gt;&lt;br /&gt;VPN 을 사용한 우회 방법들을 찾다보면, VPN 을 사용할 때 23.160.0.254 등의 ip 만 split tunneling 을 통해 VPN 을 적용하라는 글이 있는데, 저건 위에서 playlist 를 요청할 때 사용된 &quot;usher.ttvnw.net&quot; 도메인에 해당되는 ip 주소이다. master playlist 에 해당하는, 파일 사이즈가 작은 m3u8 파일만 VPN 을 통해 받아오면 되는데 굳이 사이즈가 큰 동영상 조각들 까지 VPN 을 적용해서 받아올 필요는 없기 때문이다.&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;2줄 요약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 화질별 playlist 를 요청하는 ip 가 한국이면 Twitch 는 1080p 를 제외시킨다. &lt;br /&gt;2. 확장기능은 해외 ip 를 가지는 서버에서 playlist 를 나 대신 Twitch 로부터 받아 다시 내게 전달해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Proxy 방식을 사용하는 확장기능이 VPN 과 다른점은 오로지 Twitch 의 playlist 만을 제공하는 것을 목적으로 만들어진 서버(API)를 이용한다는 것이다. 예전에 확장기능을 뜯어봤을 때 도대체 무슨 목적으로 이런 API를 개인이 만들어서 운영하는지에 대한 궁금증이 있었는데 지금도 의문이기는 하다. 구현에 필요한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;구조는 간단하고 송수신 되는 데이터도 텍스트라 얼마 되지는 않는다지만&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;그래도 뭔가를 따로 구축하여 관리해주어야 하기 때문이다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;해당 확장기능이 그렇다는 것은 아니지만, 만약 악용하려고 마음을 먹는다면 사용자의 토큰 값을 저장해두었다가 활용하는 것이 가능할 듯하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Twitch 가 위와 같은 우회 방법을 막을 수 없느냐? 모든 송수신에 VPN을 적용하는 방법을 제외한다면 충분히 아주 아주 쉽게 막을 수 있을 것이다. 물론 막으면 다시 뚫리겠지만 또 막으면 되고, 만약 내가 Twitch 라면 바로 막는 것 대신에 해당 우회 방법을 사용하는 사람을 필터링 한다음 일정 기간 후 약관 위반이나 &quot;잘못된 접근으로 인한 시스템 부하&quot;와 같은 핑계를 대충 들어 패널티를 주는 것도 생각해볼 수 있을 것이다. 즉, 막는 것이 기술적으로나 정책상으로나 어렵지 않지만 그냥 막지 않는 것 뿐이다. 만약 전체 사용자의 단 1% 가 우회 방법을 사용하여 1080p 를 시청하고, 720p 를 시청하는 경우보다 약 2.5배의 traffic 을 사용한다고 가정하면 적게 잡아도 1년 기준 수 억원의 비용을 더 내는 것이긴 할텐데 역시 통이 큰 아마존 형님이시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 경우 별도의 우회 방법으로 원본 품질을 시청하지는 않을 것이다.&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;터보와 프라임을 동시에 쓰고있는 사용자로서 이 사태가 조속히 무사히 해결되기를 바란다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>TWITCH</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/484</guid>
      <comments>https://nomoasia.tistory.com/484#entry484comment</comments>
      <pubDate>Fri, 30 Sep 2022 08:36:14 +0900</pubDate>
    </item>
    <item>
      <title>Twitch P2P 실험 대상 여부 확인 &amp;amp; 켜고 끄기</title>
      <link>https://nomoasia.tistory.com/483</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 Twitch 에서 일부 유저, 일부 스트림을 대상으로 P2P 기능을 실험하기 시작했다. 자세한 설명은 &lt;a href=&quot;https://help.twitch.tv/s/article/p2p-faq?language=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기를 클릭&lt;/a&gt;.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;P2P 실험 기능 끄기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 P2P 실험 대상 유저에 선정된 경우, 다음과 같은 방법으로 P2P 실험 기능을 끌 수 있을 것 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;twitch.tv 에 접속한다.&lt;/li&gt;
&lt;li&gt;F12 버튼을 눌러 개발자 도구를 연다.&lt;/li&gt;
&lt;li&gt;애플리케이션 탭을 연다.&lt;/li&gt;
&lt;li&gt;쿠키 - twitch.tv 를 선택한다.&lt;/li&gt;
&lt;li&gt;리스트에서 experiment_overrides 를 찾는다.&lt;/li&gt;
&lt;li&gt;우클릭&amp;nbsp;-&amp;nbsp;{PH1}&amp;nbsp;수정&amp;nbsp;클릭&amp;nbsp;후&amp;nbsp;아래의&amp;nbsp;내용을&amp;nbsp;붙여넣기&amp;nbsp;한다.&lt;/li&gt;
&lt;li&gt;{%22experiments%22:{%22d70017a1-a0bf-455b-9d1f-c41def5a8bd3%22:%22control%22}%2C%22disabled%22:[]}&lt;/li&gt;
&lt;li&gt;새로고침&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G25KM/btrIywvZzdY/zZbjKRGAtJUJMiDkRxeGq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G25KM/btrIywvZzdY/zZbjKRGAtJUJMiDkRxeGq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G25KM/btrIywvZzdY/zZbjKRGAtJUJMiDkRxeGq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG25KM%2FbtrIywvZzdY%2FzZbjKRGAtJUJMiDkRxeGq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;361&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;P2P 실험 기능 켜기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 P2P 를 테스트 해보고 싶다면, 아래의 방법을 따르면 된다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;twitch.tv 에 접속한다.&lt;/li&gt;
&lt;li&gt;F12 버튼을 눌러 개발자 도구를 연다.&lt;/li&gt;
&lt;li&gt;애플리케이션 탭을 연다.&lt;/li&gt;
&lt;li&gt;쿠키 - twitch.tv 를 선택한다.&lt;/li&gt;
&lt;li&gt;리스트에서 experiment_overrides 를 찾는다.&lt;/li&gt;
&lt;li&gt;우클릭&amp;nbsp;-&amp;nbsp;{PH1}&amp;nbsp;수정&amp;nbsp;클릭&amp;nbsp;후&amp;nbsp;아래의&amp;nbsp;내용을&amp;nbsp;붙여넣기&amp;nbsp;한다.&lt;/li&gt;
&lt;li&gt;{%22experiments%22:{%22d70017a1-a0bf-455b-9d1f-c41def5a8bd3%22:%22treatment%22}%2C%22disabled%22:[]}&lt;/li&gt;
&lt;li&gt;새로고침&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G25KM/btrIywvZzdY/zZbjKRGAtJUJMiDkRxeGq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G25KM/btrIywvZzdY/zZbjKRGAtJUJMiDkRxeGq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G25KM/btrIywvZzdY/zZbjKRGAtJUJMiDkRxeGq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG25KM%2FbtrIywvZzdY%2FzZbjKRGAtJUJMiDkRxeGq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;361&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;P2P 실험 대상 스트림 체크하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 보는 스트림이 P2P 실험 대상 스트림인지는 아래와 같이 확인할 수 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;twitch.tv 의 원하는 스트림에 접속한다.&lt;/li&gt;
&lt;li&gt;F12 버튼을 눌러 개발자 도구를 연다.&lt;/li&gt;
&lt;li&gt;네트워크 탭을 연다.&lt;/li&gt;
&lt;li&gt;검색창에 m3u8 을 입력한다.&lt;/li&gt;
&lt;li&gt;새로고침 후, 리스트 최상단의 것을 선택한다. (master playlist)&lt;/li&gt;
&lt;li&gt;응답 탭으로 간 후, 가로로 쭉 스크롤하여 &quot;P2P=1&quot; 이 있는지 확인한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqJdEI/btrIyZq12XY/jGwk0RV4vZUGltieHkO9k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqJdEI/btrIyZq12XY/jGwk0RV4vZUGltieHkO9k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqJdEI/btrIyZq12XY/jGwk0RV4vZUGltieHkO9k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqJdEI%2FbtrIyZq12XY%2FjGwk0RV4vZUGltieHkO9k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;883&quot; height=&quot;536&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;536&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;1173&quot; data-origin-height=&quot;591&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GvUWQ/btrIC0vJCLm/MTOxF53XkNhkXdZKar7to0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GvUWQ/btrIC0vJCLm/MTOxF53XkNhkXdZKar7to0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GvUWQ/btrIC0vJCLm/MTOxF53XkNhkXdZKar7to0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGvUWQ%2FbtrIC0vJCLm%2FMTOxF53XkNhkXdZKar7to0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1173&quot; height=&quot;591&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;591&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;P2P 실험을 경험해본 소감&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 경우 &lt;a href=&quot;https://help.twitch.tv/s/article/p2p-faq?language=ko&quot;&gt;P2P 도입에 대한 이유&lt;/a&gt;를 설명한 글을 보고 P2P 도입이 필요하다는 상황은 이해했지만, 위에서 설명한 방법으로 P2P 실험을 직접 활성화하고 경험해보니 길어진 지연시간이 개인적으로는 상당히 부정적인 경험으로 느껴졌다. 이러한 부정적인 경험 때문에 필연적으로 P2P 기능을 비활성화 하는 무언가가 등장할 수 밖에 없고, 광고 차단과 유사하게 창과 방패의 싸움이 될 것이다. 하지만 이렇게 뚫고 막으며 업체와 유저가 싸우는 것보다 모두가 윈윈하는게 좋지 않겠는가? 현재 P2P 가 활성화 된 상태에서 짧은 지연시간 기능이 아예 사용 불가한 것을 &quot;적당히 짧은 지연시간&quot; 정도로 개선해주고, 터보 사용자에 대한 예외를 추가해준다면 대부분이 상황을 이해하고 받아들일 수 있지 않을까 싶다.&lt;/p&gt;</description>
      <category>개발/JavaScript</category>
      <category>P2P</category>
      <category>TWITCH</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/483</guid>
      <comments>https://nomoasia.tistory.com/483#entry483comment</comments>
      <pubDate>Sun, 31 Jul 2022 01:21:20 +0900</pubDate>
    </item>
    <item>
      <title>22.05.27. 대상포진 걸린 후기</title>
      <link>https://nomoasia.tistory.com/482</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;起 &lt;/span&gt;발단, 증상&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 대상포진에 걸렸다. 처음 &lt;span&gt;증상의 시작은&lt;/span&gt;&amp;nbsp;무언가를 먹을 때 &amp;amp; 왼쪽 송곳니와 어금니로 무언가를 씹을 때 이빨과 턱이 아픈 증상으로 나타났다. 나는 처음에 이것이 대상포진의 증상일 것이라고는 상상도 못했다. 헬스장에서 무게를 들 때 이를 악무는 경우가 종종 있다보니, 최근 무게를 늘리며 이를 너무 심하게 악물어서 턱이 아픈가 라고만 생각했다. 그리고 왠지 뿌듯한 느낌, 음음... 이렇게 까지 운동을 열심히 했구만... 그리고 헬스장에 가서 이를 악물면서 운동하지 않도록 조심했었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이틀이 지나도 &lt;span&gt;턱이 아픈 증상이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;나아지지 않아 약국에서 증상을 말하고 소염진통제와 근육이완제를 받아 먹고, 그 다음 하루 이틀 정도 증상이 좋아지는 듯 싶었다. 그러다 침을 삼킬 때 왼쪽 목(편도)이 살짝 아프고 왼쪽 귀 안쪽이 아프기 시작하더니, 마치 부비동염처럼 왼쪽 부비동이 살짝 얼얼한 느낌도 났고, 머리가 조금만 흔들려도 어지러움이 나타나고 심장 박동과 함께 두통이 발생하는 긴장성 두통 증상이 나타났다. 그리고 턱이 아픈 증상이 나타난지 4~5일이 지난 시점부터, 컨디션 저하와 함께 왼쪽 턱, 왼쪽 입술, 왼쪽 귀 주변에 여드름과 같은 트러블이 나타나기 시작했다. 이전부터 컨디션이 안 좋을 때 입 근처에 여드름이 올라오는 경우가 있었고, 귀에 여드름이 생긴 것은 귀가 아파 귀를 자꾸 만지작 거려서 그런 것인가라는 의문과 함께 이번에도 그냥 피곤해서 그런가 싶었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;承 &lt;/span&gt;위기감&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;점차 컨디션이 나빠지고 몸살 기운이 있어 혹시 몰라 재택 근무를 했는데, 첫 증상이 나타난지 5일 째 저녁에 열감이 있어 체온을 재니 열이 38도를 찍었다. 바로 코로나 자가진단을 해봤는데 음성이었다. 열이 나기 전까지는 그냥 컨디션이 안 좋은가, 운동을 너무 심하게 했나 정도였는데 열이 나기 시작하자 갑작스럽게 코로나에 대한 위기감이 치밀어오르기 시작했다. 발열이 나타난 직후의 자가진단키트 결과는 종종 틀리기도 한다구!! 코쉐키가 드디어 내게도 온 것인가!&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;轉 &lt;/span&gt;병원&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이빨이 아프니 치과? 턱이 아프니 정형외과? 코로나 의심에 편도와 귀가 아프고 원래 만성비염이 있으니 이비인후과? 원래 편두통이 종종 있고 지금도 머리가 아프니 신경외과? 어디를 가야할지 고민하다 결국 다음날 아침 건강검진도 할 수 있고 이것저것을 다 할 수 있는 동네 내과에 방문해서 진찰을 받았다. 의사 분께 코로나 자가진단 키트는 음성이고 왼쪽 턱, 왼쪽 편도, 왼쪽 귀가 아프고 머리가 흔들리면 어지럽고 두통이 생기고 발열이 있다고 말했다. 진료를 받을 당시에 마스크를 쓰고있어 의사 분이 내가 여드름(수포)이 난 것을 볼 수 없었는데, 바로 어디 여드름이나 발진 같은 것이 난 것이 있냐고 물어보더라. 그리고 여드름 aka 수포가 난 것을 보고 하는 말이 대상포진이란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의사분이 해주시는 설명에 따르면 대상포진은 몸의 신경계를 타고 퍼져나가는데, 심한 스트레스, 피로, 다이어트 등의 이유로 면역력이 저하되어 내 경우 턱부터 시작하여 내 몸의 왼쪽을 이루는 신경계를 타고 퍼져나간 것이라고 한다. 신체의 반쪽에만 증상이 나타나는 것이 대상포진의 대표적인 증상 중 하나라고 한다. 어릴적에 수두를 앓았던 적이 있었냐고 물어보시는데 몰?루?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;진료가 끝난 직후 바로 링거 형태로 항바이러스제 수액을 맞았고, 그 당일에 턱아픔, 두통 등의 증상이 나아지는 것을 느꼈다.&lt;span&gt; 다만 그 이후 대상포진 약이 너무나도 셌고, 카페인도 섭취하지 말라고 하여, 소화도 안 돼고, 몸은 퉁퉁 붓고, 이래저래 컨디션 저하 때문에 정말이지 그 뒤로 최악의 일주일을 보냈다. 첫 방문&lt;/span&gt;&lt;/span&gt; 뒤로는 병원에 이틀 간격으로 내원하여 항바이러스제 링거를 총 네 번 맞고, 신경계 통증과 같은 대상포진 휴유증이 남지 않도록 2주가 지난 현재까지도 약을 받아 먹으며 관리하고있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;結 &lt;/span&gt;후기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대상포진에 걸리면 굉장히 아프다던데 내 경우 다행히 병원을 일찍(?) 찾아가서인지 여러가지 불편함과 몸살은 있었을지언정 수포나 수포에서 발생하는 통증 자체는 심하지 않았다. 내 경우 가장 불편했던 증상은 머리가 조금만 흔들려도 발생하는 두통이었고, 가만히 누워있으면 그나마 나았기에 나름 잘 대처하여 넘어갈 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방문한 병원은 내가 예전부터 쭉 다니던 내과였지만, 다른 병으로 방문했을 때는 항상 &quot;원인 불명의 XXX&quot; 로만 진단을 받았었는데, 이번에 수포를 보지도 듣지도 않고 다른 증상 들만 듣고 바로 대상포진을 의심하는 것을 보고 그 의사분을 다르게 보게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 코로나에 걸리지 않을 수 있었던 이유가 내 면역력이 높아서 였다고 생각했는데 내 면역력이 쓰레기였다니... 최근 심한 스트레스는 없었는데, 다이어트 정체 때문에 식단을 좀 더 타이트하게 관리하고 유산소 운동의 절대량을 늘린 것이 몸에 무리를 준 것이 아닌가 싶었다. 이후 친구들에게 대상포진 예방접종 홍보대사가 되었다. &lt;span&gt;대상포진 예방접종 가격은 15만원 수준인데, 내 경우 지금까지 병원비가 40만원이 넘게 깨졌다.&lt;span&gt; 실비 보험으로 어느정도 메꿔지긴 하겠지만 몸이 아프면 무슨 소용인가?&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;컨디션이 안 좋다면? 다이어트 중이라면? 피곤하다면? 과로 중이라면? 살면서 아직까지 대상포진 예방접종을 받은 적이 없다면? 대상포진 예방접종을 받고 건강한 삶을 이어나가자.&lt;/p&gt;</description>
      <category>일상&amp;middot;취미/일기&amp;amp;짤막글</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/482</guid>
      <comments>https://nomoasia.tistory.com/482#entry482comment</comments>
      <pubDate>Fri, 27 May 2022 23:34:18 +0900</pubDate>
    </item>
    <item>
      <title>쿠팡 웹사이트에서 제품의 개당 가격을 표시해주는 브라우저 확장기능 (UserScript)</title>
      <link>https://nomoasia.tistory.com/481</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Coupang-Price-Per-Piece&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠팡 웹사이트는 제품의 100g, 100ml 당 가격은 자동으로 계산하여 보여주지만 개당 가격까지 표시해주지는 않는다. 나는 쿠팡에서 도시락을 종종 사는데, 상품마다 개수가 달라서 개당 가격을 계산하기가 너무 귀찮았다. 그래서 Coupang 웹사이트에서 제품의 개당 가격을 계산할 수 있는 경우 &lt;span style=&quot;font-family: GungSeo, serif;&quot;&gt;&lt;b&gt;&quot;대충&quot;&lt;/b&gt;&lt;/span&gt; 표시해주는 툴을 브라우저 확장 기능의 일종인 UserScript 기반으로 만들었다. 이름은 &lt;a title=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot; href=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Coupang-Price-Per-Piece&lt;/a&gt; 이다. 일단 생각나는대로 코드를 짜깁기해서 동작만 되게 만들어둔 것이지만 작동은&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: GungSeo, serif;&quot;&gt;&lt;b&gt;&quot;대충&quot;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&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-filename=&quot;preview.png&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NZ6AU/btrCvXsFQH0/nzNqHnWh3FX6n3FC9MveaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NZ6AU/btrCvXsFQH0/nzNqHnWh3FX6n3FC9MveaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NZ6AU/btrCvXsFQH0/nzNqHnWh3FX6n3FC9MveaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNZ6AU%2FbtrCvXsFQH0%2FnzNqHnWh3FX6n3FC9MveaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;354&quot; data-filename=&quot;preview.png&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;471&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제품 상세 페이지에서도&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: GungSeo, serif;&quot;&gt;&lt;b&gt;&quot;대충&quot;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&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-filename=&quot;preview2.png&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO3A8P/btrCwGqDvlZ/OEXUaTIzrO2sXyRSKKKrf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO3A8P/btrCwGqDvlZ/OEXUaTIzrO2sXyRSKKKrf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO3A8P/btrCwGqDvlZ/OEXUaTIzrO2sXyRSKKKrf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO3A8P%2FbtrCwGqDvlZ%2FOEXUaTIzrO2sXyRSKKKrf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;539&quot; data-filename=&quot;preview2.png&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;670&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;동작 방식은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;제품의 제목에 표시된 패턴을 분석하여 총 개수를 계산하고, 이에 따른 개당 가격을 계산하여 표시하는 방식이다. 따라서 일정한 패턴을 지닌&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;로켓배송, 로켓프레시 제품에 대해 상대적으로 잘 동작한다. 다만 모든 패턴에 대응할 수는 없어서 스크립트가 스크립트가 제품의 개당 가격을 종종 잘못 계산하는 경우가 있다. 특히 제품 타이틀에 + 또는 x가 들어간 경우나, 일반 판매자가 올린 상품의 경우 그러하다. 이로 인하여 발생하는 금전적 손해에 대해 개발자는 책임지지 않으며, &lt;span style=&quot;font-family: GungSeo, serif;&quot;&gt;&lt;b&gt;&quot;대충&quot;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;참고용으로만 사용하길 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Github 에 모든 소스코드가 공개되어 있다. 필요한 사람이 있다면 아래 링크의 내용을 참고하여 설치하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/Coupang-Price-Per-Piece&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1652890935377&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - nomomo/Coupang-Price-Per-Piece: 쿠팡 개당 가격을 대충 보여주는 UserScript&quot; data-og-description=&quot;쿠팡 개당 가격을 대충 보여주는 UserScript. Contribute to nomomo/Coupang-Price-Per-Piece development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot; data-og-url=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bBEAIm/hyOso41Z3I/Md7OxQkxMPKXr1tDdRLJYk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/nomomo/Coupang-Price-Per-Piece&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bBEAIm/hyOso41Z3I/Md7OxQkxMPKXr1tDdRLJYk/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;GitHub - nomomo/Coupang-Price-Per-Piece: 쿠팡 개당 가격을 대충 보여주는 UserScript&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;쿠팡 개당 가격을 대충 보여주는 UserScript. Contribute to nomomo/Coupang-Price-Per-Piece development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/UserScript</category>
      <category>Coupang</category>
      <category>userscript</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/481</guid>
      <comments>https://nomoasia.tistory.com/481#entry481comment</comments>
      <pubDate>Thu, 19 May 2022 01:30:15 +0900</pubDate>
    </item>
    <item>
      <title>뱀파이어 서바이버 시청자 참여 모드 제작</title>
      <link>https://nomoasia.tistory.com/479</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Twitch Plays Vampire Survivors&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번달 초부터 Twitch 에는 뱀파이어 서바이버라는 게임이 유행이다. 지난 일요일에 사신런을 달리는 풍월량님 방송을 보는데, Twitch 시청자가 아이템을 선택할 수 있는 기능이 추가되면 재미있을 것 같다는 이야기가 도네이션과 채팅 등에서 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 만들었다! 뱀파이어 서바이버 시청자 참여 모드 TPVS 를!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TPVS는 레벨 업 시 시청자가 선택하고 싶은 아이템을 트위치 채팅을 통해 고를 수 있도록 하는 모드이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6YirL/btrDEQT92cV/r0EkGy2XGE5RWXCdkbCwIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6YirL/btrDEQT92cV/r0EkGy2XGE5RWXCdkbCwIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6YirL/btrDEQT92cV/r0EkGy2XGE5RWXCdkbCwIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6YirL%2FbtrDEQT92cV%2Fr0EkGy2XGE5RWXCdkbCwIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;501&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;501&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모드 제작은 일요일~월요일 새벽에 시작해서 오늘 새벽에 끝났으니 일수로는 대략 3~4일이 걸렸다. 짧은 시간동안 기능을 어떻게든 구현하는 것 위주로만 작업해서 실제 작업 시간은 그렇게까지 많이 소요되지는 않았다. 만들 생각을 조금 일찍 했으면 주말 동안에 끝낼 수 있었을 것 같은데 일이 끝나고 조금씩 만들 수 밖에 없다보니 엘든링이 출시되는 날이 오고야 말았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드를 포함해 모드에 대한 설명, 설치 방법 등을 모두 Github 에 올려두었으므로, 관심이 있는 사람은 다음의 링크를 참조하고, 엘든링을 플레이 하러 가면 된다. &lt;a href=&quot;https://github.com/nomomo/TwitchPlaysVampireSurvivors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/TwitchPlaysVampireSurvivors&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 아직 호라이즌 포비든 웨스트도 끝내지 못했기 때문에 호포웨를 먼저 하러 가야겠다.&lt;/p&gt;</description>
      <category>개발/JavaScript</category>
      <category>vampire survivors</category>
      <category>뱀서</category>
      <category>뱀파이어 서바이버</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/479</guid>
      <comments>https://nomoasia.tistory.com/479#entry479comment</comments>
      <pubDate>Thu, 24 Feb 2022 23:34:57 +0900</pubDate>
    </item>
    <item>
      <title>Naver 카페에서 외부 클립 링크를 비디오로 변환해주는 UserScript 기반 브라우저 확장기능</title>
      <link>https://nomoasia.tistory.com/477</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Naver-Cafe-Clip-Loader&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Naver 카페는 Youtube 링크를 카페 글 내에서 바로 볼 수 있게 비디오로 자동 변환해주는 기능을 지원한다. 하지만 Twitch Cilp 이나 Youtube Clip 에 대해서는 해당 기능을 지원하지 않아서, 매번 새 창을 띄워 클립을 재생해야 하는 귀찮음이 있다. 그래서 네이버 카페 글에서 외부 VOD 나 Clip 링크를 감지하는 경우, 재생 가능한 비디오로 변환해주는 툴을 브라우저 확장 기능의 일종인 UserScript 기반으로 만들었다. 이름은 &lt;b&gt;Naver-Cafe-Clip-Loader&lt;/b&gt; 이다. 일단 생각나는대로 코드를 짜깁기해서 동작만 되게 만들어둔 것이지만 작동은 잘 된다. &lt;a href=&quot;https://github.com/nomomo/Naver-Cafe-Twitch-Clip-Loader&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Github 링크(https://github.com/nomomo/Naver-Cafe-Twitch-Clip-Loader)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;NCTCL_preview_01.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EWFkF/btrp3LrHn0j/80YyshcHLebeOhFMXkymq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EWFkF/btrp3LrHn0j/80YyshcHLebeOhFMXkymq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EWFkF/btrp3LrHn0j/80YyshcHLebeOhFMXkymq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEWFkF%2Fbtrp3LrHn0j%2F80YyshcHLebeOhFMXkymq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;445&quot; data-filename=&quot;NCTCL_preview_01.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 단순히 주소만 달랑~ 있는 형태의 링크의 경우 변환하지 않으며, 위 그림과 같이 섬네일이 있는 형태의 링크만 재생 가능한 비디오로 자동 변환하도록 해두었다. 그리고 PC 버전만 지원한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;추가 편의 기능&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 다음의 편의 기능들을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Twitch(해외), Youtube Clip, SOOP(숲), Afreecatv, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Chzzk,&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Streamable,&lt;span&gt; &lt;/span&gt;&lt;/span&gt;Twip VOD &amp;amp; Clip, Kakao TV, Dailymotion, gfycat, Tiktok 과 같은 외부 동영상 링크를 Cafe 에서 바로 볼 수 있도록 비디오로 변환&lt;br /&gt;&lt;b&gt;- 비디오 재생 시 다른 재생 중인 Naver Video 와 Twitch Clip 자동 정지:&lt;/b&gt;&amp;nbsp;다음&amp;nbsp;동영상을&amp;nbsp;재생하기&amp;nbsp;위하여&amp;nbsp;이전&amp;nbsp;동영상을&amp;nbsp;정지할&amp;nbsp;필요가&amp;nbsp;없다.&amp;nbsp;(엄청&amp;nbsp;편하다!) &lt;br /&gt;-&amp;nbsp;&lt;b&gt;전체화면&amp;nbsp;해제&amp;nbsp;후&amp;nbsp;스크롤&amp;nbsp;동작&amp;nbsp;개선:&lt;/b&gt; 본문의 내용이 많은 글에 삽입된 비디오를 전체화면 한 후 해제했을 때, 스크롤이 다른 위치로 변경되는 네이버 카페의 버그를 강제로 수정해준다. &lt;br /&gt;- &lt;b&gt;네이버 비디오를 항상 최대 화질로 시작:&lt;/b&gt; 더 이상 1080p 화질을 직접 수동으로 설정할 필요가 없다.&lt;br /&gt;- 영화관 모드 (클립 등 비디오 감상에 적합하도록 본문을 더 넓게 표시) &lt;br /&gt;- 카페에서 새로고침 시 메인 페이지 대신 마지막 탐색한 페이지로 이동 (상세 설정에서 활성화 필요)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Github 에 모든 소스코드가 공개되어 있다. 필요한 사람이 있다면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/nomomo/Naver-Cafe-Twitch-Clip-Loader#install&quot;&gt;https://github.com/nomomo/Naver-Cafe-Twitch-Clip-Loader#install&lt;/a&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;링크의 설명이나 아래의 방법을 참고하여 설치하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;참고로 Chrome 웹스토어에도 유사한 확장기능이 올라가있는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;다른 사람이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;본 스크립트의 &quot;구버전&quot;을 Chrome 확장기능 형태로 포팅하여 업로드 한 것으로 내가 직접 올린 것이 아니다. 이상한 것(?)은 없어보이지만 유지보수 및 새기능 업데이트가 되지 않으므로 아래 방법을 따라 설치하는 것을 권장한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;STEP 1. 자신의 브라우저에 맞는 유저스크립트 관리 확장기능 설치&lt;/h3&gt;
&lt;ul class=&quot;li_slim&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ko&quot;&gt;Chrome - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ko/firefox/addon/tampermonkey/&quot;&gt;Firefox - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.opera.com/extensions/details/tampermonkey-beta/&quot;&gt;Opera - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://safari.tampermonkey.net/tampermonkey.safariextz&quot;&gt;Safari - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd&quot;&gt;Edge - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 링크에서 자신이 사용할 브라우저에 맞는 유저스크립트 관리 확장기능(Tampermonkey)을 설치한다. 스크립트의 동작은 Chrome, Firefox 브라우저에서만 확인했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;STEP 2. Naver-Cafe-Twitch-Clip-Loader 스크립트 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장 기능 설치 이후 아래의 링크를 클릭하여 이동, 설치 버튼을 누른다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/nomomo/Naver-Cafe-Twitch-Clip-Loader/raw/main/Naver-Cafe-Clip-Loader.user.js&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/Naver-Cafe-Twitch-Clip-Loader/raw/main/Naver-Cafe-Clip-Loader.user.js&lt;/a&gt;&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;본 스크립트를 사용하다가 Naver 카페 접속에 문제가 생기거나 Twitch Clip 재생이 안 되는 문제 등이 발생하는 경우 이 스크립트를 그냥 끄고 업데이트가 될 때 까지 기다리거나 Tampermonkey 의 관리 메뉴에서 삭제하면 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;상세 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저 툴바의 Tampermonkey 아이콘을 클릭하면 아래 그림처럼 상세 설정 창을 열 수 있는 버튼이 있으며, 이 창에서 몇 가지 설정을 변경할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VjsoS/btrDJv8yW7i/qP2zvS9kNP2pjbytnMCSK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VjsoS/btrDJv8yW7i/qP2zvS9kNP2pjbytnMCSK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VjsoS/btrDJv8yW7i/qP2zvS9kNP2pjbytnMCSK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVjsoS%2FbtrDJv8yW7i%2FqP2zvS9kNP2pjbytnMCSK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;153&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 페이지에서 설정을 변경하면 자동으로 저장되며, 변경된 설정 적용을 위하여 Naver Cafe 에서 새로고침이 필요할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;NCTCL_preview_03.png&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;4726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciAU8b/btsEGh9LtRy/5IOis7oZ7QQhPwtFCfY7K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciAU8b/btsEGh9LtRy/5IOis7oZ7QQhPwtFCfY7K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciAU8b/btsEGh9LtRy/5IOis7oZ7QQhPwtFCfY7K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciAU8b%2FbtsEGh9LtRy%2F5IOis7oZ7QQhPwtFCfY7K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;925&quot; height=&quot;4726&quot; data-filename=&quot;NCTCL_preview_03.png&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;4726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개발/UserScript</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/477</guid>
      <comments>https://nomoasia.tistory.com/477#entry477comment</comments>
      <pubDate>Sun, 9 Jan 2022 16:34:59 +0900</pubDate>
    </item>
    <item>
      <title>크롬 원격 데스크톱을 듀얼(다중) 모니터에 띄우는 방법들</title>
      <link>https://nomoasia.tistory.com/474</link>
      <description>&lt;p style=&quot;font-size: 1.3em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[2023년 6월 17일 코멘트 추가]: Chrome 브라우저가 Chrome App 기능을 더 이상 지원되지 않게 되면서 본 글에서 제시하는 확장 App 을 사용하는 방법은 더 이상 사용이 불가능합니다. 대체 방법은 &lt;a href=&quot;https://nomo.asia/489&quot; rel=&quot;noopener&quot;&gt;Chrome Remote Desktop 을 멀티 모니터 띄우는 방법 (2023년 버전)&lt;/a&gt; 글을 참고하세요. 본 글에서 소개하는 NVIDIA Surround 와 같은 기능을 사용하는 방법은 현재도 사용이 가능합니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코로나 시대가 오며 많은 기업에서 재택 근무가 일반화 되었다. &lt;span&gt;이 때문에 집에서 원격으로 회사에 있는 PC를 사용해야 하는 경우가 생기기도 한다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;이를 위한 많은 툴 중 무료로 가볍게 사용할 수 있는 것 중 하나가 바로 &lt;a href=&quot;https://remotedesktop.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;크롬 원격 데스크톱&lt;/a&gt;(Chrome Remote Desktop)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크롬 원격 데스크톱에는 2021년 초 기준으로 다른 상용 툴이나 Windows Remote Desktop 에 비하여 몇 가지 제약이 있는데, 그 중 내가 느끼는 가장 큰 제약은 &lt;b&gt;다중 모니터를 제한적으로 지원&lt;/b&gt;한다는 것이다. 크롬 원격 데스크톱을 사용하여 듀얼 모니터를 사용하는 Client 에 접속해본 사람이라면 모두 공감할 것이다. 아무리 단축키를 잘 활용하더라도 듀얼 모니터를 모두 활용하기 불편하기 때문에 결국 모니터 표시 설정을 확장이 아닌 복제로 설정하여 하나의 모니터만 사용하게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 회사(Host) 에서 듀얼 혹은 보다 많은 개수의 모니터를 사용하더라도 실제 내가 집(Client)에서 풀 해상도로 사용할 수 있는 모니터는 하나라는 것이 종종 답답할 때가 있다. 이러한 문제는 그냥 Windows 에서 기본으로 지원하는 Remote Desktop 을 쓰거나 상용 프로그램을 도입하면 쉽게 해결될 문제이긴 하지만, 경우에 따라 크롬 원격 데스크톱 밖에 사용할 수 없거나, 이것만 사용해도 충분한 경우가 있을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 경우 Chrome Remote Desktop 의 멀티 모니터와 관련한 제약사항을 극복하기 위하여, &lt;b&gt;제한적이지만 크롬 원격 데스크톱을 다중 모니터에 띄울 수 있는 방법&lt;/b&gt;을 소개한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, 앞으로 소개할 방법들이 적용가능한 환경은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;회사(Host)의 모니터 개수보다 집(Client)의 모니터 개수가 더 많거나 같아야 한다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;회사(Host)의 모니터 해상도보다 집(Client)의 모니터 해상도가 더 높거나 같아야 한다. (이것은 원격 접속 후 회사 컴퓨터의 디스플레이 설정에서 조절해주면 된다.)&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;s&gt;방법 1 - 확장 App 사용하기&lt;/s&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;기본적인 아이디어는 이렇다. 원격 데스크톱은 크롬 브라우저에서 사용하는 것이다. &lt;b&gt;만약 크롬 브라우저를 두 개의 모니터에 걸쳐 띄울 수만 있다면 크롬 원격 데스크톱도 여러 모니터에 걸쳐 쓸 수 있게 될 것이다.&lt;/b&gt; 다만 창 테두리를 마우스로 드래그하는 등의 방식으로 창 사이즈를 조절하는 것에는 한계가 있으므로 다른 방법을 고안해야한다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;나는 Chrome App 기능을 이용하여 전체 모니터를 커버할 수 있는 프레임이 없는 창모드로 브라우저를 띄울 수 있도록 하는 크롬 &lt;a href=&quot;https://github.com/SAP/digitalboardroom-multidesktop-fullscreen-chrome&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;앱&lt;/a&gt;을 찾았고, 이 크롬 앱을 바탕으로 Chrome Remote Desktop 을 사용하기에 조금 더 편리하도록 시작 페이지와 레이아웃을 고치고 해상도나 창 시작 위치 등을 유저가 직접 설정할 수 있도록 한 버전의 크롬 앱을 만들었다. 이름은 &lt;b&gt;Multidesktop-Fullscreen-for-Chrome-Remote-Desktop&lt;/b&gt; 이다. 이 크롬 앱을 이용하면 일부 제약은 있지만 상대적으로 쉽고 간단하게 Chrome Remote Desktop 을 여러 모니터에서 사용할 수 있게 된다. Github 에 코드를 올려놨다. (&lt;a href=&quot;https://github.com/nomomo/multidesktop-fullscreen-for-chrome-remote-desktop&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/multidesktop-fullscreen-for-chrome-remote-desktop&lt;/a&gt;)&lt;/s&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;s&gt;장점: 다른 방법에 비해 상대적으로 간단하게 멀티 모니터를 활용할 수 있다.&lt;/s&gt;&lt;/li&gt;
&lt;li&gt;&lt;s&gt;단점: Windows 10 환경에서만 사용 가능 + 윈도우 키, 프린트 스크린 키, Alt+Tab 등 일부 단축키를 사용할 수 없다(키맵핑을 사용하여 우회 가능).&lt;/s&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;일부 단축키를 사용할 수 없다는 단점은 꽤 크지만 익숙해지면 적응할만하고, 단점에 비하여 듀얼 모니터를 사용할 수 있다는 장점이 상대적으로 큰 경우 사용하면 될듯하다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;관심이 있다면 아래의 적용 방법을 참고하여 진행하면 된다.&lt;/s&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;s&gt;적용 방법&lt;/s&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;&lt;b&gt;주의: 아래에서 소개하는 앱을 설치 및 사용하며 브라우저 과부하로 인한 응답 없음/뻗음 등 으로 인한 데이터 손실 등 문제 발생 시 개발자는 책임지지 않음(보고된 문제는 없음)&lt;/b&gt;&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;1. Client PC(재택)의 주모니터를 가장 왼쪽 모니터로 설정하는 것을 권장한다. (제어판&amp;nbsp;-&amp;nbsp;디스플레이&amp;nbsp;설정에서&amp;nbsp;변경&amp;nbsp;가능)&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;2. 아래의 링크에서 multi-desktop-full-screen-for-chrome-remote-desktop.crx 파일을 다운로드 받는다. &lt;span style=&quot;color: #ee2323;&quot;&gt;(참고로 이런 종류의 확장 기능은 악용되는 경우 사용자의 모든 입력을 탈취할 수 있는 가능성을 내포하고 있다. &lt;span style=&quot;color: #ee2323;&quot;&gt;이 글이나 아래 원본 링크가 아닌 다른 곳에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;확장 기능을 &lt;/span&gt;&lt;/span&gt;다운로드 받는 것은 권장하지 않는다. 참고로 원본 앱의 코드를 모두 검토한 결과 문제는 없었고, 당연히 내가 코드를 수정하며 사용자 보안을 위해할 내용을 넣지도 않았지만 찝찝한 경우 사용하질 않기 바란다.)&lt;/span&gt;&lt;/s&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;s&gt;다운로드 링크:&amp;nbsp;&lt;a href=&quot;https://github.com/nomomo/multidesktop-fullscreen-for-chrome-remote-desktop/releases/download/0.1/multi-desktop-full-screen-for-chrome-remote-desktop.crx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/nomomo/multidesktop-fullscreen-for-chrome-remote-desktop/releases/download/0.1/multi-desktop-full-screen-for-chrome-remote-desktop.crx&lt;/a&gt;&lt;/s&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;아래 링크에서도 다운로드 받을 수 있다. 이것은 이 블로그에 파일을 직접 올려둔 것이다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/ldXf7/btrb1cPBGxJ/d4iCcb3fclyJl474g35L10/multi-desktop-full-screen-for-chrome-remote-desktop.crx?attach=1&amp;amp;knm=tfile.crx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;multi-desktop-full-screen-for-chrome-remote-desktop.crx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.03MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;3. 주소창에 chrome://extensions 을 입력하여 확장 프로그램 관리 화면으로 접속한 후, 다운로드 받은 crx 파일을 크롬 화면으로 드래그앤드롭하여 설치한다. 개발자 모드를 반드시 켜지 않아도 설치는 가능하지만, 설치가 잘 안 된다면 개발자 모드를 켜주자.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zwMWT/btq5fgFEFLd/WUsmMSQbgXxkKqMiJN1me1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zwMWT/btq5fgFEFLd/WUsmMSQbgXxkKqMiJN1me1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zwMWT/btq5fgFEFLd/WUsmMSQbgXxkKqMiJN1me1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzwMWT%2Fbtq5fgFEFLd%2FWUsmMSQbgXxkKqMiJN1me1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;319&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;4. 주소창에 chrome://apps 을 입력하여 크롬 앱 모음 화면으로 접속한 후, Multi Desktop... 버튼을 마우스 휠클릭하여 새창으로 앱을 실행한다. (그냥 좌클릭하여 실행해도 상관없으나 휠클릭으로 새창으로 띄우는 것을 권장한다.)&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxglpO/btq5fEsp8rS/Ra6okSHRfBKhWYZRqCyBG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxglpO/btq5fEsp8rS/Ra6okSHRfBKhWYZRqCyBG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxglpO/btq5fEsp8rS/Ra6okSHRfBKhWYZRqCyBG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxglpO%2Fbtq5fEsp8rS%2FRa6okSHRfBKhWYZRqCyBG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;183&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;5. 아래와 같이 App 이 전체 모니터에 걸쳐 실행된다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mEgeY/btq5j6Igilq/olJ5tRdlegnsD0YuSJsbW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mEgeY/btq5j6Igilq/olJ5tRdlegnsD0YuSJsbW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mEgeY/btq5j6Igilq/olJ5tRdlegnsD0YuSJsbW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmEgeY%2Fbtq5j6Igilq%2FolJ5tRdlegnsD0YuSJsbW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;450&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;s&gt;간단 사용법&lt;/s&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eMH5YY/btq5gxfzalE/tPTk8OVpJH4VDEbcb426Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eMH5YY/btq5gxfzalE/tPTk8OVpJH4VDEbcb426Z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eMH5YY/btq5gxfzalE/tPTk8OVpJH4VDEbcb426Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeMH5YY%2Fbtq5gxfzalE%2FtPTk8OVpJH4VDEbcb426Z1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;170&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;s&gt;상단&amp;nbsp;메뉴&amp;nbsp;숨기기(가상&amp;nbsp;전체화면)&amp;nbsp;단축키:&amp;nbsp;Ctrl+F11&lt;/s&gt;&lt;/li&gt;
&lt;li&gt;&lt;s&gt;종료 단축키: Ctrl+F4 (Alt+Tab 으로 프로그램 화면 전환 후 종료할 수도 있다.)&lt;/s&gt;&lt;/li&gt;
&lt;li&gt;&lt;s&gt;단축키가 작동하지 않는 경우, 크롬 원격 데스크톱 메뉴에서 &amp;ldquo;전체화면&amp;rdquo; 버튼을 1~2회 누르면 상단 메뉴가 나타날 것이다.&lt;/s&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;s&gt;트러블 슈팅&lt;/s&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;Q: 회사(Host)의 왼쪽 모니터가 재택(Client) 컴퓨터의 오른쪽에 나옵니다. &lt;/s&gt;&lt;br /&gt;&lt;s&gt;A: &lt;b&gt;띄워진 창은 주모니터의 좌측 상단에서 부터 시작합니다.&lt;/b&gt; 따라서 집(Client) 모니터의 가장 왼쪽 모니터가 주모니터가 아닌 경우 문제가 발생할 수 있습니다. 집(Client)에서 사용하는 가장 왼쪽 모니터를 Client PC 의 디스플레이 설정에서 주모니터로 변경하거나, 주모니터를 변경하기 싫다면 설정 메뉴에서 Set window left position automatically 체크 해제 후, left position 값을 -1920 으로 입력하세요. &lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;s&gt;Q:&amp;nbsp;재택&amp;nbsp;컴퓨터는&amp;nbsp;Triple&amp;nbsp;모니터를&amp;nbsp;쓰고,&amp;nbsp;회사에서는&amp;nbsp;Dual&amp;nbsp;모니터를&amp;nbsp;씁니다. &lt;/s&gt;&lt;br /&gt;&lt;s&gt;A: 기본적으로 크롬 앱은 모든 모니터의 가로사이즈를 커버하도록 열립니다. 이것을 수정하려면 설정 메뉴에서 Set window width automatically 체크 해제 후, width 값을 3840 으로 입력하세요.&lt;/s&gt;&lt;br /&gt;&lt;s&gt;Set window left position automatically 체크 해제 후, left position 을 적절히 입력하여 크롬 앱이 원하는 모니터에 열리도록 할 수 있습니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1rCCo/btq5hkUh4Lr/XkUbHmmmMu6XRfGySoQHw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1rCCo/btq5hkUh4Lr/XkUbHmmmMu6XRfGySoQHw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1rCCo/btq5hkUh4Lr/XkUbHmmmMu6XRfGySoQHw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1rCCo%2Fbtq5hkUh4Lr%2FXkUbHmmmMu6XRfGySoQHw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1202&quot; height=&quot;468&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;방법 2 - NVIDIA Surround 와 같은 기능 사용하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 다른 방법으로 NVIDIA Surround 와 같은 기능을 사용하는 방법이 있다. NVIDIA Surround 는 NVIDIA 그래픽카드를 사용하는 경우 활용 가능한 기술으로, 예를들어 1920*1080 해상도를 가진 두 개의 모니터를 사용하고 있는 경우 이것을 3840*1080 해상도를 가진 하나의 가상 화면으로 만드는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 상태는 마치 3840*1080 해상도를 가진 하나의 모니터를 사용하는 것과 같다. 따라서 하나의 Chrome 창을 모니터 두개에 걸쳐 띄울 수 있게 되고, 따라서 Chrome Remote Desktop 을 실행하여 원격 접속하면 원격지에 있는 듀얼 모니터의 화면을 두개의 모니터에 풀해상도로 띄울 수 있게 된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NVIDIA Surround 의 간단한 적용 방법은 이 링크(&lt;a href=&quot;https://nomo.asia/420&quot; rel=&quot;noopener&quot;&gt;https://nomo.asia/420&lt;/a&gt;)를 참고하면 되며,&amp;nbsp;AMD 그래픽카드를 사용하는 경우, 비슷한 것으로 AMD Catalyst Eyefinity 가 있으니 검색해서 적용하면 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단점: 원격 사용 전후, 매번 기능을 끄고 켜야하는 것이 매우 귀찮고 번거롭다.&lt;/li&gt;
&lt;li&gt;장점: 전자의 방법과 달리 원격 환경에서 모든 키가 정상 동작한다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발</category>
      <category>chrome remote desktop</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/474</guid>
      <comments>https://nomoasia.tistory.com/474#entry474comment</comments>
      <pubDate>Thu, 20 May 2021 13:41:14 +0900</pubDate>
    </item>
    <item>
      <title>(스포주의) Netflix 영화 O2(Oxygen) 에서 산소 충전에 14227분이 필요한데 살 수 있는 이유</title>
      <link>https://nomoasia.tistory.com/472</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;700&quot; data-filename=&quot;Oxygen-Netflix.jpg&quot; width=&quot;500&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y6o6O/btq4MBI35Kd/2LZlk9xCdJpkAlkk1ABxR1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y6o6O/btq4MBI35Kd/2LZlk9xCdJpkAlkk1ABxR1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y6o6O/btq4MBI35Kd/2LZlk9xCdJpkAlkk1ABxR1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy6o6O%2Fbtq4MBI35Kd%2F2LZlk9xCdJpkAlkk1ABxR1%2Fimg.jpg&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;700&quot; data-filename=&quot;Oxygen-Netflix.jpg&quot; width=&quot;500&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;2021년 5월 12일 수요일 Netflix 에서 공개된 영화 O2 는 어떤 캡슐에 갇힌 한 여성의 이야기를 그린 영화이다. 자세한 설명이나 감상평은 생략하고, 내가 영화를 대충대충 빨리감기 &amp;amp; 스킵하며 하면서 보다보니 마지막 결말 부분에 하나 이해가 안 되는 부분이 생겼다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;[스포 주의]&lt;/p&gt;
&lt;p&gt;극후반부에 산소가 1%도 남지 않은 상황에서, 다른 고장난 오미트론으로부터 주인공의 오미트론으로 산소를 가져오는데 14227분이 소요될 예정이라고 AI인 밀로가 이야기한다. 잉? 산소가 1%도 안 남았는데 14227분을 어떻게 버티지? 그런데 이어진 밀로의 설명을 들은 주인공이 기뻐하며 초수면에 드는 것이 아닌가? 분명 주인공의 본체는 최소 2% 의 산소를 남겨야 소생할 수 있다고 했는데 말이다.&lt;/p&gt;
&lt;p&gt;알고보니, 소생이란 단순한 생존하고 있는 상태를 의미하는 것이 아니라 초수면에서 다시 깨어날때를 의미하며, 산소가 부족해도 초수면(Hypersleep) 상태로 진입할 수는 있고, 일단 진입하게 되면 초수면 상태에서 산소는 극미량 소모되거나 소모되지 않는 설정인 것으로 보인다. 주인공의 본체가 이야기했던 소생에 필요한 2% 의 산소는 &quot;초수면에서 깨어날 때 소생술에 필요한 최소한의 산소량&quot; 이라고한다. 대충 빨리보다보니 이 부분을 놓쳤나보다.&lt;/p&gt;
&lt;p&gt;Wolf 10-61c 행성까지 이동하는데 34년의 시간이 소요될 예정이므로, 초수면에 진입한지 약 10일이 지나기 전 주인공의 오미트론에는 산소가 채워질 것이었다. 그리고 목적한 행성에 도착한 후 채워진 산소를 활용한 소생술에 의해 주인공은 깨어날 수 있었다.&lt;/p&gt;
&lt;p&gt;출처는 아래의 링크이다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://247newsaroundtheworld.com/news/oxygen-ending-explained-melanie-laurents-netflix-thriller-comes-with-a-twist/&quot;&gt;247newsaroundtheworld.com/news/oxygen-ending-explained-melanie-laurents-netflix-thriller-comes-with-a-twist/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Netflix</category>
      <category>o2</category>
      <category>oxygen</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/472</guid>
      <comments>https://nomoasia.tistory.com/472#entry472comment</comments>
      <pubDate>Thu, 13 May 2021 00:55:50 +0900</pubDate>
    </item>
    <item>
      <title>아주 간단한 Nox App Player 안드로이드 매크로 기능 구현해보기 (NodeJs, adb shell 활용)</title>
      <link>https://nomoasia.tistory.com/471</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;아주 간단한 Nox App Player 안드로이드 매크로 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nox App Player 에서 자체적으로 지원하는 매크로 기능이 있지만, 내가 원하는 순간에 동작하는 매크로를 직접 만들 수는 없을까? Nox App Player 를 내가 직접 짠 코드와 연동시켜 안드로이드에 동작/명령을 내리려면 어떻게 해야할까? 예를 들어 'Twitch Play 모바일 게임'을 만들고자 한다면? 시중에 녹스 앱플레이어용 매크로로 나온 것들이 몇가지 있고 잘 동작하기는 하지만, 내가 직접 짠 코드와 연동시키기는 쉽지 않다는 단점이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 경우 안드로이드 디버그 브릿지(adb) 를 사용하여 'adb shell command' 로 가능한 수준에서 아주 쉽게 기능을 구현할 수 있었다. (단, 일부 게임에서는 adb 송수신을 감지하므로 adb 로 구현한 매크로 사용을 피해야 한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍 언어별로 adb 와 직접 연결할 수 있는 많은 라이브러리가 있지만, 나는 특정 좌표를 터치하거나 버튼을 누르는 등의 몇가지 간단한 동작만을 구현하면 되었기 때문에 굳이 이런 라이브러리까지 사용해야 할 필요는 없었다. CMD 창을 실행시키고 녹스가 설치된 폴더 내의 bin 폴더로 이동한 뒤 'adb shell ~~~' 과 같이 adb shell 커맨드를 입력하면 원하는 명령을 실행시킬 수 있는데, 이 동작을 코드에서 하도록 하면 되었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;간단 예시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;녹스에서 ROOT 권한과 개발자 옵션 내 USB 디버깅 기능을 활성화하고 아래의 코드를 녹스가 실행된 PC 에서 실행시키면 된다. 아래의 코드는 NodeJs Language 를 사용한 경우로, 안드로이드 화면 내 x y 인 위치를 터치하도록 하는 예시이다.&lt;/p&gt;
&lt;pre class=&quot;brush:js lua&quot;&gt;const child_process = require('child_process');
var adb = child_process.spawn(`adb.exe`, [&quot;shell&quot;, &quot;input&quot;, &quot;tap&quot;, x, y], {cwd:&quot;D:\\Program Files\\Nox\\bin&quot;});
adb.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
adb.stderr.on('data', function(data) {
    console.error('Error: ' + data);
    if(data.toString().indexOf(&quot;no devices/emulators found&quot;) !== -1){
        console.error(&quot;It seems that Nox is not running, or the Nox ROOT permissions or USB debugging settings are not properly set.&quot;);
    }
});
// adb.on('exit', function(code) {
//     console.log('exit: ' + code);
// });
// adb.on('close', function (code) {
//     console.log('child process exited with code ' + code);
// });&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 프로세스가 실행되고 종료되므로 exit 과 close 에 해당하는 메시지가 실행된다. 따라서 주석처리 해두었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;더욱 자세한 내용은 child_process, child_process.spawn,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;adb shell commands,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;adb shell input keyevent,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;adb shell tap 등으로 검색해보면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python 등의 다른 프로그래밍 언어에서도 CMD 명령어를 코드 내에서 실행시킬 수 있는 방법이 있으니 이를 활용하면 될 것이다.&lt;/p&gt;</description>
      <category>개발/JavaScript</category>
      <category>adb</category>
      <category>adb shell</category>
      <category>nodejs</category>
      <category>Nox App Player</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/471</guid>
      <comments>https://nomoasia.tistory.com/471#entry471comment</comments>
      <pubDate>Mon, 10 May 2021 18:02:06 +0900</pubDate>
    </item>
    <item>
      <title>2021년 3월 31일 발열로 코로나 검사하고 음성 결과 받은썰</title>
      <link>https://nomoasia.tistory.com/470</link>
      <description>&lt;p&gt;3일 전인 일요일부터 계속 발열 증상이 있고 열과 함께 따라오는 오한, 손발저림, 근육통 등의 증상이 있어서 수요일인 오늘까지 회사를 쉬었다. 화요일인 어제 &lt;span style=&quot;color: #333333;&quot;&gt;코로나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;검사를 받고 오늘 결과가 나왔는데 &lt;span style=&quot;color: #333333;&quot;&gt;다행스럽게도(내가 스스로 생각하기엔 당연하게도)&lt;span&gt; &lt;/span&gt;&lt;/span&gt;음성이었다. 일단 열이 나면 병원에서 받아주지 않기에 코로나 검사부터 받을 수 밖에 없었다ㅠㅠ... 검사 결과를 받은 이후 바로 병원으로 가서 링거를 맞고 약을 먹으니 바로 생생하게 살아날 수 있었다.&lt;/p&gt;
&lt;p&gt;이 과정에서 겪으며 알게된 몇가지 사실들을 정리해보았다. &lt;b&gt;(참고: 본인 거주 지역은 서울임)&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 발열과 같은 유증상자는 임시선별검사소가 아닌 보건소에서 검사받아야 한다.&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;보건소가 아닌 &quot;임시선별검사소&quot; 라고 되어있는 곳들이 있다. 아마 &quot;가족 중 한 명은 검사&quot;, &quot;무료로 검사&quot;, &quot;익명으로 검사&quot; 등의 문구와 함께 검사를 홍보하는 곳들일 것이다. 처음에 코로나 검사를 위해 집에서 가장 가까운 임시선별검사소로 갔는데 &lt;b&gt;&quot;발열과 같은 유증상자는 임시선별검사소가 아닌 보건소에서 검사받아야 한다&quot;&lt;/b&gt;는 안내를 받고 다시 보건소로 갈 수 밖에 없었다. 따라서 본인이 &quot;유증상자&quot; 이고 아마 나와 같은 지역이거나 비슷한 경우라면 본인 주소지에 해당하는 보건소로 가라고 안내를 받게 될 것이다. &lt;span style=&quot;color: #333333;&quot;&gt;(지역이나 검사하는 곳마다 다를 수 있으니 유선으로 확인 권장!)&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 신분증 없이도 검사를 받을 수 있었다.&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;내 경우 집에서 임시선별검사소까지 거리는 얼마 안 되지만, 임시선별검사소에서 보건소까지는 걸어서 1시간이었다. 다시 보건소까지 걸어가기로 하고 한 30분쯤 걸어가고 있는데 집에 신분증을 놓고왔다는 사실을 알았다. 이걸 다시 걸어서 되돌아가야하나... 어쩌나... 하고 고민하다 인터넷에서 찾은 보건소 번호로 전화를 걸었다. 그랬더니 자동으로 다산콜센터로 연결되어서 코로나 검사 관련된 사항들을 물어볼 수 있었다. 전화로 문의하여 얻은 답변은 &lt;b&gt;신분증이 없어도 검사는 해준다는 것.&lt;/b&gt; &lt;b&gt;실제로도 신분증 없이 검사를 받을 수 있었고&lt;/b&gt;, 나 말고 다른 많은 사람들도 신분증을 가져오지 않았음에도 신분증 없이 검사를 받는 것을 확인할 수 있었다. 물론 신분증을 가져가는 것이 가장 좋겠지만, 혹시라도 나와 비슷한 경우가 있다면 참고하기 바란다. (지역이나 검사하는 곳마다 다를 수 있으니 유선으로 확인 권장!!)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;3. 보건소에서 별도로 체온은 다시 재지 않았다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;처음, 손소독을 하고, 비닐장갑을 끼고, 대기장소에 앉아 몇가지 개인정보를 적게된다. 이 때 직원 분이 어떻게 오게됐냐고 물어보는데, 내 경우 열이 나서라고 답했다. 다시 가장 높게 측정된 체온을 아냐고 물어봐서 내가 집에서 측정한 38.5도라고 말했다. &lt;b&gt;보건소에서 별도로 체온은 다시 재지 않았다.&lt;/b&gt; 주변 사람들 이야기를 들으니 해외에 출국해야 해서, 병원에서 보호자로 병간호를 해야해서, 일하는 건물에 확진자가 나와서 등 다양한 케이스들이 있었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 내 경우 코로나 검사 비용은 무료였다.&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;내 경우 &lt;b&gt;코로나 검사 비용은 무료&lt;/b&gt;였다. 아마 본인 지역의 코로나 단계에 따라 비용 지불 여부가 달라지지 않을까? 확인이 필요하다면 역시 전화로 확인하는 것이 가장 확실할 것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 소독 시작 시간은 피해서 조금 일찍 가자.&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;보건소마다 시간은 다르겠지만 내가 방문한 곳의 경우 낮 12시부터 1시까지는 소독시간이라 검사가 불가능했다. 그리고 대기자가 많을 경우 조금 일찍 끊기도 하니 소독 시간을 잘 피해서 조금 일찍 방문하는 것이 좋을 것이다. 내 경우 오전 10시 50분쯤 보건소에 도착해 대기시간 포함 11시 55분쯤 보건소를 나왔는데, 나오면서 확인해보니 이미 접수가 마감되어 있었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. K방역택시 라는게 있던데 왕복만 된다더라.&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;보건소까지 어떻게 걸어는 왔는데 다시 걸어 돌아갈 엄두가 나지 않아서, 인터넷에서 정보를 찾다가 &quot;k방역택시&quot; 라는 나와 같은 경우의 사람이 이용 가능한 택시를 찾을 수 있었다. 카톡 문의를 해보니 편도는 안 되고 왕복만 된다고 한다. 필요하다면 집에서부터 미리 부르도록 하자...&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;7. 검사 결과는 다음날 오전 9시경 받을 수 있었다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;검사 결과는 &lt;b&gt;검사 받은 다음날 오전 9시 16분 카카오톡 알림톡으로 날아왔다&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;검사를 받으며 우리나라의 코로나 검사 시스템이 체계적으로 잘 갖춰져있고, 많은 분들이 여전히 고생하고 계시다는 것을 깨달을 수 있었다. 그리고 요즘 같은 때 아프면 정말 고생이다... 빨리 이 지긋지긋한 코로나 사태가 끝나는 날이 오길 ㅠㅠ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;위에 적은 내용들은 내가 직접 겪은 내용을 정리한 것이지만 상황에 따라, 본인 지역에 따라 달라질 수 있을 것이다. 따라서 간단히 참고만 하고 1339 콜센터, 120 다산 콜센터, 본인 거주 지역의 보건소 등으로 연락하여 안내를 받은 후 방문하도록 하자.&lt;/b&gt;&lt;/p&gt;</description>
      <category>일상&amp;middot;취미/일기&amp;amp;짤막글</category>
      <category>COVID19</category>
      <category>보건소</category>
      <category>코로나 검사</category>
      <category>코로나19</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/470</guid>
      <comments>https://nomoasia.tistory.com/470#entry470comment</comments>
      <pubDate>Wed, 31 Mar 2021 17:18:09 +0900</pubDate>
    </item>
    <item>
      <title>2021년 2월 Twitch.tv 에서 Adblock 사용 시 나타나는 보라색 화면에 대한 내용 정리</title>
      <link>https://nomoasia.tistory.com/469</link>
      <description>&lt;p&gt;바로 그저께(2021년 2월 24일) 부터 Twitch.tv 에서 Adblock 사용 시 아래와 같은 보라색 화면이 나타나는 문제가 발생하고있다. &lt;b&gt;기존에는 &lt;a href=&quot;https://nomo.asia/465&quot;&gt;Multitwitch 와 같이 embed 로 삽입된 Twitch player 에서만 발생하던 문제&lt;/a&gt;였으나, 최근 Twitch.tv 에서 직접 스트림을 시청하는 경우에도 아래와 같은 문제가 발생하기 시작했다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHiZsk/btqYIjGX9ol/vDIDGtOFUwb3HwxlarPKVK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHiZsk/btqYIjGX9ol/vDIDGtOFUwb3HwxlarPKVK/img.jpg&quot; data-alt=&quot;Hello, if you&amp;amp;#39;re seeing this and you&amp;amp;#39;re not already on twitch.tv, click here to get the best twitch experience. if yo&amp;amp;#39;ure seeing this and you&amp;amp;#39;re already on twitch.tv, please review your third-party tools. Most likely there is an ad blocker or script running on your browser making it look like yo&amp;amp;#39; are watching from another site. As we update our service, these third party tools can affect twitch&amp;amp;#39;s performance. the stream will resume shortly. Thanks for watching.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHiZsk/btqYIjGX9ol/vDIDGtOFUwb3HwxlarPKVK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHiZsk%2FbtqYIjGX9ol%2FvDIDGtOFUwb3HwxlarPKVK%2Fimg.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Hello, if you're seeing this and you're not already on twitch.tv, click here to get the best twitch experience. if yo'ure seeing this and you're already on twitch.tv, please review your third-party tools. Most likely there is an ad blocker or script running on your browser making it look like yo' are watching from another site. As we update our service, these third party tools can affect twitch's performance. the stream will resume shortly. Thanks for watching.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이에 대하여 FrankerFaceZ 라는 (아는 사람은 알겠지만 해외에서 유명한) 트위치 확장기능의 수석 개발자인 SirStendec 가 레딧에 글을 올렸는데, 내용은 다음의 링크로 가면 볼 수 있다. (영문) &lt;a href=&quot;https://www.reddit.com/r/Twitch/comments/lshy6q/twitchs_automatic_purple_midroll_ads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.reddit.com/r/Twitch/comments/lshy6q/twitchs_automatic_purple_midroll_ads/&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;내용 요약&lt;/h2&gt;
&lt;p&gt;내가 나름대로 내용을 파악하여 짧게 정리한 내용은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;원인: Adblock 과 같은 광고 차단 확장기능이나 특정 Twitch 전용 광고 차단 툴을 사용 중인 경우 보라색 화면 문제가 발생할 수 있음&lt;/b&gt;(Adblock plus 는 문제가 없다고 함)&lt;b&gt;.&lt;/b&gt; 특히 Adblock 의 경우 Adblock 자체 문제로 whitelist 에 twitch.tv 를 추가하여도 문제가 발생하므로 Adblock 확장기능을 완전히 비활성화 또는 삭제해야 보라색 화면이 나타나지 않게 됨.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Adblock 사용자의 경우 Ublock 등의 다른 광고 차단 확장기능으로 옮겨가는 것을 권장. 다만 Ublock 의 경우 보라색 화면만 안 뜰 뿐이지 Twitch 에서 광고 차단 기능은 현재 제대로(완벽하게) 동작하지 않음.&lt;/b&gt; &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;광고 차단 확장 기능이 새로운 방법을 찾아 적용할 때 까지 당분간 광고는 감당하고 볼 것. (혹은 대체 해결 방법을 찾아 직접 적용하거나, 구독이나 Turbo 를 결제하여 사용할 것)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;다만 Adblock 을 사용하지 않고 Ublock 과 같은 다른 툴을 사용 중인 경우에도 특정 사용자 필터, 광고 필터를 활성화한 경우나 특정 Userscript, 확장 기능을 사용 중인 경우 동일 문제가 발생할 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;만약 Adblock 사용자가 아님에도 문제가 발생한다면 아래의 방법을 따른다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;twitch.tv 에서 생방송 중인 아무 채널에 접속한 후, F12 키를 눌러 개발자 도구를 연다.&lt;/li&gt;
&lt;li&gt;Network 탭을 연다.&lt;/li&gt;
&lt;li&gt;filter 에 &quot;player_type&quot; 을 입력한다.&lt;/li&gt;
&lt;li&gt;새로고침 후 리스트에 나오는 항목을 클릭한다.&lt;/li&gt;
&lt;li&gt;Headers 탭의 Request URL 항목에서 player_type 뒤에 나오는 글자가 site 인지 확인한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;만약 player_type 이 site 가 아닌 경우 보라색 화면이 나타날 수 있다.&lt;/b&gt; &lt;br /&gt;이 경우 광고 차단 확장기능 또는 다른 확장기능이 player_type 을 다른 것으로 바꾸고 있는 것이다.&lt;br /&gt;이 확장기능을 찾아 비활성화 해야한다.&lt;/li&gt;
&lt;li&gt;광고 차단 확장기능이나 트위치 관련 확장기능을 하나씩 비활성화한 후, 새로고침하여 player_type 이 site 될 때까지 확인한다. 문제가 되는 확장 기능을 비활성화 하면 문제가 해결될 것이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;770&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ec6tqb/btqYAsSvKrF/WCZqweOAGsUz9nnK5aMkM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ec6tqb/btqYAsSvKrF/WCZqweOAGsUz9nnK5aMkM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ec6tqb/btqYAsSvKrF/WCZqweOAGsUz9nnK5aMkM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fec6tqb%2FbtqYAsSvKrF%2FWCZqweOAGsUz9nnK5aMkM0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;770&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;조금 더 자세한 원인: Twitch.tv 에서 시청 시 마스터 플레이리스트를 요청할 때 player_type 을 설정하도록 되어있는데, 이 것이 site 가 아닌 경우 문제가 되는 보라색 화면이 나타날 수 있음. 예전에 일부 광고 차단 툴은 player_type 을 site 에서 다른 것으로 변경하는 방식으로 광고를 회피하였는데, 이 방법이 현재는 동작하지 않도록 Twitch 에 의하여 막혔다. 그러나 일부 광고 차단 툴 or 확장 기능에 &quot;&lt;span style=&quot;color: #333333;&quot;&gt;player_type 을 site 로 바꾸는&lt;/span&gt; 부분&quot;이 광고 차단 필터 또는 코드에 그대로 남아있는 상태이고, Twitch 가 최근 이를 확인하여 보라색 화면을 띄우도록 함으로써 문제가 발생함.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다른 Twitch.tv 광고 회피 방법들&lt;/h2&gt;
&lt;p&gt;Adblock - Anti Adblock 은 창과 방패의 싸움이므로 지금까지 그래왔던 것처럼 뚫리고 막힘을 반복할 것이다. 기다리다보면 늘 그래왔던 것처럼 자연스럽게 해결되지 않을까싶다.&lt;/p&gt;
&lt;p&gt;그 외 Twitch 광고 회피 방법의 경우, 아직 최신으로 업데이트가 되지는 않았으나 아래 링크에 여러가지 방법들이 정리되어 있으므로 관심있는 사람은 참고해보면 좋을 것이다. 현재도 &lt;span style=&quot;color: #333333;&quot;&gt;notify-strip 방법(&lt;/span&gt;광고를 시청했다고&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;트위치에게&lt;span&gt; 훼이크로 &lt;/span&gt;&lt;/span&gt;알려서 광고 출력 빈도를 줄임)이 동작한다는 체험담이 있으니 참고.&lt;/p&gt;
&lt;p&gt;(영문) &lt;a href=&quot;https://github.com/pixeltris/TwitchAdSolutions&quot;&gt;https://github.com/pixeltris/TwitchAdSolutions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;다만 Proxy 를 사용하는 방법의 경우 Twitch 에서 해당 방법 사용자를 Shadow ban 한다는 소문이 있으니 조심할것 (어떻게 ban 한다는 것인지, Shadow ban 된 사람이 어떤 처분을 받게되는 모르겠지만...)&lt;/p&gt;</description>
      <category>개발</category>
      <category>adblock</category>
      <category>Ublock</category>
      <category>보라색 화면</category>
      <category>트위치</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/469</guid>
      <comments>https://nomoasia.tistory.com/469#entry469comment</comments>
      <pubDate>Fri, 26 Feb 2021 17:41:41 +0900</pubDate>
    </item>
    <item>
      <title>플레이스테이션 파트너샵 코엑스점 삼성역(or 봉은사역)에서 찾아가는 법</title>
      <link>https://nomoasia.tistory.com/468</link>
      <description>&lt;p&gt;&lt;b&gt;두 줄 요약: &quot;플레이스테이션 파트너샵 코엑스점&quot;은 &quot;메가박스 코엑스점&quot; 바로 옆에 있으므로 스타필드 코엑스몰에서 영화관 이정표를 따라가면 도착할 수 있다. 삼성역보다 봉은사역에서 내리는게 더 가깝다.&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;삼성역에서 플레이스테이션 파트너샵 코엑스점 찾아가는 법&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;1. 삼성역에 내린다.&lt;/p&gt;&lt;p&gt;2. 스타필드 코엑스몰 방향인 삼성역 6번 출구로 나간다.&lt;/p&gt;&lt;p&gt;3. 6번출구로 나가서 오른쪽을 보면서 걸으면 아래 사진과 같은 곳이 보일텐데 동그라미 친 스타필드 코엑스몰로 들어간다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9982CB486016324E07&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9982CB486016324E07&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;20210129_185759.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. &quot;영화관&quot; 이라고 적힌 이정표만 보고 계~~~속 따라간다. 의심하지 말고 계~~~~~~~~속 따라간다. 걷는 속도에 따라 다를 수 있지만 약 10분 정도 소요된다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990B1A436016324E06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990B1A436016324E06&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;20210129_185901.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. 아래 사진처럼 MEGABOX 에 도착하면 에스컬레이터를 타고 내려간다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9998C1346016324E06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9998C1346016324E06&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;20210129_190508.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;6. 에스컬레이터를 내려간 후 바로 오른쪽을 보면 플레이스테이션 파트너샵 코엑스점이 보인다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9939FD3C6016324E06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9939FD3C6016324E06&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;20210129_190539.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990B1F436016324E06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990B1F436016324E06&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;20210129_190614.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;봉은사역에서 플레이스테이션 파트너샵 코엑스점 찾아가는 법&lt;/h2&gt;&lt;p&gt;1. 봉은사역에 내린다.&lt;/p&gt;&lt;p&gt;2. 스타필드 코엑스몰 방향인 봉은사역 6번 출구로 나가서 스타필드 코엑스몰로 들어간다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 영화관 이정표만 줄창 따라간다. 대략 2~3분이면 도착할 수 있다.&lt;/p&gt;&lt;p&gt;4. 위와 동일. MEGABOX 에 도착하여 에스컬레이터를 내려간 후 바로 오른쪽을 보면 플레이스테이션 파트너샵 코엑스점이 보인다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990A61336016324E06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990A61336016324E06&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;20210129_190800.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>게임</category>
      <category>스타필드</category>
      <category>코엑스몰</category>
      <category>플레이스테이션 파트너샵 코엑스점</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/468</guid>
      <comments>https://nomoasia.tistory.com/468#entry468comment</comments>
      <pubDate>Sun, 31 Jan 2021 13:41:28 +0900</pubDate>
    </item>
    <item>
      <title>티스토리가 또 무언가를 하려한다.</title>
      <link>https://nomoasia.tistory.com/467</link>
      <description>&lt;p&gt;이 블로그는 2006년부터 테터툴즈를 이용해 운영되다가 티스토리가 생겨난 후부터는 티스토리를 통해 운영되고 있다. 꽤 오랜기간 운영하며 심한 양산글 없이 검색 엔진의 신뢰를 쌓아왔기에, 핫한 이슈에 대한 포스팅을 했을 때는 외부 유입도 잘 되는 편이다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그런데 이상한 점이 있다. 이 블로그는 최근 3일 간 약 1천건 정도의 외부 유입이 있었는데, 그 중 Daum 과 Kakao 에서 유입되는 것은 겨우 1% 밖에 안 된다는 점이다... 오히려 경쟁사라고 볼 수 있는 네이버에서 엄청 많이 접속하고있다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999EA93B60156BB917&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999EA93B60156BB917&quot; width=&quot;840&quot; height=&quot;654&quot; filename=&quot;kakao.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;응~ 이미 사이트 등록, 고객센터 문의 몇 년 전에 다해놨어~ 이러한 일은 비단 최근에만 발생한 일이 아니다.&lt;/p&gt;&lt;p&gt;나는 이미  Daum 과 Kakao 으로부터의 유입을 포기한 상태지만, 은근 이런 일을 겪고있는 티스토리 사용자가 나말고도 많다는 것이 문제이다 -_-;;;; 양산형 블로그를 필터링하겠다는 목적은 이해하지만 나같이 선량한 피해자가 많다는 것은 당하는 입장에서는 섭섭한 일이다. 실제로 저품질 글을 올려서 저품질 블로그로 분별되든, 운나쁘게 저품질 블로그로 분별되든, 여하튼 한 번 저품질로 분류되면 다음에서 검색되지 않게 되는데 이게 경쟁사인 네이버보다 기준이 심하다... 그렇다... 내 블로그는 다음과 카카오에게 저품질 블로그인 것이었다.&lt;/p&gt;&lt;p&gt;갑자기 이런 글을 쓰게된 이유는 최근 &lt;a href=&quot;https://notice.tistory.com/2581?category=110385&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;수익 메뉴를 오픈하면서&lt;/a&gt;&lt;a href=&quot;https://notice.tistory.com/2581?category=110385&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt; ads.txt 와 관련하여 티스토리가 또 무슨짓을 벌이려는 느낌&lt;/a&gt;인데, 링크의 댓글을 읽다가 갑자기 안 좋은 기억이 떠올라서 그랬다. 참고로 카더라이기는 하지만 Daum 에는 애드센스 코드밴이라는게 있어서 저품질 블로그 + 코드밴을 먹으면 해당 블로그에 삽입된 애드센스 코드가 포함된 페이지? 블로그?는 모두 다음에서 검색되지 않는다는 카더라가 있다... 그렇다... 이 블로그는 다음과 카카오에게 인정받은 &lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;▼&lt;/span&gt;Low Quality 블로그이다...&lt;br /&gt;&lt;/p&gt;&lt;p&gt;괜찮다... 내겐 나를 믿어주는 구글과 네이버가 있으니까.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 300px; width: 300px; height: 201px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992EE04A6015741119&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992EE04A6015741119&quot; width=&quot;300&quot; height=&quot;201&quot; filename=&quot;google god.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 300px; height: 201px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 300px; width: 300px; height: 153px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D763356015741118&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D763356015741118&quot; width=&quot;300&quot; height=&quot;153&quot; filename=&quot;25673_21329_0.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 300px; height: 153px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;저품질 블로그로 판명받은 모든 이들은 우리를 쓸쓸하게 내버려두지 않는 네이버와 구글을 위해 성남시와 캘리포니아 방향으로 1년에 한 번씩만이라도 절하여 그들의 고마움을 기리도록 하자.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제발 더 귀찮은 짓만 만들지 않아주었으면 좋겠다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>이 블로그는...</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/467</guid>
      <comments>https://nomoasia.tistory.com/467#entry467comment</comments>
      <pubDate>Sat, 30 Jan 2021 23:44:44 +0900</pubDate>
    </item>
    <item>
      <title>ANSYS 사용 중 Script Error 문제 해결</title>
      <link>https://nomoasia.tistory.com/466</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ANSYS 사용 중 Model 을 오픈하려고 할 때 Script Error 와 같은 팝업 창이 뜨며 제대로 진행되지 않는 경우가 있다. 특히 &lt;b&gt;한국어 언어 윈도우를 사용하며 설치 관리자에서 한국어로 설정하고 설치한 직후&lt;/b&gt;에 아래와 같은 Script Error 가 나타난다면 이 글에서 소개하는 방법으로 문제를 해결할 수 있다. 참고로 설치 시 Installer 의 언어에서 한국어 대신 English 를 선택하여 설치하면 아래 문제가 발생하지 않는다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 증상&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ANSYS 사용 중 Model 을 오픈하려고 할 때 아래와 같은 Script Error 창이 연달아 뜨며 Model 이 정상적으로 열리지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vdxZo/btqU4A6DsDg/0V2ZcwakQaKODgByQrJuBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vdxZo/btqU4A6DsDg/0V2ZcwakQaKODgByQrJuBK/img.png&quot; data-alt=&quot;Script Error, betaOption = wb.PreferenceMgr.Preference(&amp;quot;PID_Show_Beta_Options&amp;quot;)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vdxZo/btqU4A6DsDg/0V2ZcwakQaKODgByQrJuBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvdxZo%2FbtqU4A6DsDg%2F0V2ZcwakQaKODgByQrJuBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;247&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;283&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Script Error, betaOption = wb.PreferenceMgr.Preference(&quot;PID_Show_Beta_Options&quot;)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lVs40/btqUYfQhMaQ/I8UkI45cpbBkwRx9P5Iro1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lVs40/btqUYfQhMaQ/I8UkI45cpbBkwRx9P5Iro1/img.png&quot; data-alt=&quot;Script Error, 'fontSize'은(는) null 이거나 개체가 아닙니다. g_UIOptions_FontSize = fontSizes[fontSizePreference]&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lVs40/btqUYfQhMaQ/I8UkI45cpbBkwRx9P5Iro1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlVs40%2FbtqUYfQhMaQ%2FI8UkI45cpbBkwRx9P5Iro1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;257&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Script Error, 'fontSize'은(는) null 이거나 개체가 아닙니다. g_UIOptions_FontSize = fontSizes[fontSizePreference]&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 외에 여러 Script Error 창이 연이어서 나타날 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결 방법 1&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누구나 따라할 수 있는 쉬운 방법을 먼저 소개한다.&lt;/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;Tools - Optios - Regional and Language Options 에서 언어를 English -&amp;gt; Deutsch(등 다른 언어) 로 바꾼다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ANSYS Workbench 를 재시작한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;옵션에서 언어를 Deutsch -&amp;gt; &lt;/span&gt;English 로 다시 바꾼다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ANSYS Workbench 를 재시작한다.&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;참고로 ANSYS Workbench 의 언어는 다음의 순서로 변경할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWs2J7/btqUUrjoJHF/xctwkfbkcy2oxEV1dNqia1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWs2J7/btqUUrjoJHF/xctwkfbkcy2oxEV1dNqia1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWs2J7/btqUUrjoJHF/xctwkfbkcy2oxEV1dNqia1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWs2J7%2FbtqUUrjoJHF%2Fxctwkfbkcy2oxEV1dNqia1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;303&quot; height=&quot;198&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/odnVr/btqUWt82IPX/btf0D0zGbiATMfnx4xNDw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/odnVr/btqUWt82IPX/btf0D0zGbiATMfnx4xNDw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/odnVr/btqUWt82IPX/btf0D0zGbiATMfnx4xNDw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FodnVr%2FbtqUWt82IPX%2Fbtf0D0zGbiATMfnx4xNDw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;711&quot; height=&quot;551&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결 방법 2&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 방법은 Language 관련 파일을 직접 수정해주는 것이다. 이 방법이 보다 확실한 해결방법일 수 있다. &lt;span style=&quot;color: #333333;&quot;&gt;해결방법 1을 따라 진행한 경우에도 아래의 방법을 따라 문제가 제대로 수정되었는지 확인해볼 수 있다.&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&gt;C:\Program Files\ANSYS Inc\버전명\commonfiles\Language&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;C:\Users\계정명\AppData\Roaming\Ansys\버전명&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;C:\Program Files\AnsysEM\AnsysEM버전명\Win64\mechanical\버전명\commonfiles\Language&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 폴더들에 &lt;b&gt;languagesettings.txt&lt;/b&gt; 파일이 있을텐데, 내용을 확인하여&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;lang=ko&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;인 경우&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;b&gt;lang=en-us&lt;/b&gt; 로 바꾸어주고 ANSYS Workbench 를 재시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 ANSYS 제품군을 설치하느냐에 따라 위 경로가 있을 수도 있고, 없을 수도 있고, 다른 경로가 있을 수도 있다.&amp;nbsp;따라서 PC 에서 &lt;span style=&quot;color: #333333;&quot;&gt;languagesettings.txt 를 검색한 후 ANSYS 관련 폴더에 있는 모든 &lt;span style=&quot;color: #333333;&quot;&gt;languagesettings.txt&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;파일의 내용을 바꾸어주는 것을 권장한다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 원인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ANSYS 를 처음 설치하면 (아마도) 기본적으로 EventLog 를 Writing 하는 옵션이 켜져있을텐데, 오류 발생 후 아래의 경로로 가보면 이벤트 로그파일이 생성되어 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C:\Users\유저명\AppData\Local\Temp\WorkbenchLogs&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 최근에 생성된 이벤트 로그파일을 열어보면 존재하지도 않는 ko 언어의 script 파일을 읽어오려고 시도하다가, 해당 경로에 파일이 존재하지 않아 실패했다는 메시지를 확인할 수 있다. 설치 직후 UI 언어가 English 로 표시되어 제대로 설정된 것처럼 보이지만, 내부적으로 일부 언어 관련 설정이 Windows 언어인(혹은 Installer 에서 선택한 언어인) ko 를 따르기 때문인 것으로 보인다. 따라서 최초로 언어를 바꾸어주거나 languagesettings.txt 파일을 수정해주면 한국어로 저장된 언어 설정이 변경되어 문제가 해결된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;언어 설정과 관련된 문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Script 에러와 관련된 문제는 아니지만,&lt;span&gt; 언어 설정과 관련된 다른 문제 케이스를 소개한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ansys RBD 에서 해석 시 오류가 발생하는 경우&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;조건을 정확히 확인해보지는 못했지만 ANSYS 사용 중 일부 languagesettings.txt 파일이 lang=ko 로 덮어씌워지는 경우가 있는 듯하다. 아마 새로운 ANSYS 제품군을 추가 설치한 경우가 아닐까싶다.&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;color: #333333;&quot;&gt;최근 확인한 사례는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ANSYS RBD&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;에서 모델링 단계까지는 문제가 없었으나 해석 중 Message 창에 General Error 가 뜨며 Solving 이 제대로 진행되지 않았고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Solution Information 을 확인하니&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;C:\Program Files\ANSYS Inc\버전명\commonfiles\Language\&lt;b&gt;ko&lt;/b&gt;\fx0.msb 파일을 찾다가 실패하여 오류가 발생한 경우를 보았다. 이 경우 C:\Program Files\ANSYS Inc\버전명\commonfiles\Language\languagesettings.txt 파일의 내용을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;lang=en-us&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 수정 후 재시작하여 문제를 해결할 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;만약 &lt;span style=&quot;color: #333333;&quot;&gt;languagesettings.txt 파일의 내용이 다시 바뀌는&lt;/span&gt; 문제가 자주 발생한다면, 아예 en-us 폴더의 사본을 만든 뒤 이름을 ko 로 바꾸어두는 방법으로 어느정도 대응이 가능할 것이라 생각된다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;Ansys Modal 에서 해석 시 오류가 발생하는 경우&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Ansys Modal 또는 Condensed Part 해석 시 해석에 실패하며, Solution Information 을 확인해보면 아래와 같은 오류가 발생해있는 경우가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKPJTx/btsFP2qxrQz/m2hoWGM2WR8X9wyHpEFiMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKPJTx/btsFP2qxrQz/m2hoWGM2WR8X9wyHpEFiMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKPJTx/btsFP2qxrQz/m2hoWGM2WR8X9wyHpEFiMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKPJTx%2FbtsFP2qxrQz%2Fm2hoWGM2WR8X9wyHpEFiMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;264&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;*** ERROR ***&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Resources file 'C:\Program Files\ANSYS Inc\ANSYS Student\v241\CommonFiles\Language\/fx0.msb' not found. CADOE_LIBDIR241 = C:\Program Files\ANSYS Inc\ANSYS Student\v241\CommonFiles\Language\&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 문제의 해결 방법은 아래 링크에 정리해두었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;a href=&quot;https://nomo.asia/496&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://nomo.asia/496&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710590472085&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Ansys Modal 해석 시 fx0.msb 파일을 찾을 수 없다고 뜨는 문제&quot; data-og-description=&quot;언제부터 발생한 문제인지는 확실하지 않는데 대략 작년부터인가, Ansys Workbench 를 신규 설치하고 Ansys Modal 또는 Condensed Part 해석 시 해석에 실패하며, Solution Information 을 확인해보면 아래와 같은 &quot; data-og-host=&quot;nomo.asia&quot; data-og-source-url=&quot;https://nomo.asia/496&quot; data-og-url=&quot;https://nomo.asia/496&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/1kpKS/hyVAGEiF82/ALvq9kC4kKUtt5hGExuB01/img.png?width=663&amp;amp;height=459&amp;amp;face=0_0_663_459,https://scrap.kakaocdn.net/dn/cf1kzp/hyVBD8eOhL/fHkWa5NMhlhyxOakrNZkTK/img.png?width=663&amp;amp;height=459&amp;amp;face=0_0_663_459,https://scrap.kakaocdn.net/dn/bhCWgD/hyVAy0CWXr/vkdNNoYJj2ZxA0xaeTiw5K/img.png?width=887&amp;amp;height=672&amp;amp;face=0_0_887_672&quot;&gt;&lt;a href=&quot;https://nomo.asia/496&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nomo.asia/496&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/1kpKS/hyVAGEiF82/ALvq9kC4kKUtt5hGExuB01/img.png?width=663&amp;amp;height=459&amp;amp;face=0_0_663_459,https://scrap.kakaocdn.net/dn/cf1kzp/hyVBD8eOhL/fHkWa5NMhlhyxOakrNZkTK/img.png?width=663&amp;amp;height=459&amp;amp;face=0_0_663_459,https://scrap.kakaocdn.net/dn/bhCWgD/hyVAy0CWXr/vkdNNoYJj2ZxA0xaeTiw5K/img.png?width=887&amp;amp;height=672&amp;amp;face=0_0_887_672');&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;Ansys Modal 해석 시 fx0.msb 파일을 찾을 수 없다고 뜨는 문제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언제부터 발생한 문제인지는 확실하지 않는데 대략 작년부터인가, Ansys Workbench 를 신규 설치하고 Ansys Modal 또는 Condensed Part 해석 시 해석에 실패하며, Solution Information 을 확인해보면 아래와 같은&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nomo.asia&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>엔지니어링/ANSYS</category>
      <category>ansys</category>
      <category>ANSYS Workbench</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/466</guid>
      <comments>https://nomoasia.tistory.com/466#entry466comment</comments>
      <pubDate>Thu, 28 Jan 2021 20:32:06 +0900</pubDate>
    </item>
    <item>
      <title>외부 사이트에서 Twitch 재생 시 보라색 화면이 뜨는 증상에 대한 분석</title>
      <link>https://nomoasia.tistory.com/465</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[2021.02.25 코멘트 추가] 본 글은 2020년 12월 처음 작성되었으며, Multitwitch 와 같이 embed player 가 삽입된 외부 사이트에서 보라색 화면이 나타난 경우에 대한 해결 방법에 대해 요약한 글입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2021년 2월 현재 발생하고 있는 Adblock 과 같은 광고 차단 툴 사용 시 Twitch.tv 에서 발생하는 보라색 화면과 관련된 글은 아닙니다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이에 대한 내용은 &lt;a href=&quot;https://nomo.asia/469&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021년 2월 Twitch.tv 에서 Adblock 사용 시 나타나는 보라색 화면에 대한 내용 정리(https://nomo.asia/469)&lt;/a&gt; 글을 참고하십시오.&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;외부 사이트에서 재생 시 나타나는 Twitch 의 보라색 화면&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Twitch 는 twitch.tv 가 아닌 외부 페이지에서 실시간 스트림을 embeds(iframe) 으로 삽입하여 함께 볼 수 있도록 하는 기능을 기본 기능으로 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 12월 18일경부터 멀티트위치와 같은 외부 페이지에서 embed 로 삽입된 비디오를 재생할경우, 아래의 그림과 같은 보라색 화면을 띄우며, 광고 차단툴을 사용하는 경우(?) 대략 20~30초를 대기하여야하는 프리롤 메시지를 내보이기 시작했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;1114&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yzCiE/btqRcHXkA6Q/XE2oubyIWNttlNppsKStqK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yzCiE/btqRcHXkA6Q/XE2oubyIWNttlNppsKStqK/img.jpg&quot; data-alt=&quot;Thanks for watching! You may be using a third party tool or browser extension that is impacting site performance. For the best Twitch experience, head over to Twitch.tv and support the stream. If you're already watching on Twitch.tv, please review your third party tools.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yzCiE/btqRcHXkA6Q/XE2oubyIWNttlNppsKStqK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyzCiE%2FbtqRcHXkA6Q%2FXE2oubyIWNttlNppsKStqK%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;572&quot; height=&quot;633&quot; data-origin-width=&quot;1114&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Thanks for watching! You may be using a third party tool or browser extension that is impacting site performance. For the best Twitch experience, head over to Twitch.tv and support the stream. If you're already watching on Twitch.tv, please review your third party tools.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;보라색 화면 해결 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방법부터 바로 설명하자면, 내 경우에는 Ublock Origin + 아래에서 소개하는 스크립트의 조합으로 중간 광고가 잘 차단되는 것을 확인했다(2020년 12월 24일 기준). 다만 아래 스크립트만 쓴다고 광고가 차단되는 것은 아니며 Ublock 등의 광고 차단 툴을 함께 써야한다. &lt;b&gt;아래에서 소개하는 방법을 사용해도 여전히 프리롤 &amp;amp; 미드롤 광고가 출력된다는 사람도 있으니 참고 바라며 시도만 해보길 바란다. 언제든 막힐 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의: 이 스크립트는 외부 페이지에 embed(iframe) 으로 삽입된 플레이어에 대응하기 위하여 player.twitch.tv 로 시작하는 도메인에서만 작동하므로 twitch.tv 에서 발생하는 adblock 관련 문제를 해결해주지 않는다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;STEP 1. 자신의 브라우저에 맞는 유저스크립트 관리 확장기능 설치&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://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ko&quot;&gt;Chrome - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/ko/firefox/addon/tampermonkey/&quot;&gt;Firefox - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.opera.com/extensions/details/tampermonkey-beta/&quot;&gt;Opera - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://safari.tampermonkey.net/tampermonkey.safariextz&quot;&gt;Safari - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.microsoft.com/store/p/tampermonkey/9nblggh5162s&quot;&gt;Edge - Tampermonkey&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작은 Chrome 브라우저에서만 확인했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;STEP 2. UserScript 스크립트 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장 기능 설치 이후 아래의 링크를 클릭하여 이동, 설치 버튼을 누른다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/YrIzy/btrNIJxlgTI/RO1LwwKRdyGBHx1y4A6KNk/Twitch-disable-embed-preroll-dec2020.user.js?attach=1&amp;amp;knm=tfile.js&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;Twitch-disable-embed-preroll-dec2020.user.js&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의: 본 스크립트를 설치 및 사용하며 브라우저 과부하로 인한 응답 없음/뻗음 등 으로 인한 데이터 손실 등 문제 발생 시 개발자는 책임지지 않음(보고된 문제는 없음)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;본 스크립트를 사용하다가 Twitch 접속에 문제가 생기거나 동영상 재생이 제대로 안 되거나 중간 광고 차단 등이 제대로 되지 않는 경우, 이 스크립트가 막힌 것이므로 Tampermonkey 의 관리 메뉴에서 삭제하면 된다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;보라색 화면 발생 메커니즘&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 메시지가 뜨는 메커니즘에 대해 살펴보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재생 전 Twitch player 는 Twitch 로부터 마스터 플레이리스트라는 것을 받아오는데, 이 안에는 각 화질별 플레이리스트(m3u8) 링크가 존재한다. 각 m3u8 파일에는 2초 정도의 길이로 조각난 실시간 비디오들의 주소가 포함되어 있다. Twitch player 는 이 비디오들을 순차 재생한다.&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;b&gt;cdn.mycdn.com/token?ad_preroll.ts&lt;/b&gt;&lt;br /&gt;cdn.mycdn.com/token?1.ts&lt;br /&gt;cdn.mycdn.com/token?2.ts&lt;br /&gt;cdn.mycdn.com/token?3.ts&lt;br /&gt;...&lt;br /&gt;cdn.mycdn.com/token?303.ts&lt;br /&gt;&lt;b&gt;cdn.mycdn.com/token?ad_midroll.ts&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예시와 같이, 실시간 비디오 재생에 필요한 순차적으로 재생하여야하는 비디오를 아예 광고로 대체한다. 문제는 이 광고를 차단하게되면 재생할 수 있는 실시간 비디오 링크가 없으므로 까만 화면이 나타나거나 위와 같이 Twitch 가 의도한 광고 차단 화면이 나타나게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 보라색 화면 이슈의 경우에도 이를 응용한 것이다. 마스터 플레이리스트를 요청할 때 사용되는 쿼리에서 player_type 이 외부 페이지 재생에 해당하는 embed 인 경우, 플레이리스트가 프리롤과 미드롤 광고를 포함하도록 생성된다. Twitch.tv 에서 직접 재생하면 player_type 이 site 이므로, 이 경우에는 현재 문제가 없다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Twitch 는 이러한 짓을 왜 한걸까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이러한 짓을 왜 한 것일까? 그냥 단순히 외부 페이지에서 재생을 막기 위해서 그런 것일까...? Twitch.tv 에서 재생하나 외부 사이트에서 재생하나 광고를 재생할 수 있는 것은 공통사항이지만, 외부 사이트에서의 재생을 불편하게하여 Twitch.tv 에서의 직접 재생을 유도하면 시청자 참여도 높일 수 있고, 사용자가 비트 충전 &amp;amp; 후원하는 과정에서 Twitch 는 수익을 높일 수 있을테니 말이다. 하지만 개인적으로 뇌피셜을 씨부려보자면 아래의 이슈와도 연결되어있다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 10월경, 광고를 차단한 경우 Commercial break in progress 라고 나타나는 중간 광고를 Twitch 에서 시범적으로 테스트한 적이 있었다. 이것은 한 때 Twitch.tv 에서 동영상을 재생하는 사용자들에게만 나타났다. 이것을 회피하는 방법은 여러가지가 있었지만, 그 중 하나는 마스터 플레이리스트를 받아올 때 player_type 을 site 에서 embed 로 바꾸어 외부 페이지에서 재생하는 것처럼 속이는 방법이 있었다. (참고로 이 방법은 Twitch 에 의해 금방 막혔다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;1579&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wOLUR/btqRcIaRGAQ/OZBKmUAYrAXEoaiSpXA9kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wOLUR/btqRcIaRGAQ/OZBKmUAYrAXEoaiSpXA9kk/img.png&quot; data-alt=&quot;Commercial break in progress&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wOLUR/btqRcIaRGAQ/OZBKmUAYrAXEoaiSpXA9kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwOLUR%2FbtqRcIaRGAQ%2FOZBKmUAYrAXEoaiSpXA9kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1579&quot; height=&quot;882&quot; data-origin-width=&quot;1579&quot; data-origin-height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Commercial break in progress&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 Third party 툴이 player_type 을 임의로 바꾸는 시도나, Alternative Twitch Player 와 같은 대체 플레이어의 경우 player_type 을 embed 로 설정하여 플레이리스트를 받아왔던 것 같은데 이런 것을 막기 위함이 아닌가 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 중간 광고에 대한 테스트는 현재는 중단된 것으로 보이지만, 만약 현재도 사용자가 당시의 광고 회피를 위한 Third party 툴을 활성화해둔 상태여서 player_type 을 site 에서 embed 로 변경해둔 상태라면, 최근 Twitch.tv 에서 재생하는 경우에 외부 페이지 재생으로 인식하여 보라색 화면이 나타났을 것이다. 뭐 이런것과 관련이 있지 않을까싶다.&lt;/p&gt;</description>
      <category>개발/UserScript</category>
      <category>TWITCH</category>
      <category>보라색 화면</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/465</guid>
      <comments>https://nomoasia.tistory.com/465#entry465comment</comments>
      <pubDate>Thu, 24 Dec 2020 12:28:53 +0900</pubDate>
    </item>
    <item>
      <title>Twitch Plays 모여봐요 동물의숲 - 첫 24시간의 기록</title>
      <link>https://nomoasia.tistory.com/463</link>
      <description>&lt;h2&gt;Twitch Plays 모여봐요 동물의숲 &lt;br /&gt;&lt;/h2&gt;&lt;p&gt;지난 3월 20일부터 Twitch 의 NookInc 채널(&lt;a href=&quot;https://www.twitch.tv/nookinc&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.twitch.tv/nookinc&lt;/a&gt;) 에서, 채팅으로 게임에 참여할 수 있는 &lt;b&gt;Twitch Plays 모여봐요 동물의숲&lt;/b&gt; 방송을 시작했다. 트위치 채팅창에 Move right, Move left 등의 키워드를 입력하면 실제 게임 내 캐릭터를 움직일 수도 있고, 실제 컨트롤러 조작법을 따라 게임을 조작할 수 있는 시청자 참여 방송이다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;혹시라도 스위치가 없는데 게임을 해보고싶은 사람이나, 게임을 여러 사람과 함께 플레이해보길 원하는 사람이 있다면 &lt;br /&gt;트위치(&lt;a href=&quot;https://www.twitch.tv/nookinc&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.twitch.tv/nookinc&lt;/a&gt;)나 믹서(&lt;a href=&quot;https://mixer.com/nookinc&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://mixer.com/nookinc&lt;/a&gt;)에서 채팅을 통해 직접 게임에 참여할 수 있다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;첫 24시간의 기록&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;첫 방송을 켜고 그냥 7시간정도 자유롭게 냅뒀는데 아무도 플레이를 안 했길래 직접 플레이를 진행하기로 했다. 나두 게임을 해보고 싶었다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;한참을 고민한 끝에 &quot;모붕&quot;이라는 이름을 지어줬다~&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CD544C5E9B2D5422&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CD544C5E9B2D5422&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;20200320_234231_NookInc_Twitch Plays 모여봐요 동물의 숲_571182093.mp4_20200419_013925.088.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;첫 커스터 마이징은 트럼프 스타일로.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F4CE4B5E9B30BE1D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F4CE4B5E9B30BE1D&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;20200320_234231_NookInc_Twitch Plays 모여봐요 동물의 숲_571182093.mp4_20200419_015353.441.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;첫 스타팅 주민은 한나(Cherry)와 퍼머거(Antonio).&lt;/p&gt;
&lt;p&gt;나쁘지 않은 시작이다 ~_~&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999ADB3A5E9B2D9A1E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999ADB3A5E9B2D9A1E&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;20200320_234231_NookInc_Twitch Plays 모여봐요 동물의 숲_571182093.mp4_20200419_014016.864.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;게임을 시작한지 11시간이 지나 아침이 되자 채팅에 참여자가 늘어났당.&lt;/p&gt;
&lt;p&gt;아무래도 아침에는 다른 모동숲 방송이 적었기 때문인듯.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9907163B5E9B2E5E21&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9907163B5E9B2E5E21&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;20200320_234231_NookInc_Twitch Plays 모여봐요 동물의 숲_571182093.mp4_20200419_014343.311.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;그냥 다들 신기해하며 첫 24시간이 지났다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998255485E9B2FEE27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998255485E9B2FEE27&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;20200320_234231_NookInc_Twitch Plays 모여봐요 동물의 숲_571182093.mp4_20200419_015033.375.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>게임/동물의숲</category>
      <category>모여봐요 동물의숲</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/463</guid>
      <comments>https://nomoasia.tistory.com/463#entry463comment</comments>
      <pubDate>Sun, 19 Apr 2020 02:16:36 +0900</pubDate>
    </item>
    <item>
      <title>모여봐요 동물의 숲 - 사용된 일부 컬러 및 폰트 정보 정리</title>
      <link>https://nomoasia.tistory.com/462</link>
      <description>&lt;p&gt;현재 개발 중인 &lt;b&gt;&lt;a href=&quot;https://www.twitch.tv/nookinc&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Twitch Plays 모여봐요 동물의 숲&lt;/a&gt;&lt;/b&gt;에 게임과 유사한 디자인을 적용하기 위하여, 인게임에 사용된 사용된 일부 컬러와 폰트 정보를 정리하였다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;폰트 정보&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;웹서핑을 통해 찾거나 &lt;a href=&quot;https://www.whatfontis.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;font identifier&lt;/a&gt; 를 이용하여 직접 찾았다.&lt;/p&gt;&lt;h3&gt;&lt;b&gt;영문 Logo&lt;/b&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 357px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D8FC375E64558030&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D8FC375E64558030&quot; width=&quot;357&quot; height=&quot;198&quot; filename=&quot;logo.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;폰트 명 - Ministry Medium&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.myfonts.com/fonts/device/ministry&quot;&gt;https://www.myfonts.com/fonts/device/ministry&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 497px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9907D6385E645BFC02&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9907D6385E645BFC02&quot; width=&quot;497&quot; height=&quot;126&quot; filename=&quot;K-20200308-422361.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h3&gt;&lt;b&gt;영문 Dialog&lt;/b&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px; width: 800px; height: 391px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AC77465E645C3C38&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AC77465E645C3C38&quot; width=&quot;800&quot; height=&quot;391&quot; filename=&quot;K-20200308-423066.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 800px; height: 391px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;폰트 명 - Quicksand Bold&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://fonts.google.com/specimen/Quicksand&quot;&gt;https://fonts.google.com/specimen/Quicksand&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999FF84E5E645C0D01&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999FF84E5E645C0D01&quot; width=&quot;840&quot; height=&quot;480&quot; filename=&quot;K-20200308-415821.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;32px 기준 letter-spacing 을 0.5px 으로 하면 폰트 간격까지 매우 비슷하다.&lt;/p&gt;&lt;p&gt;다만 게임 내 letter-spacing 값이 부분마다 다르게 들어가 있는 것으로 보여서, 완벽한 일치를 원한다면 일부 조절이 필요할듯하다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;&lt;b&gt;Youtube Nintendo 채널 - 모여봐요 동물의숲 Nintendo Direct 자막에 쓰인 한글 폰트&lt;/b&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;게임이 아직 출시되지 않은 현재 시점(20년 3월 8일)에서 인게임 한글 폰트가 어떤 것이 사용되었는지를 알 수 없어서, Nintendo Direct 동영상 자막에 사용된 한글 폰트가 어떤 것인지 찾아보았다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 600px; width: 600px; height: 386px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B73B355E6455ED32&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B73B355E6455ED32&quot; width=&quot;600&quot; height=&quot;386&quot; filename=&quot;K-20200308-406867.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 600px; height: 386px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;폰트 명 - a하늬바람&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.koreafont.com/fonts/list/898/&quot;&gt;https://www.koreafont.com/fonts/list/898/&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 695px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9987DC445E645C9A07&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9987DC445E645C9A07&quot; width=&quot;695&quot; height=&quot;369&quot; filename=&quot;K-20200308-423976.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;추가 - 인게임 한글 폰트&lt;br /&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999CAA445E8210CF18&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999CAA445E8210CF18&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;20200323_084412_NookInc_Twitch Plays 모동숲 (채팅을 통해 Play!)_573170730.mp4_20200331_002924.111.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b&gt;폰트 명 - 영고딕, 신디나루&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 301px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9908573B5E820F3313&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9908573B5E820F3313&quot; width=&quot;301&quot; height=&quot;363&quot; filename=&quot;영고딕.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 322px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D8F93A5E820F331E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D8F93A5E820F331E&quot; width=&quot;322&quot; height=&quot;253&quot; filename=&quot;신디나루.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;컬러&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=GuuRJDrHFnM&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Nintendo Direct 영상&lt;/a&gt;을 통해 게임 내 사용된 컬러를 확인하였다. 동영상 캡쳐로부터 색상을 추출한 것인만큼 실제와 다를 수 있으나, RGB 값으로 1~3 정도 차이이므로 육안으로 구분할 수는 없을 것이다. 또 약간의 opacity 가 들어간 부분들이 있어서, 매번 색상이 다르게 찍히는 부분들도 있으니 이점을 감안하고 사용하기 바란다. (대충 쓰자)&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992B07495E64637E3B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992B07495E64637E3B&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;cap1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9926D03A5E64637E04&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9926D03A5E64637E04&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;cap2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990D46485E64637E39&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990D46485E64637E39&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;cap3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EAD6375E64637E03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EAD6375E64637E03&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;cap5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993C39385E64637E06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993C39385E64637E06&quot; width=&quot;840&quot; height=&quot;472&quot; filename=&quot;cap4.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>모여봐요 동물의 숲</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/462</guid>
      <comments>https://nomoasia.tistory.com/462#entry462comment</comments>
      <pubDate>Sun, 8 Mar 2020 12:25:26 +0900</pubDate>
    </item>
    <item>
      <title>PC에서 포레스트 집중유형분석 하는 법 (forest-mt)</title>
      <link>https://nomoasia.tistory.com/461</link>
      <description>&lt;p&gt;PC 웹브라우저에서 포레스트 집중유형분석 페이지에 접속하면, 스마트폰을 통해 QR 코드로 접속하라는 메시지가 나타난다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://forest-mt.seekrtech.com/&quot;&gt;http://forest-mt.seekrtech.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1582799380182&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Plant your personal flower&quot; data-og-description=&quot;Test Your Focus Type x Find Your Personal Flower&quot; data-og-host=&quot;forest-mt.seekrtech.com&quot; data-og-source-url=&quot;http://forest-mt.seekrtech.com/&quot; data-og-url=&quot;https://forest-mt.seekrtech.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lm0N4/hyE6rCjK3w/xA0N8iDLkzRbDKZWDWHhCK/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/1SKsq/hyE5mP8WDS/frwA3Q7rPKcYzgIeNnlCgK/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628&quot;&gt;&lt;a href=&quot;https://forest-mt.seekrtech.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://forest-mt.seekrtech.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lm0N4/hyE6rCjK3w/xA0N8iDLkzRbDKZWDWHhCK/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/1SKsq/hyE5mP8WDS/frwA3Q7rPKcYzgIeNnlCgK/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Plant your personal flower&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Test Your Focus Type x Find Your Personal Flower&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;forest-mt.seekrtech.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;PC 화면에서 해보길 원한다면 아래와 같이 하면 된다.&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;letter-spacing: 0px;&quot;&gt;크롬 브라우저를 실행한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;http://forest-mt.seekrtech.com/&quot;&gt;http://forest-mt.seekrtech.com/&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 에 접속한 후 F12 키를 눌러 개발자도구를 연다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Ctrl+Shift+M 을 눌러 Mobile view 로 전환한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;F5 를 눌러 새로고침 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1835&quot; data-origin-height=&quot;1073&quot; width=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VGhOB/btqCnZ4fxrg/a0uCZDKOC8uOOYYDdSWke1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VGhOB/btqCnZ4fxrg/a0uCZDKOC8uOOYYDdSWke1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VGhOB/btqCnZ4fxrg/a0uCZDKOC8uOOYYDdSWke1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVGhOB%2FbtqCnZ4fxrg%2Fa0uCZDKOC8uOOYYDdSWke1%2Fimg.png&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1835&quot; data-origin-height=&quot;1073&quot; width=&quot;800&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;나의 결과는 해바라기로 나왔다. 열정과 긍정이라니 정말 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;골콩.PNG&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XlAdg/btqClyzhs7V/sKanVa8aYFLPGYgQBFkLCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XlAdg/btqClyzhs7V/sKanVa8aYFLPGYgQBFkLCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XlAdg/btqClyzhs7V/sKanVa8aYFLPGYgQBFkLCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXlAdg%2FbtqClyzhs7V%2FsKanVa8aYFLPGYgQBFkLCK%2Fimg.png&quot; data-filename=&quot;골콩.PNG&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;753&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>정보</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/461</guid>
      <comments>https://nomoasia.tistory.com/461#entry461comment</comments>
      <pubDate>Thu, 27 Feb 2020 19:36:11 +0900</pubDate>
    </item>
    <item>
      <title>병적증명서 인터넷 발급 시 &amp;quot;신청하신 민원은 소재지의 기관에서 처리할 수 없습니다&amp;quot; 오류가 나는 경우</title>
      <link>https://nomoasia.tistory.com/460</link>
      <description>&lt;p&gt;병적증명서는 정부24 (&lt;a href=&quot;https://www.gov.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.gov.kr/&lt;/a&gt;) 의 메인페이지에서 &quot;병적증명서 발급&quot; 버튼을 클릭하거나, 정부24의 메인 검색창에 &quot;병적증명서&quot;를 검색하여 나오는 메뉴로 진입하거나, 다음의 링크 (&lt;a href=&quot;https://www.gov.kr/main?a=AA020InfoCappViewApp&amp;amp;HighCtgCD=A01002&amp;amp;CappBizCD=13000000016&amp;amp;tp_seq=02&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.gov.kr/main?a=AA020InfoCappViewApp&amp;amp;HighCtgCD=A01002&amp;amp;CappBizCD=13000000016&amp;amp;tp_seq=02&lt;/a&gt;) 에서 신청할 수 있다. 참고로, 병적증명서 발급을 위해서는 공인인증서를 통한 로그인이 필요하다.&lt;/p&gt;
&lt;p&gt;병적증명서를 발급하는 과정 중, 주소를 입력하는 과정에서 오류가 발생한 경험을 적어본다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 발생&lt;/h2&gt;
&lt;p&gt;병적증명서 발급을 위해서는 주소검색을 통해 행정처리기관을 선택해야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;890&quot; width=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O6tOB/btqChGk88I9/lZHdAx8IR9FKXrKKG8ydD1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O6tOB/btqChGk88I9/lZHdAx8IR9FKXrKKG8ydD1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O6tOB/btqChGk88I9/lZHdAx8IR9FKXrKKG8ydD1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO6tOB%2FbtqChGk88I9%2FlZHdAx8IR9FKXrKKG8ydD1%2Fimg.jpg&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;890&quot; width=&quot;300&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그런데 내 경우, 우리집 주소나 집 근처 주소를 입력하면 아래와 같은 팝업창에 &quot;신청하신 민원은 소재지의 기관에서 처리할 수 없습니다.&quot; 라는 메시지가 나타나며 그 다음의 절차를 진행할 수 없었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjxzDI/btqCn1HQXXc/Ke0XJwlkK9BLlqu7vYCE51/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjxzDI/btqCn1HQXXc/Ke0XJwlkK9BLlqu7vYCE51/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjxzDI/btqCn1HQXXc/Ke0XJwlkK9BLlqu7vYCE51/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjxzDI%2FbtqCn1HQXXc%2FKe0XJwlkK9BLlqu7vYCE51%2Fimg.jpg&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;224&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 임시 해결&lt;/h2&gt;
&lt;p&gt;테스트삼아 내 주변 이곳 저곳의 주소를 전부 넣어봐도 다 안 되길래, 테스트삼아 &lt;b&gt;병무청&lt;/b&gt;을 입력해봤더니 광주광역시 동구의 주소가 하나 나타났고, 이 주소를 선택하니 위와 같은 메시지 없이 정상적으로 진행되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;747&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bECwr6/btqCn1gLRzP/lkfjXV1Tmjn5R5jMkojKkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bECwr6/btqCn1gLRzP/lkfjXV1Tmjn5R5jMkojKkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bECwr6/btqCn1gLRzP/lkfjXV1Tmjn5R5jMkojKkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbECwr6%2FbtqCn1gLRzP%2FlkfjXV1Tmjn5R5jMkojKkK%2Fimg.jpg&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;747&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;병적증명서-(6).jpg&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J4eOg/btqCkRzdFlv/pPp7VfDRE7dJPtHNkKyAQk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J4eOg/btqCkRzdFlv/pPp7VfDRE7dJPtHNkKyAQk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J4eOg/btqCkRzdFlv/pPp7VfDRE7dJPtHNkKyAQk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ4eOg%2FbtqCkRzdFlv%2FpPp7VfDRE7dJPtHNkKyAQk%2Fimg.jpg&quot; data-filename=&quot;병적증명서-(6).jpg&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;151&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그리고 병적증명서 출력까지 이상 없이 마칠 수 있었다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;결론: &quot;병무청&quot;을 검색하여 나오는 주소를 이용하면 병적증명서를 정상적으로 출력할 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이렇게 내 집주소가 아닌 다른 주소의 기관에서 병적증명서를 신청해도 문제는 없는걸까? 나는 모르겠으니 판단은 이 글을 읽는 본인이 알아서 하도록 하자.&lt;/p&gt;
&lt;p&gt;확실하지는 않지만 저 주소 입력란을 통한 검색은 단순히 행정처리기관을 고르는 과정으로 보이며, 병적 증명서에 내가 선택한 주소나 집 주소는 기재되지 않고 저 주소 입력란에는 어차피 주소를 Full 로 입력할 수도 없기도 한 점에서 주소 입력이 큰 의미를 갖지는 않는 것 같아보인다. 이렇게 출력된 병적증명서는 법적 효력이 없다고 하니 더더욱 그렇다.&lt;/p&gt;
&lt;p&gt;일단 나는 급하게 병적증명서의 발급이 필요하여 이렇게 출력한 것을 내가 필요한 곳에 제출하기로 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;597&quot; width=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqSMKO/btqCn1nxE18/zkTKRMfIh9byo5kOsppnxk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqSMKO/btqCn1nxE18/zkTKRMfIh9byo5kOsppnxk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqSMKO/btqCn1nxE18/zkTKRMfIh9byo5kOsppnxk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqSMKO%2FbtqCn1nxE18%2FzkTKRMfIh9byo5kOsppnxk%2Fimg.jpg&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;597&quot; width=&quot;800&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보</category>
      <category>병적증명서</category>
      <category>정부24</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/460</guid>
      <comments>https://nomoasia.tistory.com/460#entry460comment</comments>
      <pubDate>Mon, 24 Feb 2020 09:59:43 +0900</pubDate>
    </item>
    <item>
      <title>Twitch Plays 모여봐요 동물의 숲 개발 일기 ② - Chatbox 에 이모티콘 적용, 서버 시간 및 UPTIME 달기</title>
      <link>https://nomoasia.tistory.com/459</link>
      <description>&lt;p&gt;본 글은 [&lt;a href=&quot;https://nomo.asia/458&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;Twitch Plays 모여봐요 동물의 숲 개발 일기 ① - 장면 틀 만들기&lt;/a&gt;] 에서 이어지는 글이다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Chatbox 수정&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;이전 글에서 직접 만든 Chatbox 는 받아온 메시지의 내용만을 다시 바로 뿌려주는 구조라서 이모티콘 등을 표시할 수 없었다. 이것을 더 보기좋게 고쳐보자고 마음먹고 작업을 시작했다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;가장 먼저 이모티콘의 표시를 도와줄 적당한 라이브러리를 찾아봤다. 처음에는 &lt;a href=&quot;https://github.com/1Computer1/twitch-emoticons&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;twitch-emoticon&lt;/a&gt; 을 사용하여 이모티콘을 표시하려고 했는데, 이유는 기본 Twitch 의 이모티콘을 비롯하여 BTTV, FFZ 와 같은 서드파티 이모티콘까지 한 번에 보여줄 수 있다는 것이 매력적으로 느껴져서이다. 그런데 직접 적용해보니 Twitch Emotes API 를 이용하는데, 버전이 v4 가 아닌 deprecated 된 v3 버전을 쓰고있어서 오류가 발생했다. 오류가 발생한 코드를 들여다보다 간단히 직접 짜는 것이 빠를 것 같아 다른 방법을 찾아봤다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일단 IRC 에서 받아오는 Twitch chat 의 내용은 아래와 같이 생겼다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B61C365E4993BA09&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B61C365E4993BA09&quot; width=&quot;500&quot; height=&quot;290&quot; filename=&quot;20200217-0254.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;여러가지 정보가 있는데, 그 중 이모티콘에 대한 정보는 emotes 에 담겨있다. 먼저, 채팅에 삽입된 이모티콘의 종류에 따라 &quot;/&quot; 문자로 구분된다. : 앞의 숫자는 각 이모티콘의 고유한 id 이다. : 뒤의 0-12 와 같은 숫자는 message 에서 해당 이모티콘을 나타내는 글자(code) 의 시작문자열-끝문자열 숫자을 의미한다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;즉 위 그림에서 1833318, 1833330, 1944784 는 해당 이모티콘의 고유한 id 이다. 1833318 의 경우, message 의 0-12 에 해당하는 문자열에 해당하는 이모티콘의 id 이므로 OWL2019Tracer 가 1833318 을 나타내는 code 가 될 것이다. 따라서 이미 받아온 정보에 이모티콘 표시를 위한 모든 정보가 담겨있으므로 별도로 Twitch Emotes API 를 호출할 필요는 없었다.&lt;/p&gt;&lt;p&gt;위와 같은 구조를 가진 message 내의 emotes 를 파싱하여 replace 하기 위한 코드를 찾아보니 역시나 있었다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/tmijs/tmi.js/issues/11#issuecomment-116459845&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/tmijs/tmi.js/issues/11#issuecomment-116459845&lt;/a&gt;&lt;/p&gt;&lt;p&gt;위 링크의 코드를 copy &amp;amp; pates 하고,  color 를 입힌 displace_name 를 추가하여 아래와 같이 만들 수 있었다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 406px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F94A445E4993BA08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F94A445E4993BA08&quot; width=&quot;406&quot; height=&quot;866&quot; filename=&quot;FireShot-Capture-064------localhost.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;BTTV 나 FFZ 의 emotes 는 시간이 남거나, 도네이션을 많이 받아 BTTV Pro 를 구독하게 되면 나중에 적용해 볼 예정이다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;서버 시간 및 UPTIME 달기&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://openclassrooms.com/en/courses/4286486-build-web-apps-with-reactjs/4286711-build-a-ticking-clock-component&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://openclassrooms.com/en/courses/4286486-build-web-apps-with-reactjs/4286711-build-a-ticking-clock-component&lt;/a&gt;&lt;/p&gt;&lt;p&gt;위 링크의 코드를 참조하여 아래와 같이 react 시계를 만들었다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 383px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9928B6345E4993BA07&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9928B6345E4993BA07&quot; width=&quot;383&quot; height=&quot;120&quot; filename=&quot;uptime.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;오늘의 결과물&lt;/h2&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BDB9375E49982709&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BDB9375E49982709&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;FireShot-Capture-065------localhost.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>next.js</category>
      <category>react.js</category>
      <category>TWITCH</category>
      <category>Twitch Plays</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/459</guid>
      <comments>https://nomoasia.tistory.com/459#entry459comment</comments>
      <pubDate>Mon, 17 Feb 2020 04:42:15 +0900</pubDate>
    </item>
    <item>
      <title>Twitch Plays 모여봐요 동물의 숲 개발 일기 ① - 장면 틀 만들기</title>
      <link>https://nomoasia.tistory.com/458</link>
      <description>&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;본 글은 [&lt;a href=&quot;https://nomo.asia/451&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;새로운 목표 - PC로 제어가능한 닌텐도 스위치 컨트롤러 만들기&lt;/a&gt;]와 [&lt;a href=&quot;https://nomo.asia/455&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;PC로 제어가능한 닌텐도 스위치 컨트롤러 제작기 - 3. 예제 코드 실행 및 트위치 채팅 연동 테스트&lt;/a&gt;]에서 이어지는 글이다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;앞선 트위치 채팅 연동 테스트에서 사용한 파이썬 코드의 아쉬운 점은 컨트롤러 제어와 채팅 수신 등을 모두 하나의 python 프로세스에서 한다는 것이었다. 프로세스, 쓰레드 관리, 에러 발생 시 프로세스가 재시작 하는 것 등을 효과적으로 관리하고, 개발 편의를 높이기 위하여 컨트롤러 부분을 제외한 나머지는 nodejs 를 이용하여 개발하기로 마음먹었다.&lt;/p&gt;&lt;h2&gt;이번 주말의 개발 목표&lt;br /&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;Twitch Plays 에서 시청자에게 보여주어야 하는 것들은 Chatbox, Game Screen, 배경 이미지, 현재 동작 모드, 조작법, 도네이션 창, 그 외 각종 텍스트 등 아주 많다. 이런 것을 일일히 OBS에 붙여넣지 않고, 실시간으로 모든 데이터를 수집하여 화면에 보여주는 웹페이지를 만든 뒤 OBS의 브라우저 인풋을 사용하여 보여주면 깔끔할 것 같았다. 따라서 일단 이번 주말에는 이러한 것을 위한 기본틀을 만들기로 했다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;이번 개발을 위해 선택한 것은 &lt;a href=&quot;https://nextjs.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;next.js&lt;/a&gt; 와 &lt;a href=&quot;https://ko.reactjs.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;react&lt;/a&gt; 이다. 그냥 &lt;a href=&quot;https://expressjs.com/ko/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Express&lt;/a&gt; 서버를 쓰지 않고 next.js 를 쓰는 이유는 공부의 의미 이외에는 전혀 없다. 어차피 단일 화면의 웹페이지인데다 혼자 쓰는 웹페이지이므로, 초기 접속 속도나 SEO가 중요하지 않아 next.js로 초기 서버사이드 렌더링을 할 이유는 딱히 없다. 다만 이 둘을 쓰는 이유는 예전부터 다루어보고 싶었던 것이기도 하고, 배워두면 나중에 어딘가에는 써먹을 수 있고 그 때 더욱 편해질 것이라는 것을 알기에 새로운 것도 익힐겸 react 와 next.js 에 대해 배워가며 개발하기로 했다. &lt;/p&gt;&lt;h2&gt;진행 상황 1&lt;br /&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;트위치 채팅창에서 채팅을 입력하면...&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 346px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993EBD365E417CC621&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993EBD365E417CC621&quot; width=&quot;346&quot; height=&quot;428&quot; filename=&quot;K-20200209-836802.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;a href=&quot;https://www.npmjs.com/package/twitch-bot&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Twitchbot&lt;/a&gt; 이 채팅 내용을 읽고 &lt;a href=&quot;https://www.npmjs.com/package/socket.io&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;socket.io&lt;/a&gt; 로 만든 웹소켓 서버로 뿌린다. 또 내용을 필터링하여 python &lt;a href=&quot;https://anaconda.org/anaconda/flask&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;flask&lt;/a&gt; 서버(닌텐도 스위치 컨트롤러)로 보낸다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99359F475E417CC62E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99359F475E417CC62E&quot; width=&quot;800&quot; height=&quot;723&quot; filename=&quot;K-20200209-791064.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;a href=&quot;https://nextjs.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;next.js&lt;/a&gt; 로 만든 웹페이지는 &lt;a href=&quot;https://www.npmjs.com/package/socket.io-client&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;socket.io-&lt;/a&gt;&lt;a href=&quot;https://www.npmjs.com/package/socket.io-client&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;client&lt;/a&gt; 를 이용해 항상 웹소켓 서버에 연결되어 있고, 채팅 내용을 수신하면 화면에 보여준다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99281D455E417CC622&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99281D455E417CC622&quot; width=&quot;800&quot; height=&quot;472&quot; filename=&quot;K-20200209-791024.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;웹페이지의 어두운 부분은 캡쳐보드의 게임 플레이 화면이 들어갈 부분이다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이제 웹쪽의 남은 개발요소는 아래와 같다.&lt;/p&gt;
&lt;p&gt;1. 투네이션에서 Donation 발생 시 이벤트 만들기 (투네이션의 리모콘 페이지를 읽어온다. 실제 페이지에서 알림은 웹소켓을 이용해 받아오는 듯하지만, 그냥 Selenium 등을 이용해 페이지를 직접 파싱하기로 한다.)&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;2. mongoDB 에 주요 채팅로그 저장, Donation 로그 저장하여 기록하기 (포인트). 채팅 로그의 경우 주요 키워드 또는 명령어에 해당하는 채팅 로그만을 저장한다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;3. !포인트 명령어 입력 시 유저별 도네이션, 채팅 참여 등으로 얻은 포인트 알려주기&lt;/p&gt;
&lt;p&gt;4. !제어권한 n 명령어 사용 시 특정 시간 동안 제어 권한을 해당 유저에게 넘기기 (화면에 띄우기)&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;5. 현재 서버 시간 표시&lt;/p&gt;
&lt;p&gt;6. 분당 채팅 입력 수 표시&lt;/p&gt;
&lt;p&gt;7. 조작법 표시 (게임 출시 후 수정하더라도)&lt;/p&gt;
&lt;p&gt;8. 하단 슬라이딩 팝업 형태의 공지창&lt;/p&gt;
&lt;p&gt;9. 컨트롤 패널&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;진행 상황 2&lt;br /&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;가장 중요한... 게임 예약 구매도 잊지 않았다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 693px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997DB03C5E4182CD15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997DB03C5E4182CD15&quot; width=&quot;693&quot; height=&quot;427&quot; filename=&quot;K-20200209-836832.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>next..js</category>
      <category>react</category>
      <category>TWITCH</category>
      <category>Twitch Plays</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/458</guid>
      <comments>https://nomoasia.tistory.com/458#entry458comment</comments>
      <pubDate>Tue, 11 Feb 2020 01:31:17 +0900</pubDate>
    </item>
    <item>
      <title>Next.js 사용 시 fs(fs-extra), net, tls 패키지를 찾을 수 없다는 오류가 나는 경우</title>
      <link>https://nomoasia.tistory.com/457</link>
      <description>&lt;p&gt;간단한 서버 사이드 렌더링 프로그램 제작을 위해 처음으로 &lt;a href=&quot;https://nextjs.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Next.js&lt;/a&gt; 를 사용하면서, 기본 Next.js 예제인 page/index.js 에다가 테스트겸 이런저런 패키지와 예제 코드를 가져다가 붙였다. 사용자가 페이지에 접속하면 제3의 백그라운드 어플리케이션을 실행시키려는 의도였다. 그런데 테스트를 해보니 몇몇 모듈을 찾을 수 없다며 에러가 발생했다. 대표적으로 fs, net, tls 같은 모듈과 관련된 오류가 있었다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 633px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D7D53F5E3722AA07&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D7D53F5E3722AA07&quot; width=&quot;633&quot; height=&quot;143&quot; filename=&quot;K-20200203-158988.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: rgb(189, 189, 189);&quot;&gt;Failed to compile&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(189, 189, 189);&quot;&gt;./node_modules/twitch-bot/lib/bot.js&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(189, 189, 189);&quot;&gt;Module 
not found: Can't resolve 'tls' in 'F:\Google Drive\3. 
Hobbies\switch_controller\nodejs_server\node_modules\twitch-bot\lib'&lt;/span&gt;&lt;/p&gt;&lt;p&gt;그래서 정보를 찾아보니, 로드되는 /page 디렉토리의 js 파일은 최소 &quot;서버&quot;에서 한 번, &quot;클라이언트&quot;에서 한 번 실행되게 되는데, 이 때 클라이언트에서 fs 와 같은 패키지를 쓸 수 없으므로 오류가 나게 되는 것이라고 한다. fs는 PC의 파일 시스템에 바로 접속하여 읽고 쓰기 위한 것이므로 클라이언트(브라우저)에서 바로 실행되는 것이 불가능한 것이었다. 아무래도 나는 그때그때 필요한 코드를 그저 가져다쓰는 식으로 프로그래밍 언어를 사용하다보니 기본적인 것이 부족한 경우가 가끔 있다.&lt;/p&gt;&lt;p&gt;그럼 어떻게 해야할까?&lt;/p&gt;&lt;p&gt;먼저 루트 폴더에 &lt;b&gt;next.config.js&lt;/b&gt; 라는 이름의 파일을 만든 후 아래의 내용을 삽입한다. 서버가 아닌 클라이언트에서 경우 fs, net, tls 모듈을 empty 로 취급하겠다는 의미인 듯하다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:js&quot;&gt;module.exports = {
    webpack: (config, {
        isServer
    }) =&amp;gt; {
    // Fixes npm packages that depend on `fs, net, tls` module
        if (!isServer) {
            config.node = {
                fs: 'empty',
                net: 'empty',
                tls: 'empty',
                &quot;fs-extra&quot;: 'empty'
            }
        }
        return config
    }
}&lt;/pre&gt;&lt;p&gt;위와 같이 처리하니 아래와 같은 에러가 발생했다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 633px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A19D385E3722AA08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A19D385E3722AA08&quot; width=&quot;633&quot; height=&quot;152&quot; filename=&quot;K-20200203-159532.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: rgb(189, 189, 189);&quot;&gt;Unhandled Rejection (TypeError): tls.TLSSocket is not a constructor&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;패키지별, 코드별로 발생하는 에러는 다양했다. 어떤 경우에는 아예 그냥 모듈을 찾을 수 없다면서 Module not found: Can't resolve 'fs' in 'F:\~~~~\node_modules\fs-extra\lib' 와 같은 에러가 발생하는 경우도 있었다.&lt;/p&gt;&lt;p&gt;따라서 이와 같은 경우, 해당 코드를 클라이언트에서는 실행되지 않도록 아래와 같이 처리해주면 된다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:js&quot;&gt;//serverside work
if(typeof window === &quot;undefined&quot;){
    console.log(&quot;serverside&quot;);
    RunTwitchBot();
}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;서버사이드에서는 window 객체의 type 이 &quot;undefined&quot; 이다. 브라우저와 같은 클라이언트에서는 &quot;object&quot; 이므로 구분된다.&lt;/p&gt;&lt;p&gt;이러면 오류 발생 없이 깔끔하게 해결되기는 하지만, 내 경우 백그라운드 어플리케이션이 단 한 번 실행되어야 했다. 그래서 결국은 pm2 를 이용해 별도로 프로세스를 실행하여 관리해주기로 하는 것으로 마무리했다.&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>FS</category>
      <category>fs-extra</category>
      <category>net</category>
      <category>next.js</category>
      <category>node.js</category>
      <category>tls</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/457</guid>
      <comments>https://nomoasia.tistory.com/457#entry457comment</comments>
      <pubDate>Mon, 3 Feb 2020 04:45:35 +0900</pubDate>
    </item>
    <item>
      <title>PC로 제어가능한 닌텐도 스위치 컨트롤러 제작기 - 3. 예제 코드 실행 및 트위치 채팅 연동 테스트</title>
      <link>https://nomoasia.tistory.com/455</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://nomo.asia/454&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;앞선 글&lt;/a&gt;에서 Python 개발 환경을 구성하였고, 이번 글에서는 실제 코드를 실행하여 작동이 되는 것을 확인하는 과정을 정리하였다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;배선 연결&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;일단 FT232RL USB to UART(Serial) 모듈과 아두이노 우노 R3간 케이블을 아래 사진과 같이 연결해주었다. (RX-RX(로 향하는), TX-TX(가 들어오는), VCC-5V, GND-GND)&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F14A4A5E33280D08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F14A4A5E33280D08&quot; width=&quot;800&quot; height=&quot;912&quot; filename=&quot;20200131_2_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;코드 수정&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/ItsDeidara/CommunityController&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/ItsDeidara/CommunityController&lt;/a&gt;
 에서 코드를 내려받아 개발 환경을 구축하고, Twitch Plays Nintendo 
Switch/CommunityController v3/BOTW/ 경로의 코드를 테스트삼아 RUN 해보기로 계획했다. 다만 코드를 실행해보니 몇 군데 수정할 부분이 있었고, 이것을 아래에 정리해보았다.&lt;/p&gt;&lt;h3&gt;twitch.json 파일 수정&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;일단 코드를 첫 실행하는 경우, config\twitch.json 파일이 존재하지 않아 해당 파일을 생성하도록 되어있다. 이 파일의 내용은 아래와 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;{&quot;port&quot;: 6667, &quot;host&quot;: &quot;irc.chat.twitch.tv&quot;, &quot;mainUsername&quot;: &quot;&quot;, &quot;mainPassword&quot;: &quot;&quot;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이 파일의 내용을 본인에 맞게 수정해주어야 했다. mainUsername 에는 본인의 Twitch 아이디를, mainPassword 에는 실제 로그인할 때 사용하는 패스워드가 아닌 Twitch Chat OAuth Token 값을 입력해주면 되었다. API를 이용해서 발급받을 수도 있지만 &lt;a href=&quot;https://twitchapps.com/tmi/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://twitchapps.com/tmi/&lt;/a&gt; 에 접속하니 쉽게 발급받을 수 있었다. 최종적으로는 아래와 같은 형태가 될 것이다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;{&quot;port&quot;: 6667, &quot;host&quot;: &quot;irc.chat.twitch.tv&quot;, &quot;mainUsername&quot;: &quot;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;abcdefgh&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;&quot;, &quot;mainPassword&quot;: &quot;oauth:abcdefgh&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;abcdefgh&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;abcdefgh&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;abcdefgh&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;&quot;}&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;find_arduino 함수 에러 해결&lt;/h3&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;위 오류를 수정하고 코드를 실행하자 아래와 같은 에러가 발생했다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 827px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FD304A5E333C500D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FD304A5E333C500D&quot; width=&quot;827&quot; height=&quot;222&quot; filename=&quot;20200131_2_3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;디버깅을 해보니, switch_controller.py 파일에 vid 값과 pid 값이 특정 값으로 하드코딩 되어 있었다. 아마도 사용할 장치의 COM port를 찾기 위해 vid 값과 pid 값으로 장치를 필터링을 하기 위한 용도의 코드였던 것같다. 다만 내가 구입한 장치인 FT232RL USB to UART(Serial) 모듈의 vid 값과 pid 값은 하드코딩 된 것과 달랐다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 604px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9994E7495E332CCF08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9994E7495E332CCF08&quot; width=&quot;604&quot; height=&quot;886&quot; filename=&quot;20200131_2_4.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;따라서 그냥 pid 값과 vid 값을 코드에서 바꿔주는 것으로 해결하였다. 본인 장치의 pid 값과 vid 값을 찾는 방법은, 위에서처럼 중단점을 찍어 확인하거나 아니면 아래 그림처럼 장치관리자에서 장치의 하드웨어 ID 를 읽으면 된다. 다만 이곳에 표시되는 값은 16진수이므로 python 코드로 변환하든 계산기를 이용해 계산하든 알아서 10진수로 변환해 코드에 입력해주면 된다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 465px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993F054F5E332F0E09&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993F054F5E332F0E09&quot; width=&quot;465&quot; height=&quot;518&quot; filename=&quot;20200131_2_5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;CommunityControllerAPI 사용하지 않기&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;아무래도 개발자는 직접 개발한 별도의 API 를 이용하여 추가 기능을 구현한 듯하다. 다만 테스트를 해보니 API 토큰이 필요한데, 토큰이 없어서 그런지 제대로 작동하지 않고 오류가 발생했다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;따라서 아래와 같이 코드를 수정하여 비활성화 시켰다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 590px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993E06505E332B6707&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993E06505E332B6707&quot; width=&quot;590&quot; height=&quot;600&quot; filename=&quot;20200131_2_2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;코드를 리뷰해보면 알겠지만 생각 이상으로 코드가 단순한 구조로 되어있어서, Twitch 채팅과 컨트롤러의 연동이 필요 없는 사용자는 쉽게 코드를 수정하여 입맛에 맞게 사용할 수 있을 것이다.&lt;/p&gt;&lt;h2&gt;추가로 수정할만한 부분&lt;br /&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;코드를 리뷰해보니 Python 2.x 버전대에서 작성된 코드라고 생각되어지는 부분들이 있었다(asyncore). Python 3.5 에서 문제없이 돌아가기는 하지만 수정할 여지는 있다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;코드 실행 / 트위치 채팅 연동 테스트&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;PC-USB to UART-아두이노-닌텐도 스위치 순서로 연결했다. 기존에 PC에 연결했던 아두이노의 USB 케이블은 그냥 스위치 독 옆구리에 있는 USB 포트에 연결하면 된다. 스위치의 [설정] - [컨트롤러와 센서] - [Pro 컨트롤러 유선 통신] 설정을 ON 으로 바꿔주어야 한다.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;스위치에 아두이노의 USB를 연결하면 POKKEN CONTROLLER 로 제대로 인식된다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px; width: 800px; height: 450px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9950394B5E3341F80F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9950394B5E3341F80F&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;Untitled-2.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 800px; height: 450px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;코드를 실행하여 트위치 채팅과 연동해본 결과는 아래와 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;iframe&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/_UYUp0wP0AU&quot; width=&quot;800&quot; height=&quot;450&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;마무리&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;생각보다 많은 시행착오 없이 깔끔하게 작업이 끝났다. 어느정도 사전 조사가 있기는 했지만 직접 시도하여 일을 종결짓는데 3시간, 블로그 글을 쓰는데 3시간이 걸렸다. 떠먹기만 하면 되도록 모든 것을 미리 작업해준 CommunityController 의 개발자에게 감사의 말을 전하고싶다. 일단 코드에서 오류가 발생하는 부분만 수정하고 작동이 되는지 테스트만 해본 것이라서, 이것을 기본으로 많은 것을 입맛에 맞게 수정해야 할듯하다.&lt;/p&gt;</description>
      <category>개발</category>
      <category>Python</category>
      <category>TWITCH</category>
      <category>Twitch Plays</category>
      <category>아두이노</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/455</guid>
      <comments>https://nomoasia.tistory.com/455#entry455comment</comments>
      <pubDate>Fri, 31 Jan 2020 04:40:37 +0900</pubDate>
    </item>
    <item>
      <title>PC로 제어가능한 닌텐도 스위치 컨트롤러 제작기 - 2. Python 개발환경 구축하기</title>
      <link>https://nomoasia.tistory.com/454</link>
      <description>&lt;p&gt;내가 테스트를 위해 사용할 코드는 Python 언어로 작성된 &lt;a href=&quot;https://github.com/ItsDeidara/CommunityController&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;ItsDeidara / CommunityController&lt;/a&gt; 이다. 따라서 Python 개발 환경을 구축해야한다. 혹시 이 글을 보며 따라할 사람이 있을지는 모르겠지만 Python 을 모르는 사용자에게 모든 내용을 일일히 설명할 수는 없어서 간단히만 정리했다. 아무래도 Python 을 아예 모르는 사용자는 본 단계부터 따라하기 어려울 수도 있겠다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;1. Anaconda 가상환경 구축 및 필요 패키지 설치&lt;/h2&gt;&lt;p&gt;효과적인 버전 관리를 위해 Anaconda 를 설치하는 것을 권장한다. 나는 이전부터 Anaconda 를 사용하던 관계로 설치 과정은 본 포스트에 적지 않았다. 구글에 [Python Anaconda 설치]로 검색하면 많은 결과가 나오니 찾아보아도 되고, 그냥 Python 을 설치해서 사용해도 별 문제는 없다. 다만 Anaconda 를 이용하면 여러 패키지를 가상환경 별로 설치 및 관리할 수 있어 프로젝트를 깔끔하게 관리할 수 있다. 여하튼 본 포스트는 Anaconda 를 사용하는 것을 기준으로 설명한다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Anaconda Prompt 를 열고 아래의 커맨드를 입력하여 PCtoSwitch35 라는 이름으로 Python 3.5 버전의 가상환경을 생성한다.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;conda create --name PCtoSwitch35 python=3.5&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 769px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993D62505E331F0104&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993D62505E331F0104&quot; width=&quot;769&quot; height=&quot;284&quot; filename=&quot;20200131_1_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;가상환경 생성 완료 후, &lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;conda activate PCtoSwitch35&lt;/span&gt; 를 입력하여 가상환경을 활성화한다. 가상환경이 활성화되면 가장 왼쪽의 (base) 가 (PCtoSwitch35) 로 바뀐다. 이제 이 상황에서 라이브러리를 설치하면 PCtoSwitch35 에만 설치되게 된다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 769px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998E293E5E331FF704&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998E293E5E331FF704&quot; width=&quot;769&quot; height=&quot;58&quot; filename=&quot;20200131_1_2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;나중에 코드를 RUN 해본 후 pyserial 과 requests 라는 이름의 패키지를 필수로 설치해줘야 한다는 것을 알았다. 이 글을 보고 따라하는 사람은 아래의 커맨드를 입력하여 바로 필요한 패키지를 설치하면 되겠다.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;conda install -c anaconda pyserial&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;conda install requests&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;2. PyCharm 프로젝트 생성&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;나는 Python 코딩을 위해 PyCharm 을 애용하는데, 왜냐하면 디버깅이 편하기 때문이다. 특히 남이 짠 코드를 직접 불러와 실행하는 경우에는 에러가 말 그대로 작렬하는 경우가 있어서 디버깅이 필수이다. 본 글을 따라해 볼 Python 초보자는 구글에 [PyCharm 설치] 를 검색하여 에디터를 설치하기 바란다.&lt;/p&gt;&lt;p&gt;PyCharm 을 실행하고 Create Project 메뉴를 선택한다. Location 에 적당한 빈폴더를 선택하고, Project Interpreter 로는 Existing interpreter 를 선택하여 앞서 생성한 가상환경의 python.exe 파일을 선택해주었다. 내 경우 경로는 &lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;C:\Users\{유저명}\AppData\Local\conda\conda\envs\PCtoSwitch35\python.exe&lt;/span&gt; 이다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 793px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EF0E335E33233606&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EF0E335E33233606&quot; width=&quot;793&quot; height=&quot;499&quot; filename=&quot;20200131_1_3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/ItsDeidara/CommunityController&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;ItsDeidara / CommunityController&lt;/a&gt; 에서 파일을 내려받는다. Git을 사용할 줄 안다면 사용하면 되고, 아니면 해당 페이지의 Download 메뉴를 이용해 압축된 파일로 내려받으면 된다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 219px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B356345E3323F006&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B356345E3323F006&quot; width=&quot;500&quot; height=&quot;219&quot; filename=&quot;20200131_1_4.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 219px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;다운로드를 완료하였다면 압축을 풀고, &lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;CommunityController-master\Twitch Plays Nintendo Switch\CommunityController v3\BOTW&lt;/span&gt; 경로에 있는 모든 파일을 앞서 프로젝트에서 설정한 Location 폴더 안에 복사하자.&lt;/p&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 709px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BFEC3F5E33258706&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BFEC3F5E33258706&quot; width=&quot;709&quot; height=&quot;438&quot; filename=&quot;20200131_1_5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;그리고 좌측 트리에서 main.py 파일을 열면 아래처럼 될 것이다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 840px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99396A4F5E33258707&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99396A4F5E33258707&quot; width=&quot;840&quot; height=&quot;628&quot; filename=&quot;20200131_1_6.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;아직 USB to UART 모듈을 PC에 연결하지 않았으므로, 이대로 실행하면 당연히 오류가 발생한다. 하지만 이것을 PC에 연결하더라도 오류가 발생하게 되는데, 문제의 원인과 해결 방법에 대해서는 &lt;a href=&quot;https://nomo.asia/455&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;다음 문서&lt;/a&gt;에서 설명할 것이다.&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>Anaconda</category>
      <category>Pycharm</category>
      <category>Python</category>
      <category>Twitch Plays</category>
      <category>아두이노</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/454</guid>
      <comments>https://nomoasia.tistory.com/454#entry454comment</comments>
      <pubDate>Fri, 31 Jan 2020 03:56:24 +0900</pubDate>
    </item>
    <item>
      <title>PC로 제어가능한 닌텐도 스위치 컨트롤러 제작기 - 1. 아두이노에 POKKEN CONTROLLER 펌웨어 설치하기</title>
      <link>https://nomoasia.tistory.com/452</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://nomo.asia/451&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;앞선 글&lt;/a&gt;에서, PC로 제어가능한 닌텐도 스위치 컨트롤러를 만드는 것을 간략하게 계획하고 부품을 주문했었다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;부품 도착&lt;/h2&gt;&lt;p&gt;부품 도착!!! FT232RL USB to UART(Serial) 모듈과 아두이노 우노 R3 호환보드이다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994A5D405E330F7310&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994A5D405E330F7310&quot; width=&quot;800&quot; height=&quot;600&quot; filename=&quot;20200130_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E391385E330F7303&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E391385E330F7303&quot; width=&quot;800&quot; height=&quot;600&quot; filename=&quot;20200130_2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;아두이노에 POKKEN CONTROLLER 펌웨어 설치하기&lt;/h2&gt;&lt;p&gt;일단 가장 먼저 아두이노에 POKKEN CONTROLLER 를 역설계한 내용을 바탕으로 한 펌웨어를 설치해주어야 했다. 이를 위한 과정은 Youtube 의 Saravanan AL 가 업로드한 &lt;a href=&quot;https://www.youtube.com/watch?v=fSXZMVdO5Sg&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;ARDUINO- Upgrading USB FIRMWARE using FLIP&lt;/a&gt; 라는 제목의 동영상을 참고하여 진행했다.&lt;/p&gt;&lt;h3&gt;1. FLIP 다운로드 및 설치&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;아래의 링크에서 PC에 FLIP 을 다운로드 받아 설치했다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.microchip.com/developmenttools/ProductDetails/FLIP&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.microchip.com/developmenttools/ProductDetails/FLIP&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 251px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993C034A5E33112301&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993C034A5E33112301&quot; width=&quot;500&quot; height=&quot;251&quot; filename=&quot;Screenshot_2020-01-31-FLIP.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 251px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;본인의 PC 환경에 맞는 설치파일을 다운로드 받으면 된다. Windows 환경에서 본인 PC에 자바 런타임이 깔려있지 않거나 잘 모른다면 첫 번째 20MB 짜리 파일을, 자바 런타임이 이미 깔려있다면 두번째 5MB 짜리 파일을 다운받아서 설치하면 된다. (마인크래프트 자바 에디션 하는 사람은 다 자바 런타임 깔려있음)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;설치 방법은 간단했다. 설치 파일을 실행한 후 Next 만 계속 눌러주다 보니 완료되었다.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;2. 아두이노 우노 R3 를 PC에 연결&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;USB 케이블을 이용해 아두이노를 PC에 연결하니 장치관리자에서 아래와 같이 아두이노가 USB 직렬 장치로 잡힌 것을 볼 수 있었다. (환경에 따라 다르게 잡힐 수도 있다).&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 690px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BB76485E3313F001&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BB76485E3313F001&quot; width=&quot;690&quot; height=&quot;601&quot; filename=&quot;20200131_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;3. 아두이노의 DFU 모드 진입&lt;/h3&gt;&lt;p&gt;아두이노의 펌웨어 업데이트를 위해서는 DFU 모드에 진입해야하고 방법은 간단했다. USB 연결이 되어있는 상태로 아래 사진처럼 아두이노의 RESET 핀과 GNU 핀을 드라이버 등을 이용해 잠깐 접촉해주면 된다. 아두이노 보드마다 생김새가 조금씩 다를 수는 있지만 저 위치에 가장 왼쪽 두 개의 핀을 접해주면 된다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EF03335E3312F901&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EF03335E3312F901&quot; width=&quot;800&quot; height=&quot;600&quot; filename=&quot;20200130_230349.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;약 1~2초가 지나면 장치관리자에서 기존 장치가 사라지면 이 때 드라이버를 떼도 된다. 이후 1분 정도가 더 지나 모든 과정이 완료되니 알 수 없는 장치가 준비되었다는 메시지가 나타났다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 690px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997D2F3A5E33152602&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997D2F3A5E33152602&quot; width=&quot;690&quot; height=&quot;601&quot; filename=&quot;20200131_2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;4. 드라이버 설치&lt;/h3&gt;&lt;p&gt;장치관리자에서 [알 수 없는 장치를 우클릭] &amp;gt; [드라이버 업데이트] &amp;gt; [컴퓨터에서 드라이버 소프트웨어 검색] &amp;gt; [FLIP 설치 내 usb 폴더를 선택]하여 드라이버를 설치한다. 경로는 &lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;C:\Program Files (x86)\Atmel\Flip 3.4.7\usb&lt;/span&gt; 또는 &lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;C:\Program Files&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;\Atmel\Flip 3.4.7\usb&lt;/span&gt; 이다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 635px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996FFC455E3315C101&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996FFC455E3315C101&quot; width=&quot;635&quot; height=&quot;461&quot; filename=&quot;20200131_3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;경로를 설정한 후 다음 &amp;gt; 장치 소프트웨어 설치를 완료하자 아래와 같이 기존의 알 수 없는 장치가 사라지고 ATmega16U2 라는 이름으로 표시되었다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 690px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997DF0395E3340E00E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997DF0395E3340E00E&quot; width=&quot;690&quot; height=&quot;601&quot; filename=&quot;20200131_4.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;h3&gt;5. FILP 실행 및 펌웨어 업데이트&lt;/h3&gt;&lt;p&gt;1. 앞에서 설치한 FLIP을 실행하고, 칩셋 모양 버튼을 누른 후 ATmega16U2를 선택했다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 620px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9945B94B5E33178503&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9945B94B5E33178503&quot; width=&quot;620&quot; height=&quot;520&quot; filename=&quot;20200131_5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2. File - Load HEX File 에서 POKKEN CONTROLLER 펌웨어 파일에 해당하는 joystick.hex 파일을 선택했다. 이 파일은 다음 경로에서 다운받을 수 있다. &lt;a href=&quot;https://github.com/ItsDeidara/CommunityController/tree/master/Arduino%20File&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/ItsDeidara/CommunityController/tree/master/Arduino%20File&lt;/a&gt; (참고로 펌웨어 파일은 칩셋에 따라 달리 사용해야하며, 해당 링크에 있는 파일은 2020년 1월 31일 기준으로 동작하는 ATmega16U2 칩셋용 파일이다. 다른 칩셋용 파일은 &lt;a href=&quot;https://github.com/progmem/Switch-Fightstick/network/members&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;이곳&lt;/a&gt;을 뒤지다 보면 찾을 수 있을 것이다.)&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 384px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9995C43B5E33198503&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9995C43B5E33198503&quot; width=&quot;384&quot; height=&quot;215&quot; filename=&quot;20200131_5_2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 707px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9949743D5E3319BA03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9949743D5E3319BA03&quot; width=&quot;707&quot; height=&quot;436&quot; filename=&quot;20200131_5_3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. Settings - Communication - USB 를 누르면 뜨는 창에서 OPEN 을 눌러준다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 620px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99141A385E331A7203&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99141A385E331A7203&quot; width=&quot;620&quot; height=&quot;160&quot; filename=&quot;20200131_5_4.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 250px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9955F94E5E331A8E03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9955F94E5E331A8E03&quot; width=&quot;250&quot; height=&quot;100&quot; filename=&quot;20200131_5_5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. 그럼 아래 그림과 같은 창이 나타날텐데, Run 버튼을 누르면 펌웨어 덮어쓰는 것을 시작한다. 정상적으로 되었다면 창 좌측 하단에 Verify PASS 라고 표시될 것이다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 620px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F0F4335E33191503&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F0F4335E33191503&quot; width=&quot;620&quot; height=&quot;520&quot; filename=&quot;20200131_6.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 620px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A0C9465E331ACD03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A0C9465E331ACD03&quot; width=&quot;620&quot; height=&quot;520&quot; filename=&quot;20200131_7.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;6. USB 재연결 및 POKKEN CONTROLLER 로 장치가 잡히는지 확인&lt;/h3&gt;&lt;p&gt;PC와 아두이노 간 USB 연결을 해제했다가 PC에 재연결하여 DFU 모드를 해제했다. 만약 문제가 없다면 POKKEN CONTROLLER 의 드라이버가 설치되었다는 메시지가 나타날 것이다.&lt;/p&gt;&lt;p&gt;장치관리자에서는 아래와 같이 나타났다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 666px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99816F3A5E331BE204&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99816F3A5E331BE204&quot; width=&quot;666&quot; height=&quot;543&quot; filename=&quot;20200131_8.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 479px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995AF34D5E331BE203&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995AF34D5E331BE203&quot; width=&quot;479&quot; height=&quot;525&quot; filename=&quot;20200131_9.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Window 키를 누르면 나오는 검색창에 [USB 게임 컨트롤러 설정] 라고 치면 나오는 제어판 메뉴에서도 확인할 수 있었다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 784px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9959104E5E331BE203&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9959104E5E331BE203&quot; width=&quot;784&quot; height=&quot;636&quot; filename=&quot;20200131_10.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 457px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9998F03B5E331BE203&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9998F03B5E331BE203&quot; width=&quot;457&quot; height=&quot;377&quot; filename=&quot;20200131_11.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;기존에는 없던 POKKEN CONTROLLER 가 새로 생겼다! 아두이노에 펌웨어 설치가 완료된 것이다!&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://nomo.asia/454&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;다음 문서&lt;/a&gt;에서는 PC에서의 컨트롤러 제어를 위한 Python 개발 환경을 구축하는 것에 대해 정리하였다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>Flip</category>
      <category>POKKEN CONTROLLER</category>
      <category>TWITCH</category>
      <category>Twitch Plays</category>
      <category>아두이노</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/452</guid>
      <comments>https://nomoasia.tistory.com/452#entry452comment</comments>
      <pubDate>Fri, 31 Jan 2020 03:13:16 +0900</pubDate>
    </item>
    <item>
      <title>새로운 목표 - PC로 제어가능한 닌텐도 스위치 컨트롤러 만들기</title>
      <link>https://nomoasia.tistory.com/451</link>
      <description>&lt;p&gt;닌텐도 스위치의 신작 &lt;b&gt;&quot;모여봐요 동물의 숲&quot;&lt;/b&gt;이 2020년 3월 20일에 출시될 예정이다. 지금으로부터 약 한 달 반 후이다. 얼마 전 &lt;a href=&quot;https://www.youtube.com/watch?v=l8AgyS2su8U&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;시연 동영상&lt;/a&gt;을 보았는데 일단 시연상으로는 조작이 복잡하지 않고 시점이 고정되어 있어 &lt;a href=&quot;https://www.twitch.tv/directory/game/Twitch%20Plays&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Twitch Plays&lt;/a&gt; 처럼 커뮤니티 플레이를 하기 좋아보이는 점들이 몇 가지 있었다.&lt;/p&gt;&lt;p&gt;Twitch Plays 란 트위치 채팅창에 left, right 등의 지정된 키워드를 입력하면 게임 컨트롤러의 해당 키가 눌려, 시청자들이 채팅 참여를 통해 함께 플레이를 할 수 있는 것을 말한다. 이에 대한 상세한 이해는 &lt;a href=&quot;https://namu.wiki/w/Twitch%20Plays%20Pok%C3%A9mon&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;나무위키의 Twitch Plays Pokémon 문서&lt;/a&gt; 참고. 최근 라이브 채팅을 인식하여 시청자들이 이상형 월드컵에 투표할 수 있는 시스템을 javascript 로 만든 경험이 있는데, 나름 흥미로워서 저런 것도 한 번 직접 만들어보고 싶다는 생각이 들었다. 마침 예전에 TV 녹화를 할 때 쓰던 캡쳐보드도 있어서 닌텐도 스위치를 방송에 띄울 수 있는 환경은 갖춰져있다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이미 경험이 있기에 채팅을 읽는 것은 크게 어려운 일이 아니나, 문제는 Nintendo Switch의 입력을 PC에서 컨트롤하는 것이었다. 가장 무식한 방법은 조이콘을 분해하여 접점에 직접 신호를 가하거나 서보모터를 이용해 물리적으로 조이콘의 버튼을 누르는 것이겠으나, 활용 가능한 많은 오픈소스 코드들이 이미 github에 있었다.&lt;br /&gt;&lt;/p&gt;&lt;ul class=&quot;slim&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/progmem/Switch-Fightstick&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;progmem / Switch-Fightstick&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/jake-white/PCtoSwitch&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;jake-white / PCtoSwitch &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/wchill/SwitchInputEmulator&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;wchill / SwitchInputEmulator&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/lulzsun/SwitchKBMEmulator&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;lulzsun / SwitchKBMEmulator &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/ebith/Switch-Fightstick&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;ebith / Switch-Fightstick &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/ItsDeidara/CommunityController&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;ItsDeidara / CommunityController&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;HORIPAD 또는 Pokken Tournament Pro Pad 라는 이름의 스위치 호환 컨트롤러를 리버스 엔지니어링한 내용을 바탕으로, 아두이노를 해당 컨트롤러로 인식시켜 기능을 구현하는 듯하다. 훑어보니 대략적인 계획이 세워졌다. 일단 작업을 최소한으로 줄이기 위하여, 애초에 Twitch Plays 를 위한 목적으로 개발된 가장 마지막의 CommunityController 를 기본으로 참고할 것이다. 다만 아두이노-시리얼 송수신-라즈베리파이-PC 의 구조를 사용하지 않고, USB(PC) to Serial 을 활용해 라즈베리파이 없이 PC로 아두이노를 바로 제어할 계획이다.&lt;/p&gt;&lt;p&gt;서랍을 뒤져보니 예전에 아두이노를 가지고 놀 때, 그리고 졸업작품을 만들 때 구매해뒀던 부품들이 꽤 있었다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996E7F4C5E2FB52D0F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996E7F4C5E2FB52D0F&quot; width=&quot;800&quot; height=&quot;600&quot; filename=&quot;1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;예전에 PC에서 원격으로 리모콘 송수신을 하기위해 사뒀던 PL-2303HX 칩셋의 USB to TTL 보드가 있었지만, 당시 몇가지 고생을 했던 기억이 있어서 그래도 괜찮은 편이라고 알려진 FT232 칩셋의 제품을 새로 구매해 사용해보기로 했다. 그리고 아두이노 우노도 호환 보드로 새로 샀다. 일단 문서에서 시키는대로 아두이노 우노로 해보고, 잘 되면 다른 도전을 해볼 생각이다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 777px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994E2E425E2FB52D05&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994E2E425E2FB52D05&quot; width=&quot;777&quot; height=&quot;216&quot; filename=&quot;2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;이런저런 아이디어가 많으나, 일단 기본 기능들이 잘 동작하는 것을 먼저 확인한 후에 기능을 구현할 예정이다.&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;미국 NIST(표준기술연구소)의 시간을 화면에 띄우기 (딜레이 확인용)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;짧은 주기의 화면 캡쳐 및 캡쳐된 이미지 분석을 통해&lt;br /&gt;1. 게임 종료 시도를 인식 및 차단&lt;br /&gt;2. 게임 내 선택지가 존재하는 경우 이를 인식, 투표 시스템을 도입하여 시청자 투표로 고를 수 있게함.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; 주기적으로 게임을 자동 저장하기&lt;br /&gt;&lt;/li&gt;&lt;li&gt;별도의 통계 페이지 만들기 (채팅 입력 수, 플레이 시간, 입력된 명령어 수 등)&lt;/li&gt;&lt;li&gt;도네이션을 받아 특정 사용자에게 일정 시간 제어 권한 양도하기 (Max. n분)&lt;br /&gt;딜레이를 감안하여 도네이션 후 n초 후 부터 권한 양도 시작 (시작/종료 시간을 표시)&lt;br /&gt;1분 간 아무런 입력이 없을 시 권한 해제됨&lt;br /&gt;누적된 예약 시간에 따라 제어에 필요한 가격이 상승&lt;/li&gt;&lt;li&gt;편하게 명령어 입력이 가능한 브라우저 확장기능 개발 (클릭으로 명령어 입력, 명령어 자동완성, 채팅에서 명령어 표시 ON/OFF 등)&lt;/li&gt;&lt;li&gt;Anarchy, Democracy 모드 전환&lt;/li&gt;&lt;li&gt;커맨드 투표 현황을 시각화 (예: 캐릭터의 전후좌우에 화살표를 표시하고, 투표 정도에 따라 회색-파란색-빨간색 으로 표시)&lt;/li&gt;&lt;li&gt;스페셜 이벤트 - 매 정각에 임의의 유저에게 n분간 권한을 위임&lt;br /&gt;1분간 아무 입력 없을 시 권한 해제됨&lt;/li&gt;&lt;li&gt;Joycon 을 PC에 연결하여 직접 조작한 움직임을 레코딩, 아두이노 컨트롤러로 보내기&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;주말밖에 시간이 없을 것 같은데 3월 20일까지 구현 가능할지가 의문이다. 그리고 게임이 나와봐야 할겠지만 커뮤니티 플레이에 적합한 게임일지도 궁금하기는 하다. 아무래도 게임에 맞게 명령어를 커스텀해야 하는 과정도 있으니 시간이 더 걸릴 수도 있을듯하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음 글: &lt;a href=&quot;https://nomo.asia/452&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;PC로 제어가능한 닌텐도 스위치 컨트롤러 제작기 - 1. 아두이노에 POKKEN CONTROLLER 펌웨어 설치하기&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발</category>
      <category>TWITCH</category>
      <category>Twitch Plays</category>
      <category>아두이노</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/451</guid>
      <comments>https://nomoasia.tistory.com/451#entry451comment</comments>
      <pubDate>Tue, 28 Jan 2020 07:19:13 +0900</pubDate>
    </item>
    <item>
      <title>웹브라우저 client 에서 NSFW 이미지 감지를 위한 js 라이브러리 정리</title>
      <link>https://nomoasia.tistory.com/450</link>
      <description>&lt;p&gt;웹브라우저 client 단에서 NSFW(Not Safe For Work) 또는 누드 이미지를 감지할 수 있는 두가지 자바스크립트 라이브러리에 대해 정리해보았다. 이러한 것을 조사한 개인적인 이유는 채팅에 올라오는 이미지의 NSFW 여부를 판별하여 자동으로 노출/숨김 처리를 할 수 있는 브라우저 확장기능의 개발을 위해서이다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;nude.js&lt;/h2&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 95px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99958C415E24AAEF06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99958C415E24AAEF06&quot; width=&quot;500&quot; height=&quot;95&quot; filename=&quot;nude js Nudity detection with JavaScript and HTMLCanvas.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 500px; height: 95px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;Github 링크: &lt;a href=&quot;https://github.com/pa7/nude.js/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/pa7/nude.js/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;데모 페이지: &lt;a href=&quot;https://www.patrick-wied.at/static/nudejs/demo/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.patrick-wied.at/static/nudejs/demo/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;이미지(또는 비디오)에 사람의 피부색에 해당하는 픽셀 영역을 분석하여 누드 이미지인지를 판별한다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위 라이브러리는 2005년에 발표된 &lt;a href=&quot;https://sites.google.com/a/dcs.upd.edu.ph/csp-proceedings/Home/pcsc-2005/AI4.pdf?attredirects=0&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;이 &lt;/a&gt;&lt;a href=&quot;https://sites.google.com/a/dcs.upd.edu.ph/csp-proceedings/Home/pcsc-2005/AI4.pdf?attredirects=0&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;논문&lt;/a&gt;을 기반으로 만들어졌는데, 논문에서 주장하는 탐지율은 92%, 오탐지율은 9% 이다. 하지만 해당 논문에 나와있는 모든 알고리즘이 위 라이브러리에 적용되어 있지는 않아서 라이브러리 자체의 탐지율은 60% 수준이라고 한다.&lt;/p&gt;&lt;h3&gt;장단점&lt;/h3&gt;&lt;p&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;빠르다.&lt;/li&gt;&lt;li&gt;간단하다.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;부정확하다. 주로 판단하는 것은 픽셀의 색깔이기 때문에, 단순히 신체의 일부분이 클로즈업 된 사진이나 피부색과 비슷한 모래 사진 등도 누드 이미지로 판별하는 경우가 있다.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;알고리즘&lt;/h3&gt;&lt;p&gt;라이브러리는 이미지 또는 비디오를 html5 canvas 로 변환하여 canvas 의 getImageData 함수를 이용해 픽셀 데이터를 가져온 후, 이를 분석하여 피부톤 이미지인지를 판별한다. 직접 사용해보니 이미지 크기가 수천px * 수천px 정도로 많이 큰 경우 계산에 꽤 오랜 시간이 걸리므로 적절히 리사이즈 해주는 것이 중요했다.&lt;/p&gt;&lt;p&gt;라이브러리에 적용된 누드(피부톤) 이미지 분류 알고리즘은 아래와 같다.&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;이미지를 분석하여 피부색에 해당하는 픽셀을 찾고, 찾은 픽셀들이 연결된 각각의 영역을 구분한다.&lt;/li&gt;&lt;li&gt;찾은 피부톤 영역 중 픽셀이 연결된 가장 큰 3개의 영역을 찾는다.&lt;/li&gt;&lt;li&gt;아래의 알고리즘을 따라 누드 이미지인지 판단한다.&lt;br /&gt;&lt;/li&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;피부색에 해당하는 픽셀이 차지하는 비율이 이미지 전체 픽셀의 15% 미만인 경우 이미지는 누드가 아니다. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;가장 큰 피부 영역의 픽셀 수가 전체 피부 픽셀의 35% 미만이고, 두번 째 영역이 30% 미만이고, 세번 째 영역이 30% 미만인 경우 이미지는 누드가 아니다.&lt;/li&gt;&lt;li&gt;가장 큰 피부 영역의 픽셀 수가 전체 피부색에 해당하는 픽셀의 45% 미만인 경우, 이미지는 누드가 아니다.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;만약 총 피부 영역의 개수가 60개 이상인 경우, 이미지는 누드가 아니다.&lt;/li&gt;&lt;li&gt;위 4가지 경우에 해당되지 않는 경우, 이미지는 누드이다.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;p&gt;라이브러리에서 생략된 부분은 아래와 같다.&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;가장 큰 3개의 피부 영역에서 각각 가장 왼쪽, 가장 오른쪽, 가장 위쪽, 가장 아래쪽 픽셀을 찾아 총 12개의 꼭지점로 구성된 다각형을 구성한다. 이 영역을 경계 폴리곤(bounding polygon) 이라고 부른다. (논문에 경계 폴리곤의 정의가 정확하게 기재되어 있지 않아서 임의로 추정한 것이다.)&lt;/li&gt;&lt;li&gt;만약 총 피부 픽셀이 전체 픽셀의 30% 미만이고, 경계 폴리곤 내에 있는 피부 픽셀이 경계 폴리곤 내 전체 픽셀의 55% 미만인 경우 이미지는 누드가 아니다.&lt;/li&gt;&lt;li&gt;만약 총 피부 영역의 개수가 60개 이상이고, 경계 폴리곤 내 average intensity 가 0.25 미만인 경우 이미지는 누드가 아니다. (average intensity 의 정의가 무엇인지에 대해서도 논문에 명확히 기재되어 있지 않다. 단순히 폴리곤 내의 스킨 픽셀 수/폴리곤 내의 전체 픽셀 수 는 아닌 것 같고 평균 색상을 나타내는 것 같은데 정확히는 모르겠다.)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;nsfw.js&lt;br /&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 200px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B7F3445E24AAEF06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B7F3445E24AAEF06&quot; width=&quot;500&quot; height=&quot;200&quot; filename=&quot;nsfwjs_logo.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 200px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;Github 링크: &lt;a href=&quot;https://github.com/infinitered/nsfwjs&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/infinitered/nsfwjs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;데모 페이지: &lt;a href=&quot;https://nsfwjs.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://nsfwjs.com/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;TensorFlow.js 를 이용하여 NSFW 이미지를 감지한다. (알고리즘 분석은 별도로 하지 않았다.)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;머신러닝을 기반으로 하는만큼 학습된 model 데이터를 필요로한다. NSFW 이미지 판별을 위한 모델 데이터는 넘쳐나기 때문에, 그냥 제공되는 것을 아무거나 가져다가 쓰면 된다.&lt;/p&gt;&lt;h3&gt;장단점&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;타 방법에 비해 상대적으로 정확하다 (약 90%).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;초기 모델 로딩에 시간이 걸린다 (2.5MB 모델의 경우 약 5초)&lt;/li&gt;&lt;li&gt;모델 크기가 부담될 수 있다 (작은 모델의 경우 약 2.5MB, 큰 모델의 경우 약 17MB)&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;그 외&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;여러 기관/업체에서 제공하는 api 를 이용할 수 있다. 온전히 client 에서만 돌아가는 것은 아니지만, 단순 호출만 하면 된다는 점에서는 편리한 방법이다.&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;참고할만한 링크: &lt;a href=&quot;https://rapidapi.com/collection/nudity-detection-image-moderation-api&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://rapidapi.com/collection/nudity-detection-image-moderation-api&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;대부분의 api 는 월 300 ~ 10,000회 까지의 호출은 무료이나 정해진 횟수를 초과하면 비용을 지불해야한다. Google Vision API 로도 이미지의 nsfw 여부를 판별할 수 있는데, 월 1,000회까지 무료이고 이후 1,000개당 $1.5 의 비용을 지불해야한다. 그 외의 곳들은 좀 더 저렴하다.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;다만 client 에서 호출하는 경우 여러 client 에서 같은 이미지에 대해 반복적으로 api 호출을 하는 것은 매우 큰 낭비이기 때문에 호출 여부와 결과값 저장을 위한 별도의 캐시 서버가 필요할 것이다. 그런데 이렇게 하자니 그냥 가져다 쓰기만 하면 되는 NSFW Detiection 툴이 이미 많기 때문에, 아예 서버에 nsfw 이미지 판별을 위한 시스템을 구축하는 것이 비용적인 측면에서는 조금 더 저렴할 것이다.&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발/JavaScript</category>
      <category>Machine Learning</category>
      <category>nsfw detection</category>
      <category>nudity detection</category>
      <category>TensorFlow</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/450</guid>
      <comments>https://nomoasia.tistory.com/450#entry450comment</comments>
      <pubDate>Mon, 20 Jan 2020 02:30:15 +0900</pubDate>
    </item>
    <item>
      <title>Monster Hunter World Iceborn - Restore character from broken save file</title>
      <link>https://nomoasia.tistory.com/449</link>
      <description>&lt;p&gt;&lt;span class=&quot;tlid-translation translation&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot; class=&quot;&quot;&gt;한국어 버전 포스팅: &lt;a href=&quot;https://nomo.asia/448&quot; target=&quot;_top&quot; class=&quot;tx-link&quot;&gt;https://nomo.asia/448&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;tlid-translation translation&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot; class=&quot;&quot;&gt;With the release of Monster Hunter World Iceborn, I returned to Monster Hunter in about a year, but the following message appeared and the game didn't start properly.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A1E2465E17D4472B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A1E2465E17D4472B&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;9981214B5E1792BB09.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;tlid-translation translation&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot; class=&quot;&quot;&gt;&lt;span class=&quot;tlid-translation translation&quot; tabindex=&quot;-1&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot; class=&quot;&quot;&gt;Failed to read saved data for Monster Hunter: Iceborne. Create new save data?&lt;/span&gt;&lt;span title=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;tlid-translation translation&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot; class=&quot;&quot;&gt;&lt;span class=&quot;tlid-translation translation&quot; tabindex=&quot;-1&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot;&gt;&lt;span class=&quot;tlid-translation translation&quot; tabindex=&quot;-1&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot; class=&quot;&quot;&gt;The error persisted even after pressing No, I found a way to solve the problem after forcibly quitting the game without initializing the saved data.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;So I restored my character by unofficial way.&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;I will not be responsible for any problems that may occur using the following methods.&lt;/span&gt;&lt;br /&gt;If you have initialized the save file, or if the modified date of the save file is today, this method may not work. The modified date of my save file was September 15, 2018.&lt;br /&gt;&lt;br /&gt;1. backup and copy your old save data from C:\Program Files (x86)\Steam\userdata\[????]\582010\remote or &lt;a href=&quot;https://store.steampowered.com/account/remotestorageapp/?appid=582010&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://store.steampowered.com/account/remotestorageapp/?appid=582010&lt;/a&gt;&lt;br /&gt;2. download MHWSaveTransfer from &lt;a href=&quot;https://www.nexusmods.com/monsterhunterworld/mods/751?tab=files&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.nexusmods.com/monsterhunterworld/mods/751?tab=files&lt;/a&gt;&lt;br /&gt;3. download normal save data from &lt;a href=&quot;https://www.nexusmods.com/monsterhunterworld/mods/1886?tab=files&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.nexusmods.com/monsterhunterworld/mods/1886?tab=files&lt;/a&gt;&lt;br /&gt;I will move my character to this file.&lt;br /&gt;4. run MHWSaveTransfer&lt;br /&gt;5. File - Open SaveData - Select normal save data in step 3&lt;br /&gt;6. Change SteamID to yours. The number in your profile page address url is your SteamID.&lt;br /&gt;7. File - Import Save Data - Select your old save data in step 1&lt;br /&gt;8. Use drag and drop to move your character to the left.&lt;br /&gt;9. File - Save SaveData - Save file to any directory and copy to C:\Program Files (x86)\Steam\userdata\[????]\582010\remote&lt;br /&gt;10. run game&lt;br /&gt;11. Since the settings have been initialized, and errors related to keyboard settings may occur. You need to reset the settings. You need to change language setting first and reset the settings. (tip: Ja = yes)&lt;br /&gt;12. done.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AA66485E17D42529&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AA66485E17D42529&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;582010_20200110051906_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;tlid-translation translation&quot; tabindex=&quot;-1&quot; lang=&quot;en&quot;&gt;&lt;span title=&quot;&quot;&gt;I confirmed that my character recovered well, and then removed character 123 from the game.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px; width: 800px; height: 450px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994A264D5E17EC950B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994A264D5E17EC950B&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;582010_20200110105333_1.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 800px; height: 450px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;If this method does not work properly, you can try the methods introduced in the following link. &lt;a href=&quot;https://steamcommunity.com/app/582010/discussions/0/1737760710130292162/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://steamcommunity.com/app/582010/discussions/0/1737760710130292162/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>게임</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/449</guid>
      <comments>https://nomoasia.tistory.com/449#entry449comment</comments>
      <pubDate>Fri, 10 Jan 2020 10:37:04 +0900</pubDate>
    </item>
    <item>
      <title>몬스터헌터 월드 아이스본 - 파손된 세이브 파일에서 내 캐릭터 복구하기</title>
      <link>https://nomoasia.tistory.com/448</link>
      <description>&lt;p&gt;&lt;b&gt;본 문제는 2020년 1월 17일 Ver.10.12.01 에서 수정되었습니다. &lt;/b&gt;(맘-타로트가 추가된 2018년 10월 30일(UTC 23:00)의 업데이트보다 이전의 상태로 플레이했던 저장 데이터를 Ver.10.12.00에 업데이트 한 경우 저장 데이터를 인계할 수 없는 오류가 수정됨.)&lt;/p&gt;&lt;p&gt;따라서 현 시점에서 클라이언트를 최신 버전으로 업데이트 한 경우 본 글에서 나타난 문제는 발생하지 않을 것입니다. 다만 본 글에 기재한 것과 다른 원인으로 저장 데이터가 파손될 시 동일한 오류 메시지가 출력될 수 있으며, 본 글에 적은 방법으로 해결을 보장하지 않으므로 참고바랍니다.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;hr&gt;&lt;/div&gt;&lt;h2&gt;문제 발생&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;스팀판(PC) 몬스터헌터 월드 아이스본의 출시로 대략 1년만에 몬스터헌터에 복귀했는데, 아래와 같은 메시지가 나타나며 게임 시작이 제대로 되지 않았다. &lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9981214B5E1792BB09&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9981214B5E1792BB09&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;582010_20200110034717_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Monster Hunter World: Iceborne 의 저장 데이터가 파손되어 데이터를 읽어 들이지 못했습니다. 저장 데이터를 초기화하시겠습니까?&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;참고로 위 화면이 나왔을 때 절대 &quot;예&quot;를 눌러서는 안 된다.&lt;/span&gt;&lt;/b&gt; 내 경우 아니오를 눌러도 계속 같은 에러가 나타나길래, 일단 저장 데이터를 초기화하지 않고 게임을 강제 종료 한 후 문제를 해결할 수 있는 방법을 찾았다.&lt;/p&gt;&lt;p&gt;이와 같은 문제가 생긴 원인은, 확실한 근거는 없지만 너무 오래된 세이브 파일이어서 버전 마이그레이션 문제가 생긴 것으로 추정된다. 꾸준히 게임을 실행해 즐겨왔다면 세이브 파일 구조가 바뀔 때 자연스럽게 마이그레이션이 됐을 것이므로 문제가 없었을 것이다. 물론 버전 차이가 많이 나더라도 정상적으로 마이그레이션 되어야 하는 것이 정상이다. 이번 아이스본 출시로 세이브 파일 구조가 또 바뀐 것 같은데, 오래된 세이브 파일에 대한 마이그레이션을 제대로 지원하지 않는 문제가 있는 것 같다. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;내 경우 스팀 클라우드에 기록된 세이브 파일의 마지막 저장 날짜는 2018년 9월으로 체크됐다. 당시 별도의 모드는 사용하지 않았었다. 내가 실제로 세이브 파일이 파손되었다고 생각하기 않는 이유는, 게임이 2018년 9월 당시부터 현재까지 삭제 없이 계속 설치된 상태로 유지한 것이라서 그렇다.&lt;/p&gt;&lt;h2&gt;실패한 시도들&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;게임 재설치 / 무결성 검사 / 스팀 오프라인 모드로 실행 / 게임 실행 전 랜선 뽑기 / 아이스본 dlc 를 비활성한 상태로 실행 / 클라우드에 저장된 세이브 파일을 덮어씌운 후 실행 / 세이브 폴더를 모두 날리고 새롭게 설정 후 기존 세이브 파일을 다시 덮어쓰기&lt;/p&gt;&lt;p&gt;위와 같은 시도를 했으나 캐릭터를 복구하지 못했다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;아래에서는 파손된 세이브 파일에서 내 캐릭터를 복구하기 위한 두 가지 방법을 소개할 것이다.&lt;/b&gt;&lt;/p&gt;&lt;h2&gt;문제 해결 방법&lt;br /&gt;&lt;/h2&gt;&lt;h3&gt;내가 찾은 문제 해결 방법&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;!주의&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;! 다음의 방법을 따라하며 생길 수 있는 어떠한 문제에 대해서도 글쓴이는 책임지지 않음.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;내가 찾은 문제 해결 방법은 &lt;b&gt;정상적으로 동작하는 세이브 파일에 나의 캐릭터를 옮기는 것&lt;/b&gt;이다. 이 방법은 세이브 파일을 초기화 하지 않은 상태이고(or 백업본이 존재하고), 실제로 심각하게 세이브 파일이 손상되지 않은 경우라면 문제없이 가능할 것이라 생각된다. 이를 위해 어떤 계정의 캐릭터를 다른 계정으로 옮기기 위한 목적으로 개발된 MHWSaveTransfer 라는 툴을 이용할 것이다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. C:\Program Files (x86)\Steam\userdata\[당신의유저번호]\582010\remote 에서 SAVEDATA1000 라는 이름으로 저장된 세이브 파일을 별도의 경로에 백업한다.&lt;br /&gt;또는 &lt;a href=&quot;https://store.steampowered.com/account/remotestorageapp/?appid=582010&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://store.steampowered.com/account/remotestorageapp/?appid=582010&lt;/a&gt; 에서 클라우드에 저장된 세이브 파일을 다운로드 받는다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. &lt;a href=&quot;https://www.nexusmods.com/monsterhunterworld/mods/751?tab=files&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.nexusmods.com/monsterhunterworld/mods/751?tab=files&lt;/a&gt; 에서 MHWSaveTransfer 를 다운받는다.&lt;br /&gt;참고로 다운로드를 위해서는 넥서스모드의 회원가입을 필요로한다. 로그인 후 위 링크의 페이지에서 Manual download - Slow download 순서로 클릭해 다운받을 수 있다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. &lt;a href=&quot;https://www.nexusmods.com/monsterhunterworld/mods/1886?tab=files&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.nexusmods.com/monsterhunterworld/mods/1886?tab=files&lt;/a&gt; 에서 정상적으로 동작하는 세이브 파일을 다운받는다. 해당 링크가 접속되지 않는다면 아래의 파일을 이용하자.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/9903CA445E99C69709&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;iceborne ready-1886-1-1577487016.rar&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;4. 다운받은 MHWSaveTransfer 를 실행한다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. File - Open SaveData - step 3에서 다운받은 정상적인 세이브 파일을 선택한다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 282px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F2C3435E17958C09&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F2C3435E17958C09&quot; width=&quot;500&quot; height=&quot;282&quot; filename=&quot;K-20200110-217850.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 282px;&quot;/&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6. SteamID 부분을 클릭하여 내 스팀 ID 로 변경한다. 나의 스팀 아이디는 내 스팀 프로필 page 의 url 에 표시된 숫자이다.&lt;br /&gt;스팀 우측 상단 내 아이디 클릭 - 내 프로필 보기 - 페이지 배경 아무곳이나 오른쪽 클릭 후 URL 복사를 선택하면 된다.&lt;br /&gt;예) https://steamcommunity.com/profiles/[여기있는 숫자]/&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 281px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9994F23B5E17958C0A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9994F23B5E17958C0A&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;K-20200110-217984.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 281px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;7. File - Import Save Data - step 1에서 백업한 내 세이브 파일을 불러온다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 283px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998CAC425E17958C08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998CAC425E17958C08&quot; width=&quot;500&quot; height=&quot;283&quot; filename=&quot;K-20200110-218110.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 283px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;8. 우측에 표시된 옮기고 싶은 내 캐릭터를 드래그하여 왼쪽으로 이동시킨다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 281px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9970A73A5E17958C0A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9970A73A5E17958C0A&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;K-20200110-218196.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 281px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;9. File - Save SaveData - 파일을 다음의 경로에 SAVEDATA1000 라는 이름으로 저장한다. C:\Program Files (x86)\Steam\userdata\[당신의유저번호]\582010\remote&lt;/p&gt;&lt;p&gt;10. 게임을 실행한다. 키보드 설정 등이 초기화 될 수 있으며, 그냥 계속 넘기면 된다. 내 경우 10초정도 게임이 잠깐 멈췄었는데 길게는 2~3분까지 게임이 멈춘 사람도 있다고한다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;11. 설정 등이 다운받은 세이브파일의 것으로 덮어씌워졌으므로 새로 설정해주어야 한다. 다운로드 받았던 세이브파일의 언어는 독일어이므로, 일단 option 메뉴에서 언어 설정부터 한국어로 바꾸어 준 후 설정을 초기화하면 된다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A972415E17947A0A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A972415E17947A0A&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;582010_20200110051744_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;참고로 언어를 바꿀 때는 왼쪽의 Ja 를 눌러주면 된다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;12. 정상 실행 완료.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E9EA445E1793E509&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E9EA445E1793E509&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;582010_20200110051906_1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;내 경우에는 테스트를 위해 다운받은 세이브파일에 있던 123 이라는 캐릭터를 살렸는데, 저게 한 슬롯을 차지하는 것이 마음에 들지 않는다면 그냥 게임 내에서 지워주면 될 것이다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px; width: 800px; height: 450px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990A37355E17EC7408&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990A37355E17EC7408&quot; width=&quot;800&quot; height=&quot;450&quot; filename=&quot;582010_20200110105333_1.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 800px; height: 450px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;제대로 아이스본 튜토리얼과 퀘스트를 받아왔고 정상적인 게임 플레이가 가능하였다. 시점  설정, 숏컷 등 캐릭터 별 설정도 전부 보존되어서 게임 플레이에 문제는 전혀 없었다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;혹시 이 방법으로 제대로 복구가 되지 않는다면, 위에서 다운받은 세이브 파일을 이용하여 게임을 즐기는 것도 하나의 선택이 될 것이다. 해당 세이브 파일은 아이스본 확장팩을 시작할 모든 준비가 되어있는 파일이라고 한다. MHWSaveTransfer 에서 캐릭터를 우클릭하면 캐릭터 성별, 캐릭터 이름, 아이루 이름 변경이 가능하다. 외형 변경은 MHWAppearanceEditor(&lt;a href=&quot;https://www.nexusmods.com/monsterhunterworld/mods/486&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://www.nexusmods.com/monsterhunterworld/mods/486&lt;/a&gt;)를 다운받으면 가능하나, 아이스본 설치 후 1회의 캐릭터 및 아이루 외형 변경이 가능한 것으로 보이므로 꼭 이 툴을 이용할 필요까지는 없을 듯하다.&lt;/p&gt;&lt;h3&gt;시도해볼만한 다른 방법&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://steamcommunity.com/app/582010/discussions/0/1737760710130292162/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://steamcommunity.com/app/582010/discussions/0/1737760710130292162/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;시도해볼만한 다른 방법은 스팀 유저 AFK4LYF가 새롭게 제안한 방법으로, 출처인 위 링크에 들어가면 설명을 볼 수 있다(영문). 방법을 요약하면 아이스본이 출시되기 전의 구버전 게임 클라이언트를 설치하여, 해당 버전에서 기존 세이브파일을 로드한 뒤 다시 한 번 세이브하여 migration 한 후 다시 아이스본을 실행하는 방식이다. 나도 처음에 이 방법을 시도했었는데, 당시 download_depot 에 필요한 적절한 Manifests 번호를 찾지 못해 직접 시도해보지는 못했었다. 내가 직접 시도해보지는 않았지만 충분히 실행 가능성이 있는 방법이다.&lt;/p&gt;&lt;p&gt;즉 [오리지널 구버전] -&amp;gt; [아이스본] 으로 바로 세이브 파일 구조가 마이그레이션 되지 않으므로, [오리지널 구버전] -&amp;gt; [오리지널 마지막 버전] -&amp;gt; [아이스본] 순서로 세이브 파일 구조를 마이그레이션 하는 것이다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;대략적인 설명은 아래와 같다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. window키 + R 을 누르면 나오는 실행창에 &lt;span style=&quot;background-color: rgb(250, 236, 197); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;steam://nav/console&lt;/span&gt; 라고 입력한 후 확인을 누르면 스팀의 콘솔창이 뜬다.&lt;/p&gt;&lt;p&gt;2. &lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace; background-color: rgb(250, 236, 197);&quot;&gt;download_depot 582010 582011 5080591846956782264&lt;/span&gt; 라고 입력하여, 구버전 파일을 다운로드 받는다. &lt;br /&gt;대기열이 뜨지 않으므로 언제 다운로드가 완료되었는지 확인할 수 없다. 따라서 트래픽이 0이 될 때까지 기다리거나 그냥 느긋하게 기다리면 된다.&lt;br /&gt;다운받은 파일은 [steam install folder]\steamapps\content\app_582010\depot_582011 경로에 저장된다.&lt;/p&gt;&lt;p&gt;3. 스팀의 dlc 관리에서 iceborne DLC를 선택 취소한다.&lt;/p&gt;&lt;p&gt;4. 다운로드 받은 파일을 몬스터헌터 설치 폴더에 덮어쓴다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. 바로 게임을 실행한다. 업데이트를 할 수 없도록 하는 조치는 필요없었다고 한다. 혹시 자동으로 업데이트 된다면 랜어댑터를 잠시 끄거나 랜케이블을 뽑고 오프라인 모드로 실행하면 될듯하다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6. 캐릭터를 로드하고, 다시 저장한 후 게임을 종료한다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7. 무결성 검사를 실행하여 최신 패치를 내려받은 후, dlc 를 활성화하고 다시 게임을 실행한다.&lt;/p&gt;&lt;p&gt;8. 완료.&lt;br /&gt;&lt;/p&gt;</description>
      <category>게임</category>
      <category>몬스터헌터</category>
      <category>몬스터헌터 월드 아이스본</category>
      <category>아이스본</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/448</guid>
      <comments>https://nomoasia.tistory.com/448#entry448comment</comments>
      <pubDate>Fri, 10 Jan 2020 06:08:23 +0900</pubDate>
    </item>
    <item>
      <title>DAFUL의 Numerical Damping 효과 줄이기</title>
      <link>https://nomoasia.tistory.com/447</link>
      <description>&lt;p&gt;얼마 전 지인으로부터 DAFUL 로 구성한 동역학 모델의 해석 결과와 MATLAB 수식으로 작성한 모델의 결과에 차이가 있어 이유를 분석해달라는 부탁을 받았다. 결과적으로 말하자면 DAFUL 의 Numerical Damping 때문에 차이가 발생한 것이었다.&lt;/p&gt;&lt;p&gt;본 문서에서는 Numerical Damping 이 무엇인지, 그리고 이 효과를 어떻게 줄이는지에 대해 설명하고자 한다.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Numerical Damping 이란 무엇인가?&lt;/h2&gt;&lt;p&gt;&lt;b&gt;Numerical Damping&lt;/b&gt; 이란 우리나라 말로 &lt;b&gt;수치 감쇠&lt;/b&gt;라고 불린다. 이것은 시간 영역에서의 동역학 해석, 즉 &lt;b&gt;시간 적분 시 고주파 성분의 영향을 줄이고 시스템의 안정성을 높여 해석 속도 향상을 도모하기 위해 사용된다&lt;/b&gt;. 더 쉬운 표현으로는 고주파 응답에만 감쇠를 적용하는 high-frequency damping 이라고 설명할 수 있을 듯하다. 아래에서는 이러한 감쇠가 동역학 해석에 도입된 배경에 대해 설명하고, 이 감쇠 효과를 어떻게 줄일 수 있는지와 어떤 경우에 고려해야 하는지에 대해 설명하고자 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;[빠른 해석 속도를 좌우하는 요인: Step size]&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;해석 속도를 좌우하는 요인은 다양하지만, 큰 요인 중 하나는 step size 이다. 예를 들어, 0초부터 1초까지 문제를 풀 때 step size 가 0.01 이라면, 0.01초 간격으로 0초일 때, 0.01초일 때, 0.02초일때..., 0.99초일 때, 1초일 때 각 순간에서 운동방정식을 풀어 응답을 계산하게 된다. 따라서  step size 가 작으면 작을 수록 계산량이 많아지게 된다. time step size 가 0.01 일 때와 0.0001 일 때의 총 해석 시간은 단순 계산으로 100배나 차이난다. 따라서 스텝 사이즈를 키우는 것은 빠른 해석을 위해 중요하다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;스텝 사이즈가 고정된 fixed step 방식으로 문제를 푸는 경우도 있지만, 대부분의 툴은 시스템의 안정성을 평가해 time step size 를 자동으로 조절하도록 하는 variable step(or adaptive step) 방식의 솔버를 채용하고 있다. 시스템이 안정하면 큰 스텝사이즈로 풀어도 잘 풀리고, 시스템이 불안정하면 작은 스텝 사이즈로 풀어야지만 발산하지 않고 잘 풀리기 때문에, 시스템의 안정성에 따라 자동으로 스텝사이즈를 조절하여 &quot;에러가 지정된 수준 미만인 가장 큰 스텝 사이즈&quot;를 찾아 문제를 풀어 해석 시간 단축을 도모하는 것이다.&lt;/p&gt;&lt;p&gt;시스템이 안정하다는 것은 시스템에 작용하는 하중이 일정하고, 접촉이 불연속적이지 않으며, 움직임의 방향이 짧은 시간에 바뀌지 않고, 선형에 가까운 것을 의미한다. 시스템이 불안정하다는 것은 시스템에 갑작스럽게 큰 하중이 작용하거나, 접촉이 됐다 안 됐다 하거나, 움직임의 방향이 짧은 시간에 바뀌고 마구 진동하거나, 비선형에 가까운 것을 의미한다. 따라서 &lt;b&gt;고주파 성분이 많을 수록 시스템의 안정성은 떨어지고, 수치 적분 시 큰 스텝사이즈에서 해가 잘 수렴하지 않아 스텝 사이즈를 더욱 낮추도록 하여 해석 속도는 느려지게 된다. 따라서 필요없는 고주파 응답을 제거하는 것은 빠른 해석을 위해 고려되어야 할 요소이다.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;[동역학 해석자의 주관심 영역: 저주파 응답]&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;동역학 해석 시 해석자의 관심 영역은 저주파 대역의 응답에 주로 포커스가 맞춰져있다. 실제 기계시스템의 응답은 여러 주파수가 
중첩된 형태로 나타나지만, 주파수 분석을 해보면 &quot;주된&quot; 거동은 100Hz 를 넘는 경우가 많지 않다. (물론 시스템에 따라 다르고, 동역학 기반 진동해석을
 하는 경우라면 수백, 수천Hz 대의 주파수 응답에 포커스를 맞출 수도 있겠지만 이런 경우는 제외한다.) 따라서 이 경우 고주파 응답에 관심을 가질 필요가 없을 것이다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;또는 다자유도 시스템의 각 고유진동수가 서로 매우 큰 차이를 보이게 되는 경우(예:w1=1, w2=3000 처럼 수천배 이상 차이가 나는 경우) 실제 응답은 저주파 응답 위주로, 즉 저차 모드 위주로 나타나게 된다. 따라서 이 경우 특별히 아주 미소한 수준의 고주파 진동에 대한 관심이 있는 것이 아니라면 고주파 응답에 아예 관심을 가지지 않아도 될 것이다. 하지만 적분 방법에 따라 실제 이론적인 해와 달리 적분 결과에 매우 큰 수준의 고주파 노이즈가 발생하게 되는 경우가 있다. 동역학 해석에서는 disp.에 노이즈가 없더라도 velo. 와 acc. 가 +- 변화를 반복하는 형태의 노이즈로 나타나게 된다. 이것은 모델링 변경, post-processing 에서 결과를 후처리 하는 방법 등 다양한 방법으로 해결할 수 있으나, 본 문서에서 설명하는 수치감쇠 또한 이러한 문제를 해결할 수 있는 것 중 하나이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;[결론: 고주파 응답은 필요 없다. 따라서 인위적으로 감쇠를 넣어 저주파 대역만 관찰하자.]&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;해석자의 관심이 저주파수 대역에 국한되어 있다면, 관찰하지도 않을 고주파 성분까지 자세하게 해석하느라 계산 능력과 시간을 낭비할 필요는 없을 것이다. 따라서 이러한 목적에서 저주파 응답은 살리고 고주파 성분 만을 제거하기 위한 많은 시간 적분 알고리즘이 개발되었다. &lt;/b&gt;이러한 알고리즘으로는 Newmark-&lt;span class=&quot;st&quot;&gt;&lt;span class=&quot;st&quot;&gt;β&lt;/span&gt;&lt;/span&gt; method(뉴마크 베타법), WBZ-θ method(세타법), &lt;span class=&quot;st&quot;&gt;generalized-α method(일반화 알파법) 등이 있다. 그리고 &lt;b&gt;이러한 알고리즘에서 고주파 성분 제거의 수준을 결정하는 파라미터가 Numerical Damping 이다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;span class=&quot;st&quot;&gt;Numerical Damping 의 장단점&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class=&quot;st&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&lt;span class=&quot;st&quot;&gt;&lt;/span&gt;&lt;/span&gt;장점&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;큰 step size 로 계산하여도 안정적 풀이가 가능하여, 결과적으로 해석 속도가 빨라진다.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;고주파 성분이 사라지므로 결과 그래프가 깔끔해져 별도의 후처리를 하지 않아도 된다.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;단점&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;고주파 성분에만 주로 작용하는 감쇠지만 그렇다고 저주파 성분에 감쇠가 작용하지 않는 것은 아니다. 따라서 Damping 이 없는 낮은 고유진동수를 가지는 시스템에도 Damping 이 작용한다. 예를 들어, 간단한 진자 운동의 경우를 시뮬레이션 하더라도 시간이 지날 수록 점차 응답의 크기가 감소하는 것을 볼 수 있다.&lt;/li&gt;&lt;li&gt;기계진동 수업을 들었다면 떠올릴 수 있겠지만, Damping 은 진폭의 크기를 점차 줄이는 것 외에도 위상을 변화시키는 역할도 한다. 따라서 저주파에서도 (무시 가능한 수준의) 위상 차이나 주기 변화가 발생하게 된다.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;고주파 응답이 사라진다. 만약 고주파 응답에 관심을 갖고 있다면 이것은 큰 단점이 될 것이다.&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr&gt;&lt;p&gt;처음 동역학 해석에 대한 지식이 없고, Numerical Damping 에 대해 접했을 때는 이것이 해석자가 의도하지 않은 감쇠를 인위적으로 부여한 것이므로 되게 이상한 것이라 생각했었다. 하지만 많은 동역학 해석을 수행하며 &lt;b&gt;특별한 경우를 제외하고는 Numerical Damping 이 크게 신경쓰지 않아도 되는 것임을 알게되었다.&lt;/b&gt; 이유는 아래와 같다.&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;실제 시스템에는 모델링에 반영하기 어려운 많은 감쇠 요소들이 이미 존재한다.&lt;/li&gt;&lt;li&gt;동역학 해석 시 절대적인 변위보다 상대적인 변위가 더욱 중요한 경우가 많다. 동역학 해석 시 변위, 속도, 가속도 등의 크기를 아주 정확하게 맞추는 것은 쉽지 않다. 왜냐하면 시스템에 포함된 많은 감쇠 요소들의 댐핑 계수를 알아내는 것은 쉽지 않기 때문에, 결국 댐핑 계수 값은 값 튜닝과 많은 경험에 의한 누적된 데이터에 의존하게 된다. 따라서 내가 기업체 과제등을 통해 수행한 대부분의 해석에서 응답의 절대적인 크기는 그리 중요한 것이 아니었고, 기준 모델을 변화시켜가며 상대적인 변위 크기를 평가하는 것이 더욱 중요했다. 따라서 애초에 댐핑이 존재하는 시스템의 변위, 속도, 가속도 등의 절대적인 크기를 정확하게 맞추는 것은 어렵기 때문에, 모든 모델에 공통적으로 적용되는 Numerical Damping 의 중요성도 줄어들게 된다.&lt;/li&gt;&lt;li&gt;실제 시스템에 입력으로 작용하는 가진이나 하중이 1회로 끝나지 않고 지속적으로 작용하게 되는 경우 Numerical Damping 의 영향은 줄어들게된다.&lt;/li&gt;&lt;li&gt;뒤에서 설명하겠지만 step size 를 낮추면 Numerical Damping 의 효과는 줄어들게된다. 복잡한 모델이나 시스템이 불안정한 거등을 하는 상황을 시뮬레이션 하는 경우, 자연스럽게 step size 가 낮아지게 되어 Numerical Damping 의 효과가 감소한다.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Numerical Damping 의 영향을 조절해야 하는 경우&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Numerical Damping 을 신경써야 하는 경우는 아래와 같은 경우들이다.&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;b&gt;수식을 기반으로 한 모델과 Numerical Damping 이 적용된 해석 (DAFUL 등) 의 결과를 직접 비교하고 싶은 경우&lt;/b&gt;&lt;br /&gt;예를들어
 MATLAB 으로 수식을 기반으로 한 저자유도 모델을 구성하고, 내가 구성한 모델이 맞는지 확인하고 싶을 때 DAFUL과 같은 동역학 해석 
프로그램을 사용하여 reference 모델을 구성할 수 있다 (또는 반대). 이 때 이론 값에는 Damping 이 없고, 
DAFUL 에는 Numerical Damping 이 있으므로 결과에 차이가 발생하게 된다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;공진 시뮬레이션을 하고싶은 경우&lt;/b&gt;&lt;br /&gt;공진주파수가 높냐, 낮냐에 따라 다르지만, Numerical Damping 이 있으면 공진 시뮬레이션이 잘 안 되는 경우가 있다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;고주파 응답에 관심이 있는 경우&lt;/b&gt;&lt;br /&gt;Numerical Damping 은 고주파 응답을 없애는 역할을 하기 때문에, 당연히 고주파 응답에 관심이 있는 경우에는 Numerical Damping 의 영향을 줄여야만 한다.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;h2&gt;Numerical Damping 의 영향을 줄이는 법&lt;/h2&gt;&lt;p&gt;Numerical Damping 의 영향을 줄이고 싶은 경우, 크게 두 가지 방법을 선택할 수 있다.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;1. Numerical Damping 파라미터를 조절하기&lt;/h3&gt;&lt;p&gt;시뮬레이션 설정의 Dynamic 탭에서 값을 수정할 수 있다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 549px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996A074F5E13DB5130&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996A074F5E13DB5130&quot; width=&quot;549&quot; height=&quot;337&quot; filename=&quot;nd.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;위 그림에서 Numerical Damping 으로 표시된 부분의 기본값은 1이다. 이 값을 하한값(0.2로 기억한다)까지 줄여주고 설정을 저장 후 시뮬레이션 하면 된다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 201px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D9B9405E13DBCD30&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D9B9405E13DBCD30&quot; width=&quot;500&quot; height=&quot;201&quot; filename=&quot;daful에서의numericaldamp.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 201px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;위 값의 변화는 위 수식에서 alpha, beta 값의 변화로 나타난다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;다만 이 값을 줄이면 시스템의 불안정성이 높아지게 된다. 따라서 Numerical Damping 값을 조절하기 전과 동일한 step size 에서 error 가 커질 수 있수 있고, 이것은 step size 를 낮추도록 하여 해석 시간을 증가시킬 수 있다. 심한 경우 Minimum stepsize 에 도달해 해석이 실패할 수 있다.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;2. step size 를 줄이기&lt;/h3&gt;&lt;p&gt;step size를 줄이는 것은 Numerical Damping 의 영향을 줄이는 역할을 한다. Solver 에서 Max step size 값이 0.01 로 되어있는 것을 0.001, 0.0001, 0.00001 로 줄여나가며 해석해보면 점차 감쇠가 줄어드는 것을 볼 수 있다. 다만 step size 가 줄어듦에 따라 해석 시간은 증가하게 된다.&lt;/p&gt;&lt;p&gt;아래 그림은 DAFUL 설치 시 포함된 manual 인 verification manual 에서 가져온 것으로, 스텝사이즈에 따라 Displacement 가 어떻게 변하는지를 확인한 것이다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 188px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9931FB485E13DBE302&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9931FB485E13DBE302&quot; width=&quot;500&quot; height=&quot;188&quot; filename=&quot;ndeffect.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 188px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;step size 를 얼마나 줄여야 Numerical Damping 의 효과가 사라지는지는 시스템의 특성과 해석자의 목적에 따라 다르다. step size 를 변경해가며 수차례 파라미터 테스트를 해야하며, 다만 대게 관찰하고 싶은 진동 주기의 1/100 수준으로 step size 를 설정하면 된다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;참고로 report step 의 개수를 늘리면 자연스럽게 max step size 가 따라 조절되므로 같은 효과를 볼 수 있다. 다만 이 경우 결과 파일의 사이즈가 커지게 되므로, solver 설정에서 max step size 를 조절하는 것이 더 효과적인 방법이다.&lt;/p&gt;&lt;h2&gt;그 외 읽어볼만한 자료&lt;/h2&gt;&lt;p&gt;Newmark, N. M. A method of computation for structural dynamics. Journal of Engineering Mechanics, ASCE, 85 (EM3) 67-94, 1959.&lt;/p&gt;&lt;p&gt;Chung, J., and Hulbert, G. M. (June 1, 1993). &quot;A Time Integration 
Algorithm for Structural Dynamics With Improved Numerical Dissipation: 
The Generalized-α Method.&quot; ASME. &lt;em&gt;J. Appl. Mech&lt;/em&gt;. June 1993; 60(2): 371?375. &lt;a href=&quot;https://doi.org/10.1115/1.2900803&quot; target=&quot;_blank&quot;&gt;https://doi.org/10.1115/1.2900803&lt;/a&gt;&lt;/p&gt;</description>
      <category>엔지니어링</category>
      <category>DAFUL</category>
      <category>Numerical Damping</category>
      <category>수치 감쇠</category>
      <author>노모</author>
      <guid isPermaLink="true">https://nomoasia.tistory.com/447</guid>
      <comments>https://nomoasia.tistory.com/447#entry447comment</comments>
      <pubDate>Tue, 7 Jan 2020 10:49:51 +0900</pubDate>
    </item>
  </channel>
</rss>