<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>What should I do?</title>
    <link>https://jamssoft.tistory.com/</link>
    <description>Do you want to know that?</description>
    <language>ko</language>
    <pubDate>Wed, 15 Apr 2026 13:06:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>What should I do?</managingEditor>
    <image>
      <title>What should I do?</title>
      <url>https://tistory1.daumcdn.net/tistory/2138996/attach/249242d67ee74197b2cbeca82b0f2815</url>
      <link>https://jamssoft.tistory.com</link>
    </image>
    <item>
      <title>중국산 MS2131 추정 캡쳐보드 사용기</title>
      <link>https://jamssoft.tistory.com/329</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;USB2.0을&amp;nbsp;지원하는&amp;nbsp;더&amp;nbsp;싼&amp;nbsp;캡쳐보드를&amp;nbsp;4년정도&amp;nbsp;사용해&amp;nbsp;왔다.&amp;nbsp;TV를&amp;nbsp;PC로&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;&amp;nbsp;화질에&amp;nbsp;욕심이&amp;nbsp;생겨&amp;nbsp;다른&amp;nbsp;것을&amp;nbsp;구해보기로&amp;nbsp;했다.&amp;nbsp;&lt;br /&gt;화질을 위해 YUY2(YUYV422)를 지원해야 하기에 칩은 MS2130이나 MS2131을 사용한 것이 골라야 했다. MS2130은 겉모습으로는 확인 할 수가 없어, 겉모습으로 확인할 수 있는 MS2131을 구해보기로 했다. MS2131은 MS2130에 Loop-back기능을 추가 한 것이기 때문에 Loop-back을 지원하면 MS2131칩을 쓴 것으로 예상할 수 있다. 뜯어봐야 확실히 알 수 있겠지만, 뜯기는 좀 귀찮았다.&lt;br /&gt;&lt;br /&gt;알리를 뒤져보는 중에 다음의 캡쳐보드가 싼 값에 올라왔다. 천원마트에 올라온 거라 링크가 동작하지 않을 수 있다.&lt;br /&gt;&lt;a href=&quot;https://ko.aliexpress.com/item/1005010536505048.html?spm=a2g0o.order_list.order_list_main.17.436c140fS5tskm&amp;amp;gatewayAdapt=glo2kor&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ko.aliexpress.com/item/1005010536505048.html?spm=a2g0o.order_list.order_list_main.17.436c140fS5tskm&amp;amp;gatewayAdapt=glo2kor&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770043611349&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;product&quot; data-og-title=&quot;TABLLYUGE 4K USB 3.0 HDTV 비디오 캡처 카드 HDMI 호환 비디오 레코더 그래버 PC PS4 OBS 게임 녹화 게임 오&quot; data-og-description=&quot;Smarter Shopping, Better Living! Aliexpress.com&quot; data-og-host=&quot;ko.aliexpress.com&quot; data-og-source-url=&quot;https://ko.aliexpress.com/item/1005010536505048.html?spm=a2g0o.order_list.order_list_main.17.436c140fS5tskm&amp;amp;gatewayAdapt=glo2kor&quot; data-og-url=&quot;https://ko.aliexpress.com/item/1005010536505048.html?src=ibdm_d03p0558e02r02&amp;amp;sk=&amp;amp;aff_platform=&amp;amp;aff_trace_key=&amp;amp;af=&amp;amp;cv=&amp;amp;cn=&amp;amp;dp=&amp;amp;aff_short_key=&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bh0miI/dJMb8QL69RP/tLj5MrpRaGekw8osOhBxJK/img.jpg?width=921&amp;amp;height=921&amp;amp;face=0_0_921_921&quot;&gt;&lt;a href=&quot;https://ko.aliexpress.com/item/1005010536505048.html?spm=a2g0o.order_list.order_list_main.17.436c140fS5tskm&amp;amp;gatewayAdapt=glo2kor&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.aliexpress.com/item/1005010536505048.html?spm=a2g0o.order_list.order_list_main.17.436c140fS5tskm&amp;amp;gatewayAdapt=glo2kor&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bh0miI/dJMb8QL69RP/tLj5MrpRaGekw8osOhBxJK/img.jpg?width=921&amp;amp;height=921&amp;amp;face=0_0_921_921');&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;TABLLYUGE 4K USB 3.0 HDTV 비디오 캡처 카드 HDMI 호환 비디오 레코더 그래버 PC PS4 OBS 게임 녹화 게임 오&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Smarter Shopping, Better Living! Aliexpress.com&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.aliexpress.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;결제 후 도착은 일주일도 걸리지 않았다. 사고보니 2000원 더 싸게 파는 것도 있었는 데, 필자가 구매한 것이 아니니 이 글로 인해 문제가 발생할수 있어 링크를 올리지는 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용물은 다음과 같다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;devices.jpg&quot; data-origin-width=&quot;2772&quot; data-origin-height=&quot;2805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vFuv8/dJMcadgy8nC/ruLiMoiafkuMARr2tAOOqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vFuv8/dJMcadgy8nC/ruLiMoiafkuMARr2tAOOqk/img.jpg&quot; data-alt=&quot;3개가 전부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vFuv8/dJMcadgy8nC/ruLiMoiafkuMARr2tAOOqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvFuv8%2FdJMcadgy8nC%2FruLiMoiafkuMARr2tAOOqk%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;2772&quot; height=&quot;2805&quot; data-filename=&quot;devices.jpg&quot; data-origin-width=&quot;2772&quot; data-origin-height=&quot;2805&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3개가 전부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 장치 2. usb케이블 3.설명서 ... 끝...... 와... 단순하다...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;port1.jpg&quot; data-origin-width=&quot;1991&quot; data-origin-height=&quot;924&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SCiDa/dJMcacaUW3i/bxhQiEaKtxeKqlPJbysP20/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SCiDa/dJMcacaUW3i/bxhQiEaKtxeKqlPJbysP20/img.jpg&quot; data-alt=&quot;pc연결 / 이어폰 / 마이크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SCiDa/dJMcacaUW3i/bxhQiEaKtxeKqlPJbysP20/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSCiDa%2FdJMcacaUW3i%2FbxhQiEaKtxeKqlPJbysP20%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;546&quot; height=&quot;253&quot; data-filename=&quot;port1.jpg&quot; data-origin-width=&quot;1991&quot; data-origin-height=&quot;924&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;pc연결 / 이어폰 / 마이크&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;port2.jpg&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs6fU8/dJMcafFsIbr/HVRKe45II0Dmr5rOC65ak0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs6fU8/dJMcafFsIbr/HVRKe45II0Dmr5rOC65ak0/img.jpg&quot; data-alt=&quot;loop-back / 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs6fU8/dJMcafFsIbr/HVRKe45II0Dmr5rOC65ak0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs6fU8%2FdJMcafFsIbr%2FHVRKe45II0Dmr5rOC65ak0%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;536&quot; height=&quot;273&quot; data-filename=&quot;port2.jpg&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;loop-back / 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이런&amp;nbsp;싼&amp;nbsp;캐쳐보드의&amp;nbsp;좋은&amp;nbsp;점은&amp;nbsp;드라이버가&amp;nbsp;이미&amp;nbsp;OS내에&amp;nbsp;존재&amp;nbsp;한다는&amp;nbsp;것이다.&lt;br /&gt;다른 고급형 캡쳐보드[에버미디ㅇ나 엘가ㅌ 같은]는 드라이버를 설치해야 하지만, 이 캡쳐보드는 웹캠으로 인식하기 때문에 드라이버가 이미 OS내에 있어서 자동으로 인식된다.&lt;br /&gt;새로운&amp;nbsp;OS가&amp;nbsp;나오거나&amp;nbsp;Windows가&amp;nbsp;버전이&amp;nbsp;올라갈&amp;nbsp;경우&amp;nbsp;고급형&amp;nbsp;캡쳐보드는&amp;nbsp;제조사가&amp;nbsp;드라이버를&amp;nbsp;만들어서&amp;nbsp;제공할&amp;nbsp;때&amp;nbsp;까지&amp;nbsp;기다리거나,&amp;nbsp;지원해주지&amp;nbsp;않으면&amp;nbsp;쓸&amp;nbsp;수도&amp;nbsp;없다.&lt;br /&gt;하지만,&amp;nbsp;이&amp;nbsp;것은&amp;nbsp;새로운&amp;nbsp;OS라도&amp;nbsp;OS에&amp;nbsp;드라이버가&amp;nbsp;포함될&amp;nbsp;확률이&amp;nbsp;아주&amp;nbsp;높고,&amp;nbsp;OS차원에서&amp;nbsp;지원하기에&amp;nbsp;상당히&amp;nbsp;안정적인&amp;nbsp;드라이버를&amp;nbsp;지원한다는&amp;nbsp;뜻이다.&lt;br /&gt;&lt;br /&gt;중국에서파는 이런 캡처보드들이 구라가 많아서 FHD(1920x1080)에서 YUY2를 60fps로 완벽히 지원하는지 확인이 필요했다.&lt;br /&gt;만약&amp;nbsp;지원하지&amp;nbsp;않거나&amp;nbsp;화질이&amp;nbsp;구리면&amp;nbsp;쓰레기통으로&amp;nbsp;보내려고&amp;nbsp;했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;확인을 해보자.&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;장치관리자&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 USB3.0으로 연결되는지 확인을 해보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;device_manager.png&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3V3gS/dJMcaajQTrf/LtMncLbx5Tw1ezHt5NWzq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3V3gS/dJMcaajQTrf/LtMncLbx5Tw1ezHt5NWzq0/img.png&quot; data-alt=&quot;USB 3.0으로 연결된 모습, 그리고 2131글자 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3V3gS/dJMcaajQTrf/LtMncLbx5Tw1ezHt5NWzq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3V3gS%2FdJMcaajQTrf%2FLtMncLbx5Tw1ezHt5NWzq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;927&quot; height=&quot;578&quot; data-filename=&quot;device_manager.png&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;USB 3.0으로 연결된 모습, 그리고 2131글자 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;USB3.0(Super-speed USB)에 연결되어 있다. 드라이버정보에서 2131글자도 확인했다. 칩이 MS2131일 확률이 높아졌다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;OBS에서&amp;nbsp;확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;obs_yuv_option.png&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ch2mVl/dJMcafep93L/0vCKHqk5QJkmLabNjKF8mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ch2mVl/dJMcafep93L/0vCKHqk5QJkmLabNjKF8mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ch2mVl/dJMcafep93L/0vCKHqk5QJkmLabNjKF8mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fch2mVl%2FdJMcafep93L%2F0vCKHqk5QJkmLabNjKF8mk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;933&quot; height=&quot;352&quot; data-filename=&quot;obs_yuv_option.png&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;obs에서 장치를 등록하면서 YUY2옵션도 다음과 같이 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡쳐하는 해상도에 따라 YUY2가 선택할 수 없는 경우가 있다. 위에 그림은 FHD, 60fps에서 YUY2가 제대로 보여지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;FFMPEG로 실제 테스트로 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 정확한 것을 직접 테스트를 해야 할 필요가 있다. 구라일 수도 있고 실제 녹화시 프레임이 떨어지거나 MJPEG방식으로 동작할 수 있기 때문이다. 따라서 FFMPEG를 이용해서 일일이 테스트를 해봤다.&lt;br /&gt;&lt;br /&gt;윈도우를 기준으로 설명하도록 하겠다. 필자의 리눅스머신은 TV셋톱박스에서 너무 멀어 테스트해 볼 수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;다음의&amp;nbsp;명령으로&amp;nbsp;새로산&amp;nbsp;캡쳐보드의&amp;nbsp;이름을&amp;nbsp;알아내고..&amp;nbsp;필자의&amp;nbsp;경우&amp;nbsp;&quot;USB3&amp;nbsp;Video&quot;로&amp;nbsp;나타났다.&lt;/p&gt;
&lt;pre id=&quot;code_1770041645323&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ffmpeg -f dshow -list_devices true -i dummy&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;device_list.png&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMBhFb/dJMcabbYFlz/lZvJysFix1VFcWumosBq5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMBhFb/dJMcabbYFlz/lZvJysFix1VFcWumosBq5k/img.png&quot; data-alt=&quot;USB3 Video.. 이름 참 명확하다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMBhFb/dJMcabbYFlz/lZvJysFix1VFcWumosBq5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMBhFb%2FdJMcabbYFlz%2FlZvJysFix1VFcWumosBq5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;189&quot; data-filename=&quot;device_list.png&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;USB3 Video.. 이름 참 명확하다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;다음의&amp;nbsp;명령을&amp;nbsp;통해&amp;nbsp;지원하는&amp;nbsp;모드를&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;pre id=&quot;code_1770041725720&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ffmpeg -f dshow -list_options true -i video=&quot;USB3 Video&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1770041763470&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DirectShow video device options (from video devices)
 Pin &quot;캡쳐&quot; (alternative pin name &quot;0&quot;)
  pixel_format=yuyv422  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002
  pixel_format=yuyv422  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2560x1600 fps=10 max s=2560x1600 fps=30
  pixel_format=yuyv422  min s=2560x1600 fps=10 max s=2560x1600 fps=30 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2560x1440 fps=10 max s=2560x1440 fps=30
  pixel_format=yuyv422  min s=2560x1440 fps=10 max s=2560x1440 fps=30 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2048x1152 fps=10 max s=2048x1152 fps=60.0002
  pixel_format=yuyv422  min s=2048x1152 fps=10 max s=2048x1152 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2048x1080 fps=10 max s=2048x1080 fps=60.0002
  pixel_format=yuyv422  min s=2048x1080 fps=10 max s=2048x1080 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1920x2160 fps=10 max s=1920x2160 fps=30
  pixel_format=yuyv422  min s=1920x2160 fps=10 max s=1920x2160 fps=30 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1920x1200 fps=10 max s=1920x1200 fps=60.0002
  pixel_format=yuyv422  min s=1920x1200 fps=10 max s=1920x1200 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=3840x2160 fps=18 max s=3840x2160 fps=18
  pixel_format=yuyv422  min s=3840x2160 fps=18 max s=3840x2160 fps=18 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1360x768 fps=10 max s=1360x768 fps=60.0002
  pixel_format=yuyv422  min s=1360x768 fps=10 max s=1360x768 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002
  pixel_format=yuyv422  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1280x960 fps=10 max s=1280x960 fps=60.0002
  pixel_format=yuyv422  min s=1280x960 fps=10 max s=1280x960 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=60.0002
  pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1024x768 fps=10 max s=1024x768 fps=60.0002
  pixel_format=yuyv422  min s=1024x768 fps=10 max s=1024x768 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=720x480 fps=10 max s=720x480 fps=60.0002
  pixel_format=yuyv422  min s=720x480 fps=10 max s=720x480 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=60.0002
  pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002
  vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2560x1600 fps=10 max s=2560x1600 fps=30
  vcodec=mjpeg  min s=2560x1600 fps=10 max s=2560x1600 fps=30 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30
  vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2048x1152 fps=10 max s=2048x1152 fps=60.0002
  vcodec=mjpeg  min s=2048x1152 fps=10 max s=2048x1152 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2048x1080 fps=10 max s=2048x1080 fps=60.0002
  vcodec=mjpeg  min s=2048x1080 fps=10 max s=2048x1080 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1920x2160 fps=10 max s=1920x2160 fps=30
  vcodec=mjpeg  min s=1920x2160 fps=10 max s=1920x2160 fps=30 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1920x1200 fps=10 max s=1920x1200 fps=60.0002
  vcodec=mjpeg  min s=1920x1200 fps=10 max s=1920x1200 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=3840x2160 fps=18 max s=3840x2160 fps=18
  vcodec=mjpeg  min s=3840x2160 fps=18 max s=3840x2160 fps=18 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1360x768 fps=10 max s=1360x768 fps=60.0002
  vcodec=mjpeg  min s=1360x768 fps=10 max s=1360x768 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002
  vcodec=mjpeg  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1280x960 fps=10 max s=1280x960 fps=60.0002
  vcodec=mjpeg  min s=1280x960 fps=10 max s=1280x960 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=60.0002
  vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1024x768 fps=10 max s=1024x768 fps=60.0002
  vcodec=mjpeg  min s=1024x768 fps=10 max s=1024x768 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=720x480 fps=10 max s=720x480 fps=60.0002
  vcodec=mjpeg  min s=720x480 fps=10 max s=720x480 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=60.0002
  vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
Error opening input file video=USB3 Video.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YUY2로 완전한 원본을 저장하고 1초동안 60fps인지 일일이 플래임을 넘기고 손가락 접어가며 세어보기로 했다.&lt;br /&gt;손가락으로 일일이 세어보기 전에 캡처하는 중에 출력값만으로도 어느정도 확인이 가능하다. USB2.0은 최도속도인 480mbps를 넘길 수가 없다. 넘어오는 속도가 90000kbps가 넘는 것으로 봐서 USB 3.0이상인 것을 확인 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;yuv_bitrate.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwypBn/dJMcacaUVHY/7KF5ZTzslY37vS1cvQVa11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwypBn/dJMcacaUVHY/7KF5ZTzslY37vS1cvQVa11/img.png&quot; data-alt=&quot;맨 아래줄의 bitrate&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwypBn/dJMcacaUVHY/7KF5ZTzslY37vS1cvQVa11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwypBn%2FdJMcacaUVHY%2F7KF5ZTzslY37vS1cvQVa11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1192&quot; height=&quot;286&quot; data-filename=&quot;yuv_bitrate.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;맨 아래줄의 bitrate&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;속도가&amp;nbsp;올바른지는&amp;nbsp;다음의&amp;nbsp;계산식으로&amp;nbsp;확인이&amp;nbsp;가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1770042363381&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(1920x1080) * 2[yuy2] * 60[fps] * 8[bits] = 1990656000bits/s = 1944000k bits/s - video
( 48000Hz * 2[16bits] * 2[ch] ) * 8[bits] =    1536000bits/s =    1500k bits/s - audio
1944000 + 1500 = 1945500kbits/s + 추가데이터 =&amp;gt; 실제 전송 속도&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면상에 결과가 1992331.7k bits/s이니 확실히 전송속도는 usb2.0을 넘어선 usb3.0인 것을 알 수 있고, YUY2로 전송된다는 뜻이다.&lt;br /&gt;&lt;br /&gt;저장된 팟플레이어에서 확인해보니 YUY2로 저장된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;potplayer2.png&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFZxcF/dJMcahXAz3c/XqDcyaRyVuLeMXAYc5ItE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFZxcF/dJMcahXAz3c/XqDcyaRyVuLeMXAYc5ItE0/img.png&quot; data-alt=&quot;YUY2 맞다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFZxcF/dJMcahXAz3c/XqDcyaRyVuLeMXAYc5ItE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFZxcF%2FdJMcahXAz3c%2FXqDcyaRyVuLeMXAYc5ItE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1361&quot; height=&quot;556&quot; data-filename=&quot;potplayer2.png&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;YUY2 맞다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;일일이 프레임을 세어보니 60번동안 다 다른 화면이 녹화 되었다. 60fps으로 캡쳐가 된다는 뜻이다. 화질 또한 확실히 MJPEG와 다르게 또렸했다. MJPEG와의 두두러지는 차이를 확인하려면 글자 주변에 노이즈를 보면 되는 데, YUV2는 전혀 그런 것이 없었다.&lt;br /&gt;&lt;br /&gt;놀라웠던 점은 MJPEG방식의 화질이 YUV2화질에 비해 생각보다 많이 떨이지지 않았던 점이다. 그래도 YUV2와의 화질차이가 분명히 느껴진다.&lt;br /&gt;MJPEG원본으로도 캡처를 해보았는 데, 전송속도가 73953.1kbits/s정도였다. YUV2에 비해 3.7%의 크기로 전송된다.&lt;br /&gt;결론은 확실히 YUV2를 지원하며 60fps로 무난히 캡쳐가 된다. 이 결론 내자고.. 이 긴 글을&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;YUV2와&amp;nbsp;MJPEG화질비교&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;quality1.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkl9dY/dJMcaiB9Jbj/MRwKgiJQT9X9ycuhLGHaNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkl9dY/dJMcaiB9Jbj/MRwKgiJQT9X9ycuhLGHaNk/img.png&quot; data-alt=&quot;왼쪽 YUY2&amp;amp;nbsp; 오른쪽 MJPEG&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkl9dY/dJMcaiB9Jbj/MRwKgiJQT9X9ycuhLGHaNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdkl9dY%2FdJMcaiB9Jbj%2FMRwKgiJQT9X9ycuhLGHaNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;800&quot; data-filename=&quot;quality1.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왼쪽 YUY2&amp;nbsp; 오른쪽 MJPEG&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MJPEG 색감이 YUY2에 비해 살짝 붉은색이 더 많이 들어가는 정도라 화면색깔의 조정을 좀 하면 쓸만해 보였다. 그림을 확대해보면 YUY2는 깍두기 현상이 없지만, MJPEG는 깍두기 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밝기조정을 하지 않았지만, 어두운부분에서는 차이가 있는 것으로 보인다. 필자의 눈이 이상할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USB2.0만지원했던 이전 캡쳐보드보다 MJPEG모드에서도 좀 더 좋은 화질을 보여주는 것 같다. 이 것도 필자의 눈이 이상할 수도 있지만..&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;USB2.0&amp;nbsp;포트에&amp;nbsp;연결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문득 든 생각이 USB2.0에 연결하면 어찌 될지가 궁금해졌다. 전송속도차이로 &quot;전송이 못할텐데~&quot;하는 의문 때문이다.&lt;br /&gt;장치목록을 ffmpeg로 확인해보니 다른 이름으로 변경되었다. &quot;USB2 Video&quot;로 &quot;3&quot;이 &quot;2&quot;로 바뀌어 있었고, 오디오도 마찬가지였다. 지원해상도를 다시 뽑아 본 결과 다음과 같이 USB3.0과는 다른 내용이 나왔다.&lt;/p&gt;
&lt;pre id=&quot;code_1770043043456&quot; class=&quot;routeros&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;DirectShow video device options (from video devices)
 Pin &quot;캡쳐&quot; (alternative pin name &quot;0&quot;)
  vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=50
  vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=50 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2560x1600 fps=10 max s=2560x1600 fps=30
  vcodec=mjpeg  min s=2560x1600 fps=10 max s=2560x1600 fps=30 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30
  vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2048x1152 fps=10 max s=2048x1152 fps=50
  vcodec=mjpeg  min s=2048x1152 fps=10 max s=2048x1152 fps=50 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=2048x1080 fps=10 max s=2048x1080 fps=50
  vcodec=mjpeg  min s=2048x1080 fps=10 max s=2048x1080 fps=50 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1920x2160 fps=10 max s=1920x2160 fps=30
  vcodec=mjpeg  min s=1920x2160 fps=10 max s=1920x2160 fps=30 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1920x1200 fps=10 max s=1920x1200 fps=50
  vcodec=mjpeg  min s=1920x1200 fps=10 max s=1920x1200 fps=50 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=3840x2160 fps=18 max s=3840x2160 fps=18
  vcodec=mjpeg  min s=3840x2160 fps=18 max s=3840x2160 fps=18 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1360x768 fps=10 max s=1360x768 fps=60.0002
  vcodec=mjpeg  min s=1360x768 fps=10 max s=1360x768 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002
  vcodec=mjpeg  min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1280x960 fps=10 max s=1280x960 fps=60.0002
  vcodec=mjpeg  min s=1280x960 fps=10 max s=1280x960 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=60.0002
  vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=1024x768 fps=10 max s=1024x768 fps=60.0002
  vcodec=mjpeg  min s=1024x768 fps=10 max s=1024x768 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=720x480 fps=10 max s=720x480 fps=60.0002
  vcodec=mjpeg  min s=720x480 fps=10 max s=720x480 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=60.0002
  vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=60.0002 (pc, bt470bg/bt709/unknown, center)
  pixel_format=yuyv422  min s=1280x720 fps=8 max s=1280x720 fps=15
  pixel_format=yuyv422  min s=1280x720 fps=8 max s=1280x720 fps=15 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2560x1600 fps=5 max s=2560x1600 fps=5
  pixel_format=yuyv422  min s=2560x1600 fps=5 max s=2560x1600 fps=5 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2560x1440 fps=5 max s=2560x1440 fps=5
  pixel_format=yuyv422  min s=2560x1440 fps=5 max s=2560x1440 fps=5 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2048x1152 fps=5 max s=2048x1152 fps=5
  pixel_format=yuyv422  min s=2048x1152 fps=5 max s=2048x1152 fps=5 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=2048x1080 fps=5 max s=2048x1080 fps=10
  pixel_format=yuyv422  min s=2048x1080 fps=5 max s=2048x1080 fps=10 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1920x2160 fps=5 max s=1920x2160 fps=5
  pixel_format=yuyv422  min s=1920x2160 fps=5 max s=1920x2160 fps=5 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1920x1200 fps=5 max s=1920x1200 fps=10
  pixel_format=yuyv422  min s=1920x1200 fps=5 max s=1920x1200 fps=10 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1920x1080 fps=5 max s=1920x1080 fps=10
  pixel_format=yuyv422  min s=1920x1080 fps=5 max s=1920x1080 fps=10 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=3840x2160 fps=18 max s=3840x2160 fps=18
  pixel_format=yuyv422  min s=3840x2160 fps=18 max s=3840x2160 fps=18 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1360x768 fps=8 max s=1360x768 fps=15
  pixel_format=yuyv422  min s=1360x768 fps=8 max s=1360x768 fps=15 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1280x1024 fps=8 max s=1280x1024 fps=15
  pixel_format=yuyv422  min s=1280x1024 fps=8 max s=1280x1024 fps=15 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1280x960 fps=10 max s=1280x960 fps=20
  pixel_format=yuyv422  min s=1280x960 fps=10 max s=1280x960 fps=20 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=1024x768 fps=10 max s=1024x768 fps=20
  pixel_format=yuyv422  min s=1024x768 fps=10 max s=1024x768 fps=20 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=720x480 fps=10 max s=720x480 fps=60.0002
  pixel_format=yuyv422  min s=720x480 fps=10 max s=720x480 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
  pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=60.0002
  pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=60.0002 (tv, bt470bg/bt709/unknown, topleft)
Error opening input file video=USB2 Video.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1920x1080의 경우 50fps로 줄었고, YUY2보다 MJPEG가 목록의 상위로 출력되었다. YUY2의 프레임 수는 필자의 예상대로 급격히 떨어진 것을 확인할 수 있다. 만약 FHD에서 50fps만 보인다면 USB2.0으로 인식한 것이니, 3.0포트로 옮겨야 한다. 가끔 3.0에 꼽아도 2.0으로 인식할 수 있으니, 다시 뺏다 꼽는 걸로..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;i&gt;버그를 하나 발견했는 데, YUVY에서 3840x2160에서 18fps라는 USB3.0과 동일한 결과를 출력했다. 될리가 없는 모드다.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;혹시나&amp;nbsp;몰라&amp;nbsp;테스트로&amp;nbsp;녹화를&amp;nbsp;해보니&amp;nbsp;2.7fps였다.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;권장하는&amp;nbsp;내용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결국,&amp;nbsp;제대로&amp;nbsp;사용하려면&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;써야&amp;nbsp;한다.&lt;/b&gt;&lt;br /&gt;1. 전원공급문제와 전송속도문제를 다 해결하기위해 위해 허브를 사용하지 말고, 컴퓨터에 붙어있는 USB3.0포트에 직접 꼽아야 한다.&lt;br /&gt;2. YUY2를 이용하여 화질을 최상으로 유지해야 한다. MJPEG만으로 만족한다면 Bandwidth를 줄일 수는 있다.&lt;br /&gt;3.&amp;nbsp;필자는&amp;nbsp;Loop-back보다는&amp;nbsp;분배기를&amp;nbsp;사용할&amp;nbsp;것을&amp;nbsp;권장한다.&amp;nbsp;전원부족문제도&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있고,&amp;nbsp;input-rack을&amp;nbsp;줄이기&amp;nbsp;위해서다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;단점이 있는데, 전원공급을 충분히 안정적으로 해주지 않으면 자꾸 연결이 끊기거나 오작동하는 일이 발생했다.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;신기했던 점은 컴퓨터에 연결하지 않고 USB전원만을 공급해도 이어폰포트를 통해 소리가 나왔다. 컴퓨터에 연결없이 라디오용도로 쓸 수도 있다.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Goods</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/329</guid>
      <comments>https://jamssoft.tistory.com/329#entry329comment</comments>
      <pubDate>Tue, 3 Feb 2026 01:10:35 +0900</pubDate>
    </item>
    <item>
      <title>이젠 끄지도 못하는 AhnLab safe Transaction(ASTx)</title>
      <link>https://jamssoft.tistory.com/328</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;참.... 이젠 하다하다 못해 키움증권&amp;nbsp; HTS나 은행보안프로그램으로 사용되는 ASTx가 서비스를 중지를 시킬 수도 없게 바뀌었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;v32.png&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNn8OQ/dJMcaaKEwxy/tNJrBOiO86Zbe24vkY81l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNn8OQ/dJMcaaKEwxy/tNJrBOiO86Zbe24vkY81l1/img.png&quot; data-alt=&quot;시작유형을 아예 변경할 수가 없다. 입이 더러워진다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNn8OQ/dJMcaaKEwxy/tNJrBOiO86Zbe24vkY81l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNn8OQ%2FdJMcaaKEwxy%2FtNJrBOiO86Zbe24vkY81l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;462&quot; height=&quot;528&quot; data-filename=&quot;v32.png&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;528&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;돈이 움직이는 앱들이라 끄고 사용할 수도 없지만, 문제는 이런 보안이 필요가 없는 상태에서도 늘 시스템의 리소스를 잡아먹고 있다는 것이다. 이런 보안프로그램을 극도로 싫어하는 필자같은 사람들은 스트레스를 받을 수 밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 이 사람들도 양심은 좀 있었는지, 필요한 경우만 실행할 수있는 방법을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;이 방법은 은행앱에 들어가거나 하면 수동으로 실행시켜줘야 하기 때문에&lt;/b&gt;&lt;/span&gt; 필자같은 정신병자를 제외한 일반인들은 포기하고 &lt;span style=&quot;color: #ee2323;&quot;&gt;그냥 쓰기를 권장&lt;/span&gt;한다. 키움증권 HTS나 은행사이트로 들어가면 자동으로 실행이 되고, 끄면 없이지지만, 모든 은행 사이트들은 확인해보지 못했다. 이 동작방식 또한 버전이 올라갈 때마다 변경될 수 있기에 그리 좋은 방법은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;꺼보자~&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;수동버전 다운로드 하기&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;v33.png&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Uc5zh/dJMcaa4W6I0/lfqsFLnpvKPJQliqPn7D10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Uc5zh/dJMcaa4W6I0/lfqsFLnpvKPJQliqPn7D10/img.png&quot; data-alt=&quot;환경설정으로 들어간다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Uc5zh/dJMcaa4W6I0/lfqsFLnpvKPJQliqPn7D10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUc5zh%2FdJMcaa4W6I0%2FlfqsFLnpvKPJQliqPn7D10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;322&quot; data-filename=&quot;v33.png&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;322&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;일단 윈도우 우측하단에 작은 아이콘들이 모여있는 곳에서 &quot;ASTx&quot;를 찾아 오른 쪽 버튼을 눌러 &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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;v34.png&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cum48A/dJMcabQkjL4/awcsPi77uVY8JFeKzfNASK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cum48A/dJMcabQkjL4/awcsPi77uVY8JFeKzfNASK/img.png&quot; data-alt=&quot;맨아래 붉은 색 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cum48A/dJMcabQkjL4/awcsPi77uVY8JFeKzfNASK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcum48A%2FdJMcabQkjL4%2FawcsPi77uVY8JFeKzfNASK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;568&quot; data-filename=&quot;v34.png&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;맨아래 붉은 색 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위과 같은 화면이 나오는 데 아래 빨간색부분을 클릭하면 다음과 같은 웹페이지가 열린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이 과정이 찾기 힘들다면 다음의 링크로 들어가도 된다.(링크라서 바뀔 수도 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ask.ahnlab.com/hc/ko/articles/48420503668505--ASTx-AhnLab-Safe-Transaction-%EC%8B%9C%EC%9E%91-%EC%9C%A0%ED%98%95-%EB%B3%80%EA%B2%BD-%EC%95%88%EB%82%B4&quot;&gt;https://ask.ahnlab.com/hc/ko/articles/48420503668505--ASTx-AhnLab-Safe-Transaction-%EC%8B%9C%EC%9E%91-%EC%9C%A0%ED%98%95-%EB%B3%80%EA%B2%BD-%EC%95%88%EB%82%B4&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;v31.png&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;962&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bm4I6/dJMcagD7om2/3mcdSXeVbzKeARvHEhkMp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bm4I6/dJMcagD7om2/3mcdSXeVbzKeARvHEhkMp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bm4I6/dJMcagD7om2/3mcdSXeVbzKeARvHEhkMp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBm4I6%2FdJMcagD7om2%2F3mcdSXeVbzKeARvHEhkMp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;608&quot; data-filename=&quot;v31.png&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;962&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림의 아래부분에&amp;nbsp; [수동 시작 설치본 다운로드(클릭)]을 눌러 파일을 다운로드 받는다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기존 꾸지고 악랄한 ASTx 제거&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 기존에 깔려 있던 ASTx를 지워야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;HTS나 은행사이트등을 전부 종료하고, &lt;/i&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;i&gt; &lt;i&gt;windows 11 : &lt;/i&gt; &quot;윈도우-&amp;gt;설정-&amp;gt;앱-&amp;gt;설치된 앱&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;windows 10 : &quot;윈도우-&amp;gt;설정-&amp;gt;앱및 기능&quot;&lt;/i&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;위와 같이 찾아가서 ASTx를 지운다. A로 시작하기 때문에 거의 최상단에 위치한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;v35.png&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pCAHn/dJMcaaDSQMl/TIWQ6iyAAiTZHtgV0oBH5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pCAHn/dJMcaaDSQMl/TIWQ6iyAAiTZHtgV0oBH5K/img.png&quot; data-alt=&quot;window11의 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pCAHn/dJMcaaDSQMl/TIWQ6iyAAiTZHtgV0oBH5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpCAHn%2FdJMcaaDSQMl%2FTIWQ6iyAAiTZHtgV0oBH5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;889&quot; height=&quot;237&quot; data-filename=&quot;v35.png&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;window11의 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;windows11의 경우 오른쪽에 ...를 눌러 제거를 선택해 지워버린다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;494&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqKWrT/dJMcabW5V3r/zxKiGBHkgKc64S8w5w1N00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqKWrT/dJMcabW5V3r/zxKiGBHkgKc64S8w5w1N00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqKWrT/dJMcabW5V3r/zxKiGBHkgKc64S8w5w1N00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqKWrT%2FdJMcabW5V3r%2FzxKiGBHkgKc64S8w5w1N00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;494&quot; height=&quot;155&quot; data-origin-width=&quot;494&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;window10의 경우 한번 클릭하면 제거버튼이 나타난다. 제거를 눌러 지워버린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;수동버전 설치&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 위에서 다운로드 받은 파일을 실행하여 설치하면, ASTx가 필요시마다 실행이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아.. 은행앱들은 주로 스마트폰을 쓰기에 HTS를 제외하곤 실행되지 않을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음번엔 또 어떤 악랄한 짓을 할지 벌써 걱정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Stock</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/328</guid>
      <comments>https://jamssoft.tistory.com/328#entry328comment</comments>
      <pubDate>Tue, 23 Dec 2025 11:22:22 +0900</pubDate>
    </item>
    <item>
      <title>짜증나는 키움증권 영웅문HTS 간편인증</title>
      <link>https://jamssoft.tistory.com/327</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;간편인증으로&amp;nbsp;HTS에&amp;nbsp;로그인하려고&amp;nbsp;핀번호를&amp;nbsp;올바르게&amp;nbsp;넣었지만&amp;nbsp;&quot;비밀번호&amp;nbsp;오류&amp;nbsp;메세지&quot;와&amp;nbsp;함께&amp;nbsp;로그인이&amp;nbsp;되지&amp;nbsp;않았다.&lt;br /&gt;&lt;br /&gt;난&amp;nbsp;정확히&amp;nbsp;정확히&amp;nbsp;정확히&amp;nbsp;넣었는&amp;nbsp;데,&amp;nbsp;이런&amp;nbsp;경우가&amp;nbsp;자주&amp;nbsp;발생해서&amp;nbsp;짜증난다.&amp;nbsp;같은&amp;nbsp;핀번호로&amp;nbsp;MTS로&amp;nbsp;들어가면&amp;nbsp;문제&amp;nbsp;없이&amp;nbsp;들어가는&amp;nbsp;데...&lt;br /&gt;&lt;br /&gt;혹시나&amp;nbsp;키보드가&amp;nbsp;문제일까해서&amp;nbsp;키보드도&amp;nbsp;바꿔보고&amp;nbsp;별짓을&amp;nbsp;다해봐도&amp;nbsp;소용이&amp;nbsp;없었다.&lt;br /&gt;&lt;br /&gt;또한&amp;nbsp;5번틀리게&amp;nbsp;되면&amp;nbsp;MTS마저도&amp;nbsp;문제가&amp;nbsp;생겨서&amp;nbsp;다시&amp;nbsp;간편인증을&amp;nbsp;등록해야한다.&lt;br /&gt;&lt;br /&gt;또또한 인증서를 지우려고 해도 비밀번호가 틀렸다고 하면서 지워지지도 않는다.&lt;br /&gt;&lt;br /&gt;또또또한 [아오~ 자꾸 생각만해도 짜증이~] MTS에서 [간편인증서 내보내기]를 해서 가지고 오면 같은 인증서가 있다고 하면서 새로 받아 오지도 못한다. 뭐 이런 뭣같은 경우가..&lt;br /&gt;&lt;br /&gt;일반&amp;nbsp;사용자로서는&amp;nbsp;어찌해야&amp;nbsp;할지&amp;nbsp;난감한&amp;nbsp;상황이다&amp;nbsp;전화해서&amp;nbsp;지롤떨&amp;nbsp;수도&amp;nbsp;없고..&lt;br /&gt;&lt;br /&gt;이런 멍뭉이거지 상황이 언제 발생하는지 곰곰히 생각해보니, PC의 설정을 바꾸거나 하드나 SSD를 추가 변경하는 등의 시스템의 변화가 있을 때 발생하는 것 같다.&lt;br /&gt;&lt;br /&gt;또또&amp;nbsp;우낀건&amp;nbsp;시스템변화가&amp;nbsp;있는&amp;nbsp;즉시도&amp;nbsp;아니고&amp;nbsp;30분에서&amp;nbsp;길게는&amp;nbsp;이틀정도&amp;nbsp;지난&amp;nbsp;다음에&amp;nbsp;이런&amp;nbsp;경우가&amp;nbsp;발생하는&amp;nbsp;듯하다.&lt;br /&gt;&lt;br /&gt;아오&amp;nbsp;빡쳐~&lt;br /&gt;&lt;br /&gt;&lt;b&gt;인증서&amp;nbsp;파일을&amp;nbsp;지우고&amp;nbsp;다시&amp;nbsp;MTS에서&amp;nbsp;내보내기로&amp;nbsp;받으면&amp;nbsp;될&amp;nbsp;듯해서&amp;nbsp;인증서파일을&amp;nbsp;찾아&amp;nbsp;지워버리기로&amp;nbsp;했다.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;여기서 필자는 간편인증의 메인이 스마트폰에 있는 상황이다. 따라서 PC의 인증서는 지워도 문제가 없다.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;다음의&amp;nbsp;경로에&amp;nbsp;있는&lt;b&gt;&lt;u&gt;&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;kezc.dbs&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;파일을&amp;nbsp;지워&amp;nbsp;버린다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;C:\사용자\[사용자명]\AppData\LocalLow\KEZC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;그리고&amp;nbsp;다시&amp;nbsp;MTS에서&amp;nbsp;인증서를&amp;nbsp;내보내기하고&amp;nbsp;PC에서&amp;nbsp;받아오면&amp;nbsp;로그인이&amp;nbsp;가능했다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;kezc.dbs파일은 sqlite3 database파일이다. 이 하나의 파일에 여러개의 인증서가 들어갈 수가 있다. 이 파일을 지우면 내부에 있던 인증서들이 모조리 날아가니 조심하길~&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&quot;시스템이&amp;nbsp;변경되어&amp;nbsp;현재&amp;nbsp;시스템의&amp;nbsp;간편인증을&amp;nbsp;중지합니다.&amp;nbsp;이러쿵&amp;nbsp;저러쿵&amp;nbsp;하세요!&quot;&amp;nbsp;&amp;lt;-&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간편인증 내보내기/가져오기는 아래의 링크로~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.kiwoom.com/h/help/cert/VHelpSimpleExportView?dummyVal=0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.kiwoom.com/h/help/cert/VHelpSimpleExportView?dummyVal=0&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1763542766744&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;키움증권&quot; data-og-description=&quot;최근검색메뉴 전체삭제&quot; data-og-host=&quot;www.kiwoom.com&quot; data-og-source-url=&quot;https://www.kiwoom.com/h/help/cert/VHelpSimpleExportView?dummyVal=0&quot; data-og-url=&quot;https://www.kiwoom.com/h/help/cert/VHelpSimpleExportView?dummyVal=0&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.kiwoom.com/h/help/cert/VHelpSimpleExportView?dummyVal=0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.kiwoom.com/h/help/cert/VHelpSimpleExportView?dummyVal=0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;키움증권&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;최근검색메뉴 전체삭제&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.kiwoom.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;아직도 빡침이 떠나지를 않는다..&lt;/p&gt;</description>
      <category>Stock</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/327</guid>
      <comments>https://jamssoft.tistory.com/327#entry327comment</comments>
      <pubDate>Wed, 19 Nov 2025 18:00:33 +0900</pubDate>
    </item>
    <item>
      <title>프린터 테스트 페이지 pdf</title>
      <link>https://jamssoft.tistory.com/326</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;심심해서 만든 프린트 테스트 페이지, 만드느라 죽는 줄..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래보이는 이미지를 &lt;b&gt;다운로드하지 마시고,&amp;nbsp;&lt;/b&gt;바로 아래 pdf파일을 다운로드 하세요~&lt;/p&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/dsvSEA/dJMcabpa4nU/F89tDoFNKSLu85mR3vCl0k/%ED%94%84%EB%A6%B0%ED%84%B0%ED%85%8C%EC%8A%A4%ED%8A%B8.pdf?attach=1&amp;amp;knm=tfile.pdf&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;프린터테스트.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.56MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&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;555&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HGg8e/dJMcai9DkJx/B2AaVsngG8KI42zRMk80Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HGg8e/dJMcai9DkJx/B2AaVsngG8KI42zRMk80Rk/img.png&quot; data-alt=&quot;프린터 테스트 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HGg8e/dJMcai9DkJx/B2AaVsngG8KI42zRMk80Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHGg8e%2FdJMcai9DkJx%2FB2AaVsngG8KI42zRMk80Rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;555&quot; height=&quot;785&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프린터 테스트 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인쇄는 &quot;&lt;b&gt;용지에 맞게 축소&quot;하면 안됩니다&lt;/b&gt;. 그냥 &lt;b&gt;&quot;100%!&amp;nbsp; &amp;nbsp;확대/축소없음&quot;&lt;/b&gt;으로 놓고 프린트를 해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보더리스(BorderLess:종이 가장자리까지 인쇄)를 지원하는 프린터는 이 기능을 켜고 찍어야 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 테두리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보더리스를 지원하지 않는 프린터가 출력할 수 있는 범위를 보기위해서 만들었습니다. 테두리의 두께는 1cm입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상측 좌측 눈금은 cm단위로 되어있어 실제 제대로 출력될 경우 30cm자로 대보고 눈금이 같은지 확인할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 기본색&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNlPzK/dJMcabbEluX/yOl7cEKxrZAt4LdE9g1gL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNlPzK/dJMcabbEluX/yOl7cEKxrZAt4LdE9g1gL0/img.png&quot; data-alt=&quot;기본색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNlPzK/dJMcabbEluX/yOl7cEKxrZAt4LdE9g1gL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNlPzK%2FdJMcabbEluX%2FyOl7cEKxrZAt4LdE9g1gL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;497&quot; height=&quot;143&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;143&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;프린터는 Cyan, Magenta, Yellow, blacK이 4가지 색을 조합하여 실제 출력을 합니다. 6색잉크를 쓰는 프린터의 경우 다른 색이 추가가 되는 데, 이는 브랜드마다 조금씩 다릅니다. 프린터 설명서를 뒤지면 어떤 색을 쓰는지 확인하여 출력결과물에서 제대로 나오는 지 확인하시면 됩니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 회색톤 체크&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;212&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/waG9S/dJMcagqurwC/q4YGNapXrtbrdfAh0ADfhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/waG9S/dJMcagqurwC/q4YGNapXrtbrdfAh0ADfhk/img.png&quot; data-alt=&quot;회색톤 체크용 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/waG9S/dJMcagqurwC/q4YGNapXrtbrdfAh0ADfhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwaG9S%2FdJMcagqurwC%2Fq4YGNapXrtbrdfAh0ADfhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;212&quot; height=&quot;153&quot; data-origin-width=&quot;212&quot; data-origin-height=&quot;153&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;네명의 여인이 있는 그림은 회색으로만 이루어져 있습니다. 아래의 그래디언트로된 바(Bar)는 &lt;b&gt;검은색으로만&lt;/b&gt; 출력하도록 만들어져 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회색으로만 만들어진 그림도 실제 출력에서는 CMYK를 전부 조합하여 출력을 하는 경우가 대부분입니다. 따라서 특정색이 많이 들어가면 회색이 아니게 됩니다. 이미지와 아래 그래이던트와 비교하여 얼마나 차이나는지 확인하고 수정하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 삼성레이저프린터에 한해서 그림이 퍼렇게 출력이 되는 경우가 있습니다. 프린터 설정에서 black Optimization이 이 퍼렇게 출력되는 것을 방지하는 설정입니다. 그림만 찍을 때는 끄고, 문서같은 것을 찍을 때는 켜는 것이 좋습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 서체 테스트&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6vAG4/dJMcafLS2g9/L0gkkuDBdWVToONx4MZKi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6vAG4/dJMcafLS2g9/L0gkkuDBdWVToONx4MZKi1/img.png&quot; data-alt=&quot;서체테스트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6vAG4/dJMcafLS2g9/L0gkkuDBdWVToONx4MZKi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6vAG4%2FdJMcafLS2g9%2FL0gkkuDBdWVToONx4MZKi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;106&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;106&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;&lt;b&gt;이 테스트는 특히 잉크젯프린터에서 좀 주의 깊게 봐야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 글자가 출력되는 지 보는 테스트가 아닙니다. 출력은 당연히 됩니다. 안되는 게 더 이상한거죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 글자가 빗나가면 프린터의 출력 헤더가 올바르게 정렬되지 않은 것입니다 가로와 세로로 빗나간 모습을 보고프린터 설명서에 따라 헤드를 정렬하면 됩니다.&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;pin.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lShwh/dJMcagjIKlJ/AHLCwvNSSiCfzNk7FQuDL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lShwh/dJMcagjIKlJ/AHLCwvNSSiCfzNk7FQuDL1/img.png&quot; data-alt=&quot;빗나간 글자들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lShwh/dJMcagjIKlJ/AHLCwvNSSiCfzNk7FQuDL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlShwh%2FdJMcagjIKlJ%2FAHLCwvNSSiCfzNk7FQuDL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;300&quot; data-filename=&quot;pin.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;빗나간 글자들&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. 프린터 해상도&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nC3yR/dJMcachjYVR/U5l6hVfjjHzEd4xNquKlQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nC3yR/dJMcachjYVR/U5l6hVfjjHzEd4xNquKlQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nC3yR/dJMcachjYVR/U5l6hVfjjHzEd4xNquKlQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnC3yR%2FdJMcachjYVR%2FU5l6hVfjjHzEd4xNquKlQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;108&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;108&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;왼쪽에서부터 오른쪽으로 가면서 선들이 점점 진해지게 되는 데, 완전히 검은색으로만 보이는 해상도값과 그의 왼쪽에 있는 해상도 사이의 값이 이 프린터/종이의 실제 해상도입니다. 잉크젯같은 경우 종이에 잉크가 번지기 때문에 정확한 값을 알 수는 없지만, &quot;이 프린터는 이 종이에 이정도 출력을 하는 구나~&quot;를 알 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6. 노즐막힘 체크&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sZxKg/dJMcadUMLMS/1g9gAUqTxiNahI0GAlbMV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sZxKg/dJMcadUMLMS/1g9gAUqTxiNahI0GAlbMV1/img.png&quot; data-alt=&quot;노즐막히 체크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sZxKg/dJMcadUMLMS/1g9gAUqTxiNahI0GAlbMV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsZxKg%2FdJMcadUMLMS%2F1g9gAUqTxiNahI0GAlbMV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;111&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;노즐막히 체크&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잉크젯 프린터의 노즐이 막혔는 지 테스트하는 부분입니다. 레이저는 거의 해당사항이 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력된 선들은 프린터가 출력할 수 있는 가장 가는 선으로만 출력을 하도록 되어 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선이 끊어져 있는 경우 노즐이 막힌 것이기 때문에 헤드청소를 해주어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LC1, LC2, LM1,LM2, G, LG의 경우 6색잉크를 쓰는 프린터용 입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;7. Trapping 테스트&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dq455X/dJMcaiaL1qp/1Ja3SBbI8MLuegWt3T9k1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dq455X/dJMcaiaL1qp/1Ja3SBbI8MLuegWt3T9k1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dq455X/dJMcaiaL1qp/1Ja3SBbI8MLuegWt3T9k1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdq455X%2FdJMcaiaL1qp%2F1Ja3SBbI8MLuegWt3T9k1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;608&quot; height=&quot;65&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;65&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;잉크젯은 잉크가 번지지 때문에 문제가 거의 없습니다. 하지만 레이저의 경우 C, M, Y, K를 전사 벨트라는 곳에 따로 따로 그리다 보니 색깔별로 빗나가는 경우 생깁니다. 안쪽에 사각형 테두리에 흰색선이 생긴다면 또는 색이 곂친다면 빗나간 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레이저프린터는 주로 이 빗나가는 것을 수정하기 위해 위치를 바꾸는 방식을 쓰지 않고, 색깔별로 좀 더 &lt;b&gt;두껍게 할지 가늘게 할지&lt;/b&gt;로 정해집니다. 이 설정을 찾아 알맞은 두께를 지정하면 됩니다.(Trapping을 찾아보세요~)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;8. OverPrint 테스트&lt;/h4&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;485&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWcUCY/dJMcahbRvq3/rA8TDQXQY1TQUXAEQQJ6kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWcUCY/dJMcahbRvq3/rA8TDQXQY1TQUXAEQQJ6kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWcUCY/dJMcahbRvq3/rA8TDQXQY1TQUXAEQQJ6kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWcUCY%2FdJMcahbRvq3%2FrA8TDQXQY1TQUXAEQQJ6kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;83&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;83&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프린터 중에는 색을 여러번 찍을 수 있는 것이 있습니다. (여러번보다는 색을 겹쳐서 찍는다!입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장왼쪽의 이미지는&amp;nbsp; &quot;원&quot;을 Cyan, Magenta, Yellow로 따로 따로 찍도록 만들어진 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sample1은 Cyan과 Magenta를 따로 따로 찍어서 겹치는 부분이 파란색이 되는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sample2는 이 겹쳐찍기를 지원하지 않는 대부분의 프린터가 출력되는 형태입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OUTPUT이 Sample1과 같으면 OverPrint를 지원하는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/326</guid>
      <comments>https://jamssoft.tistory.com/326#entry326comment</comments>
      <pubDate>Mon, 26 May 2025 17:26:23 +0900</pubDate>
    </item>
    <item>
      <title>이미지 파일 크기를 줄이기 AVIF</title>
      <link>https://jamssoft.tistory.com/325</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;티스토리 탈출 러시가 시작된지 오래됐지만(지금도 탈출하고 계신지...), 다른 블로그로 이동하시거나 워드프레스로 이동하시는 분이 많은 듯 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 서버운영에 따른 트래픽 사용료를 부담해야 하는 상황이라, 이 트래픽을 조금이라도 줄이고자 할 때, 가장 좋은 방법은 화질은 최대한 유지하면서 파일의 크기를 줄이는 것이겠지요.. 음.... 각설해야 겠네요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음에 가서 공짜로 하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://yourbread.duckdns.org/imgconverter/&quot;&gt;https://yourbread.duckdns.org/imgconverter/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 문제는 댓글로 남겨 주시기 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;추가 기능 구현&quot;같은 요청은 적어 두셔도 되는 데, 시간이 허락할 지&amp;nbsp; 모르겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외국인칭구들도 쓰라고 영어로만 만들었는 데, 그리 어렵지 않을 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WASM과 CANVAS, IndexedDB로 작성된 거라 브라우저만으로 만들어냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저가 인식할 수 있는 모든 이미지 포맷을 AVIF, JPEG, PNG, WEBP로 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AVIF는 너무 느리기 때문에 WEBP를 추천하지만, 조금이라도 크기가 중요하신분은 AVIF로 하셔도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼..&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <category>avif encoder</category>
      <category>그림파일 크기 줄이기</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/325</guid>
      <comments>https://jamssoft.tistory.com/325#entry325comment</comments>
      <pubDate>Mon, 18 Nov 2024 08:07:57 +0900</pubDate>
    </item>
    <item>
      <title>BiLinear Interpolation of Image in C</title>
      <link>https://jamssoft.tistory.com/322</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;구글을&amp;nbsp;뒤져서&amp;nbsp;다음의&amp;nbsp;코드를&amp;nbsp;찾아&amp;nbsp;냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/folkertdev/6b930c7a7856e36dcad0a72a03e66716&quot;&gt;https://gist.github.com/folkertdev/6b930c7a7856e36dcad0a72a03e66716&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715068860042&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;bilinear interpolation in C&quot; data-og-description=&quot;bilinear interpolation in C. GitHub Gist: instantly share code, notes, and snippets.&quot; data-og-host=&quot;gist.github.com&quot; data-og-source-url=&quot;https://gist.github.com/folkertdev/6b930c7a7856e36dcad0a72a03e66716&quot; data-og-url=&quot;https://gist.github.com/folkertdev/6b930c7a7856e36dcad0a72a03e66716&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gke8I/hyVZmfrs2q/fjGRZzKuXBTSejGLoe8uT0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://gist.github.com/folkertdev/6b930c7a7856e36dcad0a72a03e66716&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gist.github.com/folkertdev/6b930c7a7856e36dcad0a72a03e66716&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gke8I/hyVZmfrs2q/fjGRZzKuXBTSejGLoe8uT0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640');&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;bilinear interpolation in C&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;bilinear interpolation in C. GitHub Gist: instantly share code, notes, and snippets.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gist.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;오랜동안 살아있는 링크로 알고 있지만, 혹시나 언제 지워질지 모르니 복사를 해 둔다.&lt;/p&gt;
&lt;pre id=&quot;code_1715068942613&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/// Sources:
//
//  - https://chao-ji.github.io/jekyll/update/2018/07/19/BilinearResize.html
void bilinear_interpolation(float *data, uint32_t input_width,
                            uint32_t input_height, uint32_t output_width,
                            uint32_t output_height, float *output) {
    float x_ratio, y_ratio;

    if (output_width &amp;gt; 1) {
        x_ratio = ((float)input_width - 1.0) / ((float)output_width - 1.0);
    } else {
        x_ratio = 0;
    }

    if (output_height &amp;gt; 1) {
        y_ratio = ((float)input_height - 1.0) / ((float)output_height - 1.0);
    } else {
        y_ratio = 0;
    }

    for (int i = 0; i &amp;lt; output_height; i++) {
        for (int j = 0; j &amp;lt; output_width; j++) {
            float x_l = floor(x_ratio * (float)j);
            float y_l = floor(y_ratio * (float)i);
            float x_h = ceil(x_ratio * (float)j);
            float y_h = ceil(y_ratio * (float)i);

            float x_weight = (x_ratio * (float)j) - x_l;
            float y_weight = (y_ratio * (float)i) - y_l;

            float a = data[(int)y_l * input_width + (int)x_l];
            float b = data[(int)y_l * input_width + (int)x_h];
            float c = data[(int)y_h * input_width + (int)x_l];
            float d = data[(int)y_h * input_width + (int)x_h];

            float pixel = a * (1.0 - x_weight) * (1.0 - y_weight) +
                          b * x_weight * (1.0 - y_weight) +
                          c * y_weight * (1.0 - x_weight) +
                          d * x_weight * y_weight;

            output[i * output_width + j] = pixel;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해 하기 쉽게 깔끔히 작성된 코드라서 분석을 해보기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC7MXp/btsHe4fI1WH/47AqIpywr9vCykI4Ad6gbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC7MXp/btsHe4fI1WH/47AqIpywr9vCykI4Ad6gbK/img.png&quot; data-alt=&quot;크기변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC7MXp/btsHe4fI1WH/47AqIpywr9vCykI4Ad6gbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC7MXp%2FbtsHe4fI1WH%2F47AqIpywr9vCykI4Ad6gbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;316&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크기변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;분석~&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 이미지의 픽셀에 해당하는 원본의 픽셀 위치를 계산한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산된 위치의 픽셀[1]과, 바로 오른쪽[2]/ 바로 아래[3] / 바로 오른쪽-아래픽셀[4], 총 4개의 픽셀에 거리에 따른 가중치를 적용해서 새로운 픽셀값을 계산해 낸다.&lt;b&gt; 바로 옆에 붙어 있는 픽셀로만 계산&lt;/b&gt;하도록 되어 있다.( 비율과 상관없이 멀리 떨어진 픽셀은 신경도 안쓴다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 픽셀의 경우[마지막 픽셀도] 옆에 붙어 있는 픽셀을 참조하진 않지만 참조시켜도 가중치가 첫 픽셀에만 집중되기 때문에 결과는 같다. 하지만 마지막 픽셀의 경우 원본의 참조 범위가 넘어가기 때문에 참조하는 픽셀은 이웃한 픽셀없이 해당하는 픽셀로 한정 시키고 있다. 생성할 이미지가 원본에 비해 아주 클 경우 참조하는 픽셀은 1개만 되는 경우도 많다. 하지만 이런 경우가 테스트를 해보니 그리 많지 않아 최적화를 위해 if문으로 분기시킬 이유는 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이웃한 픽셀을 참조할지 말지는 xr값에 소수점이 있느냐 없느냐로 구분되고 이 소수점 부분이 가중치 계산에 이용된다.&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;611&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddUozu/btsHe4GM0NQ/KFVq4Ig2DGgOf7eTUfKzq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddUozu/btsHe4GM0NQ/KFVq4Ig2DGgOf7eTUfKzq0/img.png&quot; data-alt=&quot;변환&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddUozu/btsHe4GM0NQ/KFVq4Ig2DGgOf7eTUfKzq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddUozu%2FbtsHe4GM0NQ%2FKFVq4Ig2DGgOf7eTUfKzq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;611&quot; height=&quot;313&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;변환&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pD8PM/btsHcprC4J4/nsgqmtkjIXM4NwFl2Pt6Ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pD8PM/btsHcprC4J4/nsgqmtkjIXM4NwFl2Pt6Ek/img.png&quot; data-alt=&quot;가중치가 0.5, 0.5일경우 균등하게 적용된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pD8PM/btsHcprC4J4/nsgqmtkjIXM4NwFl2Pt6Ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpD8PM%2FbtsHcprC4J4%2FnsgqmtkjIXM4NwFl2Pt6Ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;776&quot; height=&quot;359&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;359&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가중치가 0.5, 0.5일경우 균등하게 적용된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만.. 위에 코드는 한가지 색밖에 처리할 수 없다. RGBA같이 4개의 색을 처리하려면 코드를 좀 수정해줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위코드를 바탕으로 RGBA/32비트를 처리하는 코드로 재작성한 코드는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;imageDsp.h&lt;/p&gt;
&lt;pre id=&quot;code_1715098009709&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;inttypes.h&amp;gt;
struct IMAGE_RESAMPLE_PARAM {
    int32_t   srcW;
    int32_t   srcH;
    int32_t   srcStride; // in pixel
    uint32_t* srcPixels;
    
    int32_t  dstW;
    int32_t  dstH;
    int32_t  dstStride; // in pixel
    uint32_t* dstPixels;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;srcStride와 dstStride는 byte단위가 아니고 픽셀단위(byte/4)로 설정하게 만들었다. 32비트만 쓸 것이기에 이렇게 작성되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;imageDsp.cpp&lt;/p&gt;
&lt;pre id=&quot;code_1715097967020&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;math.h&amp;gt;

bool ImageResampleFloat( const IMAGE_RESAMPLE_PARAM&amp;amp; param ) {
    
    const float x_ratio = param.dstW &amp;gt; 1 ? ( param.srcW - 1.0F ) / ( param.dstW - 1.0F ) : 0.0F;
    const float y_ratio = param.dstH &amp;gt; 1 ? ( param.srcH - 1.0F ) / ( param.dstH - 1.0F ) : 0.0F;

    for (int y = 0; y &amp;lt; param.dstH ; y++) {
        const float yr = y * y_ratio;
        const float y_l = floorf( yr );
        const float y_h = ceilf( yr );
        const float y_w = yr - y_l;

        uint32_t* srcPixelY1 = param.srcPixels + param.srcStride * (int)y_l;
        uint32_t* srcPixelY2 = param.srcPixels + param.srcStride * (int)y_h;
        uint8_t*  dstPixel   = (uint8_t*)( param.dstPixels + param.dstStride *  y );
       
        
        for (int x = 0; x &amp;lt; param.dstW ; x++ ) {
            const float xr = x * x_ratio;
            const float x_l = floorf( xr );
            const float x_h = ceil( xr );
            const float x_w = xr - x_l;
                        
            
            const float f4 = x_w * y_w;
            const float f1 = 1.0F - x_w - y_w + f4;
            const float f2 = x_w - f4;
            const float f3 = y_w - f4;
            
            const uint8_t* pxa = (uint8_t*)( srcPixelY1 + (int)x_l );
            const uint8_t* pxb = (uint8_t*)( srcPixelY1 + (int)x_h );
            const uint8_t* pxc = (uint8_t*)( srcPixelY2 + (int)x_l );
            const uint8_t* pxd = (uint8_t*)( srcPixelY2 + (int)x_h );
            
            dstPixel[0] = (uint8_t)( f1 * pxa[0] + f2 * pxb[0] + f3 * pxc[0] + f4 * pxd[0] );
            dstPixel[1] = (uint8_t)( f1 * pxa[1] + f2 * pxb[1] + f3 * pxc[1] + f4 * pxd[1] );
            dstPixel[2] = (uint8_t)( f1 * pxa[2] + f2 * pxb[2] + f3 * pxc[2] + f4 * pxd[2] );
            dstPixel[3] = (uint8_t)( f1 * pxa[3] + f2 * pxb[3] + f3 * pxc[3] + f4 * pxd[3] );
            
            dstPixel += 4;
        }
    }
    
    return true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RGB/GA등 1~3개의 색을 처리하려면 위의 코드를 좀 수정해서 쓰면 될 것이다. 필자의 경우 모든이미지를 RGBA[32비트=8bits*4colors]로만 처리하기 때문에 특별히 수정할 일은 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;최적화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지를 다루는 작업은 워낙 처리할 양이 많아서 최적화작업을 해주면 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 연산을 거의 전부 float으로 처리하기 때문에 int형을 이용한 계산을 하면 속도가 빨라 질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이중루프를 이용하는 코드라 내부 루프의 내용에서 1Clock만 줄이더라도 1024x1024이미지의 경우 약 백만Clock을 줄일수가 있다. 내부루프에서 외부로 뺄 수 있는 것은 빼준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. CPU를 이용한 코드라서 openmp를 이용하면 cpu수만큼 속도가 빨라질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. xr변수의 경우 일정하게 증가하기 때문에 곱하기 연산에서 xr변수를 계속 증가시키는 방식을 적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; yr변수도 같은 방식으로 처리할 수 있지만 openmp를 사용하기 위해서 그냥 놔두었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 곱하기연산을 대체할 수 있는 것은 최대한 대체해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 최적화를 적용한 코드는 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1715098878302&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bool ImageResample( const IMAGE_RESAMPLE_PARAM&amp;amp; param ) {
    
    const int32_t x_ratio = param.dstW &amp;gt; 1 ? ( (param.srcW - 1) &amp;lt;&amp;lt; 16 ) / (param.dstW - 1) : 0;
    const int32_t y_ratio = param.dstH &amp;gt; 1 ? ( (param.srcH - 1) &amp;lt;&amp;lt; 16 ) / (param.dstH - 1) : 0;
    
#ifdef NDEBUG
    #pragma omp parallel for schedule( static )
#endif
    for (int y = 0; y &amp;lt; param.dstH ; y++) {
        const int32_t yr = y * y_ratio;
        const int32_t y_l = yr &amp;gt;&amp;gt; 16;
        const int32_t y_w = yr &amp;amp; 0xffff;
        const int32_t y_h = y_w ? y_l + 1 : y_l; // same to y_l or just below pixel
        assert( y_h &amp;lt; param.srcH );

        uint32_t* srcPixelY1 = param.srcPixels + param.srcStride * y_l;
        uint32_t* srcPixelY2 = param.srcPixels + param.srcStride * y_h;
        uint8_t*  dstPixel   = (uint8_t*)( param.dstPixels + param.dstStride *  y );
       
        int32_t xr = 0;
        
        for (int x = 0; x &amp;lt; param.dstW ; x++ ) {
            
            const int32_t x_l = xr &amp;gt;&amp;gt; 16;
            const int32_t x_w = xr &amp;amp; 0xffff; 
            const int32_t x_h = x_w ? x_l + 1 : x_l;
            assert( x_h &amp;lt; param.srcW );
                        
            const int32_t f4 = (int32_t)( ( (int64_t)x_w * (int64_t)y_w ) &amp;gt;&amp;gt; 16LL );
            const int32_t f3 = y_w - f4;
            const int32_t f2 = x_w - f4;
            const int32_t f1 = 65536 - y_w - f2; // 65536 - y_w - x_w  + f4;
                                
            const uint8_t* pxa = (uint8_t*)( srcPixelY1 + x_l );
            const uint8_t* pxb = (uint8_t*)( srcPixelY1 + x_h );
            const uint8_t* pxc = (uint8_t*)( srcPixelY2 + x_l );
            const uint8_t* pxd = (uint8_t*)( srcPixelY2 + x_h );
            
            dstPixel[0] = (uint8_t)( ( f1 * pxa[0] + f2 * pxb[0] + f3 * pxc[0] + f4 * pxd[0] ) &amp;gt;&amp;gt; 16 );
            dstPixel[1] = (uint8_t)( ( f1 * pxa[1] + f2 * pxb[1] + f3 * pxc[1] + f4 * pxd[1] ) &amp;gt;&amp;gt; 16 );
            dstPixel[2] = (uint8_t)( ( f1 * pxa[2] + f2 * pxb[2] + f3 * pxc[2] + f4 * pxd[2] ) &amp;gt;&amp;gt; 16 );
            dstPixel[3] = (uint8_t)( ( f1 * pxa[3] + f2 * pxb[3] + f3 * pxc[3] + f4 * pxd[3] ) &amp;gt;&amp;gt; 16 );
            dstPixel += 4;
           
            xr += x_ratio;
        }
    }
    
    return true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;openMP를 쓰지 않을 사람은 openMP부분만을 제거하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;float연산을 이용한 코드보다 2~3배정도 빨라지긴 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일에 필요한 flag와 option은 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1715099241151&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;Compile flag&amp;gt;
cpp ver : -std=c++17
openMP  : -fopenmp
simd    : -msse4.2 or -msse or 안드로이드라면 neon으로 적용하면 된다.

&amp;lt;Linker option&amp;gt;
math   : -lm
openMP : -lgomp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이것저것 만들면서 들었던 생각들&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. unrolling을 적용해 봤지만 내부 루프에 연산이 많아 너무 의미가 없어서 빼버렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. xr값의 변화를 incremental방식을 적용할 경우 int는 문제가 별로 없지만, float의 경우 마지막 픽셀 값이 정확히 떨어지지 않아서 x_h계산할 때 참조 메모리를 넘어가 버린다. [FLOAT epsilon]을 빼봤지만 차이가 없었다. 일정량을 빼버리기엔 계산하기 싫어서 그냥 포기했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2 - 1 . int연산의 경우 약간의 오차가 발생하긴 했지만 문제가 될 수준은 아니었다. x축의 마지막 픽셀에 오차가 좀 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 어셈블러로 코딩할까 고민해 보았지만, 32bits/neon등 할 작업이 많아서 그냥 포기했다. compile된 코드를 보니 2배는 빠르게 만들 것같지만... 수정하려면 그 것도 머리 아프기도 하고..&lt;/p&gt;</description>
      <category>리눅스</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/322</guid>
      <comments>https://jamssoft.tistory.com/322#entry322comment</comments>
      <pubDate>Tue, 7 May 2024 17:03:49 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 11 동영상(음악)있는 폴더만 들어가면 느려지는...</title>
      <link>https://jamssoft.tistory.com/320</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아.. 뭐 이런 어의 없는 상황이 발생했다.. 언젠가부터.. 이주일정도된 듯한데.. 동영상이 있는 폴더나 음악파일이 큰 폴더만 들어가면 느려지는 현상이 발생했다. SSD속도를 계산해보더라도 하드웨어적인 문제는 아닌 것으로 추측이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 윈도우가 일일이 파일을 다 읽어서 파일을 분석하느라 느려진다는 것인데, 필자의 경우 음악파일이 3~5시간짜리들이 있는 데, 이 녀석들이 처리되느라 느려지는 듯 했다. 게다가 같은 폴더에 4K영상까지 있으니 들어갈때마다 하세월이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 걸로 짜증을 내고 있다가 한가지 방법을 알게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일당 해당하는 폴더에서 오른쪽을 클릭하여 속성창을 연다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12.png&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lYMNO/btsFDzP1R1w/3ZunSsrbtADqAQxdAynWmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lYMNO/btsFDzP1R1w/3ZunSsrbtADqAQxdAynWmK/img.png&quot; data-alt=&quot;일단 속성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lYMNO/btsFDzP1R1w/3ZunSsrbtADqAQxdAynWmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlYMNO%2FbtsFDzP1R1w%2F3ZunSsrbtADqAQxdAynWmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;375&quot; height=&quot;634&quot; data-filename=&quot;12.png&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;634&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;속성창이 뜨면 사용자 지정으로 가서 [다음에 대해 이 폴더 최적화]를 일반항목으로 바꾼다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zNKlX/btsFFRI88qn/GJok0wSTHkPpOZIlcQj16k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zNKlX/btsFFRI88qn/GJok0wSTHkPpOZIlcQj16k/img.png&quot; data-alt=&quot;일반항목으로 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zNKlX/btsFFRI88qn/GJok0wSTHkPpOZIlcQj16k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzNKlX%2FbtsFFRI88qn%2FGJok0wSTHkPpOZIlcQj16k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;420&quot; height=&quot;550&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;일반항목으로 변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[이 템플릿을 모든 하위폴더에도 적용]을 선택하면 좋을 듯하지만 보통 영상과 음악파일을 따로 모아두니 이런 곳만 해주면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/320</guid>
      <comments>https://jamssoft.tistory.com/320#entry320comment</comments>
      <pubDate>Sat, 9 Mar 2024 17:36:07 +0900</pubDate>
    </item>
    <item>
      <title>공부하는 법? 잘하는 법?</title>
      <link>https://jamssoft.tistory.com/317</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;시작하며..&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 학창시절 공부하는 법을 몰랐다. 단지 책을 펴놓고 읽어내려가며 여러번 보았을 뿐이다. 이 방법도 공부하는 법이긴하지만, 제대로 공부하는 법은 대학졸업 후에나 알게 되었다. 고등학교 2학년때만 알았어도 S대 갔을 텐데...ㅠㅠ&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;일단 공부를 해야 된다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책을 베고 잔다고 공부가 되는 것은 아니다. 공부하는 법을 알든 모르든 일단 책상에 앉아 있어야 한다. 공부를 잘하려면 책상에 있는 시간이 늘어나야 한다. 일단 책상에 적응하기위해 필자는 어린시절에 책상에서 만화책을 읽었다. 나이가 조금 늘 어가면서 소설책으로 지금은 교양서를 주로 읽는다. 적응이되면 방에 들어왔을 때, 짐을 내려 놓고 바로 책상으로 향하는 버릇이 생겼다. 중요한 점은 &quot;책상에서 뭔가를 읽었다.&quot;라는 것이다. 책상에서 컴퓨터를 켜고 게임을 하는 것은 공부가 아니다. 책상에서 무언가 도움이 되는 것을 읽으라는 것이다. 되도록이면 컴퓨터나 스마트폰이 아닌 &lt;b&gt;책&lt;/b&gt;이어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책상에 적응이 되었으면 이제 공부를 하면 된다. &lt;b&gt;공부를 잘하는 첫번째는 &quot;공부에 시간투자를 &lt;b&gt;얼마나 &lt;/b&gt; 하느냐&quot;다.&lt;/b&gt; 어린시절 공부를 아주 잘했던 사촌형은 자는 시간, 밥 먹는 시간, 노는 시간을 제외하고는 공부만 했다. 노는시간은 극히 짧았으며, 심지어 노는 것도 스케쥴을 잡아서 알차게 노는 모습은 놀랍기도 했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;우리 아이가 머리는 좋아요~.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학부모들에게 제일 많이 듣는 말이다. 머리가 좋으면 공부에 도움이 쪼~끔은 된다. 머리가 좋은 것은 공부 잘하는 것과 거의 관련이 없다. 아이큐는 높으면 좋지만 200이 넘어봤자 별거 아니다. 필자의 IQ는 놀랄만큼 높았었다(이놈의 담배..). 중학교때는 공부를 하지 않았다. 수업시간에만 집중해서 듣고, 그냥 시험만 쳤다. 나머지는 친구들과 룰루랄라 놀러만 다녔다. 성적은 상당한 상위권이었다. 어린시절부터 필자에게는 천재 비슷한 별명이 늘 따라 다녔다. 고등학교때에도 중학교 시절처럼 했다. 하지만 성적은 바닥을 치고 있었다. &lt;b&gt;고등학교 교과과정은 머리가 아무리 좋아도 공부에 시간투자를 하지 않으면 안되는 어려운 내용이다&lt;/b&gt;. &lt;b&gt;게다가 내용도 아주 많다.&lt;/b&gt; 공부를 하지 않으면 시험에서 좋은 결과를 절대 낼 수가 없다. 머리가 아무리 좋아도 무조건 공부에 많은 시간을 투자해야만 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여담으로 아인슈타인의 아이큐가 170이라고 하는 데, 근거가 있는 이야기인지는 모르겠다. 아이큐가 170이 넘는 사람은 지구상에 꽤 많다. 이때까지 있어왔고, 앞으로도 계속 있을 것이다. 하지만 아인슈타인만큼 업적을 이룬 사람은 없다. 이 글을 읽는 독자나 독자의 자녀는 천재가 아님을 잊지 말라는 것이다. 아이큐 200도 천재는 아니다. 200과 100은 사실 차이가 없다고 봐도 된다(필자가 좀 많이 높다. 하지만 전혀 도움이 안된다). 아인슈타인은 천재지만 아이큐 때문이 아니다. 천재라도 공부는 해야 한다. 사람의 지능은 대부분 고만고만하다.&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;b&gt;시간을 들여서 운동을 해야 한다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대학시절 친한 교수님이 계셨는 데, 이 분은 근육질의 몸을 타고 났다. 운동을 하지 않아도 힘이 넘쳐나는 몸. 고등학교시절에 공부를 잘하는 친구들 중에 80%정도는 토실토실한 몸을 하고 있었다. 타고난 체력은 공부하는 데에 행운이 따른 것이다. 마치 노래를 잘하는 타고난 재능 같은 것이다. 타고나지 못한 사람은 운동을 하라는 것이다. 서울대병원 의사선생님 중에 기골도 장대하고 타고난 체력을 가진 분있는데 이런 사람도 늘 운동을 아주 강도높게 한다.&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;b&gt;익힐&lt;/b&gt;습), &quot;학&quot;은 선생님이 학생에게 가르쳐 주는 것으로 이해하면 되고, &quot;습&quot;은 스스로 공부하는 것을 말한다. 실제 머리속에 심는 과정은 &quot;습&quot;에서 일어난다. 학교에서 들은 것만으로는 자기의 것이 되지 않는다. 책상에서 책과 공책을 펴 놓고 이해하려고 낑~낑~되는 이 &quot;습&quot;에서 자기의 것이 되는 것이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공부 잘하는 법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부라는 행동은 머리속에 지식을 넣는 과정이다. 정확히 머리라는 대리석에 정으로 정보를 새기는 과정이다. 같은 내용을 공부하면 할수록 새겨지는 깊이가 깊어진다. 장기적으로 기억하기위해서는 &quot;7번정도 봐야한다&quot;는 속설(근거가 없어서)이 있다. 이 때 단순히 눈으로 봐서는 안되고 &lt;b&gt;집중&lt;/b&gt;해서 봐야 한다. 얼렁설렁 읽으면 시간만 버리게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 정보를 새기는 과정에서 아주 튼튼히 새기는 특별한 방법이 있다. 7번 봐야할 것은 2~3번으로 줄일 수있는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정한 양(필자의 경우 1장정도)을 공부하면 공부한 것을 &lt;b&gt;보지않고&lt;/b&gt; 적어보는 것이다. 일단 공부를 하면 머리속 어딘가에 들어간다.이 것을 다시 꺼내는 것은 아주 어려운 일이다. 이 과정에서 더 튼튼히 새겨지는 일이 뇌에서 일어난다. 곰곰히 공부한 것을 생각하며 적으면 된다. 하지만 모든 것을 기억할 수 없기 때문에, 도저히 기억이 나지 않는 다면, 그 부분을 다시 보면 된다. 이런 작업을 반복해서 다 적을 수 있을 때까지 하면 된다. 글자하나하나를 일일이 외우라는 것이 아니다. 적은 핵심이 되는 단어와 내용이 공부한 것과 같은 의미만 가지면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 잘한다는 것은 시험을 잘치는 행위를 포함한다. 시험을 잘 본다는 것은 시험문제를 많이 풀어낸다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예상문제지를 푸는 과정도 위와 비슷하다. 문제를 풀고 답을 맞춰본 후에 다시 적었던 답을 전부 깨끗이 지운다. 그리고 다시 문제를 푼다. 이 때에도 답이 무엇이었는 지를 낑~낑~대며 생각이 날 때까지 해본다. 정 기억이 않나면 넘어가도 된다.&amp;nbsp; 어차피 다시 풀 것이기 때문이다. 이 과정을 반복해서 전부 답을 맞출 때까지 반복해서 해야 한다. 100점이 나오면 한번 더 해서 다시 100점이 나오면 끝난다. 필기 시험을 이렇게 치루기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 학교에서 최상위권 학생들은 이렇게 공부를 한다. 지식도 머리에 잘 새길 뿐만 아니라 시험을 잘치는 방식으로 공부한다. 학원을 천군데 다닌다고 해도 이 방법을 쓰지 않으면 최상위권의 성적을 얻을 수가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 이 내용이 독자들이 원하는 답일 것이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;음.. 이런 거 이야기하면 안되는 데..&lt;br /&gt;공부를 아무리 반복해도 머리속에 안들어 가는 것이 있다. 필자는 아직도 영단어 &quot;embrass&quot;의 뜻을 기억하지 못한다. 아무리 여러번 보고 적고 안보고 끄집어내려 해도 도무지 머리속에 들어가지 않는다. 이런지 40년이 되어간다. &lt;br /&gt;이 때는 시험보러가서 이런 기억 못하는 단어만 시험직전에 보고 있다가, 시험지가 오자마자 적어두는 얍쌉한(?) 방법이 있다.&lt;br /&gt;수학은 기억이 나지않는 한줄만 슥~ 적으면 된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;머리가 아프다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 하거나 위의 방식으로 예상 문제지를 풀 때, 머리가 정말 아픈 것을 느낄 것이다. 아이에게 공부하라고 하면 안하는 이유가 이 두통이 있기 때문이다. 태어나서 처음 공부를 시키면 공부를 시도하지만 이 두통으로 인해 공부가 싫어지게 된다. 하지만 공부라는 것은 위에서 이야기 했듯 머리에 새기는 과정이다. 새기는 과정이 두통을 유발한다. 두통이 없다면 새겨지고 있지 않거나, 이미 새겨진 것이다. 공부할 때 머리가 아픈 것은 정상이며 머리속에 들어가고 있다는 뜻이 되니 오히려 &quot;좋아라~&quot;하면 된다. 공부가 즐거워질 것이다.&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;문서도 화면을 통해서 보면 제대로 읽지 않는다는 것이 이미 과학적으로 밝혀진 결과다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유아시절 [뽀뽀뽀]수준의 정보를 넘어서는 것은 &lt;b&gt;종이 매체를 이용해서 공부해야 한다&lt;/b&gt;.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;잠 좀 자자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 하면 머리속 해마라는 석고에 기록이 된다. 사람은 잠을 잘 때 필요없는 정보를 해마에서 지우고 필요한 정보를 전두엽(이곳인지 확실한지는)이라는 대리석에 옮기는 과정이 발생한다. 잠을 자지 않으면 대리석으로 옮겨지지 않는다. 또한 같은 정보를 계속 해마에 새겨야 대리석에도 더 깊이 기록이 된다. 그리고 인생에서 잠도 못자고 공부하는 사람은 공부가 너무 좋은 사람만 해도 된다. 그런 사람 많다. 필자는 잠꾸러기라서 못자서 멍~한 상태를 아주 싫어한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;필자가 가끔 쓰는 방식인 데, 해마는 자고 일어난 후부터 잠들때까지 거의 모든 정보가 지워지지 않고 담겨 있다. 시험 전날 공부를 하면서 요약본을 적어두고 미비한 부분을 기록해둔다. 아침에 일찍 일어나서 미비한 부분만 따로본 후 시험을 보면 시험볼 때 아주 잘 기억이 난다. 물론 그 다음날이 되면 사라지겠지만... 벼락치기도 기술이 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;&amp;nbsp;&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;학창시절 베프가 있었다. 친구집에 놀러 갔는 데 어머님 말씀이 친구는 나가고 없다는 것이다. &quot;그렇구나~&quot; 했지만, 사실 친구가 집에 있다는 것을 알고 있었다. 모른척 집에 돌아왔지만... 어머님은 공부에 방해가 된다고 나에게 거짓말을 한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;친구 어머님은 중요한 사실을 모르고 있었다. 다른 사람과 더불어 사는 것이 인생인 데 이기적인 인생으로 친구를 내몰고 있다는 것을... 그 친구는 나 이외에는 친구가 없었다. 그 모습이 그의 사회생활에서도 계속된 것으로 알고 있다.&lt;/p&gt;</description>
      <category>인생은</category>
      <category>공부</category>
      <category>학습</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/317</guid>
      <comments>https://jamssoft.tistory.com/317#entry317comment</comments>
      <pubDate>Mon, 29 Jan 2024 21:16:31 +0900</pubDate>
    </item>
    <item>
      <title>test page for external image link</title>
      <link>https://jamssoft.tistory.com/pages/test-page-for-external-image-link</link>
      <description>&lt;p&gt;hihiihi&lt;/p&gt;
&lt;p&gt;##테스트&lt;br&gt;##테스트2&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://yourbread.duckdns.org:16803/cdn_blog/testpage/aaa.avif&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</description>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/pages/test-page-for-external-image-link</guid>
      <pubDate>Wed, 10 Jan 2024 07:52:45 +0900</pubDate>
    </item>
    <item>
      <title>건강검진, 경희의료원 위내시경검사 후기</title>
      <link>https://jamssoft.tistory.com/310</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;홀수해인 올해[2023년] 건강검진을 받으라는 우편물을 받았다. 우편물을 받은지는 오래되어 이미 올해가 끝나가고 있어서 급하게 병원을 구할 수 밖에 없는 상황, &quot;예약을 못잡으면 어떡하지?&quot;하는 마음에도 게을러 터져서 미루고 있었는 데, 칭구가 같이 받자며 자기가 예약을 잡겠다고 했다. 후반기에 사람들이 몰리기 때문에 예약이 많아 못 잡을 수도 있다는 걱정이었지만, 일단 칭구가 해준다니 그저 고마울 수 밖에 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;칭구가 예약을 잡은 곳은.. 경희의료원이었다. 이런 3차의료기관에서도 이런 건강검진을 한다는 것에 좀 놀라긴 했지만, 어쨋든 올해가 가기전에 할 일을 끝낼 수 있어서 다행이었다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;경희의료원은 3차병원이다. 주로 이야기하는 OO대학병원과 같이 어마어마 큰 곳이다. 그냥 의료원이라는 글자나 건물의 크기가 좀 작아보인다고 1~2차의료기관의 소견서 없이 그냥 갔다가는 진료비/치료비 폭탄을 맞는다는 뜻이다. 또한 그만큼 장비 등도 3차기관의 것들이 준비된 곳이기도 하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;건강검진을 제대로 받지않으면 당신이 진짜 아플 때 건강보험 적용을 안해준다는 협박으로 인해 어쩔 수 없이 검사를 올해안에 받아야만 했다. 물론 핑계를 대며 못 받았다고 하면 빨리 받으라고 하는 것으로 알고 있지만.. 틀릴 수도.. 혹시나 문제가 생기는 것보다는 받아 버리는 게 좋을 것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예약&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동대문구에 살고 있는 필자(칭구가 바로 옆에 산다)로서는 가까운 곳을 선호했는 데, 칭구가 이런 어마어마한 곳을 잡아 버렸다. 금요일에 전화를 했더니 바로 월요일날 오라고 해서 많이 놀랐다. 12월인데 전혀 밀리지 않고 바로 받을 수 있다니.... 일단은 국민건강보험의 협박(?)에서는 벗어나서 다행이라는 생각이 들었다. 월요일 8시~10시에 도착만 하면 된다고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방문전 위내시경을 위한 준비사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위내시경검사가 포함되어 있어서 금식을 해야 하는 데, 하루전인 일요일 저녁 8시이후에는 아무것도 먹지말라는 것이다. 혹시나 &quot;물은 괜찮지 않을까?&quot;하는 독자가 있을 듯해서 말해두면, 물도 안되고 담배는 당연히 안되고 사탕도 안되고 정말 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;아무것도&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;먹으면 안된다&lt;/span&gt;. 위내시경검사에서 이런 것들이 검사를 방해하는 정도가 아니고 아예 위를 볼 수 없다. 예를 들어 물은 내시경의 빛을 굴절시켜 제대로 위 내부의 표면을 볼 수 없다. 커피, 담배 등은 위에 들러 붙기 때문에 위 표면을 아예 볼 수 조차 없게 만든다. 유일하게 먹을 수 있는 것은 그나마 자신의 침뿐이다. 침도 뱉으라는 병원도 있는 것으로 알고 있다. 흡연자의 경우도 금식과 동시에 흡연을 해서는 안되는 이유다. 가래도 뱉어 내야 한다. 가래가 위표면에 붙으면 잘 떨어지지도 않기 때문에 검사를 방해하는 요인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 병원은 검사 8시간전부터 먹지 말라고 하는 데, 경희의료원은 거의 12시간넘게 먹지 말라고 한다. 생각을 해보면 보다 정확한 검사를 위한 것이니 잘 따르기로 했다. 실제로 야식을 먹지않는 사람이라면 검사당일 아침 한끼만 굶는 것이니, 아침을 먹지않는 필자의 경우는 사실상 그냥 동일한 일상이었다. 아... 담배만 참으면 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;방문&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경희의료원 큰 건물로 들어 갔더니, 옆에 건물로 가라고 했다. 음... 괜히 더 걸어 왔다. 위치 좀 정확히 알아보고 올 걸....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 4시간은 무료주차가 되는 것으로 알고 있다. 방법은 잘...&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;20180628_map.jpg&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lkbwc/btsDJj8tKpN/W9WFzABKtRgl2KnTq0IM2K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lkbwc/btsDJj8tKpN/W9WFzABKtRgl2KnTq0IM2K/img.jpg&quot; data-alt=&quot;검사하는 곳은 메인 건물 밑에 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lkbwc/btsDJj8tKpN/W9WFzABKtRgl2KnTq0IM2K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flkbwc%2FbtsDJj8tKpN%2FW9WFzABKtRgl2KnTq0IM2K%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;717&quot; height=&quot;542&quot; data-filename=&quot;20180628_map.jpg&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;542&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;일찍 가면 갈수록 빨리 끝나는 방식이기에 배고픔(그냥 금식이라는 심리적인)을 조금이라도 줄이려면, 빨리 가는 것이 좋을 듯 했다. 하지만 역시, 우리나라사람들은 참 부지런하다. 일찍 도착을 했다고 판단했지만, 검사 받으려는 사람/받고있는 사람들이 이미 많았다. 미리 결론부터 말하면 전체적으로 기다리다 지치는 경우는 없었고, 그냥 다음 검사를 위해 잠시 기다리는 정도였다(서울대병원에서 진료를 기다려본 사람이라면 이게 얼마나 빠른 건지 알 것이다). 밀린다는 느낌은 없고 천천히 지속적으로 진행된다는 느낌이다. 검사하나가 끝나고 바로 다음 검사로 바로 들어가는 식의 여유는 없다. 검사간에 좀 기다리기는 해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접수하려고 번호표를 뽑는 순간 옆에 있던 간호사쌤이 기록용 검사지를 한 묶음 준다. 한 3~4장 되는 데, 기본 인적 사항과 결과를 받을 방법(카톡, 문자, 이메일, 우편) 등을 기재하고, 정신과 상담지도 작성하면, 이 간호사쌤이 필요한 내용을 잘 적었는 지 확인 후에 접수번호를 이 검사지 위에 써서 돌려준다. 이제 검사를 차근차근 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본검사&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 큰 검사는 위내시경이었는데, 이 위내시경 검사를 제외한 나머지 검사들은 바로 이 곳에서 모두 진행되게 된다. 층간이동도 없으며 공간도 그렇게 넓지도 않아서 동선은 정말 짧다고 할 수 있다. 사실 이 곳이 이 건강검진을 위해 따로 마련해둔 공간이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학창시절 신체검사의 느낌이다. 키... 몸무게.. 허리둘래.. 청력..시력.. 등등...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대략적인 공간구성은 다음과 같다.&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;768&quot; data-origin-height=&quot;738&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGF4t/btsDGKTg2iQ/JKVw3gocYWjD6Entewk2E0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGF4t/btsDGKTg2iQ/JKVw3gocYWjD6Entewk2E0/img.png&quot; data-alt=&quot;필자의 기억을 바탕으로 만든 거라..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGF4t/btsDGKTg2iQ/JKVw3gocYWjD6Entewk2E0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGF4t%2FbtsDGKTg2iQ%2FJKVw3gocYWjD6Entewk2E0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;768&quot; height=&quot;738&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;738&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;필자의 기억을 바탕으로 만든 거라..&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;보통 순서대로 진행이 되지만, 한 쪽이 밀리면 다른 곳으로 먼저 가라고 일러준다. 그리고 숫자는 진짜 이 숫자로 이리저리 왔다/갔다 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;-. 탈의실(여자)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1. X선 촬영&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2. 청력검사실&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;3. 신체계측실 &lt;i&gt;시력&lt;/i&gt;/키/몸무게/가슴둘레&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;5. 산부인과 진료실&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;6. 진료실&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;7. 치과검진&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;8. 채혈실&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;여성의 경우 브라에 철심이나 촬영에 방해하는 것들이 있을 수 있어 탈의실이 따로 있다. 남자는 그냥 촬영을 한다. 따라서 탈의실은 필자가 남자라 갈일이 없었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2번방을 처음으로 들어가서 청력을 쟀다. 뿌뿌~하는 소리에 따라 버튼을 누르면 된다. 몇초 안 걸린다. 청력은 정상이지만 이 뿌뿌~소리를 못&amp;nbsp; 듣는 경우가 있는 데, 그 것은 어떤 소리가 나는지 몰라서 안들리는 것일 뿐이니, 조금만 집중하면 바로 들을 수 있다. 가슴둘레는 3번방에서 재지만 3번방은 좀 많이 밀리기에 필자의 경우 2번방 쌤이 재주었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;3번방에서 시력을 재는 방식은 한쪽눈 가리고 화면상에 나타나는 큰글씨부터 작은글씨를 읽는 방식을 썼다. 참 정확하고 빠른 방식이다. 하나하나 짚는 방식보다 빠르고 정확하다. 그리고 시력 1.0과 2.0은 실제 별차이가 없는 시력이다. 숫자는 2배지만 실제는 20%도 차이가 안나는 시력이니 교정시력으로 0.8에서 1.0이면 우수한 편이니 굳이 2.0 못 맞췄다고 슬퍼할일도 2.0이라고 대단하다고 할 필요도 없다. 키/몸무게는 그냥 기계로 턱~하면 끝.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;5번방은 필자가 남자인 관계로 들어가 보지도 못했다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1번방 X선촬영도 늘 찍던 방식 숨들이 쉬고 쌤이 시키는 대로 하면 끝.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;6번 진료실에서 의새쌤이 하는 말씀이... 술을 끊은 필자에게 &quot;담배도 끊어~&quot; 술먹는 사람에게는 술을 줄이라고 하지만 담배는 모든사람에게 끊으라고 한단다. 담배가 얼마나 안좋기에... 아 끊어야 하는 데..ㅠㅠ&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;정신과 진료지를 보신 후에는 슥~ 자세를 바꿔서(사람이 많으니 다른 사람이 모르게 한쪽을 가리는 식의) 빨리 정신과 예약을 하란다. 아 드디어 터질게 터진건가... 필자의 상황이 극도의 스트레스를 받는 상황인데... 다른 병원의 정신과 쌤께서 &quot;아직은 아프지는 않지만, 다시 오면 그 때는 아픈거야~ 그러니까 만나지 말자~&quot; 했지만, 이 스트레스를 피할 방법이 없으니...&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;7번방 치과 검진은 사실 치료한 이/ 치료할 이/ 튼튼한 이 구분해서 적는 것이 다라 그리 오래 걸리지 않는다. 결과로 통보되겠지 뭐..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;8번에서 채혈하고 소변통 받아서 화장실에서 소변을 받아 화장실에 바로 비치해 둔 수거틀에 넣기만 하면 된다. 물도 안먹어서 소변이 나올까 걱정했지만.. 적은 양이지만 충분히 나오긴 했다. 확실히 물이 없으니 진하다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이제 접수대(최초접수대와 좀 다른 곳)에서 호출을 기다려서 이 곳에서의 모든 과정이 끝났다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;대망의 내시경&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이제 대망의 내시경이 기다라고 있다. 내시경은 이 곳에서 하지 않고 소화기내과로 이동하여 한다. 본관(중정1층 소화기센터 내시경실)으로 이동하여 찾아갔다. 건강검진을 받는 사람은 그냥 들어와서 접수하라고 해서 들어갔더니 쌤이 바로 눈치 채고 접수를 해준다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;예약전화를 하는 과정에서 위내시경을 수면내시경을 할지 그냥 마취없이 할지 정하라고 했다. 수면내시경의 경우 약 15만원정도의 비용이 더 들어 간다고 했다. 뭐.. 마취약 등이 쓰이니 비용이 드는 건 당연한 것이긴하다. 대부분의 사람들이 수면내시경을 선택하지만 필자의 경우 수면내시경을 하지 않았다. 필자가 아는 분들이 하시는 말씀이 그냥해도 아프지 않다고 해서 돈도 없으니 그냥 수면내시경을 안하기로 했다. 필자가 아시는 분들의 나이는 이미 칠순이 넘으신 분들이라 40대인 필자의 경우는 두려울 것도 없었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;검사를 기다라는 동안 거의 대부분의 사람들이 수면내시경을 한다는 것을 알았다. 검사가 끝난 사람들이 마취가 풀릴 때까지 대기하기위해 회복실로 이동하는 것을 자주 볼 수 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;간호사쌤이 불러서 갔더니 약을 하나 준다. 가루약인데 거품제거제라 했다. 침의 거품을 없애는 것이라 맛있게 먹었다. 굶다가 이거라도 먹으니 맛있더라.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 검사실 앞에서 대기하라하여 대기하다가 검사실로 들어 가게 되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;사전 준비&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일단 겨울이라 웃옷을 벋고 짐을 한 곳에 두었는 데, 머리에 쓴 비니도 벋으라고 했다. 필자가 머리 안 감아서 쓰고 갔는 데, 이 것마저 검사에 방해가 된다고 했다. 검사를 위해 한쪽으로 누운 자세에서 머리의 방향을 잘 잡아야 하는 데, 이 비니도 문제가 되니 벗어야 한다고 한다. 어떤 의사쌤이 올린 유튜브동영상을 미리 좀 보고 갔는 데, 머리냄새나면 의사와 간호사들 모두 이&amp;nbsp; 좁은 곳에서 그 냄새 참으면서 검사해야 된다고 몸에서 나는 냄새는 없애고 오라는 내용을 봤다. 하지만 필자가 검사를 받은 이 곳은 좁지 않아서 문제는 없지만, 바로 앞에서 검사하는 의사쌤은 고생 좀 하겠다는 생각이 들었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;검사시작과 끝&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일단 의사쌤이 자세를 잡아 준다. 옆으로 누운 상태에서 가장 중요한 머리자세를 잡는다. 이 때 머리를 움직이지 말라는 내용이 가장 중요하다. 입에 내시경 사출용 틀을 물고 있는 데, 이게 치아에 문제가 있는 사람은 미리 말을 해야 한다. 필자는 문제가 없으니 그냥 패쓰..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 부분이 이 글을 읽는 독자들이 가장 궁금할 것 같은 데, 검사 받는 동안 아프지는 않다. 단 한번의 고비가 있는 데, 맨 처음 관을 삽입할 때 목의 뒷쪽을 한번 치고 지나가기 때문에 이 때 살짝 고통은 있다. 검사하는 동안 전반적으로 상당한 불편함이 지속되지만 아프지는 않다. 굳이 수면내시경을 할 필요는 없다는 것이 필자의 생각이다. 검사의 두려움있는 사람이나 15만원정도의 비용이 부담인 사람이 아니라면 수면내시경을 굳이 할 필요는 없다. 이 내용을 병원에서는 싫어 할 수도 있지만..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;검사 중에 표면을 잘보기 위해 공기를 주입을 한다. 헉 이게 뭔소리래~, 트림하면 계속 공기를 넣어서 검사가 완료될 때까지 해야 하기 때문에 트림하지 말라고 한다(협박처럼 들렸다). 이 공기가 위 뿐만아니라 검사를 해야하는 십이지장도 부풀게 하는 데, 진짜 태어나서 처음으로 청개구리 배터지는 느낌을 느껴봤다. 필자가 위장병이 좀 있어서(위장병있는 사람은 십이지장도 같이 문제가 있다.) 이 과정에서 고통이 있었는 데, 같이 간 친구는 전혀 불편하지 않았다고 한다. 나만 그런 거 였냐?...&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;필자의 경우 위염이 있어서 표면을 떼어내는 과정을 거쳤다. 이 때는 안 아프다. 위에는 신경이 없으니 아플리가 없고 아프다면 위벽이 상해서 신경이 있는 곳까지 궤양이 발생한 것이니 이미 검사전에 응급실에 실려 갔을 것이다. 이 과정은 추가비용이 발생하게 되는 데, 비보험으로 20만원정도된다. 건강보험처리되면 3만원정도 나올라나? 검사를 안한다고 할 수 있을 지는 모르겠지만, 건강검진 받으러 왔으니 할 수밖에 그리고 이 내용은 예약시에 이미 전달을 받은 내용이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이제 검사가 끝나고 관을 빼는 데, 쑥~하고 그냥 빠진다. 느낌도 없다. 하~ 드디어 검사가 끝났다.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;검사후&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;검사는 끝났지만, 바로 식사를 하거나 하면 안된다. 필자의 경우 조직검사를 위해 조직을 떼어 냈기 때문에 1시간동안 금식을 해야 했다. 조직을 떼어내지 않은 사람도 30분은 금식을 해야한다. 수면내시경을 한사람은 깨어나는 데 1시간이 걸리기 때문에 이 금식의 과정은 필요 없을 듯하지만 정확한 것은 의료진에게 물어보는 것이 좋을 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;비수면 대 수면 장단점&lt;/h4&gt;
&lt;h5 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;수면장점&lt;/h5&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 아프지 않다. 아플 것이라는 비수면의 심리적 부담이 없다.&lt;/p&gt;
&lt;h5 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;수면 단점&lt;/h5&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 비용이 상당히 많이 발생한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 비수면에 비해 마취가 풀리는 1시간정도 늦게 끝이나게 된다.&lt;/p&gt;
&lt;h5 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;비수면 장점&lt;/h5&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 수면에서 발생하는 추가적 비용이 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 마취가 풀리는 시간이 아예 없어 상대적으로 빨리 끝난다.&lt;/p&gt;
&lt;h5 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;비수면 단점&lt;/h5&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 아플 것이라는 심리적인 부담이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 검사하는 동안 지속적으로 불편함이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;필자는 솔직히 비수면을 추천하고 싶다. 처음의 한번이 어렵지 한번하면 비수면검사가 별개아닌 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;결제&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;수면내시경을 하거나 조직검사를 위해 점막을 떼어내거나 헬리코박터 검사 등등.. 필요에 따라서, 추가 비용이 발생한다. 뭐 우리나라의 건강보험은 잘 되어있어서 문제는 없지만, 수면내시경의 경우 비용이 많이 발생한다. 필자는 수면내시경을 하지 않았지만 조직검사를 해야했기에 비용이 발생하여 결제를 마치고 병원을 나오게 되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;건강검진으로 검사를 받는다고 해도 비용이 두군데서 발생을 할 수 있다. 하나는 수면내시경 또 하나는 조직검사다. 따라서, 무작정 가면 안되고 일정비용은 준비를 하고 가야 한다.&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;퇴원~&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;경희의료원에서 내려오면서..... 올 것이 왔다. 배고픔은 거의 없지만.. 검사 중에 공기를 넣은 것을 기억할 것이다. 환상적인 트림과 방귀가 뿡~~~~뿡~~~~ 나오기 시작했다. 얼마나 시원하던지.. 먹은 것은 없고 공기를 넣은거라 냄새도 없고 방귀뀌는 즐거움을 식당가는 내내 즐겼다.(계속 나온다~~ㅋㅋ)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일단 한시간이 지나야 식사가 가능하기 때문에 가는동안 시간을 조금이라도 소비하기 위해 집근처에서 점심을 먹기로 했다. 식당에 도착했을 때, 약 45분정도 지났는 데, 음식기다리는 시간까지 해서 얼추 1시간에 맞춰졌다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240120_152122881[1].jpg&quot; data-origin-width=&quot;2718&quot; data-origin-height=&quot;1863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FGGw2/btsDKzbEn3O/3EYR4F8L1qEMWPM57LCx30/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FGGw2/btsDKzbEn3O/3EYR4F8L1qEMWPM57LCx30/img.jpg&quot; data-alt=&quot;검사전 준비사항 프린트지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FGGw2/btsDKzbEn3O/3EYR4F8L1qEMWPM57LCx30/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFGGw2%2FbtsDKzbEn3O%2F3EYR4F8L1qEMWPM57LCx30%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;2718&quot; height=&quot;1863&quot; data-filename=&quot;20240120_152122881[1].jpg&quot; data-origin-width=&quot;2718&quot; data-origin-height=&quot;1863&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;검사전 준비사항 프린트지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이걸 언제 구했는 지 기억이 안난다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수면내시경하는 사람은 보호자를 동반하고 마취로 인해 운전하면 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;여담&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같이 간 친구의 경우 내시경 검사동안 숨을 참아야 한다고 알고 있었다고 한다. 이번 검사말고 2년전에 받았던 검사에서.. 의사가 숨은 그냥 쉬면 된다는 말을 안해줘서...라고.. 숨은 그냥 검사하면서 쉬는 데 문제가 없다. 검사장비가 식도로 들어가지 기도로 들어가는 것도 아니고 기도를 막는 것도 아니기 때문이다. 그냥 숨을 쉬면 되는 것인데.. 이 것 때문에 자세를 잡고 시작하는 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한달정도 지나 결과지가 왔다. 천천히 읽어보고 필요에 따라서는 병원에 가면 된다.&lt;/p&gt;</description>
      <category>인생은</category>
      <category>건강검진</category>
      <category>경희의료원</category>
      <category>내시경검사</category>
      <category>비수면</category>
      <category>수면내시경</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/310</guid>
      <comments>https://jamssoft.tistory.com/310#entry310comment</comments>
      <pubDate>Mon, 18 Dec 2023 02:16:08 +0900</pubDate>
    </item>
    <item>
      <title>GDPR_Message</title>
      <link>https://jamssoft.tistory.com/pages/GDPRMessage</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Interpretation and Definitions&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Interpretation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Definitions&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;For the purposes of this Privacy Policy:&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;Account&lt;/b&gt; means a unique account created for You to access our Service or parts of our Service.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Affiliate&lt;/b&gt; means an entity that controls, is controlled by or is under common control with a party, where &quot;control&quot; means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Company&lt;/b&gt; (referred to as either &quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot; or &quot;Our&quot; in this Agreement) refers to Seorenn Complex Logs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cookies&lt;/b&gt; are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Country&lt;/b&gt; refers to: South Korea&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Device&lt;/b&gt; means any device that can access the Service such as a computer, a cellphone or a digital tablet.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Personal Data&lt;/b&gt; is any information that relates to an identified or identifiable individual.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Service&lt;/b&gt; refers to the Website.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Service Provider&lt;/b&gt; means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Usage Data&lt;/b&gt; refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Website&lt;/b&gt; refers to Seorenn Complex Logs, accessible from &lt;a href=&quot;https://seorenn.tistory.com&quot;&gt;https://seorenn.tistory.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;You&lt;/b&gt; means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Collecting and Using Your Personal Data&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Types of Data Collected&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Personal Data&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Usage Data&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Usage Data&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Usage Data is collected automatically when using the Service.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Tracking Technologies and Cookies&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:&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;Cookies or Browser Cookies.&lt;/b&gt; A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web Beacons.&lt;/b&gt; Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cookies can be &quot;Persistent&quot; or &quot;Session&quot; Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We use both Session and Persistent Cookies for the purposes set out below:&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;Necessary / Essential Cookies&lt;/b&gt;Administered by: Us&lt;/li&gt;
&lt;li&gt;Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.&lt;/li&gt;
&lt;li&gt;Type: Session Cookies&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cookies Policy / Notice Acceptance Cookies&lt;/b&gt;Administered by: Us&lt;/li&gt;
&lt;li&gt;Purpose: These Cookies identify if users have accepted the use of cookies on the Website.&lt;/li&gt;
&lt;li&gt;Type: Persistent Cookies&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Functionality Cookies&lt;/b&gt;Administered by: Us&lt;/li&gt;
&lt;li&gt;Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.&lt;/li&gt;
&lt;li&gt;Type: Persistent Cookies&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Use of Your Personal Data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Company may use Personal Data for the following purposes:&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;To provide and maintain our Service&lt;/b&gt;, including to monitor the usage of our Service.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;To manage Your Account:&lt;/b&gt; to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;For the performance of a contract:&lt;/b&gt; the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;To contact You:&lt;/b&gt; To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;To provide You&lt;/b&gt; with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;To manage Your requests:&lt;/b&gt; To attend and manage Your requests to Us.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;For business transfers:&lt;/b&gt; We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;For other purposes&lt;/b&gt;: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We may share Your personal information in the following situations:&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;With Service Providers:&lt;/b&gt; We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;For business transfers:&lt;/b&gt; We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;With Affiliates:&lt;/b&gt; We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;With business partners:&lt;/b&gt; We may share Your information with Our business partners to offer You certain products, services or promotions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;With other users:&lt;/b&gt; when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;With Your consent&lt;/b&gt;: We may disclose Your personal information for any other purpose with Your consent.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Retention of Your Personal Data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer of Your Personal Data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to &amp;mdash; and maintained on &amp;mdash; computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Delete Your Personal Data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Our Service may give You the ability to delete certain information about You from within the Service.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Disclosure of Your Personal Data&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Business Transactions&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Law enforcement&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Other legal requirements&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Comply with a legal obligation&lt;/li&gt;
&lt;li&gt;Protect and defend the rights or property of the Company&lt;/li&gt;
&lt;li&gt;Prevent or investigate possible wrongdoing in connection with the Service&lt;/li&gt;
&lt;li&gt;Protect the personal safety of Users of the Service or the public&lt;/li&gt;
&lt;li&gt;Protect against legal liability&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Security of Your Personal Data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Children's Privacy&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Links to Other Websites&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Changes to this Privacy Policy&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the &quot;Last updated&quot; date at the top of this Privacy Policy.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.&lt;/p&gt;</description>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/pages/GDPRMessage</guid>
      <pubDate>Tue, 3 Oct 2023 10:11:03 +0900</pubDate>
    </item>
    <item>
      <title>WinSxS 폴더 크기 줄이기</title>
      <link>https://jamssoft.tistory.com/308</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우를 설치하고 업데이트하면 WinSxS폴더가 점점점점 커지는 것을 확인할 수가 있다. 이 폴더에 파일들이 차지하는 용량이 10GiB에 이를 만큼 커지게 되고, 이는 용량이 부족한 시스템에서 이 공간도 아까운 마음이 들 수밖에 없다. Windows설치 USB는 8GiB인데, 아무리 압축이 풀리면서 설치가 되더라도 이 용량이 이렇게 큰 것은 이해가 되지 않기도 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 마소가 이런 걸 괜히 만들리는 없고 이 폴더의 존재이유와 습성을 꼭 알아 둘 필요가 있다. 단순히 용량 많이 차지하고 별 의미없는 파일들이 잔뜩 있다고 생각해서 강제로 지워버렸다간 부팅불가 등의 문제를 일으킬 수 있는 중요한 폴더기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;WinSxS.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xKMpV/btswbydFL3t/WDy8NxkQTIFSt51OaUVIR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xKMpV/btswbydFL3t/WDy8NxkQTIFSt51OaUVIR1/img.png&quot; data-alt=&quot;마소는 용량 먹는 소&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xKMpV/btswbydFL3t/WDy8NxkQTIFSt51OaUVIR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxKMpV%2FbtswbydFL3t%2FWDy8NxkQTIFSt51OaUVIR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-filename=&quot;WinSxS.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마소는 용량 먹는 소&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;왜 존재할까?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 곳에 있는 파일들은 주로 업데이트와 관련이 많다. 보안과 버그를 처리하기 위해 마소는 지속적인 업데이트를 하게 하는 데, 이 업데이트관련 파일들이 이 곳에 차곡차곡 쌓이게 된다. 업데이트에 실패하거나, 업데이트에 문제가 발생해서 업데이트 이전으로 돌려야 하는 경우 이전의 파일들이 그대로 살아 있어야 하기 때문에, 기존의 파일과 새로운 파일이 동시에 있어야 해서 이 곳은 용량이 커질 수 밖에 없다. 즉, 업데이트과정에서 발생하는 문제를 없애기 위해 최소 2가지의 버전을 저장하다보니 이렇게 큰 용량이 유지되고 있는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;폴더의 크기는 계속 증가하지는 않는다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 업데이트를 모두 저장해둘 필요는 없다. 업데이트에 성공하고 일정시간이 지나 문제가 전혀없다고 판단되면, 윈도우 OS는 이 곳에서 가장 오래되고 사용하지 않는 파일을 알아서 지운다. 두번의 업데이트가 일어나면, 세개의 버전이 존재하게 된다. 최후의 업데이트 후에, 시간이 어느정도 지나면 최신 버전과 바로 이전 버전 중 최소 둘 중 하나는 잘 동작한다고 판단할 수 있기 때문에, 가장 오래된 업데이트를 지워버리게 된다. 따라서 용량은 계속 증가하지는 않는다. 물론 기능이 늘어나고 버전이 올라갈 때는 주로 파일크기가 커지니, 계속 커지기는 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;언제 자동으로 크기를 줄이나?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트가 된 후 일주일동안은 아무일도 하지 않는다(업데이트마다 따로 수행되기에 백그라운드로 지속적인 작업은 일어나고는 있다). 일주일이 지나면 이제 유휴시간에 이 크기 줄이기 작업이 천천히 슬슬 일어나게 된다. 사용자에게 방해가 최대한 되지 않도록 작업이 일어나게 된다. 하지만 이주일이 지나면, 필요없다고 판단되는 것을 최대 빨리 지우려고 한다. 이 때는 사용자가 뭘하든 신경도 안쓴다. 컴퓨터가 켜져있어도 실제 CPU가 일하는 시간은 5%도 안되기 때문에 문제될 것은 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;맘대로 지우면 안되나?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 곳에 있는 파일은 일부는 현재 OS시스템에서 쓰고 있는 파일이고 일부는 쓰지 않는 파일이 섞여있다. 현재 사용중인 버전과 이전 버전 중에 현재 쓰는 것을 링크시켜놓은 것이기 때문에, 업데이트제거 등을 용이하게 설계하다보니 이렇게 섞어 있는 상황인 것이다. 따라서 이 폴더내의 파일을 지워 버리면 현재 쓰고 있는 파일이 삭제되어 부팅이 불가한 상황이 발생할 수 있다. 업데이트를 어떻게 해야 할지에 대한 정보마저 잃어버려 업데이트가 되지 않는 문제에 부딛힐 수 있다. 따라서, 임의로 지우면... 다시 깔아야쥐~ 뭐~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이제 크기를 줄여보자.&lt;/h3&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;h4 data-ke-size=&quot;size20&quot;&gt;용량을 얼마나 먹고 있는 지 확인하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령창을 관리자 권한으로 실행시키고 다음의 명령을 입력하면 현재 차지하는 크기를 구할 수 있다. 이 작업마저도 시간이 꽤 걸리는 작업이다.&lt;/p&gt;
&lt;pre id=&quot;code_1696040113479&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\Windows\system32&amp;gt;dism /online /cleanup-image /analyzecomponentstore&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 시스템의 결과는 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1696040223142&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844

이미지 버전: 10.0.19045.3448

[==========================100.0%==========================]

구성 요소 저장소(WinSxS) 정보:

Windows 탐색기에서 보고된 구성 요소 저장소의 크기 : 10.73 GB

구성 요소 저장소의 실제 크기 : 10.29 GB

    Windows와 공유됨 : 5.68 GB
    백업 및 기능 사용 안 함 : 4.61 GB
    캐시 및 임시 데이터 :  0 bytes

마지막 정리 날짜 : 2023-09-26 02:59:28

다시 사용 가능한 패키지 수 : 2
구성 요소 저장소 정리 권장 : 예

작업을 완료했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 10.29GB의 크기를 먹고 있으며, 5.68GB는 현재 윈도우에서 사용 중인 것을 알 수 있다. 실제 삭제가 가능한 것은 4.61GB중에 일부 뿐이다. 하지만 정리를 권장하기 때문에 해주는 것도 그리 나쁘지 않을 것 같다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;용량 줄이기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음의 명령으로 사용하지 않는 파일을 줄일 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1696040391013&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\Windows\system32&amp;gt;Dism.exe /online /Cleanup-Image /StartComponentCleanup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 결과이다.&lt;/p&gt;
&lt;pre id=&quot;code_1696040423676&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844

이미지 버전: 10.0.19045.3448

[==========================100.0%==========================]
작업을 완료했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음... 아무 리포트가 없다... 다시 시간이 걸리는 용량확인을 해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1696040485811&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\Windows\system32&amp;gt;dism /online /cleanup-image /analyzecomponentstore

배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844

이미지 버전: 10.0.19045.3448

[==========================100.0%==========================]

구성 요소 저장소(WinSxS) 정보:

Windows 탐색기에서 보고된 구성 요소 저장소의 크기 : 8.65 GB

구성 요소 저장소의 실제 크기 : 8.50 GB

    Windows와 공유됨 : 5.66 GB
    백업 및 기능 사용 안 함 : 2.83 GB
    캐시 및 임시 데이터 :  0 bytes

마지막 정리 날짜 : 2023-09-29 21:54:22

다시 사용 가능한 패키지 수 : 0
구성 요소 저장소 정리 권장 : 아니요

작업을 완료했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 줄어든 용량은 1.78GB (4.61GB&amp;nbsp; - 2.83GB) 정도다. 훅하고 많이 줄어들 줄 알았는데, 20%도 줄이지를 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 &quot;다시 사용 가능한 패키지 수&quot;가 2에서 0으로 줄어들었다. 0이 되었으니, 사실상 더 이상 줄일 수 있는 것도 없다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ResetBase&amp;nbsp; 옵션&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 &quot;줄이기 명령&quot;에 &quot;/ResetBase&quot;를 추가하면 &quot;다시 사용 가능한 패키지 수&quot;를 완전히 0으로 만들 수 있다. 현재 사용되고 있는 것과 필요하다고 판단되는 기존 업데이트를 제외하고 다 삭제하는 옵션이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 작업을 수행하면 업데이트된 것을 이전상태로 되돌릴 수 없게 된다. 확실히 현재 시스템이 아주 잘 돌고 있다고 판단될 때만 추가하는 옵션이다.&lt;/p&gt;
&lt;pre id=&quot;code_1696040851065&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\Windows\system32&amp;gt;Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 용량 분석을 한 결과다.(명령은 위에 있으니.. 뺀다.)&lt;/p&gt;
&lt;pre id=&quot;code_1696040900352&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844

이미지 버전: 10.0.19045.3448

[==========================100.0%==========================]

구성 요소 저장소(WinSxS) 정보:

Windows 탐색기에서 보고된 구성 요소 저장소의 크기 : 8.43 GB

구성 요소 저장소의 실제 크기 : 8.29 GB

    Windows와 공유됨 : 5.66 GB
    백업 및 기능 사용 안 함 : 2.62 GB
    캐시 및 임시 데이터 :  0 bytes

마지막 정리 날짜 : 2023-09-29 21:57:13

다시 사용 가능한 패키지 수 : 0
구성 요소 저장소 정리 권장 : 아니요

작업을 완료했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약 200MiB정도 크기가 조금 더 줄어든 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;괜히 시간만 썼다. 용량 부족문제가 아니면 절대 하지 않기를 권장한다.&lt;/b&gt;&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/308</guid>
      <comments>https://jamssoft.tistory.com/308#entry308comment</comments>
      <pubDate>Sat, 30 Sep 2023 11:32:39 +0900</pubDate>
    </item>
    <item>
      <title>fork() 사용법과 주의 사항</title>
      <link>https://jamssoft.tistory.com/306</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;fork()함수는 자신의 프로세스를 복사해서 또 다른 자식프로세스를 만들어내는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;fork.png&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckv8qi/btsitz5U4rR/Qv9TZwPYfVisCTMl16wUGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckv8qi/btsitz5U4rR/Qv9TZwPYfVisCTMl16wUGk/img.png&quot; data-alt=&quot;찍어먹는 포크?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckv8qi/btsitz5U4rR/Qv9TZwPYfVisCTMl16wUGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckv8qi%2Fbtsitz5U4rR%2FQv9TZwPYfVisCTMl16wUGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;128&quot; height=&quot;128&quot; data-filename=&quot;fork.png&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;찍어먹는 포크?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동작방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fork()는 새로운 프로세스를 만든다. 새로운 프로세스를 만드는 것은 컴퓨터의 입장에서는 굉장히 느린 작업이다. Processing을 위한 context로 만들어야 하고, 메모리도 할당해야 하고, standard IO도 할당을 해야하는 등 시작을 위한 준비작업이 상당히 많다. 하지만 fork() 함수는 메모리를 스~윽 복사해서 context(*1)만 만들어 실행 시켜버리기 때문에 일일이 새로운 프로세스를 만드는 작업 중 일부만을 수행한다. 거의 thread를 만드는 것에 조금 더 추가되는 수준의 적은 부하만 발생하게 된다. linux가 발전하면서 처음에는 부하가 컸지만, 별별 테크닉들이 커널에 추가되면서 이 정도까지 부하가 줄어든 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심지어 fork()함수로 자식프로세스가 만들어 질 때는 부모프로세스의 메모리를 복사하지도 않는다. 자식이나 부모가 메모리의 내용을 변경하는 순간에 복사가 일어나게 된다. 거의 구현된 모습은 아름답기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 사용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fork() 함수가 수행이 되면 새로운 자식 프로세스도 이 함수의 리턴된 시점부터 시작된다.(좀 정확히는 fork함수 내의 어딘가 겠지만..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리턴값으로 실행되는 코드가 부모프로세스에서 실행되는 것인지, 자식프로세스에서 실행되는 것인지를 구분할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1685546230638&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_fork() {
    pid_t childPid = fork();

    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent
        int wstatus;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        printf( &quot;parent[%d] : wait.. child done\n&quot;, (int)getpid() );
        waitpid( childPid, &amp;amp;wstatus, 0 );

        if( WIFEXITED( wstatus ) ) {
            printf( &quot;child exit normally. with returning %d\n&quot;, WEXITSTATUS(wstatus) );
        }
        else {
            printf( &quot;child exit abnormally.\n&quot; );
        }
    }
    else { // child
        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );
        sleep(2); // do something
        exit(3);  // return code 3 for testing
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Qk0g/btsic5CGB4b/V8hcxrxPDSJDMojkieaRMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Qk0g/btsic5CGB4b/V8hcxrxPDSJDMojkieaRMK/img.png&quot; data-alt=&quot;실행의 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Qk0g/btsic5CGB4b/V8hcxrxPDSJDMojkieaRMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Qk0g%2Fbtsic5CGB4b%2FV8hcxrxPDSJDMojkieaRMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;806&quot; height=&quot;59&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;59&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;fork()함수로 자식이 성공적으로 만들어 졌다면,&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;자식프로세스의 pid값을 리턴 받게 된다. 실패 했다면 -1을 리턴 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식프로세스는 : 0값을 리턴받게 된다. 따라서 단순히 if문만으로 현재 수행되는 프로세스를 구분할 수 있다. 당연히 자식프로세스에서는 getpid()함수를 통해서 pid값을 알아낼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;좀비(defunct)프로세스가 생성될 수 있다.&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식은 자기할일 다하고 그냥 종료하면 되지만, 부모프로세스의 경우 자식이 종료되는 것을 관리 해줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식프로세스가 종료되었는 데, &lt;b&gt;이 자식의 종료를 부모에서 처리해주지 않으면 자식은 defunct(좀비)프로세스가 되어 버린다&lt;/b&gt;. 이 청소와 마무리 작업을 해주는 것이 waitpid()함수며, 이 함수는 자식의 종료값(*2)을 분석해서 제대로 처리되었는 지 확인 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYY1Kh/btsidWFuRxG/HNL65YesuHyb1MpUEUW3hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYY1Kh/btsidWFuRxG/HNL65YesuHyb1MpUEUW3hk/img.png&quot; data-alt=&quot;좀비 프로세스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYY1Kh/btsidWFuRxG/HNL65YesuHyb1MpUEUW3hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYY1Kh%2FbtsidWFuRxG%2FHNL65YesuHyb1MpUEUW3hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;33&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;좀비 프로세스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;좀비 프로세스를 보면 VSS, RSS등 모든 메모리는 정리가 되었지만, 종료값처리 등을 위한 최소한의 정보만을 유지해야 하고 있기 때문에, 완전히 종료되지 못하고 있다.&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;waitpid 함수는 2~3개 정도 존재하는 데, 특정 자식을 기다리거나, 자식중에 아무 것이나 기다리는 함수다. 필요에 따라 꼭 호출해 줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제에서 자식프로세스에서 실행되는 코드에 exit(3) 함수를 빼버리면 콜스택을 타고 돌아가게 될텐데, 돌아가면서 수행되는 코드들이 정확히 동작한다는 보장이 없다. 예를 들어, 열려 파일의 경우 데이터를 부모와 자식이 둘 다 써버리면 그 데이터는 깨져 버리게 될 것이다. 메모리에서 문제가 발생한다면, 소위 &quot;똥싸고 죽는&quot; segment fault는 빈번히 일어나게 되고, 어떻게 작살(?)이 날지 모르기 때문에 자식프로세스는 정확히 할 일만 하고 exit로 끝내줘야 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자식의 종료값 다루기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;waitpid함수를 통해 자식의 종료값을 받아 올 수 있다. 하지만 자식이 시그널로 인해 죽을 수도 있고, 수행이 정확히 되었는지 확인을 할 필요가 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자가 주로 사용하는 waitpid함수의 원형은 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1685377668898&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pid_t waitpid(pid_t pid, int *wstatus, int options);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 wstatus변수를 통해 자식프로세스의 리턴 값을 받아 올 수 있다.&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;WIFEXITED 매크로가 올바르게 수행 되었는 지(자식이 끝까지 문제 없이 수행 되었는 지)확인하는 매크로고, WEXITSTATUS 매크로가 자식프로세스의 리턴값(*2)을 가지고 오는 함수다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예제에서 자식프로세스에서 exit(3)한 &quot;3&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;근데 문제는 wstatus라는 변수가 int형이다. 32비트에서는 32비트고 64비트에서는 64비트인데... exit의 파라미터 또한&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;int형이다. 하지만 이 변수에는 signal 맞고 죽었는 지와 다른 정보도 가지고 있다. exit의 값을 온전히 전달할 수 없다는 이야기다. 프로세스의 종료값(*2)은 8bits로만 써야 한다는 것이다. 즉 -128 ~ + 127까지만 써야 한다. 나머지는 싹 날아가게 된다. 필자는 리턴값으로 자식에서 처리된 바이트수를 넘기려 했는 데, 이 크기는 127정도야 훌쩍 넘어가기 때문에 exit로는 쓸 수가 없었다. 필자같은 실수를 하지 말기를...&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;부모프로세스가 먼저 끝난다면.. 으응?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식은 여전히 실행 중인데 부모가 먼저 끝나게 된다면, 자식은 좀비프로세스가 되고 init프로세스(*3)의 자식으로 되어버린다. init프로세스는 waitpid함수를 실행시켜서 자식을 깨끗하게 없애버린다. 이 작업은 순식간에 일어난다. 이 처리방식은 바꿀 수도 있는 데, 보통 부모프로세스가 깔끔히 처리하도록 코드를 짜는 것이 좋으니, 더 이상 설명할 필요가 없을 것 같다. 보다 더 자세한 사항을 알고 싶으면 fork의 매뉴얼 페이지를 잘 찾아보기 바란다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자식프로세스와의 통신, File Descriptor는 전부 상속된다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식프로세스도 프로세스기때문에 SystemV를 이용하여 통신을 할 수 있다. 하지만 더 쉬운 방법으로 pipe를 만들어 데이터를 주고 받을 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1685628101874&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_fork_2Pipe() {

    pid_t childPid = -1;
    int fdP2C[2];
    int fdC2P[2];

    pipe( fdP2C );
    pipe( fdC2P );

    childPid = fork();
    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent

        int wstatus;
        char buf[16];
        size_t nread;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        
        write( fdP2C[1], &quot;1234&quot;, 4 );

        nread = read( fdC2P[0], buf, sizeof(buf) - 1);
        if( nread &amp;gt; 0 ) {
            buf[nread] = '\0';
            printf( &quot;parent[%d] : data from child=%s\n&quot;, (int)getpid(), buf );
        }
        else {
            printf( &quot;parent[%d] : read data failure\n&quot;, (int)getpid() );
        }

        waitpid( childPid, &amp;amp;wstatus, 0 );
    }
    else { // child
        char buf[16];
        size_t nread;
        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );
        nread = read( fdP2C[0], buf, sizeof(buf) - 1 );
        if( nread &amp;gt; 0 ) {
            buf[nread]= '\0';
            printf( &quot; child[%d] : data form parent=%s\n&quot;, (int)getpid(), buf );
        }

        write( fdC2P[1], &quot;abcd&quot;, 4 );

        exit(0);  // return code 3 for testing
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 서로 주고 받기 위해 pipe를 2개 만든다. pipe에 의해 생성된 fd들은 자식에게 그대로 상속되어 서로간의 데이터를 주고 받을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pipe를 1개만 만들면 부모가 쓰고, 다시 부모가 읽어버려 자식은 읽을 수가 없게 되기 때문에 pipe를 2개 만들어야 한다. 만약 한쪽으로만 데이터를 보내는 상황이라면 1개만 만들어도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예제는 잘 작동하지만, 좀 더 의미있는 코드를 만들어 보자. pipe는 1개만 만들어 부모는 자식에게 데이터를 보내고, 자식은 읽어서 출력하는 코드를 작성해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1685628997777&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_fork_PipeStall() {

    pid_t childPid = -1;
    int fdP2C[2];
    
    pipe( fdP2C );
    
    childPid = fork();
    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent

        int wstatus;
        char buf[16];
        size_t nread;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        
        write( fdP2C[1], &quot;1234&quot;, 4 );
        close( fdP2C[1]);

        waitpid( childPid, &amp;amp;wstatus, 0 );
    }
    else { // child
        char buf[16];
        size_t nread;
        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );
        while( true ) {
            nread = read( fdP2C[0], buf, sizeof(buf) - 1 );
            if( nread &amp;gt; 0 ) {
                buf[nread]= '\0';
                printf( &quot; child[%d] : data form parent=%s\n&quot;, (int)getpid(), buf );
            }
            else {
                break;
            }
        }
        
        exit(0);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모에서 데이터를 보낸 후 끝(eof)이라는 것을 알리기 위해 close로 닫아 버린다. 하지만 자식은 여전히 read에서 멈춰있게 된다. 이유는 자식도 fdP2C[1]을 상속받기 때문이다. 자식프로세스에서 이 fdPC2[1]이 여전히 열려 있기 때문에 eof가 발생하지 않는다. 따라서 필요없는 fd를 모두 닫아줘야 이런 문제가 발생하지 않게 된다. 이와 같은 이유로 부모도 쓰지않는 모든 fd를 닫아 줘야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1685629307220&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_fork_PipeNotStall() {

    pid_t childPid = -1;
    int fdP2C[2];
    
    pipe( fdP2C );
    
    childPid = fork();
    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent

        close( fdP2C[0] ); // &amp;lt;-------- important

        int wstatus;
        char buf[16];
        size_t nread;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        
        write( fdP2C[1], &quot;1234&quot;, 4 );
        close( fdP2C[1]);

        waitpid( childPid, &amp;amp;wstatus, 0 );
    }
    else { // child

        close( fdP2C[1] ); // &amp;lt;-------- important

        char buf[16];
        size_t nread;
        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );
        while( true ) {
            nread = read( fdP2C[0], buf, sizeof(buf) - 1 );
            if( nread &amp;gt; 0 ) {
                buf[nread]= '\0';
                printf( &quot; child[%d] : data form parent=%s\n&quot;, (int)getpid(), buf );
            }
            else {
                break;
            }
        }
        
        exit(0);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 실행되는 것을 알 수 있다. 하지만 이 것이 끝이 아니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;File Descriptor는 전부 상속된다. 이는 악마가 숨어 있다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;fork는 부모프로세스의 모든 fd를 자식프로세스에게 상속하기 때문에 부모에서 파일에 데이터를&amp;nbsp; 미리 써놓고 자식에서는 그 데이터를 읽을 수도 있다. 자식프로세스에서는 &lt;b&gt;상속받은 fd중 필요한 것을 제외하고는 전부 닫아 줘야 한다&lt;/b&gt;는 것은 이제 알고 있다. 하지만, 부모프로세스의 이미 만들어져 있는 fd(File Descriptor) 는 일일이 fork를 실행하는 함수에 전달해주지 않으면 어떤 fd가 열려있는 지 알 수가 없다. 또한 MultiThread를 이용한 프로그램이라면 수많은 fd가 생성될 수 있고, 이 경우는 어떤fd가 열려 있는 지 전달해 줄 방법조차 없다. 모두 닫아 주지 않으면, 위의 예제에서와 같은 일이 발생할 수 밖에없다. 따라서, 모두다 닫아 버리는 코드가 필요하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스의 프로세스는 열 수 있는 최대 fd갯수를 정해 놓고 있다. 이 값을 구해주는 함수는 getdtablesize()인데, 이 함수가 없다면 getrlimit()함수로 대체해서 쓰면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1685630526417&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_fork_Pipe1() {

    pid_t childPid = -1;
    int fdP2C[2];
    
    pipe( fdP2C );
    
    childPid = fork();
    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent

        close( fdP2C[0] ); // &amp;lt;-------- important

        int wstatus;
        char buf[16];
        size_t nread;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        
        write( fdP2C[1], &quot;1234&quot;, 4 );
        close( fdP2C[1]);

        waitpid( childPid, &amp;amp;wstatus, 0 );
    }
    else { // child

        int maxFd = getdtablesize();
        if( maxFd &amp;lt; 0 ) {
            maxFd = 256;
        }
        for( int i = 3 ; i &amp;lt; maxFd ; i++ ) {
            if( fdP2C[0] != i ) {
                close( i );
            }
        }

        char buf[16];
        size_t nread;
        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );
        while( true ) {
            nread = read( fdP2C[0], buf, sizeof(buf) - 1 );
            if( nread &amp;gt; 0 ) {
                buf[nread]= '\0';
                printf( &quot; child[%d] : data form parent=%s\n&quot;, (int)getpid(), buf );
            }
            else {
                break;
            }
        }
        close( fdP2C[0] );
        exit(0);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식프로세스에서 실행되는 부분을 보면 필요한 fd를 제외하고는 전부 close를 하는 코드를 볼 수 있다. 다소 느리게 느껴질 수도 있지만, 이 방법외에는 달리 방법이 없다. [다른 방법이 있는 것 같긴 한데..]&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;부모가 Multi-Thread라면..&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fork로 인해 만들어지는 자식프로세스는 부모의 thread를 상속받지는 않는다. 자식은 fork후에 1개의 thread만이 존재하게 된다. 메모리 복사로 인해 thread정보는 있지만 이는 전부 의미없는 값일 뿐이다. 따라서 부모의 Thread는 신경쓰지말고 코드를 작성하면 된다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;공유메모리는 공유된 체로 쓸 수 있다.&lt;/h3&gt;
&lt;pre id=&quot;code_1685632625243&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_forkSharedMem() {

    pid_t childPid = -1;

    int    shmid = 0;
    void*  sharedPtr = nullptr;

    shmid = shmget(IPC_PRIVATE, 1024, IPC_CREAT | IPC_EXCL| 0664 );

    sharedPtr = shmat(shmid, nullptr, 0);
    assert( sharedPtr );

    childPid = fork();
    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent
        int wstatus;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        printf( &quot;parent[%d] : wait.. child done\n&quot;, (int)getpid() );
        
        waitpid( childPid, &amp;amp;wstatus, 0 );
        printf( &quot;parent[%d] : sharedPtr = %s\n&quot;, (int)getpid(), (char*)sharedPtr );
    }
    else { // child
        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );
        strcpy( (char*)sharedPtr, &quot;abcd&quot; );
        shmdt(sharedPtr );
        exit(0);
    }

    shmdt(sharedPtr );
    shmctl(shmid, IPC_RMID, (struct shmid_ds*)NULL);

}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgZhAo/btsijmsfS8U/PKaBK8DPuEDKppUIwb9xJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgZhAo/btsijmsfS8U/PKaBK8DPuEDKppUIwb9xJK/img.png&quot; data-alt=&quot;실행결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgZhAo/btsijmsfS8U/PKaBK8DPuEDKppUIwb9xJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgZhAo%2FbtsijmsfS8U%2FPKaBK8DPuEDKppUIwb9xJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;251&quot; height=&quot;55&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;55&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;자식에게 상속된 공유메모리에 abcd라는 데이터가 자식프로세스에 의해 쓰여지게 되고, 부모는 그값을 읽어서 확실해 공유되었음을 알 수 있다. 하지만, 되기는 되는 데, 이게 올바른 사용법인지는 잘 모르겠다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;exec**함수로 자식프로세스를 교체 시키기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fork와는 행동 방식과 exec의 행동방식은 다르다. 당연한 이야기지만, 늘 이 둘을 같이 공부하게 되니, 머리속에서 헤깔릴 수 밖에 없다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;exec**함수들은 현재의 프로세스를 새로운 프로세스로 대체해버리는 기능이다. 우선 fork로 자식프로세스를 만들고 exec**관련함수로 프로세스를 대체해 버리면 현재 돌고 있는 부모프로세스는 그대로 두고 다른 프로세스를 생성할 수 있다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;위에서 열심히 했던 pipe를 이용하여 프로세스간의 통신도 할 수 있다. popen()함수나 system()함수들이 이 방식을 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이는 fork처럼 fd는 교체될 자식프로세스에게 그대로 전달되기에 가능한 일이다.&lt;/span&gt;&lt;/i&gt;&lt;/b&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;pre id=&quot;code_1685788185037&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;inttypes.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

int main( int argc, char* argv[] ) {
    
    int32_t v;
    size_t nread;
    
    nread = read( 0, &amp;amp;v, sizeof(v) );
    if( nread != sizeof(v) ) {
        exit(10);        
    }
    
    v++;

    write( 1, &amp;amp;v, sizeof(v) );
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;stdin[0]에서 4byte를 읽어서 +1을 한 후, stdout[1]로 출력을 하는 프로그램이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;부모에서 특정 숫자를 보내주면 자식은 +1하고 부모는 그 결과값을 받는 코드는 다음과 같다.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1685788533714&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void do_fork_PipeExec1() {

    pid_t childPid = -1;
    int fdP2C[2];
    int fdC2P[2];
    
    pipe( fdP2C );
    pipe( fdC2P );
    
    childPid = fork();
    if( childPid &amp;lt; 0 ) {
        fprintf( stderr, &quot;fork failure\n&quot; );
        return;
    }

    if( childPid != 0 ) { // parent

        close( fdP2C[0] );
        close( fdC2P[1] );

        int wstatus;
        int32_t v = 5;
        size_t nread;
        printf( &quot;parent[%d] : child pid=%d\n&quot;, (int)getpid(), (int)childPid );
        
        write( fdP2C[1], &amp;amp;v, sizeof(int32_t) );
        close( fdP2C[1]);
        waitpid( childPid, &amp;amp;wstatus, 0 );

        if( WIFEXITED( wstatus ) ) {
            printf( &quot;child exit normally. with returning %d\n&quot;, WEXITSTATUS(wstatus) );
            
            read( fdC2P[0], &amp;amp;v, sizeof(int32_t));
            printf( &quot;parent[%d] : data from child=%d\n&quot;, (int)getpid(), (int)v );
        }
        else {
            printf( &quot;child exit abnormally.\n&quot; );
        }

        close( fdC2P[0] );
    }
    else { // child

        printf( &quot;child[%d]  : child pid=%d\n&quot;, (int)getpid(), (int)getpid() );

        //close( fdP2C[1] );
        //close( fdC2P[0] );

        dup2( fdP2C[0], 0 );
        dup2( fdC2P[1], 1 );
        
        int maxFd = getdtablesize();
        if( maxFd &amp;lt; 0 ) {
            maxFd = 256;
        }
        for( int i = 3 ; i &amp;lt; maxFd ; i++ ) {
            close( i );
        }
        
        execlp( &quot;./echoplus&quot;, &quot;./echoplus&quot;, nullptr );
        
        exit(-1);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식프로세스는 그냥 stdin/out을 이용하기 때문에 자신이 콘솔에서 실행되었는지, 다른 프로세스를 대체하는지는 검사하지 않는다. 단순히 stdin/out만을 쓴다. 대부분의 프로그램이 이렇게 만들어져 있다. 따라서 부모는 stdin[0]과 stdout[1]을 지정해줘야 한다. dup2함수가 하는 일이 이 교체작업이다.&lt;/p&gt;
&lt;pre id=&quot;code_1685788664896&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dup2( fdP2C[0], 0 );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fdP2C[0]을 stdin[0번]으로 교체하는 코드다. 기존의 stdin은 소멸되고 fdP2C[0]가 0번으로 바뀌게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 바뀐 fd 0번이 exec..함수를 타고 그대로 echoplus는 실행 되게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;302&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elOloE/btsizdUuEFE/UPt73dKu78N9kSAaxOSWtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elOloE/btsizdUuEFE/UPt73dKu78N9kSAaxOSWtk/img.png&quot; data-alt=&quot;실행결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elOloE/btsizdUuEFE/UPt73dKu78N9kSAaxOSWtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelOloE%2FbtsizdUuEFE%2FUPt73dKu78N9kSAaxOSWtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;302&quot; height=&quot;69&quot; data-origin-width=&quot;302&quot; data-origin-height=&quot;69&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실행결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;프로세스 교체실패&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;exec**함수가 꼭 호출이 된다는 포장은 없다. 자식프로세스의 exit(-1)코드는 &quot;echoplus&quot;라는 프로그램이 실행된다면 exit(-1)가 절대 실행되지 않는다. exec**함수는 프로세스를 교체하는 것이기에 자식프로세스의 종료로 그냥 끝나게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교체시에 이미 fork로 복제된 메모리는 존재하지도 않는다. 따라서 이 코드는 실행될 수도 없다. 하지만 exec**함수가 실패할 경우 부모에서 제대로 수행되었는 지 확인하기위해 (-1)값을 돌려주는 코드는 다른 문제를 미연에 방지하게 해준다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;O_CLOEXEC&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;fork시에는 fd가 늘 복사되서 자식에게 전달되지만, exec**함수로 실행되는 실행파일에는 전달하지 않는 방법도 있다. &lt;/span&gt;&lt;/span&gt;open함수의 경우 O_CLOEXEC를 추가로 지정해주면 exec**함수는 이 flag가 있는 fd는 모두 닫아 버린후에 실행을 시켜준다. 이렇게 하면 위에서의 악마를 미연에 방지할 수 있다. 이미 열려있는 fd에는 아래와 같이 추가적인 작업을 해주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1685789089475&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fcntl(fd, F_SETFD, FD_CLOEXEC);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 아직도 이 악마를 다 처리 했다고는 할 수 없다. 써드파티 라이브러리를 쓸 경우 fd를 구해낼 방법이 없을 수 있고, 구할 수 있다고 해도, fcntl...함수가 호출되기 이전에 fork가 실행되어 버리면 무용지물이 된다. 따라서 위에서 모든 fd를 닫아주는 코드는 &lt;b&gt;언제나 필요하게 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;exec**와 공유메모리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연한 이야기지만 exec는 메모리의 내용이 완전히 바뀌게 된다. 따라서, 상속된 공유메모리는 전달될 수 없다. 공유메모리를 사용하고 싶다면, shmid값을 환경변수나 실행 파라미터등 다른 방법으로 전달해 주면 된다.&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;*1 : 실제 프로그램 코드가 도는 것과 그 관련정보를 Context라고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*2 : exit함수에 지정하거나 exec***함수로 프로세스를 변경한 경우 main함수의 return값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*3 : init프로세스는 모든 프로세스의 조상이다. 리눅스에서 생성되는 최초의 프로세스이며 0 또는 1의 pid값을 주로 갖고 있다.&lt;/p&gt;</description>
      <category>리눅스</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/306</guid>
      <comments>https://jamssoft.tistory.com/306#entry306comment</comments>
      <pubDate>Mon, 29 May 2023 01:31:01 +0900</pubDate>
    </item>
    <item>
      <title>당신이 로또 1등이 당첨될 확률은...</title>
      <link>https://jamssoft.tistory.com/304</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;로또는 아주 단순한 확률로 계산된다. 여기에는 어떤한 예측도 존재할 수 없으며, 누구도 예측을 할 수가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로또1등의 당첨확률은 약 8백만분의 1이다. 이 것은 중학교때 배웠던 산수로 풀수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 말로 모든 로또번호 815만개를 사면 1등에 당연히 당첨이 된다는 뜻이다. 이와 같은 이유로 나는 아니지만 1등당첨자는 늘 존재하는 이유다. 일주일마다 팔리는 모든 로또번호가 이미 815만개가 넘기 때문에 1등은 거의 언제나 나올 수 밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 우리는 로또를 1개만 사지 않으며, 1번만 사지도 않는다. 10개의 번호를 일주일에 한번씩 산다고 치면, 한번 사서 당첨될 확률은 81만분의 1이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일년을 계산하기 편하게 50주로 잡고 20세에서 70세까지 이것도 계산하기 편하게 50년으로 잡으면, 일생동안 당첨될 확률은 (일주일에 번호 10개를 산다는 것도 포함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;326분의 1이다. 다른말로 하면 윤회를 326번하면 한번은 된다는 뜻이다. 로또를 살 수 있는 최대금액인 10만원을 쓴다면 33번만 다시 태어나면 된다. 이 326분의 1을 다른 말로 하면, 로또가 우리나라에서 판매된지 20년정도 되었는데, 50년이 지나면 로또를 사는 사람 326명 중 한명은 1등에 당첨이 됐다는 뜻이다. 물론 이들이 1등당첨사실을 밝히지는 않겠지만, 한 열다리를 건너면 누군가가 1등에 당첨된 사실을 듣게 될 것이다.&lt;/p&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번의 인생에서 써야하는 로또 구입비용은 2500만원이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 1등이 되기위해 써야하는 돈을 계산해 보면. 81억5000만원이 든다. 1등의 당첨금이 15억정도라고 잡으면 1등이 당첨되기 위해 1등당첨금의 5~6배의 돈을 써야 한다는 뜻이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현실로 돌아와서 일생동안 2500만원을 써서 326분의 1의 확률에 기대 것인지, 2500만원을 모을 지, 아니면 2500만원어치 맛있는 것을 먹으며 살지는 당신의 선택이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일주일에 10만원씩 쓴다면, 2억5000만원을 써야 한다. 확률은 33분의 1로 아주 많이 늘어나지만, 이 돈이면 로또사러가는 시간을 아껴서 다른 것을 하는 것이 좋다는 생각도 들 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;326분의 1의 확률이 아주 높아 보이지만, 아주 적은 확률이라는 것을 필자는 말하고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 로또번호판매사이트에서 당첨되는 번호를 준다고 하면서 한달에 십만원 중반의 돈을 결제하라고 하는 데, 이렇게 까지 할 경우 당신은 50년동안 약 1억원 중반의 돈을 추가로 쓰는 것이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서도 언급했듯 로또는 예측이 될 수 없다. 이들은 단순히 815만개의 번호가 다 판매가 되는 것 뿐이다. 아마 모든 번호가 판매 되지 않아도 판매되었다고 할 것이다. 컴퓨터에서 815만개라는 숫자는 그리 크지 않은 숫자다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실상의 결론은 그냥 심심풀이로만 사야한다. 기대는 해도 되지만, 매달려서는 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ps. 계산상에 틀린 부분이 있을 수 있다... 맞을 것 같기는 한데..&lt;/p&gt;</description>
      <category>인생은</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/304</guid>
      <comments>https://jamssoft.tistory.com/304#entry304comment</comments>
      <pubDate>Wed, 17 May 2023 00:50:23 +0900</pubDate>
    </item>
    <item>
      <title>생리 식염수 용량표</title>
      <link>https://jamssoft.tistory.com/303</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;식염수를 만들 때의 물과 소금의 양입니다. 사실상 전혀 살 필요가 없는 물건이기에 이렇게 표로 정리해 둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집에서 간단히 만들어 사용하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 그림 말고 그 아래의 pdf파일을 다운 받아 출력하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbZPB0/btrJcl1goii/m3DpCvL0SlOdtIHJ9nUXOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbZPB0/btrJcl1goii/m3DpCvL0SlOdtIHJ9nUXOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbZPB0/btrJcl1goii/m3DpCvL0SlOdtIHJ9nUXOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbZPB0%2FbtrJcl1goii%2Fm3DpCvL0SlOdtIHJ9nUXOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;527&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/ccZxhD/btrI7MFw0LL/EZIGPA1MxIN6kKmFI65W21/%EC%83%9D%EB%A6%AC%EC%8B%9D%EC%97%BC%EC%88%98%EC%9A%A9%EB%9F%89%ED%91%9C.pdf?attach=1&amp;amp;knm=tfile.pdf&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;생리식염수용량표.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.02MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식염수는 몸에 미네랄농도와 같은 물을 말합니다. 동물도 각각의 개체에 따라 이 농도가 다릅니다. 식염수를 사용하는 이유는 삼투압현상으로 인한 물과 미네랄의 이동을 막기위해 사용되며, 주 재료인 소금의 소독의 효과를 이용하는 것입니다. 알콜은 자극이 있지만, 소금은 자극이 적기 때문에 문제를 거의 일으키지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가글을 할 때, 입안의 세균이 혹시 있을지 모를 입안의 상처로 침투되는 것을 막기위해 삼투압이 발생하지 않는 식염수를 사용하는 것입니다. 사실상 식염수는 가글하기에 딱 좋은 물질입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DIET:다이어트</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/303</guid>
      <comments>https://jamssoft.tistory.com/303#entry303comment</comments>
      <pubDate>Mon, 8 Aug 2022 17:05:37 +0900</pubDate>
    </item>
    <item>
      <title>VC 디스크 드라이브 목록 구하기</title>
      <link>https://jamssoft.tistory.com/301</link>
      <description>&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;방법1 - GetLogicalDrives&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List1 - 루트목록1&lt;/p&gt;
&lt;pre id=&quot;code_1659394712416&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void DiplayDrives1()
{
    DWORD drives = GetLogicalDrives();
    for (int i = 0; i &amp;lt; 26; i++) {
        if ( drives &amp;amp; ( 1 &amp;lt;&amp;lt; i ) ) {
            wprintf(L&quot;%c\n&quot;, L'A' + i );
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bit의 위치가 SET되으면 그 드라이브가 존재한다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 5번째 비트가 SET되어 있다면, ABCD(E)F.. 중 E드라이브가 있다는 뜻이 된다. 대부분의 상황에서 이 방법은 잘 작동한다. 사용법은 단순하지만, 이 방법은 26번의 루프를 돌아야 될 뿐만 아니라, 드라이브명은 재가공이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;방법2 - GetLogicalDriveString&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List2 - 루트목록2&lt;/p&gt;
&lt;pre id=&quot;code_1659395547622&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void DiplayDrives2()
{
    DWORD rcc;
    wchar_t * bufPtr = NULL;
    DWORD bufLen = 0;
    wchar_t* p;

    // rcc required size
    bufLen = GetLogicalDriveStringsW( 0, NULL );
    //wprintf(L&quot;rcc=%d&quot;, rcc);
    if (bufLen &amp;lt;= 0 ) {
        wprintf( L&quot;Something goes wrong!\n&quot;);
        return;
    }

    bufPtr = (wchar_t*)malloc( (bufLen + 1 ) * sizeof( wchar_t ) );
    
    if (!bufPtr ) {
        wprintf(L&quot;out of memory\n&quot;);
        return;
    }

    rcc = GetLogicalDriveStringsW( bufLen, bufPtr );
    
    p = bufPtr;
    while ( *p ) {

        UINT type = GetDriveTypeW(p);
        wprintf( L&quot;drive %s %s\n&quot;, p, GetDriveTypeText( type ) );
        p += wcslen( p ) + 1;
    }


    if ( bufPtr ) {
        free( bufPtr );
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 GetLogicalDrivString함수를 이용한다. 각각의 드라이브명이 NULL로 구분되고 마지막은 두개의 NULL로 구성된다.&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;481&quot; data-origin-height=&quot;179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pIIHF/btrIMCO5l86/JJDOEGHBClgNhz4v94JNM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pIIHF/btrIMCO5l86/JJDOEGHBClgNhz4v94JNM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pIIHF/btrIMCO5l86/JJDOEGHBClgNhz4v94JNM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpIIHF%2FbtrIMCO5l86%2FJJDOEGHBClgNhz4v94JNM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;179&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;179&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력을 보면 드라이브명에 역슬래쉬가 붙은 경로명으로 값을 구할 수 있다. 방법1과의 차이는 경로명으로 구할 수 있다는 점이다. 사실상 폴더명으로 뽑을 지 비트로 뽑을지의 차이뿐인 것 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;GetDriveType함수는 USB스틱의 경우, DRIVE_REMOVABLE과 같이 제거가 가능하다고 대부분 뜨지만, 가끔식 DRIVE_FIXED로 뜨는 경우도 있다. 보통 아주 빠른 USB드라이브의 경우에 이렇게 된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통의 사용하는 루트로 마운트되는 모든 드라이브를 구하는 데에는 위의 두방법으로 충분하다. 하지만 위의 두 방법은 드라이브의 루트로 된 경우만을 뽑아 낼 수 있다. 윈도우에서도 파티션을 드라이브가 아닌 폴더로 붙여 사용할 수가 있다. (&lt;a href=&quot;https://jamssoft.tistory.com/295&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mklink를 사용하는 방법과 파티션 마운트자체를 폴더로 마운트하는 방법&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;방법3 - FindFirstVolume, FindNextVolume, FindVolumeClose&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List3 - 볼륨목록1&lt;/p&gt;
&lt;pre id=&quot;code_1659396830702&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void DiplayDrives3()
{
    HANDLE handle = INVALID_HANDLE_VALUE;

    const DWORD VOLUMENAME_SIZE = 512;

    wchar_t szVolumeName[VOLUMENAME_SIZE];

    handle = FindFirstVolumeW( szVolumeName, VOLUMENAME_SIZE );
    while (handle != INVALID_HANDLE_VALUE)
    {
        wprintf( L&quot;drive %s\n&quot;, szVolumeName );

        if (!FindNextVolumeW(handle, szVolumeName, VOLUMENAME_SIZE)) {
            break;
        }
    }

    if (handle != INVALID_HANDLE_VALUE )
    {
        FindVolumeClose(handle);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R64a4/btrIGygnMou/UfwNg26iRJqvF02KhH7oH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R64a4/btrIGygnMou/UfwNg26iRJqvF02KhH7oH0/img.png&quot; data-alt=&quot;볼륨단위로 뽑기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R64a4/btrIGygnMou/UfwNg26iRJqvF02KhH7oH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR64a4%2FbtrIGygnMou%2FUfwNg26iRJqvF02KhH7oH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;868&quot; height=&quot;134&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;볼륨단위로 뽑기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수이름에서도 알 수 있듯이 볼륨단위로 드라이브를 순회하면서 구할 수 있다.또한 이 방법은 마운트 되지 않는 볼륨도 뽑아 낸다. 이 볼륨이 어디에 링크 되어 있는지 알아야 하기에 다음의 방법으로 추가 작업을 해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 네트웍크 드라이브는 추출되지 않는다. 네트워크 드라이브는 방법1,2에서 따로 추출해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List4 - 볼륨목록2&lt;/p&gt;
&lt;pre id=&quot;code_1659397418996&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void DiplayDrives4()
{
    HANDLE handle = INVALID_HANDLE_VALUE;

    const DWORD VOLUMENAME_SIZE = 512;
    DWORD  CharCount = 0;
    DWORD Error;
    WCHAR  DeviceName[MAX_PATH] = L&quot;&quot;;

    wchar_t szVolumeName[VOLUMENAME_SIZE];

    handle = FindFirstVolumeW(szVolumeName, VOLUMENAME_SIZE);
    while (handle != INVALID_HANDLE_VALUE)
    {
        //wprintf(L&quot;drive %s\n&quot;, szVolumeName);

        size_t Index = wcslen(szVolumeName) - 1;

        if (szVolumeName[0] != L'\\' ||
            szVolumeName[1] != L'\\' ||
            szVolumeName[2] != L'?' ||
            szVolumeName[3] != L'\\' ||
            szVolumeName[Index] != L'\\')
        {
            //Error = ERROR_BAD_PATHNAME;
            wprintf(L&quot;FindFirstVolumeW/FindNextVolumeW returned a bad path: %s\n&quot;, szVolumeName );
            break;
        }


        szVolumeName[Index] = L'\0';

        CharCount = QueryDosDeviceW(&amp;amp;szVolumeName[4], DeviceName, ARRAYSIZE(DeviceName));

        szVolumeName[Index] = L'\\';

        if (CharCount == 0)
        {
            Error = GetLastError();
            wprintf(L&quot;QueryDosDeviceW failed with error code %d\n&quot;, Error);
            break;
        }

        
        wprintf(L&quot;\nVolume name: %s&quot;, szVolumeName);
        wprintf(L&quot;\nFound a device: %s&quot;, DeviceName);
        wprintf(L&quot;\nPaths:&quot;);
        DisplayVolumePaths(szVolumeName);


        if (!FindNextVolumeW(handle, szVolumeName, VOLUMENAME_SIZE)) {
            break;
        }
    }

    if (handle != INVALID_HANDLE_VALUE)
    {
        FindVolumeClose(handle);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List5 - GetVolumePathNamesForVolumeName : Volume이름으로 Path구하기&lt;/p&gt;
&lt;pre id=&quot;code_1659397525553&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void DisplayVolumePaths( PWCHAR VolumeName )
{
    DWORD  CharCount = MAX_PATH + 1;
    PWCHAR Names = NULL;
    PWCHAR NameIdx = NULL;
    BOOL   Success = FALSE;

    for (;;)
    {
        //
        //  Allocate a buffer to hold the paths.
        Names = (PWCHAR) new BYTE[CharCount * sizeof(WCHAR)];

        if (!Names)
        {
            //
            //  If memory can't be allocated, return.
            return;
        }

        //
        //  Obtain all of the paths
        //  for this volume.
        Success = GetVolumePathNamesForVolumeNameW(
            VolumeName, Names, CharCount, &amp;amp;CharCount
        );

        if (Success)
        {
            break;
        }

        if (GetLastError() != ERROR_MORE_DATA)
        {
            break;
        }

        //
        //  Try again with the
        //  new suggested size.
        delete[] Names;
        Names = NULL;
    }

    if (Success)
    {
        //
        //  Display the various paths.
        for (NameIdx = Names;
            NameIdx[0] != L'\0';
            NameIdx += wcslen(NameIdx) + 1)
        {
            wprintf(L&quot;  %s&quot;, NameIdx);
        }
        wprintf(L&quot;\n&quot;);
    }

    if (Names != NULL)
    {
        delete[] Names;
        Names = NULL;
    }

    return;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;getvolumepathnamew-function-fileapih&quot; data-ke-size=&quot;size16&quot;&gt;GetVolumePathNameW 는 파일이나 폴더가 어떤 볼륨에 속해있는 지를 알게 해준다. 이 결과를 드라이브의 루트가 아닌 sub일수 있다. 아래의 출력에서 두번째 볼륨이 &quot;C:\asd\&quot;에 마운트되어 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EZAbH/btrIGzzCeJH/qqeHH6vAMOdtjFlSKT5UY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EZAbH/btrIGzzCeJH/qqeHH6vAMOdtjFlSKT5UY0/img.png&quot; data-alt=&quot;2번째 꺼 잘보기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EZAbH/btrIGzzCeJH/qqeHH6vAMOdtjFlSKT5UY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEZAbH%2FbtrIGzzCeJH%2FqqeHH6vAMOdtjFlSKT5UY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;545&quot; height=&quot;418&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2번째 꺼 잘보기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레퍼런스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 작업을 위해 관련 함수를 모아둔 링크는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/FileIO/volume-management-functions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.microsoft.com/en-us/windows/win32/FileIO/volume-management-functions&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1659170340484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Volume Management Functions - Win32 apps&quot; data-og-description=&quot;Functions used in volume management.&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/en-us/windows/win32/FileIO/volume-management-functions&quot; data-og-url=&quot;https://docs.microsoft.com/en-us/windows/win32/fileio/volume-management-functions&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/t6UdL/hyPgdu5wHD/RWQDtGowGyPhpr1JV8L2D1/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/FileIO/volume-management-functions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/en-us/windows/win32/FileIO/volume-management-functions&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/t6UdL/hyPgdu5wHD/RWQDtGowGyPhpr1JV8L2D1/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&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;Volume Management Functions - Win32 apps&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Functions used in volume management.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.microsoft.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;----&lt;/p&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>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/301</guid>
      <comments>https://jamssoft.tistory.com/301#entry301comment</comments>
      <pubDate>Tue, 2 Aug 2022 08:49:28 +0900</pubDate>
    </item>
    <item>
      <title>LDPlayer 개발자모드</title>
      <link>https://jamssoft.tistory.com/300</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일단 LDPlayer를 사용할 정도의 실력이 있는 사용자라면 안드로이드기기에 대하여 어느 정도 아는 사람일 것이다. 하지말 설명은 초보자를 기준으로 하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 개발자 모드라는 것은 말 그대로 안드로이드 앱(과 비슷한)을 개발하는 사람들이 사용하는 것이다. 개발의 과정에서 PC와 연결을 해 놓고 앱을 만들어 놓고(PC에서 앱이 만들어진다), 이 앱을 안드로이드 기기에 전송해서 잘 동작하는 지를 테스트하는 과정을 반복하면서 앱은 만들어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 개발자모드는 그래픽설정과 모니터링, 블루투스제어, GPS신호 페이크치기, 개발을 좀 빨리하기위한 테스트같은 것을 포함한다. 예를 들어 GPS페이크같은 것은 개발자가 PC와 휴대폰을 들고 세상을 돌아 다니면서 테스트를 할 수 없기에 GPS를 구라쳐서 해당지역으로 인식시키는 기능이다. 이런 것을 쓰기 위해 개발자 모드가 있는 것이다. 따라서, 일반 사용자의 경우 이 개발자 모드로 진입하는 것 자체가 일부의 위험성을 안고 있는 것이다. 심지어는 보안에 심각한 문제를 일으키게 된다. 하지만, 이 구글 칭구들이 굳이 이 개발자 메뉴안에 넣지 말아야 할 것을 이 속에 넣어두어 자꾸 일반 사용자들이 이 개발자 모드로 진입하려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개발자옵션 켜기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 LDPlayer의 기능이라기 보다는 안드로이드 기기의 기본 기능이다. 안드로이드 4(Kitkat)부터(정확하지 않음)는 이 개발자 메뉴가 숨겨져 있다. 이 메뉴로 진입하기위해서는 기기정보[비스무리한 것]을 찾아보면 [빌드번호]라는 것이 보인다 이 것을 연타를 치면 [X단계만 더 완료하면 개발자가 될 수 있습니다.]와 같이 나오다가 [개발자가 되셨습니다.]라는 것이 나오면, 보이지 않던 개발자모드가 보이게 된다. 이 것은 이 [기기정보]와 같은 곳에 있지 않고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통, 설정 -&amp;gt; 시스템 [고급] -&amp;gt; 개발자옵션에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pqelR/btrIoKOXUXj/jEALptiGKCE04LJyXh7hM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pqelR/btrIoKOXUXj/jEALptiGKCE04LJyXh7hM0/img.png&quot; data-alt=&quot;빌드 번호 연타&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pqelR/btrIoKOXUXj/jEALptiGKCE04LJyXh7hM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpqelR%2FbtrIoKOXUXj%2FjEALptiGKCE04LJyXh7hM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1255&quot; height=&quot;740&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;빌드 번호 연타&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IX9gS/btrIvSLREbJ/uOrJzI6ez9qqBLpf9AzG9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IX9gS/btrIvSLREbJ/uOrJzI6ez9qqBLpf9AzG9K/img.png&quot; data-alt=&quot;이제 [개발자 옵션]이 보인다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IX9gS/btrIvSLREbJ/uOrJzI6ez9qqBLpf9AzG9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIX9gS%2FbtrIvSLREbJ%2FuOrJzI6ez9qqBLpf9AzG9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1257&quot; height=&quot;749&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이제 [개발자 옵션]이 보인다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 개발자 옵션을 사용 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 개발자 메뉴를 다시 끄려면&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bioLzk/btrIwGqVi1g/8owXqeqdIa8HRdIm3ufea1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bioLzk/btrIwGqVi1g/8owXqeqdIa8HRdIm3ufea1/img.png&quot; data-alt=&quot;사용할 지 말지 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bioLzk/btrIwGqVi1g/8owXqeqdIa8HRdIm3ufea1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbioLzk%2FbtrIwGqVi1g%2F8owXqeqdIa8HRdIm3ufea1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1278&quot; height=&quot;705&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사용할 지 말지 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[사용]을 끄고 메뉴를 나가면 된다. 그러면 이 [개발자 옵션]이 다시 사라지고, 켜려면, 다시 위에서 연타를 쳤던 작업부터 다시 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;창 애니메이션/전환 애니메이션/길이 &lt;b&gt;배율 &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 작업은 게임을 최적화에는 전혀 도움이 되지 않는다. 게임내에서는 기기을 가로/세로로 돌리거나, 앱의 activity(각각의 화면)가 변할 일이 거의 없다. 이 것은 앱이 자체적으로 구현을 주로한다. 이 최적화는 정말 말도 안되게 느린 장치에서 화면회전과 같은 기능으로 발생되는 부하를 줄이는 작업일 뿐이다. 실제 사용자가 화면이 전환되는 것을 인지하기 쉽게 해주는 기능이라 할 필요는 사실상 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;GPU랜더링 강제 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 메뉴는 게임에서는 별로 의미가 없다. 게임은 이 메뉴와 관련된 기능을 거의 쓰지 않는다. 워낙 옛날부터 있던 메뉴라 안드로이드 5버전이하에서나 그 것도 그림같은 것(2D)을 그리는 것에나 적용되는 것이다. 3D를 바로 이용하는 게임에서는 사실상 거의 의미가 없는 옵션이다. 이 건 뇌피셜이 좀 있는 데, 실제 frame테스트로는 알기 힘들고, loading시간 비교를 통해 실제 도움이 되는 지, 각각의 게임마다 확인해 봐야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 내용은 아래의 링크를 참고해서 설정하면 된다. 설정할 일 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/270&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jamssoft.tistory.com/270&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1659073265524&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;안드로이드 폰 속도 빠르게 하기?&quot; data-og-description=&quot;유투브나 블로그 등에 올라와있는 안드로이드 기기의 속도를 조금이라도 빠르게하는 방법들이 나와 있습니다. 하지만, 잘 못된 부분이 있어 &amp;quot;잘못된 건 고쳐야지&amp;quot;를 해보겠습니다. &amp;quot;개발자 옵션&quot; data-og-host=&quot;jamssoft.tistory.com&quot; data-og-source-url=&quot;https://jamssoft.tistory.com/270&quot; data-og-url=&quot;https://jamssoft.tistory.com/270&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jUuHc/hyPeIQgyZg/ccjT5bkp3ZhWgzSRyofPkK/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/SZoU0/hyPf36jSvc/sssPQrkQUx3ib2M3B6sCek/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/boLavQ/hyPeFzfVbj/UdNTrbfuJkwc0PNPElJC10/img.png?width=1366&amp;amp;height=728&amp;amp;face=0_0_1366_728&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/270&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jamssoft.tistory.com/270&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jUuHc/hyPeIQgyZg/ccjT5bkp3ZhWgzSRyofPkK/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/SZoU0/hyPf36jSvc/sssPQrkQUx3ib2M3B6sCek/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/boLavQ/hyPeFzfVbj/UdNTrbfuJkwc0PNPElJC10/img.png?width=1366&amp;amp;height=728&amp;amp;face=0_0_1366_728');&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;안드로이드 폰 속도 빠르게 하기?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;유투브나 블로그 등에 올라와있는 안드로이드 기기의 속도를 조금이라도 빠르게하는 방법들이 나와 있습니다. 하지만, 잘 못된 부분이 있어 &quot;잘못된 건 고쳐야지&quot;를 해보겠습니다. &quot;개발자 옵션&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jamssoft.tistory.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;링크를 타고 돌아온 사람은 알게 될 것이다. 사실상 개발자메뉴에서 최적화 할 일은 없다. 오히려 이 것을 건드려서 시스템에 문제가 될 수 있다. 보통 꾸진 기기에서 발생하는 데, 이 것도 안드로이드 기기를 만드는 사람들이 잘 못 만들어 둔 경우도 많다. 보통 중국산의 브랜드들이 기능 자체를 구현하지 않는 경우가 꽤 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결론은 개발자옵션에서는 건드릴 것이 없다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LDPlayer로 개발하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LDPlayer로 x86/x64(인텔용)개발이 가능하다 이 메뉴를 쓰려면, 안드로이드의 설정에서 켜야 되지만, &lt;b&gt;LDPlayer의 설정&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;735&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eyTyrB/btrIt4TELNr/VY6YMkpn0WiU0ziDVKXOQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eyTyrB/btrIt4TELNr/VY6YMkpn0WiU0ziDVKXOQ1/img.png&quot; data-alt=&quot;활성화 변경기 adb 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eyTyrB/btrIt4TELNr/VY6YMkpn0WiU0ziDVKXOQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeyTyrB%2FbtrIt4TELNr%2FVY6YMkpn0WiU0ziDVKXOQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;735&quot; height=&quot;593&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;활성화 변경기 adb 가능&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>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/300</guid>
      <comments>https://jamssoft.tistory.com/300#entry300comment</comments>
      <pubDate>Fri, 29 Jul 2022 14:44:21 +0900</pubDate>
    </item>
    <item>
      <title>애드센스 자동광고 실험 결과</title>
      <link>https://jamssoft.tistory.com/299</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일주일동안의 자동광고 실험이 끝이 났다. 자동광고가 얼마나 수익을 주는 지 실제 실험을 통해 확인하는 작업이다. 이 자동광고는 사용자의 페이지를 지저분하게 만들지만, 이 광고가 시행된지 꽤 돼서 사용자들이 &quot;그려려니~&quot;하는 반응을 보일 것으로 보인다. 결과는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1200&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P80iY/btrItvcCWFH/Pax6DU2AyxJv7CJex7J5V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P80iY/btrItvcCWFH/Pax6DU2AyxJv7CJex7J5V1/img.png&quot; data-alt=&quot;99%가 우수하다고 나왔다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P80iY/btrItvcCWFH/Pax6DU2AyxJv7CJex7J5V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP80iY%2FbtrItvcCWFH%2FPax6DU2AyxJv7CJex7J5V1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;748&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;99%가 우수하다고 나왔다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시나 문제가 될 수 있는 부분은 삭제 했다. 가장 중요하게 볼 것은 자동광고 적용시 99%의 확률이라는 것이다. 자동으로 적용되도록 설정이 되어 있었는 지, 현재는 자동적용 중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험의 과정에서는 사용자의 50%만 이 것을 진행하고, 이 차이를 비교하여 결과를 얻게 된다. 필자의 블로그는 그리 큰 블로그가 아니라서 실험의 결과가 그리 신뢰 할 수 있을 지는 의문이다. 자동광고 한번이라도 클릭되는 순간, 없는 페이지보다 수익이 훨씬크기 때문에, 99%라는 수치가 나온듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광고가 많은 것이 클릭될 확률도 높기에 사용자의 편의성제공과 서로 상충되기에 해본 실험이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나처럼 실험을 해볼 사람은 애드센스의 왼쪽에 실험실 메뉴를 찾아 실험해 볼 수 있다. 다른 결과가 나올 것이지만, 실제 실험을 통한 결과기에 안해보는 것보다는 나을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수익을 올리는 다른 방법도 많다. 다음은 필자가 조금이라도 수익을 늘리고자 사용자의 편의성과 수익을 동시에 올리는 방법을 링크해 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jamssoft.tistory.com/293&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1659070052459&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;내 티스토리 블로그의 애드센스 수익을 늘려보자.&quot; data-og-description=&quot;일단, 오랜만에 블로그를 주제로 글을 쓴다. 많은 분들이 애드센스 수익에 관한 글을 많이 쓰기에, 이 글 또한 밀리기에, 롱런되는 글은 아니게 될 것 같다. 하지만 우연히 이 글을 방문하게되거&quot; data-og-host=&quot;jamssoft.tistory.com&quot; data-og-source-url=&quot;https://jamssoft.tistory.com/293&quot; data-og-url=&quot;https://jamssoft.tistory.com/293&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rlKC3/hyPeQAJyjB/HANYGVtJsVTkc9DIqghxd1/img.png?width=522&amp;amp;height=213&amp;amp;face=0_0_522_213,https://scrap.kakaocdn.net/dn/DuMbj/hyPf4YrSMD/aiqIA1T8uO5bgIFQZnoTPk/img.png?width=522&amp;amp;height=213&amp;amp;face=0_0_522_213,https://scrap.kakaocdn.net/dn/bjbzZ8/hyPf1AEscY/pB8aBjvEM2ISZLmGr6iNV1/img.png?width=671&amp;amp;height=555&amp;amp;face=0_0_671_555&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jamssoft.tistory.com/293&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rlKC3/hyPeQAJyjB/HANYGVtJsVTkc9DIqghxd1/img.png?width=522&amp;amp;height=213&amp;amp;face=0_0_522_213,https://scrap.kakaocdn.net/dn/DuMbj/hyPf4YrSMD/aiqIA1T8uO5bgIFQZnoTPk/img.png?width=522&amp;amp;height=213&amp;amp;face=0_0_522_213,https://scrap.kakaocdn.net/dn/bjbzZ8/hyPf1AEscY/pB8aBjvEM2ISZLmGr6iNV1/img.png?width=671&amp;amp;height=555&amp;amp;face=0_0_671_555');&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;내 티스토리 블로그의 애드센스 수익을 늘려보자.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;일단, 오랜만에 블로그를 주제로 글을 쓴다. 많은 분들이 애드센스 수익에 관한 글을 많이 쓰기에, 이 글 또한 밀리기에, 롱런되는 글은 아니게 될 것 같다. 하지만 우연히 이 글을 방문하게되거&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jamssoft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>blogging</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/299</guid>
      <comments>https://jamssoft.tistory.com/299#entry299comment</comments>
      <pubDate>Fri, 29 Jul 2022 13:38:24 +0900</pubDate>
    </item>
    <item>
      <title>귀금속, 살 때는 금값 팔 때는 헐값.. 왜 이럴까?</title>
      <link>https://jamssoft.tistory.com/298</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;많은 사람들이 귀금속은 재산이라고 생각한다. 금붙이를 사두면 나중에 현금화가 가능하기 때문에, 여유가 있을 때마다, 아니면, 돌잔치, 생일선물 등과 같이 귀금속같은 금붙이가 들어올 때가 있다. 하지만, 정작 비싸게 주고 산 물건을 처분하려고 하면, 기절할 정도 헐값임을 알게 된다. 이 때의 느낌은 &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;449&quot; data-origin-height=&quot;465&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HRoMv/btrIoAEHbuP/9aEFM5pkSLLxgkGFcsF2hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HRoMv/btrIoAEHbuP/9aEFM5pkSLLxgkGFcsF2hk/img.png&quot; data-alt=&quot;똥과 색깔은 비슷하다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HRoMv/btrIoAEHbuP/9aEFM5pkSLLxgkGFcsF2hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHRoMv%2FbtrIoAEHbuP%2F9aEFM5pkSLLxgkGFcsF2hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;465&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;465&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;많게는 정가의 25%도 못 받는 경우도 있고, 40%받으면 다행인 경우도 많다. 50%이상 받는다는 것은 상당히 어려운 일이다. 특히 세상사람들이 생각하는 유명브랜드제품일수록 이 회수률은 급격히 줄어들게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이유는 간단하다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제작과 유통에서 발생하는 부가가치(라고 쓰고 매입과 마진이라고 읽는다)때문이다. 귀금속이 최종 소비자에게 도달하는 과정은 다른 유통과정에 비하면 아주 짧다. 거의 최소한의 경로로만 움직인다. 이유는 워낙 고가의 제품이라 중간마진이 발생하면 소비자는 이 가격을 감당할 수 없을 정도로 커진다. 그래서 수요와 공급에 의해 자연스럽게 유통과정이 짧아진 다소 신기한 유통구조를 갖는다. 그래도 여전히 소비자가 느끼는 격차는 큰 것이 사실이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;금값이 차지하는 비중과 소비자의 생각의 괴리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소비자는 귀금속을 샀지만, 머리속에는 금덩어리를 샀다고 생각한다. 하지만 비용에서 순수 금에 비용은 이 귀금속을 팔 때알 수 있거나, 함량을 통해 계산해 볼 수 있다. 실제 소비자가 구매한 함량은 금으로만 이루어진 경우에 한정하면 14K일 경우 58.3%(=14K/24K)만이 순수 금이 된다. 이 물건이 100만원짜리라면 58만원정도가 금값이라고 생각하기 쉽다. 하지만, 실제 금값은 25만원정도도 안된다. 물건마다 다르지만 25만원도 많은 수치일 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공정에 의한 소실&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;14K(58.3%)의 귀금속을 제작할 때는 함량이 64.4%인 금에서 출발한다. 금은 가공성이 최고지만, 깎고, 다듬고 하려면 더 크게 만들어야 한다. 그래야 깎을 수 있으니, 더 높은 함량의 금으로 기본적인 틀에 이 금물을 부워서 만들고, 조각을 통해 원하는 디자인에 따라 다듬게 된다. 소비자가 산 금은 14K의 함량이지만, 실제 들어간 재료비는 64.4%(환산하면 약15.4K)가 들어가 버리는 것이다. 따라서 원재료비는 14K로 계산되지 않는다. 하지만 소비자가 팔 때는 14K로 계산이 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;(머리 좋은 사람은 이거 잘 계산하면 돈 벌 수 있다.. 근데.. 이미 하고 있다. 틈새시장이지만 진입장벽이 다소 높다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;디자인 비용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금붙이를 예쁘게 만들려면 누군가는 디자인을 해야한다. 이 디자이너들도 밥먹고 살려면 월급을 받던지 디자인을 팔던지 해야된다. 디자인은 한번만 나오면 되는 것이지만, 만들어진 디자인의 물건이 많이 팔린다는 보장은 없다. 이러게 되다보니, 이 종이와 컴퓨터앞에서 씨름하는 이 디자이너들은 여러개의 디자인을 지속적으로 만들 수 밖에 없다. 보통 이 디자인 비용은 개당 [전체 금액/디자인수] 50~200만원정도 소요된다. 비싸기 느껴질 수도 있지만, 하나의 쓸만한 디자인을 위해 디자이너들은 수많은 디자인을 하고, 그 중 쓸만한 것이 골라지는 것 뿐이다. 좀 더 나아가면, 쓸만한 디자인이지 위에서 언급한 것처럼, 장사가 잘되는 디자인일지는 팔아봐야 알 수 있다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span&gt;몇년전 ?가리에서 나온 반지디자인이 있는 데, 이게 정말 예쁘다. 초기에는 히트상품이 되고, 디자인 복사도 많이 일어났다. 하지만, 시간이 지나면서 이 제품은 매출이 떨어진다. 이유는 이게 끼고다니면 손가락이 아파 낄 수가 없다. 이 소문이 사람들의 입과 입을 통해 알려져 매출이 떨어지게 된다. 정말 예쁘게 나왔다고 전부 잘팔리는 것은 아니다. - 이거 뇌피셜이다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고급 브랜드일 경우 이 디자인 비용은 급격하게 상승한다. 심지어는 제품의 80%이상이 이 디자인 비용인 경우도 많다. (80%면 금값은 어떻게 될지 상상해보라). 필자가 본 가장 심한 것은 뻥을 조금만 보태서 99%가 디자인 비용인 경우도 봤다. 최고의 디자이너라 자기들이 정한 사람들이 한 둘도 아니고, 그 만큼 비싼 월급을 줘가며 써야 한다. 그 들의 실력을 무시하는 것이 아니고, 그 실력의 비용이 그 만큼 높고, 브랜드가치 만큼의 디자인이 나와야 하기에 이 디자인 비용은 최종의 제품에 상당한 비용을 차지하게 된다.&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;우리나라가 싼 편이고, 미국은.. 아 정말 쎄더라..물론 상대적 물가도 있지만..(T파뉘)가 비싸지는 이유를 알 것 같다. 다른 말로 우리나라 사람은 상대적으로 싼 가격에 사고 있는 것이긴 하다.. 그래도 귀금속은 비싸다.&lt;/p&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;눈깔 안 빠지나?&quot;라는 생각이 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;유통과 비용&lt;/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;b&gt;제작 -&amp;gt; 도매 -&amp;gt; 소매 -&amp;gt; 소비자&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 게 끝이다. 이렇게 짧은 구조인데도 이 사이에 소요되는 비용은 만만치가 않다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;제품하나가 소비자에게 전달될 때까지 해당하는 작업을 위한 공간이 필요하다. 제작을 위해서는 공장이 필요하고 도매상도 도매매장이 소매상은 소매를 위한 예쁘게 인테리어도 해야 되니, 소매상은 비용이 더 많이 들게 된다. 건물에 임대해서 들어가는 한달비용이 요즘 얼마나 비싼지는 여러분들도 다 알고 있을 것이다. 백화점은... 음... 음.... 말했다간..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이들도 전부 밥먹고 살아야 한다. 이들이 밥먹기위한 비용도 기본적으로 추가될 수 밖에 없다. 이들이 폭리를 취할 거라는 생각이 들수도 있지만,... 공개할 수 없는 자료라 간단히 말로 설명하겠다. 한개 팔아서 남는 비용에 임대료, 전기세, 부대비용을 빼면 식당에서 밥한끼 겨우 먹을 비용이 나온다고 생각하면 된다. 게다가 약간의 이윤을 추구를 하기위해(이들도 적금은 들어야하니)&amp;nbsp; 이 들이 선택한 방법은 박리다매를 하고 있다. 비싼 브랜드의 경우 상황이 좀 다르지만, 이윤이라는 것은 퍼센트로 계산하기 때문에, 비싼 브랜드와의 차이가 발생한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;결론은 간단하다.&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;비싼 브랜드의 경우 디자인비용이 실제 대부분을 차지해서, ㄸㅗㅇ값이 되고, 일반 브랜드의 경우, 최소의 마진이 합쳐진 것 또한 만만치 않다는 것이다. 가장 큰 결론은 귀금속의 순수금의 함량은 소비자가 생각한 것과는 많은 차이가 나게되고, 이 또한, 팔 때의 수수료로 인해 더 떨어지게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; 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;b&gt;살 때는 위의 모든 비용을 지불하지만, 팔 때는 금값만 받는다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;어쩌라구?&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그러면, 어떻게 해야 할까.. 한가지 힌트를 주면, 재테크를 위해 귀금속을 한다면, 사서 묵혀 둬야 한다. 물가라는 것은 성장하는 나라에서는 계속 오르기 때문에, 금값이 다른 기술이 나와 폭락되지 않는 이상, 기다리면 올라간다. 하지만 위에서 설명한 귀금속의 특성상 디자인과 비용이 빠진 형태의 금을 사야 한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;플라스틱이 처음 나왔을 때는 정말 비쌌다. 듀X에서 이 플라스틱을 처음에는 만들기도 쉽지않고 신기한 물건이라 비싼 물건이었다. 하지만 대량 생산법이 나오면서 가격은 폭락을 시작하고, 지금은....... 똥보다도 싼 것이 플라스틱이다. &lt;br /&gt;금은 단일원소라서 이런 일이 없을 지도 모르지만, 세상 어딘가에 있는(캐내는 것 말고) 것을 추출하는 기술이 갑자기 개발된다면 폭락을 할 수도 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;또 다른 방법은, 재테크를 하지 말라는 것이다. 이쁜 것을 착용한 자기만족과 예쁜 신상을 자랑하는 용도 외에는 답이 없다. 금값은 그나마 가치가 있지만, 예쁘면 예쁠수록 비싸지는 완제품을 재테크로 할 생각이라면 이 생각은 미리 버리기 바란다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론을 잘 읽어보면 어떤 물건을 사면 그나마 재테크가 가능한지 파악할 수 있을 것이다. 하지만, 많은 시간을 기다려야 하고, 그 시간이 당신이 살아있는 동안 안 올 수도 있다. 솔직히 재테크로는 권장하지 않는다. 하지만, 긴급한 자금을 위해 보관은 좀 쓸만한 방법이다. 이런 식의 사람들이 오히려 재테크에 성공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/298</guid>
      <comments>https://jamssoft.tistory.com/298#entry298comment</comments>
      <pubDate>Thu, 28 Jul 2022 15:01:27 +0900</pubDate>
    </item>
    <item>
      <title>VC 드라이브 볼륨 시리얼번호등 정보 알아내기</title>
      <link>https://jamssoft.tistory.com/283</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;디스크와 볼륨은 다른 것이다. volume의 시리얼번호만으로 대부분의 상황에 대응이 가능하니 이 글에서는 Disk의 시리얼번호가 아니고 볼륨의 시리얼번호를 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수명은 GetVolumeInformation으로 드라이브이름, 파일시스템형태, 기본정보를 알아낼수 있습니다. VC에서 &lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationw?f1url=%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(FILEAPI%252FGetVolumeInformationW)%3Bk(GetVolumeInformationW)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GetVolumeInformationW&lt;/a&gt;까지 치고 [F1]누르면 MS의 함수명세를 볼 수 있다.&lt;/p&gt;
&lt;h1 id=&quot;getvolumeinformationw-function-fileapih&quot;&gt;GetVolumeInformation&lt;/h1&gt;
&lt;pre id=&quot;code_1658905974069&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;BOOL GetVolumeInformationW(
  [in, optional]  LPCWSTR lpRootPathName,
  [out, optional] LPWSTR  lpVolumeNameBuffer,
  [in]            DWORD   nVolumeNameSize,
  [out, optional] LPDWORD lpVolumeSerialNumber,
  [out, optional] LPDWORD lpMaximumComponentLength,
  [out, optional] LPDWORD lpFileSystemFlags,
  [out, optional] LPWSTR  lpFileSystemNameBuffer,
  [in]            DWORD   nFileSystemNameSize
);&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;getvolumeinformationw-function-fileapih&quot; data-ke-size=&quot;size16&quot;&gt;GetVolumeInformation(W/A)중에 이젠 'A'형은 잘 안 쓸테니, 아예 'W'형의 함수 선언입니다. 헤더파일은 'fileapi.h'지만, 그냥 'windows.h'만 include하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사용상에 주의점은..&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 파라미터는 &lt;b&gt;루트의 폴더 명&lt;/b&gt;을 넣어야 한다. 다른 말로 끝에 [\] 나 [/]를 넣어야 잘 동작을 한다. 드라이브 명만 넣을 경우 동작은 하지만, [C:]보다는 [C:\]식으로 넣는 것을 권장한다. 파티션을 볼륨이 아닌 폴더로 마운트한 경우, 해당하는 폴더명을 넣어줄때도 '\'를 넣어야 한다. 빼먹으면 실패하게 됩니다. '\'를 넣으려면 당연히 '\\'로 넣어줘야 된다. '/'로 대체가 가능한 데, window니 window식으로 넣어주는 것이 좀 더 나을 듯하다 NULL을 넣으면, 현재 디레토리의 볼륨의 정보를 받을 수 있다. 하지만, 현재 디렉토리를 체크해야 하니 그리 권장하지는 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 파라미터는 대부분 정보를 받기위한 미리 준비된 공간들이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예제의 샘플&lt;/h3&gt;
&lt;pre id=&quot;code_1658906673291&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;windows.h&amp;gt;
#include &amp;lt;iostream&amp;gt;
//#include &amp;lt;fileapi.h&amp;gt; : enough to include windows.h

int main()
{
    BOOL rcc = FALSE;
    
    wchar_t rootPathName[] = L&quot;C:\\&quot;;
    wchar_t volumeNameBuffer[256]; // not works on subst(virtual drive)
    DWORD   nVolumeNameSize = sizeof( volumeNameBuffer );
    DWORD volumeSerialNumber;
    DWORD maximumComponentLength;
    DWORD fileSystemFlags;
    wchar_t fileSystemNameBuffer[32];
    DWORD   nFileSystemNameSize = sizeof(fileSystemNameBuffer);


    setlocale(LC_ALL, &quot;ko-KR&quot;);

    rcc = GetVolumeInformationW(NULL, 0, nVolumeNameSize, &amp;amp;volumeSerialNumber,
        &amp;amp;maximumComponentLength,
        &amp;amp;fileSystemFlags,
        fileSystemNameBuffer,
        nFileSystemNameSize
    );

    if (rcc) {
        wprintf(L&quot;success : Drive=%s\n&quot;, rootPathName);
        wprintf(L&quot;volumeNameBuffer=%s\n&quot;, volumeNameBuffer );
        printf(&quot;volumeSerialNumber=%08x\n&quot;, volumeSerialNumber );
        printf(&quot;maximumComponentLength=%d\n&quot;, (int)maximumComponentLength);
        printf(&quot;fileSystemNameBuffer=%S\n&quot;, fileSystemNameBuffer);
        printf(&quot;nFileSystemNameSize=%d\n&quot;, (int)nFileSystemNameSize);
        printf(&quot;fileSystemFlags=%08x\n&quot;, (int)fileSystemFlags);

        printf(&quot;\tFILE_CASE_PRESERVED_NAMES=%s\n&quot;,       fileSystemFlags &amp;amp; FILE_CASE_PRESERVED_NAMES       ? &quot;Y&quot; : &quot;N&quot; );
        printf(&quot;\tFILE_CASE_SENSITIVE_SEARCH=%s\n&quot;,      fileSystemFlags &amp;amp; FILE_CASE_SENSITIVE_SEARCH      ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_DAX_VOLUME=%s\n&quot;,                 fileSystemFlags &amp;amp; FILE_DAX_VOLUME                 ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_FILE_COMPRESSION=%s\n&quot;,           fileSystemFlags &amp;amp; FILE_FILE_COMPRESSION           ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_NAMED_STREAMS=%s\n&quot;,              fileSystemFlags &amp;amp; FILE_NAMED_STREAMS              ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_PERSISTENT_ACLS=%s\n&quot;,            fileSystemFlags &amp;amp; FILE_PERSISTENT_ACLS            ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_READ_ONLY_VOLUME=%s\n&quot;,           fileSystemFlags &amp;amp; FILE_READ_ONLY_VOLUME           ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SEQUENTIAL_WRITE_ONCE=%s\n&quot;,      fileSystemFlags &amp;amp; FILE_SEQUENTIAL_WRITE_ONCE      ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_ENCRYPTION=%s\n&quot;,        fileSystemFlags &amp;amp; FILE_SUPPORTS_ENCRYPTION        ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_HARD_LINKS=%s\n&quot;,        fileSystemFlags &amp;amp; FILE_SUPPORTS_HARD_LINKS        ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_OBJECT_IDS=%s\n&quot;,        fileSystemFlags &amp;amp; FILE_SUPPORTS_OBJECT_IDS        ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_REPARSE_POINTS=%s\n&quot;,    fileSystemFlags &amp;amp; FILE_SUPPORTS_REPARSE_POINTS    ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_SPARSE_FILES=%s\n&quot;,      fileSystemFlags &amp;amp; FILE_SUPPORTS_SPARSE_FILES      ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_TRANSACTIONS=%s\n&quot;,      fileSystemFlags &amp;amp; FILE_SUPPORTS_TRANSACTIONS      ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_USN_JOURNAL=%s\n&quot;,       fileSystemFlags &amp;amp; FILE_SUPPORTS_USN_JOURNAL       ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_UNICODE_ON_DISK=%s\n&quot;,            fileSystemFlags &amp;amp; FILE_UNICODE_ON_DISK            ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_VOLUME_IS_COMPRESSED=%s\n&quot;,       fileSystemFlags &amp;amp; FILE_VOLUME_IS_COMPRESSED       ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_VOLUME_QUOTAS=%s\n&quot;,              fileSystemFlags &amp;amp; FILE_VOLUME_QUOTAS              ? &quot;Y&quot; : &quot;N&quot;);
        printf(&quot;\tFILE_SUPPORTS_BLOCK_REFCOUNTING=%s\n&quot;, fileSystemFlags &amp;amp; FILE_SUPPORTS_BLOCK_REFCOUNTING ? &quot;Y&quot; : &quot;N&quot;);

    }
    else {
        printf(&quot;Can't GetVolumeInformationW\n&quot;);
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rootPathName 변수만 변경해가며 사용할 수 있게 만들었다..&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;네트워크드라이브는?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 드라이브의 경우 NTFS로 필자는 잡혔다. 실제로 SPARSED같은 것을 지원하는 지의 의문이다. 이 부분은 테스트 후 내용을 업데이트할 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나오는 정보중에 maximumComponentLength값은... 필자는 못 믿겠다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시리얼번호&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 32bits의 코드일 뿐이고, 명령창의 dir명령에서 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시리얼번호는 포맷할 때마다 변하게 된다. 그리고 32bits라는 한계로인해 &quot;겹치지 않는다&quot;고 확정은 할 수 없고, 겹칠 확률이 아주 적기는 하지만 &lt;a href=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;UUID&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;311&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HDc5B/btrIn37jwtc/vkQU4Uy7qkFYo7MIijDJT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HDc5B/btrIn37jwtc/vkQU4Uy7qkFYo7MIijDJT1/img.png&quot; data-alt=&quot;퀄리티어슈런스의 disk clone 기기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HDc5B/btrIn37jwtc/vkQU4Uy7qkFYo7MIijDJT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHDc5B%2FbtrIn37jwtc%2FvkQU4Uy7qkFYo7MIijDJT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;311&quot; height=&quot;330&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;퀄리티어슈런스의 disk clone 기기&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;ext4같은 파티션도 시리얼 번호를 읽을 수 있는가? 아니오, 마운트된 드라이브만 가능하기에 루트폴더를 지정할 수 없다면 시리얼번호를 읽을 수 없다. EXT4와 같은 것을 마운트해주는 프로그램을 테스트해보지는 않았다.(있긴 있는지..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보통의 NTFS정보&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 NTFS포맷을 사용한 드라이브의 정보는 다음과 같다. 물론 DAX같은 경우는 변경이 가능하기 때문에, 다른 값을 가질 수 있지만, 일반적으로 다음과 같다.&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;357&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQhQjl/btrInIClCQp/Lsbng9V7U5VwtshvhdyDuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQhQjl/btrInIClCQp/Lsbng9V7U5VwtshvhdyDuk/img.png&quot; data-alt=&quot;NTFS의 일반적인 정보&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQhQjl/btrInIClCQp/Lsbng9V7U5VwtshvhdyDuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQhQjl%2FbtrInIClCQp%2FLsbng9V7U5VwtshvhdyDuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;357&quot; height=&quot;455&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;NTFS의 일반적인 정보&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레퍼런스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationw?f1url=%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(FILEAPI%252FGetVolumeInformationW)%3Bk(GetVolumeInformationW)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GetVolumeInformation 함수명세&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658908344060&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GetVolumeInformationW function (fileapi.h) - Win32 apps&quot; data-og-description=&quot;Retrieves information about the file system and volume associated with the specified root directory.&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationw?f1url=%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(FILEAPI%252FGetVolumeInformationW)%3Bk(GetVolumeInformationW)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&quot; data-og-url=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationw&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b2KYPx/hyPc463iTe/RB1b7T4X9wsF3k76uZGGhK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationw?f1url=%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(FILEAPI%252FGetVolumeInformationW)%3Bk(GetVolumeInformationW)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationw?f1url=%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(FILEAPI%252FGetVolumeInformationW)%3Bk(GetVolumeInformationW)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b2KYPx/hyPc463iTe/RB1b7T4X9wsF3k76uZGGhK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&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;GetVolumeInformationW function (fileapi.h) - Win32 apps&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrieves information about the file system and volume associated with the specified root directory.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;UUID정보&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658908397162&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Universally unique identifier - Wikipedia&quot; data-og-description=&quot;From Wikipedia, the free encyclopedia Jump to navigation Jump to search 128-bit label used to identify information in computer systems A universally unique identifier (UUID) is a 128-bit label used for information in computer systems. The term globally uni&quot; data-og-host=&quot;en.wikipedia.org&quot; data-og-source-url=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot; data-og-url=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfhSVH/hyPeTpfWRI/F48sr1kbVEJwp9e1CR4x1K/img.png?width=478&amp;amp;height=708&amp;amp;face=0_0_478_708,https://scrap.kakaocdn.net/dn/YuNvI/hyPc8O7iAs/0TOfgPXFYnNQjQIPVll9vk/img.png?width=478&amp;amp;height=708&amp;amp;face=0_0_478_708,https://scrap.kakaocdn.net/dn/odlqV/hyPdg7t2er/zU0iK7QnvYIJhDKWkkYAY1/img.png?width=200&amp;amp;height=296&amp;amp;face=0_0_200_296&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfhSVH/hyPeTpfWRI/F48sr1kbVEJwp9e1CR4x1K/img.png?width=478&amp;amp;height=708&amp;amp;face=0_0_478_708,https://scrap.kakaocdn.net/dn/YuNvI/hyPc8O7iAs/0TOfgPXFYnNQjQIPVll9vk/img.png?width=478&amp;amp;height=708&amp;amp;face=0_0_478_708,https://scrap.kakaocdn.net/dn/odlqV/hyPdg7t2er/zU0iK7QnvYIJhDKWkkYAY1/img.png?width=200&amp;amp;height=296&amp;amp;face=0_0_200_296');&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;Universally unique identifier - Wikipedia&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;From Wikipedia, the free encyclopedia Jump to navigation Jump to search 128-bit label used to identify information in computer systems A universally unique identifier (UUID) is a 128-bit label used for information in computer systems. The term globally uni&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;en.wikipedia.org&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>MS Windows</category>
      <category>drive serial</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/283</guid>
      <comments>https://jamssoft.tistory.com/283#entry283comment</comments>
      <pubDate>Wed, 27 Jul 2022 16:54:41 +0900</pubDate>
    </item>
    <item>
      <title>개 느린 복사 cp, 좀 빠르게 해보자.</title>
      <link>https://jamssoft.tistory.com/296</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에서 미친 듯이 사용하는 복사명령가 cp다. 너무 자주 쓰니 설명도 필요 없고, 리눅스를 쓰는 사람은 사용법을 달달외우기 까지 할 정도로 자주 쓰는 명령어다. 하지만... 이게 많은 갯수의 파일을 복사할 때는 속터진다. 드라이브의 구조상 SSD나 HDD나 어쩔 수 없는 부분이긴 하지만, 이 걸 피해 조금이라도 빠르게 복사하는 법을 한 외국인 칭구가 잘 정리를 해 놨다(에이~씨~ 복 받을 X, 옜다 복~). 링크는 맨 밑에 걸어 둘테니 영어가 편한 사람은 한번 가서 보기를 바란다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHYjma/btrIddI3cOe/5moJ2dCKIAMylJKBXKwuWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHYjma/btrIddI3cOe/5moJ2dCKIAMylJKBXKwuWK/img.png&quot; data-alt=&quot;없는 것보다야..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHYjma/btrIddI3cOe/5moJ2dCKIAMylJKBXKwuWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHYjma%2FbtrIddI3cOe%2F5moJ2dCKIAMylJKBXKwuWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;443&quot; height=&quot;369&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;369&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;없는 것보다야..&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;빠른 복사 하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다량의 파일을 복사할 때, 파일하나하나마다 접근시간(seek time)이 발생하게 된다. 파일이 저장된 위치로 가는 과정과 파일을 쓰기 위해 이동하는 과정에서 드는 시간이다. SSD가 아무리 빠르다고 해도, SSD마저 이 접근시간이 필요하고 파일이 많으면 많을수록 이 시간이 체감이 된다. 전체 복사할 파일 크기보다 이게 더 시간을 잡아 먹는 경우가 많다. HDD는... 말하기도 싫다. 물론 TAPE보다야..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빠른 복사의 원리는 파일을 읽고 쓰고하지 않고 좀 많이 읽어서 메모리 비스므리한 데에 저장했다가 이게 거의 다 차면 쓰는 것도 좀 많이 쓰는 것이다. 하나하나하는 것과 별차이가 없을 것으로 생각되지만 실제 체감은 훨씬 빠르다. 이 때 파일을 묶는 tar명령을 사용하여 읽기를 지속하고 [파이프]라는 것(메모리 비스므리한)으로 전송시켜 다시 파일을 푸는 것이다. tar는 파일을 묶기만 할 뿐 파일을 압축할지 말지는 선택사항이기에 압축없이 전송이 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1658728177691&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ tar cf - . | (cd /dst; tar xvf -)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 명령을 해석하면 &quot;현재의 폴더를 묶고, /dst 디렉토리 이동 후 다시 묶은 것을 풀라&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;아래와 같이 하면 전송속도를 확인 할 수도 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1658730773031&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tar cf - . | pv | (cd /dst; tar xf -)
2,06GB 0:00:09 [ 194MB/s] [  &amp;lt;=&amp;gt;                     ]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레퍼런스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 링크는 이글의 참조글로 빠른 복사법 이외에 상황에 따라 어떤 방식을 쓰는 것이 좋은 지 잘 써 놨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.zylk.net/en/web-2-0/blog/-/blogs/how-to-copy-files-in-linux-faster-and-safer-than-cp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.zylk.net/en/web-2-0/blog/-/blogs/how-to-copy-files-in-linux-faster-and-safer-than-cp&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>리눅스</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/296</guid>
      <comments>https://jamssoft.tistory.com/296#entry296comment</comments>
      <pubDate>Mon, 25 Jul 2022 15:34:54 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 폴더를 드라이브로 subst</title>
      <link>https://jamssoft.tistory.com/294</link>
      <description>&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://jamssoft.tistory.com/294&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;윈도우 폴더를 드라이브로 subst&lt;/a&gt; [현재글]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jamssoft.tistory.com/295&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;드라이브(볼륨)을 폴더로&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 폴더를 드라이브로 만들어두면 다음과 같은 장점이 있다. 데이터를 따로 저장하기 위해 파티션을 나누는 데, 이렇게 쓰면, 보통 데이터저장용 파티션이 꽉찰 경우 C드라이브의 남는 공간에 추가로 데이터를 저장할 수 밖에 없다. 그러면, 두군데를 뒤져야하고 이 뒤지는 과정에서 시간을 낭비해가 된다. 이렇게 드라이브로 바꾸어 두면, 남은 공간도 공유되기 때문에 디스크가 꽉 찰 때까지 맘편안히 사용할 수가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M8LtH/btrIaPaKOVL/CKamEcUkpIWVte8DGb9Ke1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M8LtH/btrIaPaKOVL/CKamEcUkpIWVte8DGb9Ke1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M8LtH/btrIaPaKOVL/CKamEcUkpIWVte8DGb9Ke1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM8LtH%2FbtrIaPaKOVL%2FCKamEcUkpIWVte8DGb9Ke1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;346&quot; height=&quot;249&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;249&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;폴더를 드라이브로 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령창을 띄워서(WIN+R후 cmd) 다음과 같이 입력하면 폴더를 드라이브로 링크할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1658718121242&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\&amp;gt;subst S: C:\linktodrive&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C:\linktodrive 라는 폴더가 S드라이브로 재생성이 된다. 이렇게 만들어진 드라이브를 &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;172&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RfF98/btrIcHb8BkT/3T4RKWT1voK0tVud45WRCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RfF98/btrIcHb8BkT/3T4RKWT1voK0tVud45WRCK/img.png&quot; data-alt=&quot;생성된 S드라이브&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RfF98/btrIcHb8BkT/3T4RKWT1voK0tVud45WRCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRfF98%2FbtrIcHb8BkT%2F3T4RKWT1voK0tVud45WRCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;172&quot; height=&quot;98&quot; data-origin-width=&quot;172&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성된 S드라이브&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 만든 가상드라이브의 이름을 label명령어로 바꿀 수 있다고 하는 데, 필자가 성공하지 못해서 이 내용은 비워둔다.&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;pre id=&quot;code_1658718337490&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\&amp;gt;subst S: /d&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵션 /d 를 주어 삭제를 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가상드라이브 목록&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 만들어져 있는 가상드라이브를 보려며 다음과 같이 subst명령만 입력하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSptCP/btrIaAYCpw3/qBu78CwuALAg9jMYDhDG3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSptCP/btrIaAYCpw3/qBu78CwuALAg9jMYDhDG3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSptCP/btrIaAYCpw3/qBu78CwuALAg9jMYDhDG3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSptCP%2FbtrIaAYCpw3%2FqBu78CwuALAg9jMYDhDG3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;84&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;이 글을 작성중에 떠오른 것이... 이 명령어 도스시절부터 있던 명령어였다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;부팅시에 자동으로 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 컴퓨터를 끄고 켜면, 아름답게도 이 가상드라이브는 사라지고 없다. 어쩔 수 없이, 다시 명령창을 넣어서 작업을 해줘야 한다. 여간 귀찮은 일이 아닐 수가 없다. 이 때 도스시절의 bat파일을 만들어서 자동으로 실행되게 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모장이나 사용하는 텍스트에디터로 다음과 같이 입력하고 '바탕화면'에 일단 저장을 한다. 이 때 확장자는 bat로 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1658720442869&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@echo off
subst s: c:\linktodrive&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령창(WIN+R)에 &quot;shell:startup&quot;를 입력하고 실행하면 시작프로그램을 바로 띄울 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btlhMv/btrH0QCdh9V/W171fl2kyCvKZ1bP51eWK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btlhMv/btrH0QCdh9V/W171fl2kyCvKZ1bP51eWK0/img.png&quot; data-alt=&quot;시작프로그램 폴더 바로 띄우기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btlhMv/btrH0QCdh9V/W171fl2kyCvKZ1bP51eWK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtlhMv%2FbtrH0QCdh9V%2FW171fl2kyCvKZ1bP51eWK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;393&quot; height=&quot;202&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;202&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;이 시작프로그램에 위에서 만든 bat파일을 넣는다. 이렇게 하면, 로그인 후에나 드라이브가 생성되기는 하지만, 그래도 원하는 목표는 이루었다. 로그인후 바로 가상드라이브가 조금 늦게 만들어지니 아주 쪼금 기다릴 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;네트워크 드라이브의 폴더는?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 네트워크 드라이브로 잡혀있는 것은 위의 방법으로 잘 동작한다. 네트워크 드라이브를 만들지 않고 하는 법이 있을 듯한데 그 방법은 찾지 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;&lt;a href=&quot;https://en.wikipedia.org/wiki/SUBST&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://en.wikipedia.org/wiki/SUBST&lt;/a&gt;&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/294</guid>
      <comments>https://jamssoft.tistory.com/294#entry294comment</comments>
      <pubDate>Mon, 25 Jul 2022 12:59:57 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 드라이브 볼륨을 폴더로 링크 mklink</title>
      <link>https://jamssoft.tistory.com/295</link>
      <description>&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://jamssoft.tistory.com/294&quot;&gt;윈도우 폴더를 드라이브로 subst&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jamssoft.tistory.com/295&quot;&gt;드라이브(볼륨)을 폴더로&lt;/a&gt; [현재글]&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 &quot;바로 가기&quot;를 만드는 법이 있지만, 이 방법은 경로가 하부로 처리되지 않는다.&lt;b&gt; 특히 실행하려는 응용프로그램&lt;/b&gt;에서 이 것을 &lt;b&gt;하부 경로로 인식시키기 위해서&lt;/b&gt;는 볼륨이나 폴더를 빈 폴더에 링크를 걸어 사용해야 한다. 명령어 mklink가 다음과 같은 역할을 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파티션을 폴더로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급한 mklink대신 파티션 자체를 바로 폴더로 링크를 할 수 있다.&amp;nbsp; X: 같은 것으로 미리 드라이브를 만들어 두지 않고 바로 폴더로 링크를 하는 방법이다. 이 방법은 많이들 알고 있을 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biFkTM/btrH5fBwZRw/3V8KhE8AIqAwXg475IC7Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biFkTM/btrH5fBwZRw/3V8KhE8AIqAwXg475IC7Ak/img.png&quot; data-alt=&quot;볼륨을 만들 때&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biFkTM/btrH5fBwZRw/3V8KhE8AIqAwXg475IC7Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiFkTM%2FbtrH5fBwZRw%2F3V8KhE8AIqAwXg475IC7Ak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;951&quot; height=&quot;432&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;볼륨을 만들 때&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CXU4D/btrIaPPowQr/wzLapVmAF6miSDiRJbxhf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CXU4D/btrIaPPowQr/wzLapVmAF6miSDiRJbxhf1/img.png&quot; data-alt=&quot;이미 있는 볼륨&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CXU4D/btrIaPPowQr/wzLapVmAF6miSDiRJbxhf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCXU4D%2FbtrIaPPowQr%2FwzLapVmAF6miSDiRJbxhf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;364&quot; height=&quot;342&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;342&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;[비어 있는 NTFS폴더에 탑재]의 찾아 보기를 사용하여 [찾아보기..]를 눌러 연결하고자 하는 폴더를 선택해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결하고자 하는 폴더는 NTFS에서만 될지도 모른다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이미 존재하는 드라이브나 볼륨을 링크 mklink&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명령어는 심볼링크, 하드링크, 정션링크(이건 왜있는지..)를 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용법은 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1658723699514&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;심볼릭링크(파일) mklink &quot;만들어질 링크&quot; &quot;원본파일&quot;
하드 링크        mklink /h &quot;만들어질 링크&quot; &quot;원본&quot;
심볼릭링크(폴더) mklink /d &quot;만들어질 링크&quot; &quot;원본&quot;
정션 링크(폴도)  mklink /j &quot;만들어질 링크&quot; &quot;원본&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리 어려운 내용은 아니니 자세히 설명은 하지 않겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 필요한 것은 드라이브를 링크하는 것이다. 위의 예중 세번째에 해당하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령창(WIN+R&amp;nbsp; cmd입력)을 띄워 다음과 같이 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때&amp;nbsp; &quot;cmd&quot;만 입력하고 [CTRL+SHIFT+ENTER]를 누르면 관리자 권한으로 실행할 수 있다. [CTRL+SHIFT]가 윈도우에서 &quot;관리자권한&quot;을 의미하는 단축키다.&lt;/p&gt;
&lt;pre id=&quot;code_1658724308802&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mklink /d 만들어질폴더이름 d:\&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 &quot;만들어질폴더이름&quot;부분은 말 그대로 만들어질 것이기에 미리 존재해서는 안된다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;액세스가 거부되었습니다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;window의 보안시스템에 의해 &lt;b&gt;하드링크를 만들경우&lt;/b&gt; [액세스가 거부되었습니다.]를 만나게 되는 데, 일단, 필자는 하드링크를 window에서는 권장하지 않는다. 그래도 하고 싶다면 구글에서 검색해 보기를 바란다. 권한을 변경해 줘야 하는 데, 이 게 추후 어떤 일이 발생할 수 있을지의 고민과 이런 작업을 했다는 것을 까먹을 수 있기에 권장하지는 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레퍼런스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mklink사용법에 자세한 사항은 &lt;a href=&quot;https://skeleton.tistory.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://skeleton.tistory.com/19&lt;/a&gt; 여기에 아름다운 티스토리 블로거인 &quot;뼈다구틀&quot;님께서 잘 정리해 놓았다. 초보자용으로 만드신 듯한데.. 초보자에게는 좀 어려울 수 있는 내용이다. 기회가 되면 쉬운 이해의 포스트를 만들까 고민 중이다.&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/295</guid>
      <comments>https://jamssoft.tistory.com/295#entry295comment</comments>
      <pubDate>Sun, 24 Jul 2022 13:09:57 +0900</pubDate>
    </item>
    <item>
      <title>내 티스토리 블로그의 애드센스 수익을 늘려보자.</title>
      <link>https://jamssoft.tistory.com/293</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일단, 오랜만에 블로그를 주제로 글을 쓴다. 많은 분들이 애드센스 수익에 관한 글을 많이 쓰기에, 이 글 또한 밀리기에, 롱런되는 글은 아니게 될 것 같다. 하지만 우연히 이 글을 방문하게되거나, 나의 구독자님들에게 조금이나마 도움이 되고자 이글을 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 어려운 내용은 아니다. 그냥 간단하지만, 머리속에 넣고 잊지 말아야 하는 내용이라 설명을 좀 많이(?)할 듯하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fgwf1/btrH2nL0DGx/WoKvBSVTR3SjlDfuPomupk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fgwf1/btrH2nL0DGx/WoKvBSVTR3SjlDfuPomupk/img.png&quot; data-alt=&quot;꽁돈처럼 느껴지는 애드센스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fgwf1/btrH2nL0DGx/WoKvBSVTR3SjlDfuPomupk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFgwf1%2FbtrH2nL0DGx%2FWoKvBSVTR3SjlDfuPomupk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;522&quot; height=&quot;213&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;꽁돈처럼 느껴지는 애드센스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;수익이 발생하는 것들&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수익은 다음과 같은 상황에서 발생한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;페이지가 사용자에게 보여질 때&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 당연한 이야기지만, 이 페이지들이 사용자들에게 많이 노출되도록 해야한다. 기본적으로 글을 많이 써야하고 글을 길게 쓰고 그의 품질도 좋아야 한다. &lt;a href=&quot;https://developers.google.com/search/docs/beginner/seo-starter-guide?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SEO&lt;/a&gt;를 위한 작업도 버릴 수는 없는 부분이지만, &lt;a href=&quot;https://developers.google.com/search/docs/beginner/seo-starter-guide?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SEO&lt;/a&gt;에 잘 맞게 작성하는 것도 글의 품질을 좋게 유지하는 것이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사용자가 광고를 클릭할 때&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실상, 수익은 이 광고의 클릭에서 발생한다. 페이지가 보여지는 것은 &quot;땅파는 게 돈을 더 벌 것같다.&quot;라는 말과 같다. 진짜 해수욕장에서 땅 파는게 더 빠르다. 클릭이 되지 않으면, 아무리 많은 사용자가 와도, 1000명이 와도 0.1$가 되지도 않는 경우가 허다하다. 그렇다 보니, 클릭을 유도하거나 지인들에게 눌러달라고 하든지, 심지어는 자기가 눌러버리기도 한다. 이렇게 하면 &lt;b&gt;&quot;망한다&quot;. &lt;/b&gt;구글의 애드센스는 이런 것들을 무효화처리하고 실수가 아닌 고의로 판단되면 광고송출이 막혀 다시 열릴 때까지는 많은 노력이 필요하게 된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;살짝 여담이지만, &quot;앱테크&quot;를 하는 것은 블로그하는 것에 비하면 정말 시간낭비다. 하루죙일 해도 한달에 천원?이나 들어올까 말까하고, 블로그든 유튜브든 앱테크든 다른사람의 광고를 도와주는 결과밖에 되지 않는다. 하지만, 그 중에는 성공(?)이라는 것을 하는 사람이 있으니, 우리는 이 것들을 시도하지만 그 중 앱테크는...... 시간이 너무 낭비된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 수익이 많이 발생하는 것은 &quot;사용자의 클릭 실수&quot;다. 이게 이 글을 작성하는 이유기도 하다. 일부러 광고를 클릭하는 사람은 거의 없다. 있기는 하지만, 정말 가뭄에 콩 나듯하고, 한국이라는 사정상 광고클릭은 해주지 않는다(*1).&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구글과 광고주들도 클릭하는 것이 이익이다.&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjZaaT/btrH2gGlpN7/8ecgyt3iEpbFwIyevYcaWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjZaaT/btrH2gGlpN7/8ecgyt3iEpbFwIyevYcaWK/img.png&quot; data-alt=&quot;정작돈을 버는 것은 구글, 게이머는 대부분 잃고 하우스가 돈을 번다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjZaaT/btrH2gGlpN7/8ecgyt3iEpbFwIyevYcaWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjZaaT%2FbtrH2gGlpN7%2F8ecgyt3iEpbFwIyevYcaWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;746&quot; height=&quot;303&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;303&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;구글또한 광고를 받아 사용자의 클릭을 유도한다. 클릭이 이루어져야 광고주에게 &quot;클릭되서 당신의 사이트로 이동 되었잖아요~&quot;라는 광고주들에게 말할 수 있으며, 광고주도 클릭을 통해 들어와서 상품이 팔려야 이익이므로 클릭을 싫어하는 것은 아니다. 단지, 구매의도나 전혀관심도 없는 것을 일부러 클릭하는 의미없는 클릭을 막는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대기업의 제품과 같이 클릭없이 보여지는 것만으로도 광고의 효과는 있다. 이런 것은 말 그대로 이후에 발생할 매출을 위한 것이기도 하다. 하지만 소규모의 광고주에게는 클릭은 정말 중요한 것이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;클릭이 되지 않으면 클릭할 확률을 높여보자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급했 듯, 실수 클릭을 유도해야 한다. 이 때 주의점이 있다. 찬찬히 설명을 할테니, 잘 읽기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절대 하지 말아야 할 것은 &quot;클릭해주세요&quot; 같은 클릭유도다. 또 하지말아야 할 것은 뭔가 배치가 잘 못되서 &quot;광고&quot;위치가 다른 링크와 너무 가까워 실수로 클릭되게 하는 것이다. &lt;/b&gt;이미 구글은 배치 상황을 판단하여 애드센스에서 광고와 너무 가까운 경우 빨리 수정하라는 경고를 보여준다. 표를 작성할 때 이미지를 넣을 때는 이런 일이 발생하지 않도록 해야 한다. 구글이 뺀찌놓으면 고난의 길을 겪게된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;느린 광고 송출로 인한 클릭&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 페이지에 들어올 때, 사용자는 우리가 신나게 쓴 글을 보게 된다. 애드핏이나 구글광고는 이보다 늦게 보이게 된다. 이 보이는 과정에서 페이지가 살짝 밀리게 되는 데, 이 때 사용자는 스크롤을 위해 터치하는 순간, 이 광고를 클릭하고 만다. 특히 스마트폰과 같은 모바일환경에서 자주 일어나는 데, 사용자가 이동된 페이지를 다시 끄고, 돌아오는 데에는 UX의 불편함으로 시간이 걸린다. 따라 이 것이 합법 클릭으로 인정이 되는 경우가 많다. 이 사용자는 의미없는 클릭이지만, 구글의 판단은 합법이다. 필자가 애드센스사이트에 들어가 보면 가장많이 클릭이 발생한 광고가 이 맨위에 달아 두었던 광고다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;전면광고로 생기는 클릭&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이 글은 정확하지 않지만 일 방문자가 200명이 넘을 때나 가능할 지도 모른다. 필자가 헤깔리고 있어서.. 일방문자가 500넘기전에는 수익 기대는 안하는 것이 좋다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지를 나가거나, 페이지에서 다른 페이지로 이동하기위해, 다운로드를 위해 링크를 클릭하면, 무조건은 아니지만 전면광고가 뜬다. 물론 미리 애드센스에서 설정은 해둬야 한다. 이 전면광고에서 [닫기]나 [X]를 찾아 클릭해야하는 데, 사용자의 손꾸락은 필자를 포함해서 화면이 작은 스마트폰 환경에서 정확히 누르는 것은 그리 쉽지 않다. 또한, 버튼이 두개가 나오는 데, 이 게 어떤 것을 눌러야 닫히는 버튼인지 헤깔리게 만들어 놓은 경우가 있다. 그래서 광고를 실수로 클릭하고 만다. 이 것은 솔직히 구글의 의도로 본다. 구글도 아니라고 말은 못 할 것이다. 위 내용에서 그 들(광고주,구글)도 클릭이 필요하다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;우리가 해야 할 일&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9rkbg/btrH1BRv7r2/EOCB4BpiwHoFoFtTTAFCTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9rkbg/btrH1BRv7r2/EOCB4BpiwHoFoFtTTAFCTK/img.png&quot; data-alt=&quot;링크는 수익&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9rkbg/btrH1BRv7r2/EOCB4BpiwHoFoFtTTAFCTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9rkbg%2FbtrH1BRv7r2%2FEOCB4BpiwHoFoFtTTAFCTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;671&quot; height=&quot;555&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;링크는 수익&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크를 많이 달아야 한다. 링크가 많다는 것은 링크클릭을 유도하고 이 때 뜨는 광고로 인해 한번이라도 더 광고가 보여지게 된다. 또한 우리가 원하는(?) 실수의 클릭이 발생할 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;양질의 글을 유지하며 클릭을 만들자.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크를 걸기 가장 좋은 곳은 관련 글을 링크하는 것이다. 이 것은 정말 중요하고 사용자들에게도 아주 좋은 정보를 제공하게 된다. 글을 쓴다는 것은 다른 글을 참고/참조할수록 좋은 글이 된다. 사용자가 페이지에 들어왔을 때, 이 페이지는 사용자가 원하는 내용일 수도 있지만, 아닐 수도 있다. 하지만 관련성이 없는 것은 아니기에 들어오는 것이다. 따라서 관련된 내용을 링크해두면 이 사용자는 바로 &quot;찾았다~&quot;라는 생각과 함께 링크를 누르게 된다. 따라서 단순히 링크만 걸지말고, 어떤 내용이 포함된 것인지 간단한 설명을 다는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크를 걸기 좋은 또 다른 곳은 문장의 중간중간에 좀 의미있는, 이 글과 관련이 있는 단어를 링크하는 것이다. 사용자는 단어의 정확한 뜻을 모를 수도 있고, 현재 보고 있는 글과 관련이 있는 것이기에 클릭을 통해 이동하려 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자가 다른 상대적으로 수익이 좋은 블로거님들의 글을 보면, 링크가 상당히 많다. 양질의 글이지만 잘 못들어온 사용자를 올바른 길로 유도하는 링크가 바로 우리의 페이지에 걸리게 되고 이 것은 수익을 안겨 주게 될 것이다. 할일이 하나 늘어났지만, 노력에 비해 수익이 큰 것으로 필자를 생각하기에, 한번 시도해 보길 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;티스토리 글쓰는 법&quot; href=&quot;https://jamssoft.tistory.com/99&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;애드센스 통과를 위해 블로그에 글을 쓴다면 이 곳으로&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658559249255&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;티스토리 블로그에 글을 쓰는 법&quot; data-og-description=&quot;서론 필자가 다른 블로거의 글들을 보면, 내용은 좋은 데, 검색엔진에 걸리기 힘들게 글을 작성하는 경우를 다수 보았다. 이 문제는 HTML의 이해가 조금 필요한 부분인데, 대부분 이 글을 읽는 독&quot; data-og-host=&quot;jamssoft.tistory.com&quot; data-og-source-url=&quot;https://jamssoft.tistory.com/99&quot; data-og-url=&quot;https://jamssoft.tistory.com/99&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cNqEWC/hyPazlMe4s/AExfKX9I3h422cLyMOPxh1/img.png?width=640&amp;amp;height=360&amp;amp;face=0_0_640_360,https://scrap.kakaocdn.net/dn/cguzdX/hyPatlz7o9/GaKNoAfJ3VB1zuxgHCkrWK/img.png?width=640&amp;amp;height=360&amp;amp;face=0_0_640_360,https://scrap.kakaocdn.net/dn/bProV8/hyPbRLUt6P/1W6wSomLCb34sewSJxK6D1/img.png?width=752&amp;amp;height=468&amp;amp;face=0_0_752_468&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/99&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jamssoft.tistory.com/99&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cNqEWC/hyPazlMe4s/AExfKX9I3h422cLyMOPxh1/img.png?width=640&amp;amp;height=360&amp;amp;face=0_0_640_360,https://scrap.kakaocdn.net/dn/cguzdX/hyPatlz7o9/GaKNoAfJ3VB1zuxgHCkrWK/img.png?width=640&amp;amp;height=360&amp;amp;face=0_0_640_360,https://scrap.kakaocdn.net/dn/bProV8/hyPbRLUt6P/1W6wSomLCb34sewSJxK6D1/img.png?width=752&amp;amp;height=468&amp;amp;face=0_0_752_468');&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;티스토리 블로그에 글을 쓰는 법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;서론 필자가 다른 블로거의 글들을 보면, 내용은 좋은 데, 검색엔진에 걸리기 힘들게 글을 작성하는 경우를 다수 보았다. 이 문제는 HTML의 이해가 조금 필요한 부분인데, 대부분 이 글을 읽는 독&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jamssoft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;*1)어느 나라인지 모르는 외국에서는 글을 읽고 일부러 클릭을 해준다. 내가 이 글로 인해 이익을 봤으니 그에 대한 보상의 의미로 클릭을 해준다. 이미 글쓴이에게 수익이 간다는 것을 알고 있다는 뜻이다. 하지만 우리나라는 광고를 좋게 보지 않기 때문에.. 이런 차이가 발생한다.&lt;/p&gt;</description>
      <category>blogging</category>
      <category>AdSense</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/293</guid>
      <comments>https://jamssoft.tistory.com/293#entry293comment</comments>
      <pubDate>Sat, 23 Jul 2022 16:06:49 +0900</pubDate>
    </item>
    <item>
      <title>알리발 손에 들어오는 미니 키보드 리뷰?</title>
      <link>https://jamssoft.tistory.com/287</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;알리에서 5.18$(+무료배송)에 키보드를 하나 샀다.(현재 가격이 좀 올라서 7$가 조금 되지 않는다.)&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;외형&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_20220722_211431.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rmdJQ/btrHZBdHXBr/YiGaCwEivqbNa8bh2Vpkp0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rmdJQ/btrHZBdHXBr/YiGaCwEivqbNa8bh2Vpkp0/img.jpg&quot; data-alt=&quot;이렇게 보면 커 보인다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rmdJQ/btrHZBdHXBr/YiGaCwEivqbNa8bh2Vpkp0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrmdJQ%2FbtrHZBdHXBr%2FYiGaCwEivqbNa8bh2Vpkp0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;2268&quot; data-filename=&quot;IMG_20220722_211431.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이렇게 보면 커 보인다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_20220722_211447.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJ9EUR/btrH1zrW1K7/jSXkdB5yTIlXh286PskCFK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJ9EUR/btrH1zrW1K7/jSXkdB5yTIlXh286PskCFK/img.jpg&quot; data-alt=&quot;필자가 손이 좀 큰 편&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJ9EUR/btrH1zrW1K7/jSXkdB5yTIlXh286PskCFK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJ9EUR%2FbtrH1zrW1K7%2FjSXkdB5yTIlXh286PskCFK%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;557&quot; height=&quot;313&quot; data-filename=&quot;IMG_20220722_211447.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;필자가 손이 좀 큰 편&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xifqM/btrHZfCgCas/76XDZo4M8tltkrevTPKwYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xifqM/btrHZfCgCas/76XDZo4M8tltkrevTPKwYK/img.png&quot; data-alt=&quot;30cm자 반 정도의 크기다. 상당히 작다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xifqM/btrHZfCgCas/76XDZo4M8tltkrevTPKwYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxifqM%2FbtrHZfCgCas%2F76XDZo4M8tltkrevTPKwYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;340&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;30cm자 반 정도의 크기다. 상당히 작다.&lt;/figcaption&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;라는 생각이 바로 든다. 이음새 부분을 보면 손을 밸 것같은 느낌이 들 정도다. 하지만, 사용된 플라스틱이 꾸진 것을 뿐, 날카로운 부분은 전혀 없었다. 물론 뽑기운이 좀 있을 지도 모른다는 생각이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이게 무선이다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무선키보드가 비싼 것은 아니지만, 이 게 선없이 2.4G의 주파수를 이용하는 블루투스를 제외한 일반적인 다른 무선키보드와 같은 방식을 사용한다. 거리가 멀면 혹은 2.4G의 주파수를 사용하는 기기가 많으면 잘 동작을 안할 거라는 생각이 있었지만, 초기 연결도 빨랐고, 생각보다 먼거리에서도 아무런 문제가 없을 정도로 잘 동작했다. 오히려 꾸진 무선키보드보다 연결이 좋다는 생각도 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;터치패드도 있다.&lt;/h3&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;629&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgfIvz/btrH1cjxzDF/fpGwWbKEIhj1UuYN8tU96K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgfIvz/btrH1cjxzDF/fpGwWbKEIhj1UuYN8tU96K/img.png&quot; data-alt=&quot;마우스가 없을 때, 불편해도 쓸 수는 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgfIvz/btrH1cjxzDF/fpGwWbKEIhj1UuYN8tU96K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgfIvz%2FbtrH1cjxzDF%2FfpGwWbKEIhj1UuYN8tU96K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;629&quot; height=&quot;423&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;423&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;난 알리의 사진만 대충보고 싸길래 주문을 했는 데, 위에 네모칸이 있어서, &quot;저건 뭔가?&quot;하는 생각만 했을 뿐, 마우스를 대체하는 터치패드인 줄 받고서야 알았다. 물론 확실히 확인하지 못한 필자의 잘 못(?)이지만, 어쨌든, 마우스를 따로 달지 않아도 된다는 것에 살짝 미소가 지어졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 터치감은 90년대 초에 나온 터치패드 느낌이다. 쉽게 말하면 터치패드 초창기의 신기하지만 우둘두둘 촉감이 느껴진다. 최신의 터치패드를 사용하는 이에게 설명을 하면, 현재 나오는 것들이 차돌에 손가락을 대고 움직이는 느낌이라면, 이 것은 오돌도돌한 돌의 표면과 같은 느낌이다. 뭐 그래도 별차이는 없지만, 역 체감이 발생하기에 심하게 느껴진다. 하지만, 정말 생각대로 잘 움직인다. 단지 터치패드의 크기가 작아 여러번 &quot;휙~휙~휙~&quot; 해줘야 하는 경우도 있지만, 기대보다 훨씬 잘 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 기본적인 제스쳐도 2개 포함되어있다.한번 터치(클릭)는 안되는 게 없으니 빼고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 두손가락을 위/아래로 움직이면 스크롤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 세손가락 터치는 우클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가가 가능할 지는 모르겠다. 뭐 일부러 추가해서 쓸 생각도 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클릭을 굳이 터치를 이용할 필요는 없다. 좌측에 마우스 클릭 키가 있어서 오른손가락으로 터치하고 왼손 엄지로 클릭을 할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjHMyd/btrH0RNszmF/WkV3K6NKcUdM2riKkAvnz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjHMyd/btrH0RNszmF/WkV3K6NKcUdM2riKkAvnz1/img.png&quot; data-alt=&quot;클릭버튼이 따로 있다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjHMyd/btrH0RNszmF/WkV3K6NKcUdM2riKkAvnz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjHMyd%2FbtrH0RNszmF%2FWkV3K6NKcUdM2riKkAvnz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;589&quot; height=&quot;413&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;413&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클릭버튼이 따로 있다&lt;/figcaption&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;[Fn]&lt;/b&gt;키를 누르는 것이 가장 좋다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;키&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키를 누를 때, 동작은 &quot;딸깍~&quot;하는 방식이다. 키는 고무비슷한 재질로 느껴진다. 옛날에 주로 쓰던 리모콘 생각하면 된다. &quot;딸깍~&quot;거리는 것으로 내가 키를 정확히 눌렀다는 것을 확실히 인지 할 수 있다. 키를 누를 때 답답할 줄 알았는 데 전혀 그렇지 않았다. 또 하나의 놀란 부분이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;없는 키?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 있어야 할 키가 없을 까봐 상당히 조마조마했다. {pause/break}키와 {scrollLock}키와 {Insert}키는 없는 것 같다. {scrollLock}이야 도스 시절에 많이 사용했지만, GUI로 대체된 현재의 시점에는 필요 없는 키라고 볼 수 있다. {pause/break}키를 쓰는 사람은 거의 없을 것 같다. 필자는 {pause/break}키를 상당히 많이 써서 좀 불편했다. {Insert}키가 없는 것은 Linux에서 이 키보드를 사용하는 입장에선 좀 치명적으로 불편했다. 가끔 쓸려고 산 거라 뭐...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 키패드로 전환기능이 없다. 그래서 숫자를 누를 때, 특히 계산기로 쓸 때는 불편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(없는 키는 필자가 사용법을 모를 수도 있다.)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 보내 {한자}키도 없다.. 다른 걸로 뭐였는지 기억이...&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span&gt;리눅스에서 Shift+2=@를 누르면, [ &quot; ]가 찍혀 버리는 상황이 발생할 수 있다. 이 거 기억 사람은 거의 할배수준인 데, 필자가 할배 수준이라.. 이 건 요즘 PC라고 불리는 컴터가 나오기 전에 Apple시절(여기서 애플은 8Bit 컴터다)에 @키가 [ &quot; ]였다. 아직도 영국에서는 쓸지도 모른다는 생각이 들기도 한다. 이 때, 키보드를 일부러 US로 바꿔주면, @로 잘 찍힌다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;불도 켜진다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주문시 옵션에 &quot;어떤 언어를 쓸 것인가?&quot;를 선택하는 데, 언어는 영어를 선택했지만, 필자가 고른 것은 &quot;불이 켜지지 않는 것을 골랐다&quot;고 생각했다. 하지만 전부 기본적으로 LED가 있어서 불이 켜지며 심지어 색깔도 바뀐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불이 켜지면 좋은 점이, 밤에 불 꺼놓고 영화보다가 키를 누르려고하면 어디에 원하는 키가 있는 지 어두워서 찾을 수가 없다. 불이 켜지기 때문에 무난하게 키를 누를 수 있게 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;켜진 상태에서 터치패드를 스와이프하면 색깔이 슬~슬~ 변한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_20220722_211616_1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lp9AE/btrH0djbtWq/jUrSZlcBUTwpGQmKsohGg0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lp9AE/btrH0djbtWq/jUrSZlcBUTwpGQmKsohGg0/img.jpg&quot; data-alt=&quot;빨강 파랑 녹색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lp9AE/btrH0djbtWq/jUrSZlcBUTwpGQmKsohGg0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flp9AE%2FbtrH0djbtWq%2FjUrSZlcBUTwpGQmKsohGg0%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;593&quot; height=&quot;334&quot; data-filename=&quot;IMG_20220722_211616_1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;빨강 파랑 녹색&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주문옵션에서..&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AAA밧데리를 사용하는 버전이 있고 내장의 충전밧데리를 사용하는 방식이 있다. 필자는 AAA를 사용하는 것이 아주 조금 싸길래 선택을 했지만, 쓰면서 느끼는 것이, 이 것 한번만 충전되면, 상당히 긴시간동안 쓰는 건데 괜히 외부 밧데리형을 산것같다는 생각이 든다. 심지어 충전방식의 밧데리는 중국벌판에서 엄청나게 많이 사용되는 모델이라 망가지면 알리에서 싸게 구입할 수도 있다.(밧데리모델명 : BL-5C)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_20220722_211541.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwZ1yn/btrH2hYVBDJ/cEfTddjbkr1xrC37rwnF3k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwZ1yn/btrH2hYVBDJ/cEfTddjbkr1xrC37rwnF3k/img.jpg&quot; data-alt=&quot;리시버가 들어 있고, AAA버전의 경우 밧데리 별도&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwZ1yn/btrH2hYVBDJ/cEfTddjbkr1xrC37rwnF3k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwZ1yn%2FbtrH2hYVBDJ%2FcEfTddjbkr1xrC37rwnF3k%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;512&quot; height=&quot;288&quot; data-filename=&quot;IMG_20220722_211541.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;리시버가 들어 있고, AAA버전의 경우 밧데리 별도&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_20220722_211518_1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJdewB/btrH0vKEurv/pWXAovS8Xijrw1vJ6eYfpK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJdewB/btrH0vKEurv/pWXAovS8Xijrw1vJ6eYfpK/img.jpg&quot; data-alt=&quot;왼쪽이 전원 오른쪽은 USB인데..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJdewB/btrH0vKEurv/pWXAovS8Xijrw1vJ6eYfpK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJdewB%2FbtrH0vKEurv%2FpWXAovS8Xijrw1vJ6eYfpK%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;553&quot; height=&quot;311&quot; data-filename=&quot;IMG_20220722_211518_1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왼쪽이 전원 오른쪽은 USB인데..&lt;/figcaption&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;오른쪽은 내장 밧데리버전에서 충전하는 단자다, AAA방식은 의미가 없는 것으로 알고 있다. &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;USB로 컴터와 연결해도 유선으로 연결되는 것은 아닌 것으로 알고 있다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기대가 적었기에 놀라움이 컸던, 오히려 잘 샀다라는 생각이 드는 신기한 물건이다. 하지만, 타이핑과 같은 상황에는 절대 권장할 수 없다. 오히려 레트로 게임을 할 때는 방향키가 있어서 이런 레트로 게임은 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음.. 심지어 모델명도 없다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSH8m4/btrH0RNtnE4/f01UioEPFA4NAZVpiSPDMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSH8m4/btrH0RNtnE4/f01UioEPFA4NAZVpiSPDMK/img.png&quot; data-alt=&quot;Fn키 설명서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSH8m4/btrH0RNtnE4/f01UioEPFA4NAZVpiSPDMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSH8m4%2FbtrH0RNtnE4%2Ff01UioEPFA4NAZVpiSPDMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;531&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fn키 설명서&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>Goods</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/287</guid>
      <comments>https://jamssoft.tistory.com/287#entry287comment</comments>
      <pubDate>Fri, 22 Jul 2022 21:47:41 +0900</pubDate>
    </item>
    <item>
      <title>LDPlayer 빠른 안드로이드 에뮬레이터 9버전 출시</title>
      <link>https://jamssoft.tistory.com/288</link>
      <description>&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;&lt;a href=&quot;https://kr.ldplayer.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kr.ldplayer.net/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658399116698&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;LD플레이어 - 모바일 게임을 PC로 - PC로 즐기는 모바일 세상&quot; data-og-description=&quot;LD플레이어는 컴퓨터에서 모바일 게임을 쉽게 즐길 수 있게 해 주는 무료 안드로이드 앱플레이어입니다.&quot; data-og-host=&quot;kr.ldplayer.net&quot; data-og-source-url=&quot;https://kr.ldplayer.net/&quot; data-og-url=&quot;https://kr.ldplayer.net&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/behfTR/hyPaA4RTLF/ceIvnCtniT3V2qfLtukvak/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337,https://scrap.kakaocdn.net/dn/CFEgP/hyPaC9vod9/MCcSk6jCJ8JWW0pOyRlPhK/img.jpg?width=658&amp;amp;height=375&amp;amp;face=0_0_658_375,https://scrap.kakaocdn.net/dn/VL1Vy/hyPay61Xsa/NPdeDqxOxk0HN3rR3K5xzK/img.jpg?width=658&amp;amp;height=375&amp;amp;face=0_0_658_375&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kr.ldplayer.net/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/behfTR/hyPaA4RTLF/ceIvnCtniT3V2qfLtukvak/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337,https://scrap.kakaocdn.net/dn/CFEgP/hyPaC9vod9/MCcSk6jCJ8JWW0pOyRlPhK/img.jpg?width=658&amp;amp;height=375&amp;amp;face=0_0_658_375,https://scrap.kakaocdn.net/dn/VL1Vy/hyPay61Xsa/NPdeDqxOxk0HN3rR3K5xzK/img.jpg?width=658&amp;amp;height=375&amp;amp;face=0_0_658_375');&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;LD플레이어 - 모바일 게임을 PC로 - PC로 즐기는 모바일 세상&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LD플레이어는 컴퓨터에서 모바일 게임을 쉽게 즐길 수 있게 해 주는 무료 안드로이드 앱플레이어입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kr.ldplayer.net&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PWM0J/btrHVfN0i24/fDAaCy0jwlvUYtRfjK8spk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PWM0J/btrHVfN0i24/fDAaCy0jwlvUYtRfjK8spk/img.png&quot; data-alt=&quot;안드로이드9 기반 LDPlayer 출시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PWM0J/btrHVfN0i24/fDAaCy0jwlvUYtRfjK8spk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPWM0J%2FbtrHVfN0i24%2FfDAaCy0jwlvUYtRfjK8spk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;523&quot; height=&quot;420&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;안드로이드9 기반 LDPlayer 출시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;안드로이드9 기반의 에뮬레이터 출시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근의 앱들은 특히 게임, NFT, 메타버스와 같이 그래픽에 치중하는 앱들을 에뮬레이터에서 돌릴 수가 없었다. 이유는 이런 종류의 빠른 에뮬레이터들의 안드로이드 버전이 너무 낮아서였다.&amp;nbsp; NoxPlayer, 블루스택 등 이런류의 에뮬레이터의 버전은 너무 낮았으며, 안드로이드 스튜디오에서 제공하는 에뮬레이터는 최신 버전 심지어는 pre-release도 지원하지만, 자꾸 따운되고 너무 느려서 쓸 수가 없을 정도다. 빠른 데탑을 쓴다고 해도 &quot;속터지는 것&quot;은 어쩔 수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌아가지 않는 게임들을 이런 종류의 에뮬레이터에서 자체적으로 지원해주지만, 이렇게 지원되지 않는 것은어찌 돌려볼 방법은 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 빠른 에뮬레이터를 구하기위해 많은 수의 에뮬레이터를 테스트해 봤지만, 획기적으로 빠른 것은 LDPlayer와 녹스플레이어였다. 녹스보다 LD가 더 안정적이고 더 빠르다는 결론으로 필자는 LDPlayer를 사용하고 있다. NoxPlayer가 LDPlayer의 사촌쯤(LD가 형이고 Nox가 동생인 걸로) 되는 녀석이라 비슷한 속도를 내주지만 안정성에서는 LDPlayer가 좋았으며, 속도도 살짝 LDPlayer가 빠르다고 판단했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 새로 안드로이드 9 기반으로 새로운 LDPlayer가 발표되었다. 아직 버그가 있지만, 거의 사용상에서 무시 할정도의 버그로 첫출시인 베타도 놀라운 안정성을 보여주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글은 이미 안드로이드 7버전 이하는 [휴지통]에 넣어둔 상태이며, 머지않아 이 [휴지통]을 비울 것이다. 늘 그랬다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;여담이지만 7버전 출시할 때 좋다고 난리를 피웠는 데, 정작 쓰레기로 판명된다. 이 건 개발자들은 잘 알 것이다.&lt;br /&gt;그래서 휴지통에도 빨리 들어 갔다. 제발 좋다고 뻥 좀 치지 말았으면 좋겠다. 기대가 큰 만큼 실망도 커지니..&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 안드로이드 8이상의 에뮬레이터가 출시되었다. 8버전부터는 상당한 변화가 있고, 그의 안정버전이 사실상 9버전이다. LDPlayer가 이 9버전으로 새로운 출시를 한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;LDPlayer 각버전 별 안드로이드 버전&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;LDPlayer9(64Bit only)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Android 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;LDPlayer4(32Bits 64Bits)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Android 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;LDPlayer3(32Bits only)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Android 5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행이 9버전이 64비트로 출시되서 더 좋은 호환성을 가진다. 구글이 32Bits를 휴지통에 슬슬 버리고 있는 것은 개발자들은 다 알 수 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개발자가 쓰기의 장점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 개발자모드를 [설정]에서 그냥 설정할 수 있다. 안드로이드 머신 내부가 아니고 LDPlayer 설정에서 바로 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 루팅 또한 LDPlayer의 설정에서 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. armv7a 와 arm64도 테스트가 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Intel칩은 arm명령 수행이 가능하다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ARM이라는 회사는 CPU를 설계만하는 회사다. 제작은 보통 다른 곳에서 한다. ARM에서 설계도를 받아 라이센스만 지불하고 자신에 맞게 좀 변경 후 삼성전자나 TSMC같은 실제 CPU를 만들어 주는 회사에 만들어달라고 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Intel에서는 이미 한...10년전 CPU에 ARM 명령을 수행하도록 라이센스를 지불하고 있어 이미 그 당시부터 이 기능이 들어가 있다. 이미 기능을 갖추고 있어서 에뮬레이터들도 이 기능을 활용하여 속도를 최대한 떨어뜨리지 않고 동작시킬 수 있는 것이다. 실제 요즘에는 &quot;버림받은 Intel칩에 깔리는 안드로이드&quot;의 경우 arm용만있는 앱을 받아도 동작을 했다.(물론 심심하면 죽어버리는 경우도 많았지만...) AMD도 되는 것으로 알고는 있다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;최고의 에뮬레이팅 속도를 내기위해 VT-X 같은 가상화기능을 켜야 한다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;가상화기술(Virtualization Technology)을 활성화 해줘야 하는 데, 이 것은 두군데에 모두 해줘야 한다.&lt;br /&gt;&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;b&gt;하나는 바이오스&lt;/b&gt;에 있고 &lt;b&gt;또 하나는 window에서&lt;/b&gt;의&amp;nbsp; 설정에 있다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/4.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kr.ldplayer.net/blog/4.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658402657302&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;VT 활성화 방법-VT (또는 SVM)-LDPlayer&quot; data-og-description=&quot;LDPlayer로 게임을 플레이 할 경우 VT 활성화를 하지 않으면 버벅임 증상이 발생할 수 있어 꼭 활성화 해야 합니다.&quot; data-og-host=&quot;kr.ldplayer.net&quot; data-og-source-url=&quot;https://kr.ldplayer.net/blog/4.html&quot; data-og-url=&quot;https://kr.ldplayer.net/blog/how-to-enable-vt.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yWQYo/hyPaoXJ47O/19JkKtxbeCeKekQGOtsIhK/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/4.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kr.ldplayer.net/blog/4.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yWQYo/hyPaoXJ47O/19JkKtxbeCeKekQGOtsIhK/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337');&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;VT 활성화 방법-VT (또는 SVM)-LDPlayer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LDPlayer로 게임을 플레이 할 경우 VT 활성화를 하지 않으면 버벅임 증상이 발생할 수 있어 꼭 활성화 해야 합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kr.ldplayer.net&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;h3 data-ke-size=&quot;size23&quot;&gt;또 하나의 가상화 활성유무&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 가상화기능은 윈도우에서 쓰고 있을 수 있다. 윈도우내에 vmware같은 프로그램을 사용하지 않고도 LINUX를 사용할 수 있다. 이 가상화기능으로 인해 이 것이 가능한 데, 이 기능을 윈도우가 가지고 있다면 이 것을 꺼줘야 한다. 이것 또한 이 LDPlayer만든 친구들이 잘 설명해 놨다.. 아우~ 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/158.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kr.ldplayer.net/blog/158.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658402774921&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;VT 활성화 상태가 반영되지 않다? 해결 방법을 알아보자-VT (또는 SVM)-LDPlayer&quot; data-og-description=&quot;VT활성화를 시켰음에도 불구하고 LDPlayer에서 계속 VT 활성화하라고 팝업창이 뜨는 현상에 대한 해결 방법&quot; data-og-host=&quot;kr.ldplayer.net&quot; data-og-source-url=&quot;https://kr.ldplayer.net/blog/158.html&quot; data-og-url=&quot;https://kr.ldplayer.net/blog/158.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lrsi2/hyPaqVwP15/2kU38OKRvavVRWrDEuJDH0/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/158.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kr.ldplayer.net/blog/158.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lrsi2/hyPaqVwP15/2kU38OKRvavVRWrDEuJDH0/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337');&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;VT 활성화 상태가 반영되지 않다? 해결 방법을 알아보자-VT (또는 SVM)-LDPlayer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;VT활성화를 시켰음에도 불구하고 LDPlayer에서 계속 VT 활성화하라고 팝업창이 뜨는 현상에 대한 해결 방법&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kr.ldplayer.net&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;h3 data-ke-size=&quot;size23&quot;&gt;난제 : 부팅이 안돼요?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 에뮬레이터들은 솔직히 아주 잘 만든다는 것은 어려운 일이다. 그러다 보니, 이 것 저 것 만져줘야 할 것이 많은 데, 필자 경험한 내용은 바로 최신 드라이버 설치였다. 필자가 생각하기에 드라이버가 중요한 것은 알지만, 필자가 쓰는 컴터는 오래전에 출시된 것이라 드라이버도 당연히 최신(최신이지만 오래전부터 더이상 업데이트가 안되는)이라고 판단 했지만, 놀랍게도 한번의 업데이트가 더 있었다. 에뮬레이터 부팅시 94%에서 자꾸 멈추는 증상이 있었는 데, 이 것으로 해결을 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 또한 이 칭구들이 잘 설명해 놓았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/6.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kr.ldplayer.net/blog/6.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658403098119&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;그래픽 카드 드라이버 업데이트 방법-성능 상향-LDPlayer&quot; data-og-description=&quot;그래픽 카드 드라이버 업데이트 방법&quot; data-og-host=&quot;kr.ldplayer.net&quot; data-og-source-url=&quot;https://kr.ldplayer.net/blog/6.html&quot; data-og-url=&quot;https://kr.ldplayer.net/blog/how-to-update-the-graphics-driver.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bghg1G/hyPazLHOgg/e3xJI12gCHdVbcHojR5yj0/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/6.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kr.ldplayer.net/blog/6.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bghg1G/hyPazLHOgg/e3xJI12gCHdVbcHojR5yj0/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337');&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;그래픽 카드 드라이버 업데이트 방법-성능 상향-LDPlayer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;그래픽 카드 드라이버 업데이트 방법&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kr.ldplayer.net&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;또한 부팅 시 멈추는 위치마다 해결해야 하는 것이 다른 데.. 이 것마다 설명 되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/ldplayer-takes-too-much-time-to-start.html#1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kr.ldplayer.net/blog/ldplayer-takes-too-much-time-to-start.html#1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658403182649&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;LD플레이어 실행 시 로딩에서 멈추는 현상 해결법-설치 및 실행 이슈-LDPlayer&quot; data-og-description=&quot;LD플레이어 실행 시 로딩에서 멈추는 현상 해결법&quot; data-og-host=&quot;kr.ldplayer.net&quot; data-og-source-url=&quot;https://kr.ldplayer.net/blog/ldplayer-takes-too-much-time-to-start.html#1&quot; data-og-url=&quot;https://kr.ldplayer.net/blog/ldplayer-takes-too-much-time-to-start.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/V2kUh/hyPaBbF4c7/Phhz62zMUTKJijtB8z7UMK/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337&quot;&gt;&lt;a href=&quot;https://kr.ldplayer.net/blog/ldplayer-takes-too-much-time-to-start.html#1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kr.ldplayer.net/blog/ldplayer-takes-too-much-time-to-start.html#1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/V2kUh/hyPaBbF4c7/Phhz62zMUTKJijtB8z7UMK/img.jpg?width=1080&amp;amp;height=337&amp;amp;face=0_0_1080_337');&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;LD플레이어 실행 시 로딩에서 멈추는 현상 해결법-설치 및 실행 이슈-LDPlayer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LD플레이어 실행 시 로딩에서 멈추는 현상 해결법&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kr.ldplayer.net&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;h3 data-ke-size=&quot;size23&quot;&gt;버그&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 버그가 있는 데, 기본 화면에서 화면 회전이 안된다. 하지만 설치한 앱내에서는 잘 동작하는 것으로 보인다.&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/288</guid>
      <comments>https://jamssoft.tistory.com/288#entry288comment</comments>
      <pubDate>Thu, 21 Jul 2022 20:39:31 +0900</pubDate>
    </item>
    <item>
      <title>맛있게 먹으면 0칼로리.. 에효..</title>
      <link>https://jamssoft.tistory.com/292</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA9ral/btrHTIQQtr9/qfuZVJLB3QpnL93tO5czGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA9ral/btrHTIQQtr9/qfuZVJLB3QpnL93tO5czGk/img.png&quot; data-alt=&quot;에효~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA9ral/btrHTIQQtr9/qfuZVJLB3QpnL93tO5czGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA9ral%2FbtrHTIQQtr9%2FqfuZVJLB3QpnL93tO5czGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;595&quot; height=&quot;410&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;410&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;특히 방송에 &quot;맛있게 먹으면 0칼로리&quot;라는 말을 한다. 누구든 이 말을 들으면, 0칼로리가 아닌 것을 알고 있지만, &quot;먹는 김에 맛있게 먹자&quot;라는 의미보다... 자기 쇄뇌를 거쳐 &quot;이렇게 먹으면 늘 괞찮다&quot;라는 생각을 들게 하는 말이다. 맛있게 먹든 맛없게 먹은 기분에 차이가 없는 것은 아니겠지만, 먹는 음식의 흡수되는 칼로리에는 거의 차이를 주지 못할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;핑계거리를 제공한다.&lt;/h3&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; 한 말이고 그 파급력을 판단할 수가 없겠지만, 이 말이 너무 사람들에게 핑계거리가 되지 않았으면 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 위험한 것은 스스로도 핑계라는 것을 모를 정도의 순간적이라는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;밸런스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자가 늘 하는 말이다. 밸런스가 중요하다. 밸런스를 유지 중에 이 말로 인해 이 균형이 무너진다면, 한번 무너진 균형을 돌리는 것은 너무 어려운 일이다. 이 말은 수많은 사람들의 밸런스, 몸 뿐만아니라 마음가짐의 밸런스 마저 무너뜨리는 말이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;&amp;nbsp;&lt;/p&gt;</description>
      <category>DIET:다이어트</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/292</guid>
      <comments>https://jamssoft.tistory.com/292#entry292comment</comments>
      <pubDate>Thu, 21 Jul 2022 19:05:38 +0900</pubDate>
    </item>
    <item>
      <title>술 담배 커피 몸에 나쁜가요?</title>
      <link>https://jamssoft.tistory.com/285</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;i&gt;네 나쁩니다.&lt;/i&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WSre0/btrHOlCsgsB/XXmvbMFkQl9ofHgEPDfbjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WSre0/btrHOlCsgsB/XXmvbMFkQl9ofHgEPDfbjk/img.png&quot; data-alt=&quot;술 담배 커피&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WSre0/btrHOlCsgsB/XXmvbMFkQl9ofHgEPDfbjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWSre0%2FbtrHOlCsgsB%2FXXmvbMFkQl9ofHgEPDfbjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;549&quot; height=&quot;416&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;술 담배 커피&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 이 말을 들으려 이 페이지를 방문하신 것은 아닐 테니, 이게 어떤 방식으로 어떻게 나쁜지 설명 드리고자 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;참고로, 전 의사도 한의사도 아닙니다. 모든 것이 뇌피셜이 되겠지만, 최소한의 과학도(과학자라고 했더니 혼만 나서)로서 이게 얼마나 나쁜지 일부의 경험을 통해 꼭 남겨야하는 글로 판단되는 내용입니다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;담배&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJqG6m/btrHRPQOApj/xJQYPCjlKbfv8aLP23RMO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJqG6m/btrHRPQOApj/xJQYPCjlKbfv8aLP23RMO0/img.png&quot; data-alt=&quot;담배 태우기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJqG6m/btrHRPQOApj/xJQYPCjlKbfv8aLP23RMO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJqG6m%2FbtrHRPQOApj%2FxJQYPCjlKbfv8aLP23RMO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;705&quot; height=&quot;504&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;504&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;담배 태우기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;뭐.. 말할 필요도 없이 나쁘다는 것을 알고 계실텐데, 어떤 점이 나쁜지 좀 설명을 드리면, 담배(식물)를 태우는 것만으로 유독가스가 발생합니다. 불을 피우고 연기를 그냥 들이마시는 것과 같습니다. 또한, 첨가된 물질의 갯수는 300000만가지의 화학물을 만들어 냅니다. 특히 비소가 발생하는 데,, 이 비소는 옛날 사극의 사약에 사용되는 &quot;부자(식물)&quot;라는 것의 성분입니다.(*1). 이 정도로는 별로 느낌이 안오실 텐데, 이 비소 뿐만아니라, 피울 때 발생되는 이 물질 중 몸에 나쁜 물질이 너무 많습니다. 너무 많아서 아직 다 밝히지도 못했습니다. 하지만 가장 중요한 것은 이 &lt;b&gt;유독물질은 몸에 병을 발생시킨다는 점&lt;/b&gt;입니다. 몸을 심각하게 망치는 병이 발생하는 최초의 이유를 제공하는 것이 바로 담배입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;암 뿐만아니라 혈액속의 수분감소, 간에 해독작용 방해( 담배속의 독을 분해하는 것 때문에 간이 할일이 많아져서) 그에 따른 면역력악화, 뇌의 산소공급방해.. 등 할 말이 너무 많아서... 간단한 결론은 &lt;b&gt;&quot;몸에 병을 발생시킨다&quot;&lt;/b&gt; 입니다. 그 것도 심각한...&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span&gt;담배회사들은 &quot;폐암과 담배는&amp;nbsp;&lt;b&gt;인과관계&lt;/b&gt;가&amp;nbsp;밣혀지지&amp;nbsp;않았다&quot;라고&amp;nbsp;말합니다.&amp;nbsp;틀린&amp;nbsp;말이&amp;nbsp;아닙니다.&amp;nbsp;하지만&amp;nbsp;&lt;b&gt;&quot;담배가&amp;nbsp;폐암의&amp;nbsp;원인이&amp;nbsp;아니다&quot;라고는&amp;nbsp;하지&amp;nbsp;않습니다&lt;/b&gt;.&amp;nbsp;즉&amp;nbsp;아직&amp;nbsp;인과관계가&amp;nbsp;아직&amp;nbsp;현재의&amp;nbsp;&lt;b&gt;과학/수학적&amp;nbsp;증명이&amp;nbsp;되지&amp;nbsp;않았을&amp;nbsp;뿐&lt;/b&gt;,&amp;nbsp;인과관계가&amp;nbsp;&lt;b&gt;전혀&amp;nbsp;없다는&amp;nbsp;증명또한&amp;nbsp;안된&amp;nbsp;것입니다&lt;/b&gt;.&amp;nbsp;&lt;b&gt;&lt;i&gt;법적으로&lt;/i&gt;&lt;/b&gt;&amp;nbsp;&lt;i&gt;&lt;b&gt;증거가&amp;nbsp;될&amp;nbsp;수가&amp;nbsp;없기에&lt;/b&gt;&lt;/i&gt;&amp;nbsp;이&amp;nbsp;들이&amp;nbsp;승소를&amp;nbsp;하는&amp;nbsp;것이지,&amp;nbsp;&lt;i&gt;&lt;b&gt;&quot;인과관계가&amp;nbsp;없다&quot;는&amp;nbsp;진리는&amp;nbsp;아닙니다.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;사실 이 증명이&amp;nbsp;&amp;nbsp;될 때까지, 법적으로 이들을 이기는 것은 &quot;역학(Statistical mechanics)&quot;을 사용하는 것이지만, &quot;역학&quot;은 확률로 결과가 나오기에 이 확률이 80%이상(대충)이 되지 않으면, 법적으로 인정되지 않을 뿐인 것입니다. 이 역학 또한 과학적 증명인데 판사님의 생각을 바꾸는 것이 너무 어렵기 때문입니다.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;이 역학의 확률은 가능성의 의미가 있지만 정확한 해석은 다음과 같습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;50%의 확률의 의미는 10000명의 사람중에 5000명의 사람에게 이 사건이 발생했으면, 이 수치는 실험대상의 수가 많을 수록 &lt;b&gt;&quot;꼭 이 확률로 발생&quot;&lt;/b&gt;한다. 라는 뜻입니다. 예를 들면,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&quot;담배를 피는 사람은 정해진 확률로 꼭 암에 걸린다.&quot;라는 뜻&lt;/b&gt;입니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;이걸 피하기위해 &quot;해당하는 환자의 원인이 담배냐?&quot; 라는 또 다른 관문이 존재합니다.(인류가 멸망할 때까지 풀지 못하는 숙제 일 수도 있는 문제입니다.)&lt;br /&gt;사실상 할 수 있는 일은 담배를 못 팔게하는 방법밖에는 없습니다. 이러면 다른 이야기가 진행되는 데... 여기서 일단..&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;술&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR6cbQ/btrHSBxZZGe/8mT8v3gSW89KpylDPackh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR6cbQ/btrHSBxZZGe/8mT8v3gSW89KpylDPackh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR6cbQ/btrHSBxZZGe/8mT8v3gSW89KpylDPackh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR6cbQ%2FbtrHSBxZZGe%2F8mT8v3gSW89KpylDPackh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;799&quot; height=&quot;543&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;술을 한마디로 정리를 하면, 아픈 곳을 낫지 못하게 합니다. 이 것은 이차적인 문제지만 술의 가장 큰 문제입니다. 특히 염증이 발생한 질병의 경우 이 염증은 이 술(알콜)로 인해 아물지 않게 만드는 역할을 하게 됩니다. 또한 일차적인 문제는 간에 치명적입니다. 우리의 간은 할일이 정말 많습니다. 이 때 술로인해 알콜분해(정확히는..)하느라 정신이 없는 간에게 무리를 줄 뿐만 아니라.. 지방간이라는 문제를 일으키는 주범입니다. 또한, 뇌에 영향을 미쳐 온몸의 제대로 움직이지도 못하게 합니다. 담배는 천천히 당신을 죽이는 것이 특징이라면, 술은 한번에 당신을 골로 보낼 수도 있는 물질입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;하루 한잔은 혈액순환에 좋다&quot;는 말은 몇년전에 잘 못된 것으로 WTO든가? 어디든가? 기억은 잘 나지 않지만 발표했습니다. 이 때, 혈액순환을 위한 양은 한방울? 정도 였던 것으로 기억합니다. 먹지말라는 소리와 같은 이야기지요.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;커피&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctigtc/btrHUgGo6Mm/JOeq72tdIOosKbd3uXS00K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctigtc/btrHUgGo6Mm/JOeq72tdIOosKbd3uXS00K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctigtc/btrHUgGo6Mm/JOeq72tdIOosKbd3uXS00K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctigtc%2FbtrHUgGo6Mm%2FJOeq72tdIOosKbd3uXS00K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;482&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이뇨작용이 있어, 소변 잘 볼 수 있다고 합니다. 틀린 말은 아닙니다. 하지만 정확한 메커니즘을 알필요가 있습니다. 이뇨자용이 발생하는 이유가 이 체내에 들어온 커피를 밖으로 빼내기 위함입니다. 체내로 빼는 이유는 너무 많거나, 필요가 없을 때 이 현상이 발생합니다. 커피를 빼내기 위해 신장은 신나게 커피제거를 위해 물을 사용합니다. 소변이야 많이 나오겠죠. 하지만 그만큼 체내의 수분이 빠져나가게 됩니다. 그로인해 몸의 수분밸런스가 치명적으로 무너집니다. 물은 우리 몸 체내에서 계속순환하면, 더러운 것을 빼고, 필요한 형태를 유연하게 유지시켜주는 역할을 합니다. 많은 양이 있으면 그나마 상관없지만(이 것도 상관이 없지 않습니다) 적다면 결과는 바로 이틀이내에 발생합니다. 그 결과로 변비가 발생합니다. 변비의 괴로움은 여성분들은 많이 아실 겁니다. 혹시나 변비가 있는 분이라면 딱 일주일만 커피를 끊어보시기를 권장합니다. 이로인해 변기가 사그라들었다면, 커피로 인한 수분부족형 변비니 커피 소비를 현저히 줄이시기 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수분은 피부에 많은 영향을 미칩니다. 커피를 끊고 한달이 지나면 얼굴에 잡티가 사라질 수도 있습니다. 수분부족을 발생한/수번이 부족해서 노폐물을 물이 당겨가지 못한 결과로 잡티가 생기게 됩니다. 물을 많이 먹으면 되지 않냐?라고 되물을 수도 있지만, 물이 많으면 이 것을 빼낸다고 신장에 무리가 갑니다. 일정량의 수분을 유지 시키는 것이 중요한 것이지, 무조건 많이 먹는 것이 중요한 것이 아닙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론은, 현재까지 밝힐 수 있는 커피의 나쁜점은 몸의 수분밸런스를 무너뜨린다입니다.다른 나쁜 점도 필자는 많다고 알고 있지만, 이 놈의 실증자료가 아예 만들어지지도 않고 있어서 이 정도 밖에는 설명드릴 수가 없습니다.&lt;/p&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;아메리카노는 괜찮다?&quot; 절대 아닙니다. 그나마 디카페인이 훨씬 덜한 것은 사실입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 세가지의 공통점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 술, 담배, 커피의 공통점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 바로 불면증을 유발하는 것입니다. 잠을 자는 동안 몸속의 정리정돈과 청소가 일어나게 됩니다. 이 세가지는 불면증을 일으켜 이 것을 방해하게 만듭니다. 불면증이 있는 분들 중에 이 세가지중 한가지라도 없애면(줄이기보다 쉬운것을 선택하여 완전히 끊기를..) 불면증해소에 상당한 도움을 줄 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 심한 두통 유발합니다. 이 세가지를 제외하고도 살아가는 데에서만 발생하는 스트레스가 큰데 이 것들이 더 심한 두통을 만들게 됩니다. 이 중 담배와 술은 설명하지 않아도 바로 이해가 되실테니, 커피를 좀 설명하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커피를 하루에 한잔을 넘어, 많이 마시는 분은 일주일만 참아보거나 반의 반으로 만 줄여보십이오.... 모든 분들에게 해당되지는 않아도 많은 수가 극심하 두통을 경험하시게 될 겁니다. 이 두통을 없는 방법이 2가지 인데, 다시 커피를 마시는 것과 두통이 없어질 때까지 커피를 끊는 것입니다. 어떤것을 선택할 지는 본인의 몫이지만, 두번째방법이 올바르다는 것을 이미 알고 계실 겁니다. 커피를 마신다는 것은 각성의 효과를 유지합니다. 이 말의 다른 말이 커피의 경우 지속적인 두통이 나도 모르는 사이에 발생하고 있다는 뜻입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;담배는 질병을 만들고, 술은 치유되지 못하게 하며, 커피는 몸의 밸런스를 망칩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;*1) 비소는 몸에 아주 헤로운 발암물질이지만 아직 연구가 더 필요한 물질입니다. 몇년전 나사에서 &quot;인&quot;대신 &quot;비소&quot;가 살아있는 생물의 기본 물질로 발표하기도 했습니다[세상에 생명체의 존재확률이 2배 증가했다는 게 핵심의 내용입니다.].&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;암환자들이 비소를 조금 섭취하면 암때문에 발생한 고통이 현격히 줄어들기도 합니다.(이거 불법입니다.)&lt;/p&gt;</description>
      <category>DIET:다이어트</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/285</guid>
      <comments>https://jamssoft.tistory.com/285#entry285comment</comments>
      <pubDate>Thu, 21 Jul 2022 18:04:24 +0900</pubDate>
    </item>
    <item>
      <title>스마트폰으로 팩스보내기/받기 투~</title>
      <link>https://jamssoft.tistory.com/281</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 포스팅한 글은 땡큐팩스를 이용한 방법이다. 실제 팩스보낼일이 많지는 않아 자주 쓰지는 않았지만 기간으로 볼 때 오랜동안 써온 이 땡큐팩스는 좀 큰 문제가 있다. 바로 여러장을 보낼 수가 없다는 것이다. 전혀 방법이 없는 것은 아니다. PDF로 보내고자하는 파일을 묶어서 이 PDF를 지정하면 보낼 수는 있지만,&amp;nbsp; 이 PDF로 묶는 작업을 해야하는 번거로움이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 한장단위로 보내려는 사람은 아래의 링크를 이용하여 사용법을 알 수 있다. 땡큐팩스의 사용법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/140&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jamssoft.tistory.com/140&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658374185686&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;스마트폰으로 팩스 보내기/받기, 땡큐팩스&quot; data-og-description=&quot;오늘은 팩스앱을 하나 소개할까 합니다. 스마트폰으로 팩스를 보낼 수도 있고, 팩스번호가 할당되어 팩스를 받을 수도 있는 앱입니다. 소개해드릴 앱은 &amp;quot;땡큐팩스&amp;quot;입니다. 일단 이 앱을 설명드&quot; data-og-host=&quot;jamssoft.tistory.com&quot; data-og-source-url=&quot;https://jamssoft.tistory.com/140&quot; data-og-url=&quot;https://jamssoft.tistory.com/140&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YCqR0/hyO8TLot8e/fCH4VFYagLkFA6Wl1j7vE1/img.png?width=180&amp;amp;height=180&amp;amp;face=0_0_180_180,https://scrap.kakaocdn.net/dn/cp2x6w/hyO80DKC5L/1etZx2AyhjKTFHAy1AMEt0/img.png?width=180&amp;amp;height=180&amp;amp;face=0_0_180_180,https://scrap.kakaocdn.net/dn/b6IXLB/hyO80DKC6X/kW6FS6LfDw6astoYYMJvk0/img.png?width=1080&amp;amp;height=1420&amp;amp;face=0_0_1080_1420&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/140&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jamssoft.tistory.com/140&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YCqR0/hyO8TLot8e/fCH4VFYagLkFA6Wl1j7vE1/img.png?width=180&amp;amp;height=180&amp;amp;face=0_0_180_180,https://scrap.kakaocdn.net/dn/cp2x6w/hyO80DKC5L/1etZx2AyhjKTFHAy1AMEt0/img.png?width=180&amp;amp;height=180&amp;amp;face=0_0_180_180,https://scrap.kakaocdn.net/dn/b6IXLB/hyO80DKC6X/kW6FS6LfDw6astoYYMJvk0/img.png?width=1080&amp;amp;height=1420&amp;amp;face=0_0_1080_1420');&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;스마트폰으로 팩스 보내기/받기, 땡큐팩스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 팩스앱을 하나 소개할까 합니다. 스마트폰으로 팩스를 보낼 수도 있고, 팩스번호가 할당되어 팩스를 받을 수도 있는 앱입니다. 소개해드릴 앱은 &quot;땡큐팩스&quot;입니다. 일단 이 앱을 설명드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jamssoft.tistory.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;이 글에 들어온 사람들 중에 여러장 팩스 보내기를 원하는 사람이 더 많을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;247&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vpLYB/btrHOkwFmWX/KoN2KbwntOxIG5sORDXrfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vpLYB/btrHOkwFmWX/KoN2KbwntOxIG5sORDXrfk/img.png&quot; data-alt=&quot;sk텔링크의 모바일 팩스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vpLYB/btrHOkwFmWX/KoN2KbwntOxIG5sORDXrfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvpLYB%2FbtrHOkwFmWX%2FKoN2KbwntOxIG5sORDXrfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;247&quot; height=&quot;243&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;243&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;sk텔링크의 모바일 팩스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;안드로이드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.dho.mobilefax&amp;amp;hl=ko&amp;amp;gl=US&quot;&gt;https://play.google.com/store/apps/details?id=com.dho.mobilefax&amp;amp;hl=ko&amp;amp;gl=US&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1658374396613&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;모바일팩스 - Google Play 앱&quot; data-og-description=&quot;스마트폰에서 이용하는 간편한 개인용 팩스앱!! 모바일팩스!!&quot; data-og-host=&quot;play.google.com&quot; data-og-source-url=&quot;https://play.google.com/store/apps/details?id=com.dho.mobilefax&amp;amp;hl=ko&amp;amp;gl=US&quot; data-og-url=&quot;https://play.google.com/store/apps/details?id=com.dho.mobilefax&amp;amp;hl=ko&amp;amp;gl=US&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b3LI1H/hyPatEiMfd/pni0AG6CzVgHXVTBkkiJE0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/kZt95/hyPaDUtaEH/dp0YKQWknbIegUdTtyoh01/img.png?width=600&amp;amp;height=300&amp;amp;face=0_0_600_300,https://scrap.kakaocdn.net/dn/bFO52Q/hyPazxKFPK/izRUsimbivxUCIa5TfKMA1/img.png?width=240&amp;amp;height=240&amp;amp;face=0_0_240_240&quot;&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.dho.mobilefax&amp;amp;hl=ko&amp;amp;gl=US&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://play.google.com/store/apps/details?id=com.dho.mobilefax&amp;amp;hl=ko&amp;amp;gl=US&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b3LI1H/hyPatEiMfd/pni0AG6CzVgHXVTBkkiJE0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/kZt95/hyPaDUtaEH/dp0YKQWknbIegUdTtyoh01/img.png?width=600&amp;amp;height=300&amp;amp;face=0_0_600_300,https://scrap.kakaocdn.net/dn/bFO52Q/hyPazxKFPK/izRUsimbivxUCIa5TfKMA1/img.png?width=240&amp;amp;height=240&amp;amp;face=0_0_240_240');&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;모바일팩스 - Google Play 앱&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;스마트폰에서 이용하는 간편한 개인용 팩스앱!! 모바일팩스!!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;play.google.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;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;아이폰&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://apps.apple.com/kr/app/%EB%AA%A8%EB%B0%94%EC%9D%BC%ED%8C%A9%EC%8A%A4-i/id1487591338&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://apps.apple.com/kr/app/%EB%AA%A8%EB%B0%94%EC%9D%BC%ED%8C%A9%EC%8A%A4-i/id1487591338&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658374522619&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;&amp;lrm;모바일팩스 i&quot; data-og-description=&quot;&amp;lrm;스마트폰으로 팩스문서를 간편하게 송수신한다!! 최강 팩스어플 모바일팩스!! - 팩스를 보내달라는데 팩스기기가 없다구요? 아직도 관공서에서는 팩스를 보내달라는 곳이 많다구요?? 모바일&quot; data-og-host=&quot;apps.apple.com&quot; data-og-source-url=&quot;https://apps.apple.com/kr/app/%EB%AA%A8%EB%B0%94%EC%9D%BC%ED%8C%A9%EC%8A%A4-i/id1487591338&quot; data-og-url=&quot;https://apps.apple.com/kr/app/%EB%AA%A8%EB%B0%94%EC%9D%BC%ED%8C%A9%EC%8A%A4-i/id1487591338&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Yp2Vh/hyO82hhfTb/86SBskGH8gQVxMCr2DSquk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dNATlL/hyO82BAA9x/RgHN27UA9MbHlPBVy6VkG1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://apps.apple.com/kr/app/%EB%AA%A8%EB%B0%94%EC%9D%BC%ED%8C%A9%EC%8A%A4-i/id1487591338&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://apps.apple.com/kr/app/%EB%AA%A8%EB%B0%94%EC%9D%BC%ED%8C%A9%EC%8A%A4-i/id1487591338&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Yp2Vh/hyO82hhfTb/86SBskGH8gQVxMCr2DSquk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dNATlL/hyO82BAA9x/RgHN27UA9MbHlPBVy6VkG1/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;&amp;lrm;모바일팩스 i&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lrm;스마트폰으로 팩스문서를 간편하게 송수신한다!! 최강 팩스어플 모바일팩스!! - 팩스를 보내달라는데 팩스기기가 없다구요? 아직도 관공서에서는 팩스를 보내달라는 곳이 많다구요?? 모바일&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;apps.apple.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;모바일에서 접속한 사람은 위의 링크를 클릭하면 아마 들어갈 것이고, PC로 이 글을 읽는 사람은 스마트폰에서 &quot;구글플레이&quot; 나 &quot;애플스토어&quot; 앱을 켜서 &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;여러장 보내기&quot;기능이 더 추가 되었다고 생각하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용료는?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모바일팩스앱또한 MMS를 이용하기 때문에 MMS사용료가 발생하게 된다. 하지만 대부분의 스마트폰 사용자는 이미 일정량의 무료 SMS/MMS를 이미 보유하고 있기 때문에 사실상 무료로 이용이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;팩스 받는 것은?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;땡큐팩스의 경우 이메일을 통해서 확인이 가능하지만, 이 모바일팩스는 앱에 들어가서도 볼 수가 있다. 이 건 상당한 장점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최초 앱을 열면 팩스번호를 고르거나 심지어는 기존의 번호를 그냥 사용할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;어떤 앱을 써?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 땡큐팩스측에는 미안하지만 이 모바일팩스 앱이 더 잘만들어 졌다. 단지 &quot;여러장 보내기&quot;만 이라도 땡큐팩스가 지원했다면, 필자는 이 글을 쓰지 않았을 것이다.&lt;/p&gt;</description>
      <category>Android Apps</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/281</guid>
      <comments>https://jamssoft.tistory.com/281#entry281comment</comments>
      <pubDate>Thu, 21 Jul 2022 12:42:10 +0900</pubDate>
    </item>
    <item>
      <title>Crystal DiskMark.. Don't Test with 1GiB option, PLEASE~~</title>
      <link>https://jamssoft.tistory.com/290</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;The CrystalDiskMark is powerful testing tool to measure SSD, USB-Stick, Sd-card and so on. Many users already use this good tool. by growing the size of these devices, 1GiB option is not report actual speed&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;570&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp1DeX/btrHNMmLELD/vNKHaOIT2G9C988OmlFkTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp1DeX/btrHNMmLELD/vNKHaOIT2G9C988OmlFkTK/img.png&quot; data-alt=&quot;Default 1GiB&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp1DeX/btrHNMmLELD/vNKHaOIT2G9C988OmlFkTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp1DeX%2FbtrHNMmLELD%2FvNKHaOIT2G9C988OmlFkTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;490&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Default 1GiB&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Chnage default value&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Default value is 1GiB. actual spped, specially for test benchmark, This value must be almost to drive size. but, This testing will spend more times and not good at Flash-memory device such as SSD, so, must be tested with proper size. To measure actual or reasonable speed, I suggest 16GiB for testing. This value eliminate the distortion caused by cache memory.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test count 3 is suitable for most case.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Why?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To improve performance, Devices has cache memory(Don't confuse cache of OS). This cache is very faster than Flash-memory. In case SATA3 SSD, This speed is even higher than bus-speed. When drive receive data, The controller of device save these data to CACHE, and refetch it, and then actually save on flash memory. This behavior make that small size data will be handled maximum speed. so, Test actual speed of flash-memory, Must be use more than cache on testing. This testing can be &quot;benchmark&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Actual Test &lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lVIsB/btrHSMENZ8Y/H1zaDvX3bHftw1tmVSQiT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lVIsB/btrHSMENZ8Y/H1zaDvX3bHftw1tmVSQiT1/img.png&quot; data-alt=&quot;Testing with 1GiB option&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lVIsB/btrHSMENZ8Y/H1zaDvX3bHftw1tmVSQiT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlVIsB%2FbtrHSMENZ8Y%2FH1zaDvX3bHftw1tmVSQiT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;352&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Testing with 1GiB option&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1D5PO/btrHNF14Okr/ut1T3ikqd2qdfW8B9sR2Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1D5PO/btrHNF14Okr/ut1T3ikqd2qdfW8B9sR2Kk/img.png&quot; data-alt=&quot;Testing with 16GiB option&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1D5PO/btrHNF14Okr/ut1T3ikqd2qdfW8B9sR2Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1D5PO%2FbtrHNF14Okr%2Fut1T3ikqd2qdfW8B9sR2Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;352&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Testing with 16GiB option&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;These two figure report differences. specially&amp;nbsp; &lt;b&gt;seq. write&lt;/b&gt;. In real world, User can be expierenced 1GiB Testing speed, But For someone to transfer Large size file, 16GiB test is reasonable.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16GiB option also has a little distortion. you can see by next figure.&lt;/p&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;i&gt;On This testing, By USB-Stick is not clean, 1GiB Test result slower than clean device.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Behavior of CACHE&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tested file size : 4.64GiB&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EYqhs/btrHRNKNFhc/f944uasxAV3C6pY5umoO1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EYqhs/btrHRNKNFhc/f944uasxAV3C6pY5umoO1K/img.png&quot; data-alt=&quot;Cache VS Cache Full&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EYqhs/btrHRNKNFhc/f944uasxAV3C6pY5umoO1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEYqhs%2FbtrHRNKNFhc%2Ff944uasxAV3C6pY5umoO1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;712&quot; height=&quot;487&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Cache VS Cache Full&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;At pos. 3.52GiB write-speed suddenly reduced, this is not mean cache size. cache size is much smaller than this value. on writing cache will be have spaced already written this is empty space, this emtpy space will be occupied by new transfered data. If Cache has no space to receive data, Speed-Decreasing occured.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Read/Write operation works like below. Behavior of cache is different by on/off cache. this figure is when cache ON&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;727&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ly9h0/btrHNEB2gF2/hrmbhTgRFalELosYib0hb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ly9h0/btrHNEB2gF2/hrmbhTgRFalELosYib0hb1/img.png&quot; data-alt=&quot;Cache work flow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ly9h0/btrHNEB2gF2/hrmbhTgRFalELosYib0hb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLy9h0%2FbtrHNEB2gF2%2FhrmbhTgRFalELosYib0hb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;562&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Cache work flow&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When writing, by empty cache(part also available), cache can be occupied high speed, This shows fast performance in intial parts.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Last Note&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USB-stick Write-speed is important for move data to other. We spend money to reduce time, by distorted benchmark result, I post this report to Testers that report help for reducing time and monety to others to be more accurate result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nand-memory is already devided to quad, read/wrie different will be yawn, I don't figure out of coverage by controller's power...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Download&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://osdn.net/projects/crystaldiskmark/&quot;&gt;https://osdn.net/projects/crystaldiskmark/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658368469350&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CrystalDiskMark Project Top Page - OSDN&quot; data-og-description=&quot;CrystalDiskMark is benchmark software that measures the transfer speed of media data storage drive such as HD, SSD, USB memory, SD card and NAS. Important Notice Both CrystalDiskInfo and Crystal...&quot; data-og-host=&quot;osdn.net&quot; data-og-source-url=&quot;https://osdn.net/projects/crystaldiskmark/&quot; data-og-url=&quot;https://osdn.net/projects/crystaldiskmark/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rCCmo/hyO8SrI08m/kFrtnbx8S9pgElNHel6rEk/img.png?width=200&amp;amp;height=145&amp;amp;face=0_0_200_145&quot;&gt;&lt;a href=&quot;https://osdn.net/projects/crystaldiskmark/&quot; data-source-url=&quot;https://osdn.net/projects/crystaldiskmark/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rCCmo/hyO8SrI08m/kFrtnbx8S9pgElNHel6rEk/img.png?width=200&amp;amp;height=145&amp;amp;face=0_0_200_145');&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;CrystalDiskMark Project Top Page - OSDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CrystalDiskMark is benchmark software that measures the transfer speed of media data storage drive such as HD, SSD, USB memory, SD card and NAS. Important Notice Both CrystalDiskInfo and Crystal...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;osdn.net&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;h4 data-ke-size=&quot;size20&quot;&gt;Testing device&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sandisk Ultra-Flare 32GiB : Most manufactures don't describe write-speed if write-speed is very slower than read-speed.&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;*1 : Currently No Devices have over 16GiB Cacahe memory. but, Can be exists, Experts only deal with these situation, This value is reasonable for most case.&lt;/p&gt;</description>
      <category>잘못된 건 고쳐야지</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/290</guid>
      <comments>https://jamssoft.tistory.com/290#entry290comment</comments>
      <pubDate>Thu, 21 Jul 2022 11:49:00 +0900</pubDate>
    </item>
    <item>
      <title>더운 여름 목과 가슴이 가려울 때...</title>
      <link>https://jamssoft.tistory.com/291</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 물로 씻으면 된다. 일단 물로만 닦아낸다. 비누를 쓰면 오히려 자극이 될 수 있으니, 물로만 씻는다. 이 때, 물로 씻으면 즉시 물이 닿는 순간부터 가려움이 사그라들게 된다. 가려움이 계속된다면, 비누를 조금만 써서 한번 더 닦아 내도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이렇게 했는 데도 가려움이 심하다면, 즉시, 피부과를 찾도록 한다. 물로 씻어냈다는 것을 의사쌤에게 설명하고, 적절한 진료를 받도록 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7iwdD/btrHOAY1G7Q/KRA8idFPY3cqK50TgD88b1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7iwdD/btrHOAY1G7Q/KRA8idFPY3cqK50TgD88b1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7iwdD/btrHOAY1G7Q/KRA8idFPY3cqK50TgD88b1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7iwdD%2FbtrHOAY1G7Q%2FKRA8idFPY3cqK50TgD88b1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;703&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;원인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더운 여름에 나오는 땀때문에 발생한다. 땀속에는 각종미네랄등이 포함되는 데, 이 미네랄들이 피부를 지속적으로 자극해서 가려움이 느껴지게 된다. 소금이 한몫하기 때문에 소금기를 빼면 된다.&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;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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물로 재빨리 헹구고, 심하면 주변 병원의 찾으면 된다. 굳이 마음 속에 담아둘 필요없는 간단한 경우가 대부분이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더운 날에 발생하니 그만큼 수분이 빠져나갔다는 뜻이니, 충분한 수분을 다시 공급해 줘야 한다. 꼭 물만 마시기를 권장한다. 그 것도 천천히~~&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 의사가 아니다. 단지 여름철에 너무 자주 발생하는 가려움에 혹시나 해결방법을 찾지 못한 이들에게 위해없는 방법을 제신한 것일 뿐이다. 위 방법으로 해결되지 않으면 바로 병원을 방문하여야 한다.&lt;/p&gt;</description>
      <category>DIET:다이어트</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/291</guid>
      <comments>https://jamssoft.tistory.com/291#entry291comment</comments>
      <pubDate>Wed, 20 Jul 2022 16:24:35 +0900</pubDate>
    </item>
    <item>
      <title>Crystal DiskMark.. 제발 1GiB로 테스트하지 말아줘~</title>
      <link>https://jamssoft.tistory.com/289</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드는 글의 맨 밑 부분에 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSD, USB메모리, SD카드 등 속도 측정을 위해 많이 사용되는 프로그램으로 &quot;크리스탈 디스크마크&quot;가 있다. 아주 잘 만들어진 프로그램이라 이미 많은 사용자가 사용하고 있다. 하지만 이미 USB나 SD카드의 용량이 아주커진 요즘에 1GiB로 테스트하는 것은 실제속도를 측정되는 것이 아니다. 그러니 &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;570&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cwfm1/btrHIY8n38r/ElF1gSsfpw8ItkQpJoyoG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cwfm1/btrHIY8n38r/ElF1gSsfpw8ItkQpJoyoG0/img.png&quot; data-alt=&quot;기본적으로 셋팅이 1GiB로 되어있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cwfm1/btrHIY8n38r/ElF1gSsfpw8ItkQpJoyoG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCwfm1%2FbtrHIY8n38r%2FElF1gSsfpw8ItkQpJoyoG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;490&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기본적으로 셋팅이 1GiB로 되어있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본값을 바꾸자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 기본값이 1GiB로 되어있다. 실제 속도, 특히 벤치마크용 테스트를 수행할 경우, 이 값을 드라이브 용량에 거의 꽉차게 테스트를 해야한다. 하지만 이렇게 하면 테스트시간도 늘어나고, SSD와 같은 Flash-memory를 사용하는 장치들에는 수명에 아주 조금 좋지 않기 때문에 적당한 값을 설정해야 한다. 현실적 속도를 측정해야하기 때문에, 그 것도 측정의 이유가 &quot;다른 님들 참조&quot;일 경우 &lt;b&gt;16GiB(*1:2022년 현재의 시점에서)로 놓고 테스트하기를 권장&lt;/b&gt;한다. 16GiB를 한번에 전송할 상황은 그리 많지 않으며, 이 정도가 되어야 드라이브 자체 캐시를 통한 왜곡이 사라지기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 횟수는 3회면 충분하고 남는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;왜 그래야 돼?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드라이브 내에는 전송속도를 높이기 위한 캐시라는 메모리가 있다[윈도우에 있는 OS의 캐시와 다른 것이다].&amp;nbsp; 이 것은 실제 저장되는 Flash-memory에 비해 훨훨훨~~~ 빠르다. SATA3 SSD의 경우 BUS라고 불리는 &quot;전송 최대 한계치&quot;를 가볍게 넘는 속도로 동작한다. 일단 데이터를 드라이브로 저장하게 되면, 드라이브의 컨트롤러는 캐시로 신나게 저장을 하면서 다시 캐시에서 데이터를 실제 Nand-Flash메모리로 저장을 하게 된다. 이렇게 동작을 하면 일단 넘어오는 데이터가 일부러 복사와 같은 대용량작업을 하지 않는 이상 대부분의 상황에서 BUS의 최대속도로 처리할 수 있기 때문이다. 따라서 실제 이 Nand-Flash라는 놈의 속도를 측정할 필요가 있기 때문에 이 캐시보다 훨씬 많은 양으로 테스트를 해야한다. 캐시가 가득차서 더 이상 캐시가 효용성이 없는 상황이 바로 &quot;벤치마크용 자료&quot;가 될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실제 테스트&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9lL0J/btrHJcFA4HO/zbYw2pkGbM8fW4Ovb73mq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9lL0J/btrHJcFA4HO/zbYw2pkGbM8fW4Ovb73mq1/img.png&quot; data-alt=&quot;1GiB로 테스트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9lL0J/btrHJcFA4HO/zbYw2pkGbM8fW4Ovb73mq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9lL0J%2FbtrHJcFA4HO%2FzbYw2pkGbM8fW4Ovb73mq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;352&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1GiB로 테스트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mlHDM/btrHL3Ofzto/lEABcW5zljRTZKWkOWQK81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mlHDM/btrHL3Ofzto/lEABcW5zljRTZKWkOWQK81/img.png&quot; data-alt=&quot;16GiB 테스트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mlHDM/btrHL3Ofzto/lEABcW5zljRTZKWkOWQK81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmlHDM%2FbtrHL3Ofzto%2FlEABcW5zljRTZKWkOWQK81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;352&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;16GiB 테스트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 두 그림의 차이가 바로 보인다. 다른 부분보다 &lt;b&gt;seq. 쓰기에서 차이&lt;/b&gt;가 확연히 나는 것을 알 수 있다. 실제 사용할 때는 1GiB로 체감하겠지만, 큰 파일을 전송이 필요한 사람에게는 아래가 더 정확한 결론을 내준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 16GiB로 측정한 것도 약간의 오차가 발생할 수 있는 데, 이는 다음의 그림을 보고 판단할 수 있다.&lt;/p&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;i&gt;이 테스트는 USB스틱이 클린하지 못한 상태라 1GiB의 속도가 너무 낮게 나왔을 가능성이 크다. 이 내용의 차이를 알고 싶으면 다음 링크를 읽어보기를 바란다.&lt;/i&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;i&gt;&lt;a href=&quot;https://jamssoft.tistory.com/278&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jamssoft.tistory.com/278&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658293990078&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;SSD를 오래 썼더니 느려지네.. TRIM과 GC&quot; data-og-description=&quot;쓸데없는 서론 SSD가 나온지 이제 꽤 시간이 지났다. 기본 부팅시스템은 SSD를 대부분 사용하고 있는 상황이고, 여유가 되는 사람들은 SSD로 데이터 저장공간으로 사용한다. 나스 등의 대용량이 필&quot; data-og-host=&quot;jamssoft.tistory.com&quot; data-og-source-url=&quot;https://jamssoft.tistory.com/278&quot; data-og-url=&quot;https://jamssoft.tistory.com/278&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CGB2C/hyO8XGkO5q/krM3SARqp4XrbhlTTmFuNK/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/C7gaJ/hyO8Wm7OoM/rjJTDDTVQMKSyrIPyZoB50/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/y2SOO/hyO8XzyvxK/2cYAx3cdKGk0aUckfeCXB0/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/278&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jamssoft.tistory.com/278&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CGB2C/hyO8XGkO5q/krM3SARqp4XrbhlTTmFuNK/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/C7gaJ/hyO8Wm7OoM/rjJTDDTVQMKSyrIPyZoB50/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/y2SOO/hyO8XzyvxK/2cYAx3cdKGk0aUckfeCXB0/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222');&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;SSD를 오래 썼더니 느려지네.. TRIM과 GC&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;쓸데없는 서론 SSD가 나온지 이제 꽤 시간이 지났다. 기본 부팅시스템은 SSD를 대부분 사용하고 있는 상황이고, 여유가 되는 사람들은 SSD로 데이터 저장공간으로 사용한다. 나스 등의 대용량이 필&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jamssoft.tistory.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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;캐시는..&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 약 4.64GiB정도의 파일을 쓰는 상황이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lgtWu/btrHOAdmWPj/5EHkXiEmihKch3OhuIask0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lgtWu/btrHOAdmWPj/5EHkXiEmihKch3OhuIask0/img.png&quot; data-alt=&quot;테스트크기에 따라 차이가 발생하는 이유&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lgtWu/btrHOAdmWPj/5EHkXiEmihKch3OhuIask0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlgtWu%2FbtrHOAdmWPj%2F5EHkXiEmihKch3OhuIask0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;712&quot; height=&quot;487&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;487&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;갑자기 속도가 감소하는 위치는 3.52GiB인데 이 용량이 캐시의 크기를 나타내지는 않는다. 이 보다 훨씬 작다. 단지 쓰면서 쓴 데이터만큼 캐시의 공간이 비기 때문에 비어진 공간만큼 다시 채울 수 있기 때문이다. 더 이상 캐시가 데이터를 받을 수 없을 때, 속도의 감소가 일어난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장/읽기는 다음과 같이 동작한다. 참고로 봐주면 좋다.캐시를 끄고 켤 수 있는 장치는 동작방식이 다르다. 아래 그림들은 캐시가 활성화 된 상태의 그림이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dO53SN/btrHNLzSgYN/icIMrVoFMvuSJRTIwOKZk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dO53SN/btrHNLzSgYN/icIMrVoFMvuSJRTIwOKZk1/img.png&quot; data-alt=&quot;일반적인 캐시 동작 방식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dO53SN/btrHNLzSgYN/icIMrVoFMvuSJRTIwOKZk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdO53SN%2FbtrHNLzSgYN%2FicIMrVoFMvuSJRTIwOKZk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;562&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;562&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;쓰기시의 그림을 보면 Cache의 데이터가 실제 Nand로 저장이 될 때 비워지는 공간만큼 데이터를 빠른 속도로 받을 수 있어서 초기에는 빠른 듯하게 보이게 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터이동용으로 많이 사용하는 USB스틱의 경우 쓰기 속도도 중요하다. 이 시간을 아끼기위해 비용을 지불하는 데, 왜곡된 벤치마크로 인해, 시간과 돈을 손해보지 않도록 도와주려는 테스터들에게 좀 더 정확한 수치가 나오도록 테스트해주기를 바라는 마음에서 이 글을 남긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nand가 Quad까지 가는 상황에서 이 읽기와 쓰기의 편차는 더 심해질 것 같다. 콘트롤러의 성능으로 어디까지 커버가 될지는...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://osdn.net/projects/crystaldiskmark/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://osdn.net/projects/crystaldiskmark/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658295629964&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CrystalDiskMark Project Top Page - OSDN&quot; data-og-description=&quot;CrystalDiskMark is benchmark software that measures the transfer speed of media data storage drive such as HD, SSD, USB memory, SD card and NAS. Important Notice Both CrystalDiskInfo and Crystal...&quot; data-og-host=&quot;osdn.net&quot; data-og-source-url=&quot;https://osdn.net/projects/crystaldiskmark/&quot; data-og-url=&quot;https://osdn.net/projects/crystaldiskmark/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rCCmo/hyO8SrI08m/kFrtnbx8S9pgElNHel6rEk/img.png?width=200&amp;amp;height=145&amp;amp;face=0_0_200_145&quot;&gt;&lt;a href=&quot;https://osdn.net/projects/crystaldiskmark/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://osdn.net/projects/crystaldiskmark/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rCCmo/hyO8SrI08m/kFrtnbx8S9pgElNHel6rEk/img.png?width=200&amp;amp;height=145&amp;amp;face=0_0_200_145');&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;CrystalDiskMark Project Top Page - OSDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CrystalDiskMark is benchmark software that measures the transfer speed of media data storage drive such as HD, SSD, USB memory, SD card and NAS. Important Notice Both CrystalDiskInfo and Crystal...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;osdn.net&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;h4 data-ke-size=&quot;size20&quot;&gt;사용된 장비&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sandisk Ultra-Flare 32GiB : 쓰기가 느린 이런 녀석들은 제조사에서 읽기만 표기한다...&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;*1 : 캐시가 설마 16GiB나 되는 드라이브는 현재 없을 것이다. 있을 수도 있지만, 이런 상황을 다루는 사람은 전문가들일 테니, 16GiB면 현재의 거의 모든 상황에 어울리는 수치다.&lt;/p&gt;</description>
      <category>잘못된 건 고쳐야지</category>
      <category>sd card</category>
      <category>usb stick</category>
      <category>벤치마크</category>
      <category>크리스탈디스크마크</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/289</guid>
      <comments>https://jamssoft.tistory.com/289#entry289comment</comments>
      <pubDate>Wed, 20 Jul 2022 12:29:23 +0900</pubDate>
    </item>
    <item>
      <title>리눅스에서 SSD TRIM 살짝 공부 좀하고 설정하자</title>
      <link>https://jamssoft.tistory.com/284</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우는 SSD를 인식하면 보통 특별한 설정을 하지 않은 경우 일정 주기마다 trim을 수행해 준다. 이 글만 보는 독자를 위해 좀 TRIM을 설명하면, 윈도우의 TRIM은 일정한 시간마다(보통 주단위) 전체 TRIM을 수행하고, 파일이 삭제되거나 내용이 지워지면 그 때 그 때 OS는 TRIM을 SSD로 보내게 된다. 솔직히 TRIM을 지속적으로 보내는 것도 리소스를 잡아 먹는 것이라 용량이 많이 남아있는 상태에서는 삭제시마다 전송하는 지속적인 TRIM은 그리 좋은 방법은 아니다. 어쨋든 이 작업을 OS와 SSD가 유기적으로 동작하도록 되어있다. 또한 OS는 TRIM을 SSD에 알릴 뿐 SSD가 실제 TRIM작업을 즉시 수행하는 것은 아니다. 심지어는 무시해버리기도 한다. 좀 더 정확한 개념은 필자의 다음글을 한번 대충 보기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/278&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jamssoft.tistory.com/278&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658276599065&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;SSD를 오래 썼더니 느려지네.. TRIM과 GC&quot; data-og-description=&quot;쓸데없는 서론 SSD가 나온지 이제 꽤 시간이 지났다. 기본 부팅시스템은 SSD를 대부분 사용하고 있는 상황이고, 여유가 되는 사람들은 SSD로 데이터 저장공간으로 사용한다. 나스 등의 대용량이 필&quot; data-og-host=&quot;jamssoft.tistory.com&quot; data-og-source-url=&quot;https://jamssoft.tistory.com/278&quot; data-og-url=&quot;https://jamssoft.tistory.com/278&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CGB2C/hyO8XGkO5q/krM3SARqp4XrbhlTTmFuNK/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/C7gaJ/hyO8Wm7OoM/rjJTDDTVQMKSyrIPyZoB50/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/y2SOO/hyO8XzyvxK/2cYAx3cdKGk0aUckfeCXB0/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222&quot;&gt;&lt;a href=&quot;https://jamssoft.tistory.com/278&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jamssoft.tistory.com/278&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CGB2C/hyO8XGkO5q/krM3SARqp4XrbhlTTmFuNK/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/C7gaJ/hyO8Wm7OoM/rjJTDDTVQMKSyrIPyZoB50/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222,https://scrap.kakaocdn.net/dn/y2SOO/hyO8XzyvxK/2cYAx3cdKGk0aUckfeCXB0/img.png?width=310&amp;amp;height=222&amp;amp;face=0_0_310_222');&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;SSD를 오래 썼더니 느려지네.. TRIM과 GC&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;쓸데없는 서론 SSD가 나온지 이제 꽤 시간이 지났다. 기본 부팅시스템은 SSD를 대부분 사용하고 있는 상황이고, 여유가 되는 사람들은 SSD로 데이터 저장공간으로 사용한다. 나스 등의 대용량이 필&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jamssoft.tistory.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;윈도우 또한 TRIM명령을 삭제시마다 지속적으로 보낼지는 윈도우가 판단해서 보낸다. 늘 보내지 않을 수 있다는 것이다. 실제 윈도우에서 볼륨속성을 보면 일정기간마다 전체 TRIM을 보내기 때문에 실제 삭제시마다 일어나는 지속적인 TRIM은 아직 빈공간이 많이 남아있는 상태에서는 큰 효과를 보지 못할 가능성이 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 내용은 SSD제조사와 OS의 행동방식이 지속적으로 개선되기에 &quot;꼭 이렇게 동작한다&quot;라고 말할 수 없는 부분이다.&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;851&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x0zoB/btrHL3GRCiZ/7BfGZpWJMmisLFElp1Caqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x0zoB/btrHL3GRCiZ/7BfGZpWJMmisLFElp1Caqk/img.png&quot; data-alt=&quot;TRIM은 &amp;quot;짤라버린다&amp;quot;는 뜻이다. SSD에서는 다른 의미일수도...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x0zoB/btrHL3GRCiZ/7BfGZpWJMmisLFElp1Caqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx0zoB%2FbtrHL3GRCiZ%2F7BfGZpWJMmisLFElp1Caqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;851&quot; height=&quot;550&quot; data-origin-width=&quot;851&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;TRIM은 &quot;짤라버린다&quot;는 뜻이다. SSD에서는 다른 의미일수도...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리눅스에서 TRIM하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데비안 계열의 리눅스는 다음의 명령으로 TRIM ssd 로 보낼 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1658277042668&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user17@server01:~$ sudo fstrim -v /mnt/win2
[sudo] password for user17:
/mnt/win2: 37.7 GiB (40478253056 bytes) trimmed&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fstrim명령으로 trim을 날리면 위와같이 전체 빈공간을 trim한다. 여기서 &quot;아니 왜 전체를 다하고 있지?&quot;라는 의문이 들 수 있다. 이유는 간단하다 OS가 어디가 TRIM될지 모르니, 그냥 남아있는 빈공간 전체가 TRIM되도록 명령을 날리는 것이다. 명령을 날릴 뿐 실제 TRIM이 되어야 하는 위치는 SSD가 잘 알고 있으니, SSD가 멍청하게 빈공간 전체를 실제 지우는 작업을 하지 않는다. 걱정을 할 필요가 없다.&lt;/p&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;다시 한번 fstrim을 날리면&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658277286566&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user17@server01:~$ sudo fstrim -v /mnt/win2
/mnt/win2: 0 B (0 bytes) trimmed
user17@server01:~$&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제된 공간이 없기에 아무 곳도 trim을 하지 않고 있음을 알고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언마운트하고 다시 마운트해서 명령을 날리면&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658277420653&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user17@server01:~$ sudo umount /mnt/win2
user17@server01:~$ sudo mount /mnt/win2
user17@server01:~$ sudo fstrim -v /mnt/win2
/mnt/win2: 37.7 GiB (40478253056 bytes) trimmed&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 빈공간 전체에 TRIM명령이 날아간다. 이 것은 unmount시에 OS는 trim정보를 다 지워버리게 되고, 이 현상의 주된 이유는 다른 드라이브가 마운트 되었다고 판단하기 때문에, 빈공간 전체에 TRIM을 보내게 된다. 이 빈공간 전체를 TRIM한 이후부터 지속적인 TRIM이 전달되게 된다[discard가 설정된 경우]. 따라서 부팅시부터 TRIM을 지속적으로 처리하려면 rc.local과 같은 위치에서 위의 fstrim명령을 한번 날려주어 이후 알아서 TRIM명령을 보내게 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 몇 개를 지우고 다시 fstrim을 날리면 지워진 파일의 크기 정도만큼만 trim예약 되는 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지속적으로 TRIM해 줄까?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만.. 하루 이틀 지나고 다시 TRIM명령을 날려 보자. 더 긴 시간도 상관없다.&lt;/p&gt;
&lt;pre id=&quot;code_1658277759455&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;user17@server01:~$ sudo fstrim -v /mnt/win2
[sudo] password for user17:
/mnt/win2: 37.7 GiB (40478253056 bytes) trimmed&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 어의가 없게도 전체 빈공간을 TRIM한다. 이 것은 버그도 아니고 당신의 SSD가 꾸져서도 아니다. 망가진 것은 더더욱 아니니 걱정하지 말라.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TRIM이 쉬운게 아니다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OS는 파일이 삭제될 때마다 그 위치를 파악하고 SSD로 TRIM을 날려야 한다. 이 작업은 최대로&amp;nbsp; 볼륨의 1/512만큼의 메모리를 잡아 먹는 작업이다. 또한 지속적으로 CPU를 사용하여 연산을 해야한다. 따라서 어찌보면 안하는 것이 더 좋은 방법이기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우도 마찬가지다. TRIM을 잘 처리할 듯하지만, 리눅스든 윈도우든 실제 TRIM명령 전송은 일정기간마다 하도록 되어있다. &lt;b&gt;리눅스는 cron으로 따로 등록해야 하며, 윈도우는 볼륨속성에서 주기를 지정해야 한다.(윈도우는 기본적으로 한달 또는 7일로 되어있다)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TRIM작업은 OS보다 SSD의 고유 영역에 더 가깝기 때문에, SSD의 TRIM알고리즘에 큰 영향을 받는다. 하지만 많은 공간이 삭제되면 일부러 TRIM명령을 보낼 필요가 있다.&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;1.부팅 후 전체 TRIM해서 OS에 의한 지속적인 TRIM이 되도록 하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 일정기간마다 TRIM하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 그냥 안함&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1의 경우 fstab에 discard를 옵션에 추가해야 한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3번의 방법을 써도 큰 문제는 없다. 요즘의(이미 한참전) SSD는 &quot;능동형&quot; GC기능이 대부분 탑재되어 있기 때문에 TRIM명령을 받지 않아도 특정공간에 다시 쓰기 작업시 데이터가 있다면, 이미 있던 그 데이터가 지워진 것을 판단할 수 있으니, Wear-Leveling기술을 통해 속도 저하없이 쓰기가 가능해지고, 이 block은 TRIM예약이 된다. SSD가 알아서 빈공간을 판단할 수 있다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;어떻하라고~요?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 2번 방법을 추천한다. crontab에 fstrim명령을 주기적으로 날리도록 하는 방식이 가장 부담이 덜하며 성능저하도 거의 없기 때문이다. 이 때 주기설정은 어떤 용도인지에 따라 정해진다. 데이터를 쌓아 두기만하는 볼륨(영화나 잔뜩 넣어두는)은 한달 정도로 잡고, 자주 지워지는 곳은 일주일이면 충분하다. 동영상 편집같이 큰 용량이 자주 삭제될 때는&amp;nbsp; 3일정도면 아주 충분하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실상 윈도우에서는 할일이 거의 없으며, 리눅스는 crontab에 한줄 추가하는 것으로 현실적인 trim 작업을 설정하면 된다는 것이다. 글이 용두사미가 되었지만, 알고 있으면 마음이 편하다.&lt;/p&gt;</description>
      <category>리눅스</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/284</guid>
      <comments>https://jamssoft.tistory.com/284#entry284comment</comments>
      <pubDate>Wed, 20 Jul 2022 09:18:44 +0900</pubDate>
    </item>
    <item>
      <title>거만하고 즐기는 자의 경기 높이뛰기</title>
      <link>https://jamssoft.tistory.com/282</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;우상혁선수가 2등으로 마무리를 했습니다. 체격조건이 다른 아시아인인 우상혁선수의 2등을 축하합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;거만해야 넘을 수 있다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;높이뛰기는 타이밍과 도약의 힘의 경기입니다. 걸쳐있는 장대를 깔보는 시선과 넘지 못하면 어떻하나 하는 걱정을 떨치기 위한 가장 쉬운 방법은 거만해 지는 것입니다. 긴장과 걱정이 실제 경기를 치루는 선수에게는 중압감으로 다가 옵니다. 실제 대부분의 선수는 경기에서는 넘지 못한 높이를 많이 넘었던 경험이 있습니다. 다른 말로 당연히 넘을 수 있는 높이라는 뜻입니다. 하지만 경기의 중압감과 자신의 정신을 콘트롤 하기위해 넘기전에 거만함을 올립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;노력하는 자는 즐기는 자를 이길 수 없다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공자님의 말씀입니다. 군대에서는 다른 표현으로 변형이 되었지만, 내용은 같으니 그냥 넘어가고, 우상혁선수의 웃음은 사람을 미소 짓게하는 신기한 힘이 있습니다. 절로 웃음이 나며, 보는 사람으로 하여금 행복을 느끼게 하는 신기한 미소입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;키+50cm 현재의 한계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우상혁선수는 188cm, 넘을 수 있는 현재의 한계치를 +50cm한 238cm로 보고 있습니다. 딱 10cm모자란 것을 넘지 못했지만, 한계란 말 그대로 한계, 언젠가 이 한계가 돌파 되겠지만, 한계의 10cm까지 경기에서 선보인 것에 감동입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1429&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZTHb/btrHDBr26hq/w5Eo3DD7lXKIdauZKWY8uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZTHb/btrHDBr26hq/w5Eo3DD7lXKIdauZKWY8uK/img.png&quot; data-alt=&quot;날아 오르는 우상혁&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZTHb/btrHDBr26hq/w5Eo3DD7lXKIdauZKWY8uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZTHb%2FbtrHDBr26hq%2Fw5Eo3DD7lXKIdauZKWY8uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1429&quot; height=&quot;852&quot; data-origin-width=&quot;1429&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;날아 오르는 우상혁&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ngNM6/btrHEXH69Bi/RcW65KFw5kWlyk79rQy9kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ngNM6/btrHEXH69Bi/RcW65KFw5kWlyk79rQy9kK/img.png&quot; data-alt=&quot;그냥 나는 바심(달심과 해깔림)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ngNM6/btrHEXH69Bi/RcW65KFw5kWlyk79rQy9kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FngNM6%2FbtrHEXH69Bi%2FRcW65KFw5kWlyk79rQy9kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1180&quot; height=&quot;724&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그냥 나는 바심(달심과 해깔림)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uiFY2/btrHEdLcfj0/8dJKLVttDdLxVW7ye0MKUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uiFY2/btrHEdLcfj0/8dJKLVttDdLxVW7ye0MKUk/img.png&quot; data-alt=&quot;거만해져라 그러면 넘을 것이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uiFY2/btrHEdLcfj0/8dJKLVttDdLxVW7ye0MKUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuiFY2%2FbtrHEdLcfj0%2F8dJKLVttDdLxVW7ye0MKUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;622&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;거만해져라 그러면 넘을 것이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;우상형선수가 잘 날아 줘서 기쁜 마음에 글을 남깁니다.&lt;/b&gt;&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <category>높이 뛰기</category>
      <category>우상혁</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/282</guid>
      <comments>https://jamssoft.tistory.com/282#entry282comment</comments>
      <pubDate>Tue, 19 Jul 2022 14:56:54 +0900</pubDate>
    </item>
    <item>
      <title>메모하는 습관 당신의 스트레스를 덜어준다.</title>
      <link>https://jamssoft.tistory.com/280</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자기성장을 위해 메모하는 습관을 들이라고 방송과 같은 매체에서 많은 말을 한다. 주로 성공을 다루는, 성공한 사람들이 나와서 이 메모의 습관이 얼마나 중요한지 말을 하지만, 실제 메모를 한다고 해도 성공한다는 보장은 없다. 단지 이런 성공한(정확히 그냥 유명해진) 사람들의 좋은 습관인 것만은 사실이다. 이 습관이 없어도 기억의 순발력(?)이 좋은 사람은 이 습관이 필요없을 수도 있다. 하지만, 사람은 나이가 들어가면서 이 기억의 순발력(?)은 점점 떨어지게 되기 때문이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;무엇을 메모해야하는 가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 것을 메모할 필요가 없다. 당연히 오늘 지나가던 교차로에 신호등이 어떻게 변했는 지 이런 것은 메모할 필요가 없 듯, 필요한 것을 메모해야 하는 데, 이 것은 2가지로 한정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;2. 이건 뭐였더라?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두가지로 한정하면 된다. 이 두가지는 생각해서 알아내는 법도 있지만, 대부분의 상황에서 그냥 떠오르거나, 다른 사람이 말을 해준다. 이 때 바로 적으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 학생이라면, &quot;이게 영어로 뭐지?&quot;하는 것을 적는 것도 좋은 방법이다.(번역은 집에 와서 해도 된다.)&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;&lt;b&gt;&quot;생각이 떠오르면 바로 적는다.&quot;&lt;/b&gt;라고 하지만 이 것을 해 본 사람은 이게 어렵다는 것을 알고 있다. 이유는 적으려고 종이든 핸드폰이든 꺼내는 동안 까먹는다. 당신이 바보가 아니고 사람이 원래 그렇다. 또한 이 순간에 머리에 두통이 발생한다. 이 두통은 생각보다 강해서 머리가 순간 강하게 지끈~한다(진짜 쎄다). 많은 사람들이 이 순간의 두통의 벽을 넘지 못해 메모의 습관을 들이기 힘들다. 이 벽을 낮추는 방법은 다음과 같다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;키워드만 생각한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급한 내용에 순간 떠오르는 것은 단순히 단어로 떠오르지 않는다. 때로는 두문장도 넘어가며, 생각의 속도가 빠른 사람은 한 단락정도까지 된다. 이 것을 적으려고 메모지나 스마트폰을 꺼내드는 동안 머리에 두통이 오며, 정작 펜을 들거나 메모어플을 켜면 &quot;하얗게 사라지고 만다&quot;. 이 것을 방지하려면, 떠오른 내용에 키워드만 &lt;b&gt;한번 &quot;중얼~&quot;하면 된다&lt;/b&gt;. 그럼 두통도 덜해지고 메모지에 기록할 때까지 사리지지 않는다. 기록의 첫번째는 글자는 바로 이 &lt;b&gt;&quot;키워드&quot;를 적으면 그만&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 키워드가 종이나 핸드폰에 적히면 이제 그 내용을 천천히 약간만 상세히 적으면 된다. 두통이 현격히 줄어드는 것을 확인할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자다가 떠오르는 것 적기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참 사람이 재미있게도 멋진 것은 누워서 잠들기 전이나 잠에서 깨기전에 떠오른다. 심지어는 꿈에서 떠오를 때가 있다. 이 것을 적어 보려고 잠에서 깨면, 이미 이 것은 전혀 떠오르지 않는다. 각성상태과 수면상태의 전환은 생각을 리셋하기 때문에 기억해내는 것도 어렵고 기억이 나서 키워드만 생각/중얼해도 이 것은 &quot;거의 최고의 두통&quot;을 경험하게 될 것이다. 필자의 추천 방법은 &lt;b&gt;&quot;그냥 적지 말라&quot;&lt;/b&gt;다. 적지 않아도 된다. 오히려 두통으로 인한 스트레스가 더 크다. 그리고 언젠가 깨어있는 각성상태에서 다시 떠오르니 그 때 적으면 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기록의 매체&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 매체는 3가지를 들 수 있는 데, 메모지, 플래너, 스마트폰이다. 이 중에서 필자는 메모지를 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플래너를 쓰고 싶은 사람은 늘 메모를 기록할 수있는 위치에 책깔피를 위치해 두어야 한다. 스마트폰을 쓰고 싶은 사람은 늘 홈화면에 메모어플의 메모창이 떠있게 미리 셋팅해 둬야 한다. 하지만, &lt;i&gt;&lt;b&gt;메모지가 아니면&lt;/b&gt; 플래너는 책깔피를 드는 순간 까먹고 말며, 스마트폰은 잠금이 있는 상황이 대부분이라 잠금 풀다가 까먹으니 &lt;b&gt;메모지를 사용할 것을 추천&lt;/b&gt;&lt;/i&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쓸 데없이 하나 추천을 하자면(광고아님), 다이소에서 파는 다음과 같이 필자얼굴 닮은(?) 메모지가 있다. 늘 손에 닿는 가방에 넣고 다니길 바란다. 손에 들고 다니면 좋은 데 그 정도까지는....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_20220719_131004.jpg&quot; data-origin-width=&quot;2267&quot; data-origin-height=&quot;2470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPVQZu/btrHFPPVcXh/4rArP30JJQtUrcUpVdLSt0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPVQZu/btrHFPPVcXh/4rArP30JJQtUrcUpVdLSt0/img.jpg&quot; data-alt=&quot;다이소에 가면 있는 2~3000원짜리 메모지 / 장수 많음 / 넘기기 좋음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPVQZu/btrHFPPVcXh/4rArP30JJQtUrcUpVdLSt0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPVQZu%2FbtrHFPPVcXh%2F4rArP30JJQtUrcUpVdLSt0%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;628&quot; height=&quot;684&quot; data-filename=&quot;IMG_20220719_131004.jpg&quot; data-origin-width=&quot;2267&quot; data-origin-height=&quot;2470&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다이소에 가면 있는 2~3000원짜리 메모지 / 장수 많음 / 넘기기 좋음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 좋은게 바로 적을 수 있고(미리 페이지를 펴두길 추천) , 적어서 찍~ 찢어서 다른 사람 줄 수도 있다. 아무 곳이나 넘겨서 바로 적고, 찢어서 맨위로 다시 대충 껴서 쓸 수 있는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 떠올랐는 데 메모지가 없다면, 주변에 보이는 종이 아무것에나 적는다. 유명한 일화로 계약서를 휴지에 적는 사례도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;필자가 가장 많이 적는 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설거지, 빨래, 청소 이 세가지다. 뭐 이런 것을 적느냐 할 수 있지만, 이 세가지의 특징은 빨리 처리해야하는 것이며, 안하고 있으면 계속 머리속에 떠오르는 데, 머리속에 가지고 있으면 스트레스가 계속 느껴지는 참 신기한 내용들이다. 또한, 단순한 잡일(?)이라 완료를 했을 경우 성공의 만족감이 발생해서 좀 더 난이도 있는 다른 일을 시작하기에 좋은 것들이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메모하는 습관으로 계속 떠오르는 할 일로부터 벗어나기를 바란다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; 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;간단한 일을 다른 사람에게 부탁할 때, 일이 바쁜 사람과 일이 적은 사람중에 일을 바쁜 사람에게 부탁하라는 말이 있다. 모든 상황에 옳은 것은 아니지만, 바쁜 사람은 이 간단한 것을 빨리 처리해 버리기 때문에다. 적은 사람은 일이 적어서 오히려 뒤로 밀릴 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 적는 것만으로 당신이 움직일 수 있는 도화선이 된다. 사람마다 다르겠지만, 적으면 이 후에 보통 이 행동을 하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인생은</category>
      <category>메모습관</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/280</guid>
      <comments>https://jamssoft.tistory.com/280#entry280comment</comments>
      <pubDate>Tue, 19 Jul 2022 13:17:45 +0900</pubDate>
    </item>
    <item>
      <title>탄수화물은 죄가 없다.</title>
      <link>https://jamssoft.tistory.com/279</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;다이어트를 방해하는 것으로 탄수화물을 지적하는 이가 많고 심지어는 탄수화물은 몸에 안좋은 것으로 잘 못 인식이 되어 버렸다. 이는 탄수화물과 당을 잘 구분하지 못해서 발생한 문제인데.. 또한 식이섬유와 같이 흡수량의 차이를 발생시키는 물질을 고려하지 않는 결론이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kalguksu-g52e2d4681_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDqR8R/btrHEXmVRIz/U6ddV8K4GTknrx5KI0YO41/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDqR8R/btrHEXmVRIz/U6ddV8K4GTknrx5KI0YO41/img.jpg&quot; data-alt=&quot;이정수님이 찍어서 공개 해준 사진, 감사합니다~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDqR8R/btrHEXmVRIz/U6ddV8K4GTknrx5KI0YO41/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDqR8R%2FbtrHEXmVRIz%2FU6ddV8K4GTknrx5KI0YO41%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;427&quot; data-filename=&quot;kalguksu-g52e2d4681_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이정수님이 찍어서 공개 해준 사진, 감사합니다~&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;당신의 활동에 절대적으로 필요한 탄수화물&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 활동은 머리를 쓰는 것, 몸을 움직이는 것 이 두가지에 해당한다. 이 둘은 폭발적인 에너지가 필요하며, 제때 공급되지 않으면, 현기증이 나타나거나, 몸을 움직이기가 무거워진다. 특히 머리를 쓰는 사무직이나 책상에서 공부를 하는 학생의 경우 이 탄수화물(여기서는 정확히 당)이 이 역할을 한다. 단백질과 지방도 당으로 변화되는 데, 이 는 바로 사용할 당이나 탄수화물이 부족해서 발생하게 된다. 공부를 하거나, 심한 운동을 할 때 탄수화물이 없다는 것은 오히려 성적이 떨어지는 결과가 될 수 있다. 그래서 아침밥을 먹는 것이 정말 중요하게 된다. 아이의 성적에 신경을 많이 쓰는 학부모라면 식단 조절이 성적을 바꿀 수 있다는 것을 잊지 말라는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;올바른 탄수화물 섭취법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탄수화물은 입에 들어가는 순간부터 당으로 변한다. 예가 좀 지저분하지만, 짜장면을 먹을 때, 침을 짜장면이 조금 떨어지는 것만으로 나도 모르게 짜장면에 들어간 침으로 인해 고체같았던 짜장면이 액체로 바뀌는 것을 볼 수 있다. 대표적인 탄수화물 덩어리인 녹말이 분해가 되며 액체 형태로 보여지가 된다. 이 것이&amp;nbsp; 장에서 흡수가 되는 데, 이게 흡수가 너무 빠르게 되면, 혈액속에 당이 빠르게 증가하게 된다. 당뇨병과 같은 질병을 앓고 있는 사람에게는 치명적일 수 있다. 이 것의 흡수를 천천히 되도록 도와주는 것이 바로 식이섬유다. 무엇을 먹든지 야채와 같이 식이섬유가 많은 것과 동시에 먹는 것이 중요하게 된다. 쉽게 설명하면 밥을 그냥 먹는 것보다 상추하나라도 쌈을 싸서 먹는 것이 중요하다는 것이다. 따로 먹어도 도움이 되지만, 같이 먹는 것이 많은 도움이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실제 심각한 문제를 읽으키는 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 밥을 먹는 것은 탄수화물을 먹는 것이지만, 이 밥이라는 친구에는 식이섬유가 포함되어 있다. 쌀을 삶고 찌기만한 온전한 형태의 밥은 문제가 덜하지만, 이 쌀/밀 등을 가공한 쌀가루/밀가루가 재료인 음식은 식이섬유가 다 끊어져 버려 위에서 설명한 역할을 잘 해내지 못한다. 따라서 온전한 형태가 남아 있는 방식으로 섭취해야 한다. 그나마 이 것은 양반이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;h4 data-ke-size=&quot;size20&quot;&gt;암세포가 좋아하는 탄수화물&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9MytZ/btrHAxQhuRd/Yelk59JgdGm5jly5X8dg31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9MytZ/btrHAxQhuRd/Yelk59JgdGm5jly5X8dg31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9MytZ/btrHAxQhuRd/Yelk59JgdGm5jly5X8dg31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9MytZ%2FbtrHAxQhuRd%2FYelk59JgdGm5jly5X8dg31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;441&quot; height=&quot;353&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 것은 말이 거꾸로 되어있는 데, 암세포가 좋아는 것이 아니고, 우리 몸은 흡수된 영양분을 필요한 곳으로 보내는 시스템으로 구성되어 있어서다. 즉, 몸에 이 탄수화물이 많이 필요한 곳에 자동으로 보내지게 되는 데, 이 암세포가 탄수화물을 모으는 방식으로 크기가 커지게 된다. 암덩어리의 위치를 파악할 때, 이 당을 이용하여 뭉쳐있는 지점을 찾는 방식으로 알아내는 이유기도 하다. 따라서 탄수화물을 필요이상으로 먹는 것이 문제가 되는 부분이 바로 이 부분이다. 여기서의 결론이 식사량을 필요한 만큼만 먹으라는 것이다. 배불리 먹는 것이 않 좋은 이유다. 암환자들이 이 탄수화물의 수를 줄이려 먹는 식이섬유의 양은 밥:야채가 1:1 혹은 야채가 더많은 이유다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암세포의 메커니즘이 다 밝혀지지 않은 상황이라 좀 조심 스러운 부분이 많은 내용이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 암환자들이 의사선생님께 자주하는 질문중에 &quot;제가 뭘 잘못해서 암에 걸렸을까요?&quot;가 있다. 이 것에 의사님들의 답은, &quot;운동부족, 먹지말라는 것 먹어서, 많이 먹어서&quot; 가 &lt;b&gt;아니고 &quot;단지 운이 나빴다&quot;&lt;/b&gt;라는 답을 해준다. 이 말의 의미는 위에서 기술한 아직 과학적으로 다 밝히지 못했고, 여러 이유가 너무 다양해서 아직은 &quot;운&quot;이라고 밖에 말할 수 없다는 뜻이다. 이 것을 가장 단순한 [운]으로 해석해서는 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;지나가는 이야기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리몸은 어떻게 필요한 영양소를 알아내는가? 대표적인 기관이 바로 신장이다. 장에서 흡수된 물질은 심장의 힘으로 온 몸을 돌게 되는 데, 신장을 거치면서, 현재 혈액속의 영양분, 미네랄의 농도에 따라 많이 배출하거나 적게 배출되게 된다. 영양분/미네랄이 많으면, 이 것은 소변으로 나오게 되고, 적으면 나오는 양이 적어 자동 조절이 되는 시스템이다. 이 때 주의 해야 할 것은 수분의 양에 따라 배출량이 결정된다는 것이다. 물을 적게 섭취하면 몸에 영양분과 미네랄이 적어도 농도가 진하기 때문에, 오히려 더 빠질 수가 있고, 물이 많으면 덜 빠질수도 있다. 거꾸로일 수도 있다. 따라서 체내의 영양분/미네랄을 잘 조절하려면, 필요한 물을 가장 &lt;b&gt;적당히&lt;/b&gt; 마시는 것이 중요하게 된다. 소변의 색깔로 오늘 얼마나 땀을 흘렸는 지를 파악하며 수분을 보충하거나 덜 마시면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다이어트 주제의 카테고리에 있는 글이지만, 건강을 위한 글이기에 좀 더 결론을 내면.. 나쁜 순서에 따라....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 당으로만 된 음료수 : 사실상 대부분의 사람에게 않좋다. 당부족현상이 발생하는 저혈당의 사람은 이 것이 사람을 살리는 방법이지만, 저혈당이 아닌 사람은 이런 음료수는 마시지 않기를 권한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 밀가루/쌀가루 음식 : 되도록이면 적게 먹기를 권장한다. 이런 류가 맛도 좋고, 먹기도 좋지만 당신의 몸에 차근차근 쌓여지게 되어 살이 찌거나, 질병을 잃으키는 물질이 되기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 과일 : 사람들이 마냥 좋다고만 생각한 이 과일은 수분공급과 빠른 당 공급으로 사용되면 좋지만, 일반에게는 많은 양을 권고하지는 않는 데, 실제 하루에 필요한 양은 오렌지 2쪽으로 정해져 있는 것으로 알고 있다. (2개가 아니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 온전한 형태의 음식을 권장한다. 아침에 갈아 마시는 야채주스는 건강식이 아니다. 갈아버리는 과정에서 오히려 밀가루/쌀가루같이 식이섬유가 상당량 잘려버리기에 그냥 과일 그 자체로 먹어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 눈에 보이는 야채는 야채마다 다르지만 웬만하면 그냥 다 먹는 것이 좋다. 이게 야채의 종류마다 달라 설명은 힘들지만, 양파같은 것은 보이는 족족 먹는 것을 권장한다.(냄새로 인해 싫은 사람이 많겠지만.. 당신이 건강해지기를 바란다면..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;799&quot; data-origin-height=&quot;529&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbqEt1/btrHCoeW3hX/BB2BmXO4XGvHedxAthA8uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbqEt1/btrHCoeW3hX/BB2BmXO4XGvHedxAthA8uk/img.png&quot; data-alt=&quot;당신이 잘 못 알고 있는 건강, 건강은 운동도 필요하지만, 운동보다 밸런스다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbqEt1/btrHCoeW3hX/BB2BmXO4XGvHedxAthA8uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbqEt1%2FbtrHCoeW3hX%2FBB2BmXO4XGvHedxAthA8uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;799&quot; height=&quot;529&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;529&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;당신이 잘 못 알고 있는 건강, 건강은 운동도 필요하지만, 운동보다 밸런스다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;중요한 내용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 의사도 영양사도 아니다. 간단히 말하면 뇌피셜이 되어버리는 데, 이 내용은 나중에 과학/의학자들이 더 연구가 진행되면 더 정확한 결론이 나올 것이고, 심지어는 내용이 전혀 뒤빠뀔 수 있다. 현재의 시점에서 할 수있는 건강의 노력이 여기까지 일뿐인 것이다. 이 글의 내용을 절대 진리로 받아 들여서도 안된다는 뜻이다. 다시 말하면, 건강한 몸을 위해 할 수 있는 최대치가 이 것인 것 뿐이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;관련된 이상한 내용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전 유럽의 어느나라에서는 담배가 암을 예방한다고 초등학생들의 등교길에 나누어 주었다. 지금 생각하면 어의가 상실되지만, 그 때는 그랬다. 이후 잘못된 정보라는 것이 밝혀지고, 결과는 정반대로 나게 된다. 이 글도 그럴 수 있다는 뜻이다.&lt;/p&gt;
&lt;p 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>DIET:다이어트</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/279</guid>
      <comments>https://jamssoft.tistory.com/279#entry279comment</comments>
      <pubDate>Tue, 19 Jul 2022 11:34:39 +0900</pubDate>
    </item>
    <item>
      <title>SSD를 오래 썼더니 느려지네.. TRIM과 GC</title>
      <link>https://jamssoft.tistory.com/278</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;쓸데없는 서론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSD가 나온지 이제 꽤 시간이 지났다. 기본 부팅시스템은 SSD를 대부분 사용하고 있는 상황이고, 여유가 되는 사람들은 SSD로 데이터 저장공간으로 사용한다. 나스 등의 대용량이 필요한 사람의 경우 여전히 HDD를 추가로 사용하지만 SSD가격이 점점 낮아지며, 빠르게 HDD를 대체하고 있는 것은 사실이다.&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;310&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bINmbJ/btrG8HFWpi9/zpoYxU9WVMtVGPhbMKqU8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bINmbJ/btrG8HFWpi9/zpoYxU9WVMtVGPhbMKqU8K/img.png&quot; data-alt=&quot;나에게 신세경을 맛보게 해준 첫 SSD 삼성 830/128G&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bINmbJ/btrG8HFWpi9/zpoYxU9WVMtVGPhbMKqU8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbINmbJ%2FbtrG8HFWpi9%2FzpoYxU9WVMtVGPhbMKqU8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;310&quot; height=&quot;222&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나에게 신세경을 맛보게 해준 첫 SSD 삼성 830/128G&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SSD 속도가 느려짐&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSD를 처음 사와서 속도 측정을 해 보면 정말 아름다운 속도를 보여준다. 심지어는 USB로 연결할 경우 버스속도의 최대치를 뽑아 주는 녀석이다. 이 것은 SSD가 버스속도보다 빨라서 제한에 걸리는 상황이다. 이런 SSD를 계속사용하다보면 느려지는 것을 느끼게 되는 데, 필자의 경우 연속전송속도가 50MiB/s 밖에 안나오는 것을 경험하는 일이 잦아 졌다. 하지만 SSD의 구조상 오래 쓴다고 해서 이렇게 급격하게 느려지는 것은 말이 되지를 않는다. 뭔가 잘 못되었거나, 아니면 이 것이 정상일 수있다. 특히 오랜동안 사용한 SSD의 경우라도 정상인 경우가 대부분이다. 필자가 5년넘게 쓴 SSD가 이런 현상이 발생하여(이미 이전부터 시작된 증상이다) 짱구를 떼굴떼굴 굴리기로 했다. 오래쓴다고 느려질리는 없으니...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SSD의 Wear-Leveling&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSD의 칩의 셀은 수명이 그리 좋지 않다. 쓰는 횟수가 정해져 있기에, 이 쓴 횟수가 되면, SSD의 Controller는 이 셀을 잠궈버리고, 한번 더 쓰면 더 이상 사용하지 못하게 표시를 한 후 죽여 버린다. 저장하려는 데이터는 다른 셀에 써버리면 그만 이다. 물론 더이상 쓸 공간이 없다면 전체 SSD가 잠기면서 읽기만 가능한 상태로 바꿔버린다. MLC셀을 사용한다고 해도 1만번정도 밖에 되지 않기 때문에 쓰기작업을 하면 가장 쓰기가 덜될 셀에 쓰게 되고, 셀을 계속 바꿔가면 작업을 하도록 하는 것이 Wear-Leveling이다. 즉 전체셀을 순환하는 방식을 써서 Lock이 되는 것을 최대한 방지하고, 수명을 늘리는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 Wear-Leveling의 알고리즘을 얼마나 잘 만드느냐에 따라 수명은 천차만별이 되고, 제조사마다 더 오래쓸 수 있게 계속 이 알고리즘을 개발/수정하고 있다. 참고로 너무 오래전의 USB메모리가 아니면, USB메모리도 이 Wear-Leveling 기능을 이미 수행하고 있다. SSD만의 고유한 특징이 아니라는 것이다. 간단히 말하면 TLC(약1000회 쓰기)가 판을 치는 세상에 USB나 sdcard에 이 기능이 없다면 한달도 못쓰고 잠겨 버릴 수 밖에 없다. 혹시나 USB Stick이나 SD카드에 이 기능이 없다고 생각하는 사람들이 있을 까봐 적어 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;속도가 느려지는 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSD는 데이터를 써야 할 때, 이미 깨끗이 지워진 셀이 있으면 바로 지워져 있는 셀에 써야 하지만, 이런 셀이 없다면, 셀을 지우고 써야 한다. 지우는 과정과 쓰는 과정이 모두 느린 작업으로, 그 과정은 다음과 같이 좀 복잡해서 현격한 속도 저하가 발생하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 써야하는 셀의 데이터를 캐쉬로 읽어 저장해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 셀을 지운다.(느림)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 캐쉬했던 데이터와 써야할 데이터를 쓴다.(느림) [대부분의 상황에선 다른 셀에 쓰고 이 부분은 trim처리한다.]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 작업은 이미 깨끗이 지워진 셀이 없을 때 발생하기 때문에, 쓰는 데이터마다 이 작업이 지속적으로 일어나게 된다(깨끗한 셀이 전혀 없으니.. ). 이 과정은 중국산 꾸진 SSD의 경우 거의 1~10초 멈춤 현상까지도 발생시킨다. 이 속도 저하를 방지하기 위해 TRIM기능이 추가되게 된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;TRIM&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TRIM은 데이터가 지워지면 OS가 &quot;나 여기여기 지웠어&quot;라고 SSD에 알려주는 기능이다. 여기서 알려주는 주체는 &quot;OS&quot;라는 것이 중요한 데, OS는 처음 부팅직후에는 지워진 파일이 없으니(물론 전혀 없지는 않을 것이다.), 삭제가 시작된 시점부터 이 명령을 삭제가 발생할 때마다 혹은 한번에 몰아서 보내게 된다. 여기서 원래 존재하면 파일에 덮어 쓰는 것도 실제는 [삭제후 쓰기]가 되니, 해당위치에 TRIM명령을 SSD로 전송하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 것은 TRIM명령은 &quot;여기가 지워졌어&quot;라는 명령을 받은 SSD가 이 셀을 바로 지우지는 않는 다는 것이다. 지워졌다는 것만을 표시해두고, 나중에 아무런 작업이 없을 때, 슬~슬~(이게 중요) 지우게 된다. 슬~슬~ 지우기 때문에 지우는 작업은 꽤 시간이 필요하다. 왜 &quot;슬슬&quot; 지우는 지는 이 후에 내용과 접목되는 부분이다. 여기서 말하고 싶은 것은 바로 지우는 것이 아니며, OS와 의 지속적인 커뮤니케이션이 있어야 한다는 것이다. OS가 지워진 부분에 대한 TRIM을 보내지 못하면, 그 셀은 쓰기 작업이 발생하면 속도 저하가 일어나 버리게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;왜 슬~슬~ 지워 그냥 할 일 없을 때 쭉~쭉~ 지우면 되지?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NTFS파일시스템의 경우 4KiB를 섹터 크기를 주로 사용된다(당연히 포맷할 때 변경이 가능하다.). 1바이트짜리 파일을 저장해도 4KiB의 크기를 잡아 먹는다는 뜻이다. SSD는 내부에 Page라는 녀석의 크기는 4KiB정도로 잡혀있어서 4KiB의 NTFS와 궁합이 잘 맞게 되어있다. 하지만 SSD의 &quot;지우기&quot;는 128K~1M[이 수치는 시간이 지날 수록 계속 변하게 될 것이다.]단위로만 이루어 진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 1page만 TRIM명령이 발생한 BLOCK의 다른 PAGE에 데이터가 있다면, 이 것은 &quot;지우기&quot;를 할 수 없다. 다른 곳으로 옮기고 지우기를 할 수 있지만, 다른 곳의 수명을 갉아 먹는 &quot;쓰기&quot;는 오히려 전체 수명을 줄여버리기 때문에 함부로 할 수가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러다 보니, TRIM명령이 와도 지우지 않고 애매하게 남아 있는 block들이 쓰면 쓸수록 많아지게 된다. 아무리 윈도우의 드라이브 속성에서 [최적화]버튼을 눌러대도 이 상황은 그대로 남게 된다. 따라서 지우기 작업은 block내의 모든 page가 TRIM된 경우 수행 되며, 이 것도 아무런 할일이 없을 때나 수행되게 된다. 따라서 쓰기작업이 다시 시작되면 위의 느려지는 이유에 해당되어 속도 저하가 발생하게 된다. 게다가 &quot;지우기&quot;는 block의 크기 만큼 일어나기 때문에 &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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&quot;지우기&quot;작업을 할 수 있는 시간을 줘야 한다.[이 글의 핵심]&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSD가 &quot;이제 할 일도 없는 데 슬슬 청소나 할까?&quot;하는 생각이 들 때 까지, 아무 작업이 없어야 한다. 그리고 어떤 읽기/쓰기 들의 명령이 오는 순간부터 이 작업은 바로 중지 되기 때문에, 위의 &quot;애매한 블록&quot;은 그대로 남게 된다. 따라서 이 상황을 강제로 연출 시켜야 한다. 마이크론이 제시하는 방법은 다음과 같다. 좀 어처구니가 없지만 느려진 SSD를 다시 우리가 생각하는 최고의 속도까지는 아니라도 일정수준으로 다시 끌어 올리려면 이 어처구니가 없는 작업이 필요한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;첫번째 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 컴퓨터를 재부팅하거나 켜서 바이오스에 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 그냥 8시간 켜 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 여기서 아무런 작업이 발생하지 않으니 &quot;지우기&quot;작업이 발생하기 된다. 얼마나 슬~슬~ 지우는 지 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;두번째 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 컴퓨터를 끌 수 없을 때 쓰는 방법이다. 우낀건 절전모드를 이용하게 때문에 컴터를 사용중에는 의미가 없게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 제어판 -&amp;gt; 하드웨어 및 소리(Window버전마다 다를 수도) -&amp;gt; 전원옵션[이걸 찾아야 된다] -&amp;gt; 내부의 어딘가에 -&amp;gt; &lt;b&gt;하드디스크 절전(사용안함)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 절전되기를 기다리고 8시간 동안 난 잠이나 잔다(여기서 실제 &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;지우기&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;애매한 block&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;포맷하고 다시 깔면 모든 block이 지워질 수는 있기에 GC가 끝나면, 다시 처음의 속도를 즐길 수는 있다. 하지만 5~9년정도에 한번 까는 필자는 새로운 SSD를 산 다음에나 할 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여기까지가 결론이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;추가로 GC는 뭐야?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 &quot;지우기&quot;작업이 일어나는 실제 작업을 &quot;GC&quot;라고 한다(꼭 그런것은 아니다). 컴퓨터를 사용하고 있어도 중간중간 이 것으로 &quot;지우기&quot;작업이 일어나지만, 위에서 말한 듯, &quot;쳐 놀때&quot; 잘 시작되기 때문에 강제로 아무일도 하지 않게 해야 한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SSD가 TRIM 기능이 없다면&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오래된 SSD라서 TRIM기능이 없으면, 셀에 저장이 일어날 때마다 빈 셀인지 검사하고 빈 셀이 아니면 속도가 떨어지게 된다. TRIM기능이 없어도 쓰기가 발생하면 다른 셀에 저장하고 이 셀을 삭제됨이라고 표시하면 되기 때문에 이 후 &quot;지우기&quot;작업을 수행할 수 있게 된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SSD가 TRIM기능이 있어도 못쓰는 경우&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OS의 제어권이 없는 경우다. 대표적으로 NAS나 DAS같이 그 중에서도 RAID같은 것으로 묶여있는 것은 OS가 어찌 할 방법이 없어서 TRIM신호가 의미가 없어진다. 이런 상황에서의 속도 저하를 막기위해 있는 것이 &quot;능동형 GC&quot;다. SSD의 상품정보에 있는 &quot;GC&quot;가 이 능동형 GC를 말한다. 그냥 GC기능은 당연히 SSD라면 있는 것이다. 이 &quot;능동형 GC&quot;가 되는 것을 상품정보에 표시해 둔 것이다. 그리고 위에 8시간동안 놀게하는 것이 이 &quot;능동형 GC&quot;를 시작되게 하는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 NAS, DAS 등에서 지우기 작업은 이 &quot;능동형 GC&quot;가 없으면 정말 속도저하가 있는 상태로 동작하게 된다. 하지만 워낙 작업량이 많은 NAS,DAS라 얼마나 잘 동작될지는 SSD제조사가 잘 만들어 놓았기를 기대하는 수밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 이 정보가 100%옭다고는 할 자신은 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/278</guid>
      <comments>https://jamssoft.tistory.com/278#entry278comment</comments>
      <pubDate>Wed, 13 Jul 2022 11:51:44 +0900</pubDate>
    </item>
    <item>
      <title>Javascript Base64 한글 등 특수문자 처리   참내..</title>
      <link>https://jamssoft.tistory.com/274</link>
      <description>&lt;p style=&quot;text-align: center;&quot; 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;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m0dPL/btrGjFhOBpb/2Pm8XNww8r9kiWyzAkIbg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m0dPL/btrGjFhOBpb/2Pm8XNww8r9kiWyzAkIbg1/img.png&quot; data-alt=&quot;세상에 있는 잘못된 Javascript용 base64사용법들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m0dPL/btrGjFhOBpb/2Pm8XNww8r9kiWyzAkIbg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm0dPL%2FbtrGjFhOBpb%2F2Pm8XNww8r9kiWyzAkIbg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;400&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;세상에 있는 잘못된 Javascript용 base64사용법들&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UTF-8로 처리되지않는 btoa 함수&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;javascript에서 base64 인코딩을 하려고 하던 중 좀 어의가 없는 상황을 만났다. 어찌보면 틀렸다고도 할 수 있고, 맞다고도 할 수 있지만...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제의 발생은 한글은 처리가 안된다는 것이다. 한글을 입력할 경우 다음과 같은 오류[에러]를 console log창에 서 확인 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1656851376219&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let a = 'abcd';
let b = '갓댕치';
console.log( btoa( a ) ); // [YWJjZA==] // 정상
console.log( btoa( b ) ); // &amp;lt; ERROR
// 불여우 : Uncaught DOMException: String contains an invalid character
// 중금속 : Uncaught DOMException: Failed to execute 'btoa' on 'Window' 
//         The string to be encoded contains characters outside of the Latin1 range.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글을 넣으면 위와 같이 문제가 발생한다. 한글 뿐만아니라 ASCII의 기본 문자를 제외하고는 전부 터지는 오류다. 이 곳에는 당연히 이모티콘도 문제에 포함된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Base64를 왜 쓰는지 모르는 이가 카피하는 코드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글을 뒤져보면 다음과 같은 코드가 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1656852559291&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// base64 인코딩
s = btoa(encodeURIComponent(str)); 

// base64 디코딩
s = decodeURIComponent(escape(atob( str )));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드를 javascript에서만 사용한다면 문제가 없지만, base64를 쓰는 이유가 text로만 표현이 가능한 문서에 binary데이터를 넣거나, text로만 전송해야하는 곳에 사용하려고 나온 것인데, 인코딩 결과가 UTF-8이 아니라 &lt;span style=&quot;color: #000000;&quot;&gt;x-www-form-urlencoded로 나오기 때문에 받는 쪽이나 문서에 삽입하려는 경우, decodeURIComponent같은 작업을 추가로 해줘야 한다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;base64를 쓰는 또다른 이유가 생성된 데이터가 원본에 33%만 커진다는 장점을 이용하는 것인 데, 이 것은 크기가 대따 커진다. base64를 쓰려는 의도와 전혀 맞지 않는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;현실적으로 쓰기 좋은 코드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 MDN에서 제시하는 방법은 다음과 같다.(좀더 정확히 &lt;a href=&quot;https://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html&quot;&gt;Johan Sundstr&amp;ouml;m&lt;/a&gt; 님하가 올린 것을 MDN에 기재됨)&lt;/p&gt;
&lt;pre id=&quot;code_1656851886619&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = '갓댕치';
str = btoa(unescape(encodeURIComponent( str )));
console.log( 'result =[' + str + ']'); //  result =[6rCT64yV7LmY]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법도 문제가 있다.. 이 건 뭐 어떻하라는 건지..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 unescape함수가 워낙 예전..javascript가 나올때 거의 최초에 나온 함수라서 이게 &quot;deprecated될까? 말까?&quot;한 상황이다. 하지만 이게 UTF-8을 쓰기에는 가장 잘 만들어진 코드라서 Johan Sundstro[움라우트]m님하의 코드를 올리겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1656853706976&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function utf8_to_b64( str ) {
  return window.btoa(unescape(encodeURIComponent( str )));
}

function b64_to_utf8( str ) {
  return decodeURIComponent(escape(window.atob( str )));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 escape, unescape함수가 사라지지 않는 그 날까지 사용가능기에, 사라질 때쯤 다른 코드를 사용하기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단은 이 코드를 퍼다 쓰는 것을 필자는 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추가로 알아두면 좋은 것이 js의 string타입은 UTF-16을 쓰고 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레퍼런쑤&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 이 글을 작성하기위한 레퍼런스들 인데, 원래 필자는 위의 코드들이 맘에 안들어 새로 짜서 올리려고 했지만, Johan님하의 코드가 현실적으로 가장 깔끔하기 때문에 그냥 쓰기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_1_%E2%80%93_escaping_the_string_before_encoding_it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_1_%E2%80%93_escaping_the_string_before_encoding_it&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656853944635&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Base64 - MDN Web Docs Glossary: Definitions of Web-related terms | MDN&quot; data-og-description=&quot;Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_1_%E2%80%93_escaping_the_string_before_encoding_it&quot; data-og-url=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Base64&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fSkdz/hyOYszqmYj/I8rDJydmywkw4yfTlCKNCK/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_1_%E2%80%93_escaping_the_string_before_encoding_it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_1_%E2%80%93_escaping_the_string_before_encoding_it&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fSkdz/hyOYszqmYj/I8rDJydmywkw4yfTlCKNCK/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080');&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;Base64 - MDN Web Docs Glossary: Definitions of Web-related terms | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UTF-8용으로 가장 정확한 코드의 설명과 링크, 이 링크의 하단에 escape를 쓰지않고 일일이 작성한 코드가 있다. 그 코드를 escape함수가 사라지는 그날 적용을 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656854061567&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;TextDecoder - Web APIs | MDN&quot; data-og-description=&quot;The TextDecoder interface represents a decoder for a specific text encoding, such as UTF-8, ISO-8859-2, KOI8-R, GBK, etc. A decoder takes a stream of bytes as input and emits a stream of code points.&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder&quot; data-og-url=&quot;https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/budt6P/hyOYicvDI4/W5X7KVRKVV6cH75hc5R8LK/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/budt6P/hyOYicvDI4/W5X7KVRKVV6cH75hc5R8LK/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080');&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;TextDecoder - Web APIs | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The TextDecoder interface represents a decoder for a specific text encoding, such as UTF-8, ISO-8859-2, KOI8-R, GBK, etc. A decoder takes a stream of bytes as input and emits a stream of code points.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 링크는 utf-8과 javascript의 string을 서로 변환하는 오브젝트에 대한 링크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 실험실 버전이지만, 브라우저들이 잘 지원하니 문제 없이 쓸 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;추가 내용 - 2024년 11월 28일&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 링크들에 변화도 있고, 이제 완전히 escape함수를 보내줘야 할 것 같아서 아예 만들어 버렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음의 링크를 통해 새로운 내용을 확인 하기 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yourbread.duckdns.org/?cmd=board_view_article&amp;amp;page=1&amp;amp;category=html_css&amp;amp;article_no=252&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yourbread.duckdns.org/?cmd=board_view_article&amp;amp;page=1&amp;amp;category=html_css&amp;amp;article_no=252&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1732745940684&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;javascript base64 js코드 - 그냥 만듬 - What Should I do?&quot; data-og-description=&quot;javascript base64 js코드 - 그냥 만듬 2024-11-28 07:04 javascript base64 js코드 - 그냥 만듬 이 글과 관련된 이전 글의 링크는 다음과 같다. 관심있는 사람은 한번 읽어보기를 바란다. Javascript Base64 한글 등 특&quot; data-og-host=&quot;yourbread.duckdns.org&quot; data-og-source-url=&quot;https://yourbread.duckdns.org/?cmd=board_view_article&amp;amp;page=1&amp;amp;category=html_css&amp;amp;article_no=252&quot; data-og-url=&quot;https://yourbread.duckdns.org/?article_no=252&amp;amp;category=html_css&amp;amp;cmd=board_view_article&amp;amp;page=1&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://yourbread.duckdns.org/?cmd=board_view_article&amp;amp;page=1&amp;amp;category=html_css&amp;amp;article_no=252&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yourbread.duckdns.org/?cmd=board_view_article&amp;amp;page=1&amp;amp;category=html_css&amp;amp;article_no=252&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;javascript base64 js코드 - 그냥 만듬 - What Should I do?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;javascript base64 js코드 - 그냥 만듬 2024-11-28 07:04 javascript base64 js코드 - 그냥 만듬 이 글과 관련된 이전 글의 링크는 다음과 같다. 관심있는 사람은 한번 읽어보기를 바란다. Javascript Base64 한글 등 특&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yourbread.duckdns.org&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>web/javascript</category>
      <category>atob</category>
      <category>base64</category>
      <category>btoa</category>
      <category>javascript</category>
      <category>이모지</category>
      <category>이모티콘</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/274</guid>
      <comments>https://jamssoft.tistory.com/274#entry274comment</comments>
      <pubDate>Sun, 3 Jul 2022 22:24:19 +0900</pubDate>
    </item>
    <item>
      <title>JTimer Privacy Note</title>
      <link>https://jamssoft.tistory.com/273</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;JTimer App does not collect any personal informations. END!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JTimer는 어떠한 개인정보도 수집하지 않습니다. 끝!&lt;/p&gt;</description>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/273</guid>
      <comments>https://jamssoft.tistory.com/273#entry273comment</comments>
      <pubDate>Thu, 30 Jun 2022 05:14:42 +0900</pubDate>
    </item>
    <item>
      <title>윈도우10 단축키 PDF 1페이지짜리 파일입니다.</title>
      <link>https://jamssoft.tistory.com/272</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;Window 10 Shortcuts for Korean&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인하고는 거리가 먼 사람이라 만드느라 죽는 줄 알았네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우11에도 일단 다 먹히는 걸로 생각되기에 10을 기준으로 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1장짜리니 프린트해서 유리판아래 두시거나, 벽에 붙여 두시면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주쓰지는 않지만 알아두면 좋은 것은 BOLD/Italic처리 해 두었으며, 빠진 단축키도 있지만 거의 안쓰거나, 동작을 정확히 파악하지 못한 녀석들 입니다. 또한, &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;그럼 많이 다운 받아 쓰시길....&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;1125&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTYHME/btrF3gC4CCc/w50JvYtNm6o1OiZMKyXG80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTYHME/btrF3gC4CCc/w50JvYtNm6o1OiZMKyXG80/img.png&quot; data-alt=&quot;이 거 받지 마시고 아래 PDF를 받으세요!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTYHME/btrF3gC4CCc/w50JvYtNm6o1OiZMKyXG80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTYHME%2FbtrF3gC4CCc%2Fw50JvYtNm6o1OiZMKyXG80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;745&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 거 받지 마시고 아래 PDF를 받으세요!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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/mRU6C/btrF5O5LJjc/K3UlZlXwxHQ9a3qDWvYT0K/WINDOW10%20%EB%8B%A8%EC%B6%95%ED%82%A4.pdf?attach=1&amp;amp;knm=tfile.pdf&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;WINDOW10 단축키.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.12MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 단축키를 보려면 다음의 마이크로소프트의 링크를 따라 가면 보실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#WindowsVersion=Windows_10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#WindowsVersion=Windows_10&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656531516378&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Keyboard shortcuts in Windows&quot; data-og-description=&quot;Keyboard shortcuts are keys or combinations of keys that provide an alternative way to do something that you&amp;rsquo;d typically do with a mouse.&amp;nbsp;If you are trying to take a screenshot or screengrab, see How to take and annotate screenshots. Click an option bel&quot; data-og-host=&quot;support.microsoft.com&quot; data-og-source-url=&quot;https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#WindowsVersion=Windows_10&quot; data-og-url=&quot;https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#WindowsVersion=Windows_10&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#WindowsVersion=Windows_10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#WindowsVersion=Windows_10&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Keyboard shortcuts in Windows&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Keyboard shortcuts are keys or combinations of keys that provide an alternative way to do something that you&amp;rsquo;d typically do with a mouse.&amp;nbsp;If you are trying to take a screenshot or screengrab, see How to take and annotate screenshots. Click an option bel&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;support.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/272</guid>
      <comments>https://jamssoft.tistory.com/272#entry272comment</comments>
      <pubDate>Thu, 30 Jun 2022 04:47:39 +0900</pubDate>
    </item>
    <item>
      <title>펜제너레이션 펜+ ADP-611 앱과 출력지[닷패턴 페이퍼]</title>
      <link>https://jamssoft.tistory.com/271</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;역시 슬픈 일은 여지없이 발생한다. 좀 괜찮은 물건이었던 스마트펜 Pen+가 홈페이지 연결이 안된다.&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;Screenshot 2022-06-26 at 20-33-12 펜제너레이션스 디지털 ADP-611 스마트펜 (단품) 다나와 가격비교.png&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA1tPc/btrFLAOkFLQ/KkGgHHNDrjLPcNqNrh7hdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA1tPc/btrFLAOkFLQ/KkGgHHNDrjLPcNqNrh7hdk/img.png&quot; data-alt=&quot;ADP-611 스마트펜.. 왜 내꺼랑 생긴게 다를까..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA1tPc/btrFLAOkFLQ/KkGgHHNDrjLPcNqNrh7hdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA1tPc%2FbtrFLAOkFLQ%2FKkGgHHNDrjLPcNqNrh7hdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;330&quot; height=&quot;330&quot; data-filename=&quot;Screenshot 2022-06-26 at 20-33-12 펜제너레이션스 디지털 ADP-611 스마트펜 (단품) 다나와 가격비교.png&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ADP-611 스마트펜.. 왜 내꺼랑 생긴게 다를까..&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;중소기업하기 정말 힘든 것은 알고 있지만, 그래도 물건 팔아줘서 지켜주기를 바랬는 데....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱은 플레이스토어에서 찾을 수 없는 것 같고, 공짜로 출력할 수 있는 닷패턴은 홈페이지가 닫아 받을 수가 없다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5년도 넘은 기기지만, 필요한 사람이 있을 수 있고, 잘쓰고 있는 사람도 전세계에 1명이상은 있을 테니 이렇게 미리 받아둔 apk와 pdf파일을 올리기로 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자가 하두 백업을 여기저기 해놔서 겨우 찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 말씀드리고 싶은 것은.. 미리 받아 둬야 겠다라고 생각을 했을 때, 이미 apk를 구할 수 없어, apk를 백업해서 가지고 있는 사이트들에서 받아 둔 것인데, 이게 바이러스와 같은 문제가 있을 수 있다. 테스트를 통해 없는 것으로 보이기는 하지만, 그래도 미심쩍은 사람은 사용하지 않기를 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;apk파일 PenHub 2.0 for ADP-611 v1.0&lt;/h4&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/VIfOH/btrFHctuuCB/9y7iAXseFV78cH6VIKNv6K/Penhub%202%200%20for%20ADP%20611_v1.0.F_apkpure.com.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;Penhub 2 0 for ADP 611_v1.0.F_apkpure.com.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;8.29MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bT2ITH/btrFGlR1yBK/srP9pwAqyeClpxlonZOKFK/Penhub%202%200%20for%20ADP%20611_v1.0.F_apkpure.com.z01?attach=1&amp;amp;knm=tfile.z01&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;Penhub 2 0 for ADP 611_v1.0.F_apkpure.com.z01&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;19.53MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;티스토리 칭구들이 20MiB까지만 올릴 수 있게 해놔서 분할 압축했으니, 반디집같은 프로그램으로 풀면 apk파일을 만들어진다. 이 것을 기기에 넣으면 된다. &quot;apk 넣는 법&quot;으로 검색하면 아주~~ 많이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사용설명서&lt;/h4&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/ygNiO/btrFKGOL4yq/OchKKO5X4eldXBpuvKMK71/Quick%20Setup%20Guide_141202.pdf?attach=1&amp;amp;knm=tfile.pdf&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;Quick Setup Guide_141202.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;17.51MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;닷패턴&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2종류가 있는 데, 두 파일 모두 첫페이지가 어떤 것을 출력해야 되는 지 설명이 되어 있으니, 둘 다 받아서 자기한테 알맞는 것을 선택하면 된다.. 이 두 파일은 홈페이지가 살아 있을 때 받은 거다.&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/oOKFw/btrFKavRFbk/31f9JxpI4ozCAN7vCHyFq1/Pen%2BSheet_One_PCL_R40_Final_150114.pdf?attach=1&amp;amp;knm=tfile.pdf&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;Pen+Sheet_One_PCL_R40_Final_150114.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;6.46MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cfAVZ3/btrFF1Gfb9p/676XNsvfgfDV9Hx06XniBK/Pen%2BSheet_One_PS_R40_Final_150114.pdf?attach=1&amp;amp;knm=tfile.pdf&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;Pen+Sheet_One_PS_R40_Final_150114.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;6.47MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밧데리가 살아 있는 그날 까지..&lt;/p&gt;</description>
      <category>Goods</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/271</guid>
      <comments>https://jamssoft.tistory.com/271#entry271comment</comments>
      <pubDate>Sun, 26 Jun 2022 20:34:34 +0900</pubDate>
    </item>
    <item>
      <title>안드로이드 폰 속도 빠르게 하기?</title>
      <link>https://jamssoft.tistory.com/270</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;유투브나 블로그 등에 올라와있는 안드로이드 기기의 속도를 조금이라도 빠르게하는 방법들이 나와 있습니다. 하지만, 잘 못된 부분이 있어 &quot;잘못된 건 고쳐야지&quot;를 해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&quot;개발자 옵션&quot;의 &quot;로그 버퍼 크기&quot;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쩌다 처음 안드로이드 폰 속도 향상 글/영상을 만든 사람이 이게 뭔지 몰라 발생한 일이 퍼지고 퍼지고 해서 마치 맞는 것처럼 되어버린 상황입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이것은 브라우저의 다운로드 버퍼크기와 아무런 상관이 없습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것의 용도는 안드로이드용으로 앱등을 개발을 할 때, 제대로 동작을 하는지 눈으로 보기위해, 앱에서 그냥 막 관련된 출력을 하는 곳입니다. 이 곳에 일단 아주 잠깐 쌓아 놓았다가 안드로이스 스튜디오같은 개발툴에서 보여주게 되어있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단지, 개발자들이 프로그램 개발을 수월하게 하기위해 있는 버퍼일 뿐입니다. 일반 사용자들은 가장 작은 값을 써야 메모리 사용을 줄일 수 있기 때문에 개발을 위한 용도가 아니면 가장 작은 크기로 설정하는 것이 오히려 속도가 빨리 집니다. 이 것의 버퍼를 늘리는 것은 프로그램 개발중에 출력량이 커서 한번에 다 못 볼 때, 다보려고 늘리는 것 뿐입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;바로 최소값으로 변경하세요!&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;logcat.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcbv45/btrFtk5UZbt/bTUOTSmtx1HrCvt4ZVkqT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcbv45/btrFtk5UZbt/bTUOTSmtx1HrCvt4ZVkqT0/img.png&quot; data-alt=&quot;Logcat 수 많은 앱들이 열심히 log를 뿜고 있다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcbv45/btrFtk5UZbt/bTUOTSmtx1HrCvt4ZVkqT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdcbv45%2FbtrFtk5UZbt%2FbTUOTSmtx1HrCvt4ZVkqT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1366&quot; height=&quot;728&quot; data-filename=&quot;logcat.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Logcat 수 많은 앱들이 열심히 log를 뿜고 있다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&quot;4x MSAA 강제사용&quot;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 대체 어떤 영문으로 속도가 빨라 진다는 것인지 이해 할 수 가 없습니다. 결론 부터 말씀 드리면 빨리지는 것이 아니라 오히려 느려 집니다. 그러니 &lt;b&gt;&lt;i&gt;&quot;일단 끄세요&quot;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명 들어 갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 놈은 주로 게임화면이 실제 표시되는 화면가 크기가 다를 경우 픽셀의 계단현상을 없애기 위해 쓰는 기능입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의 4는 4개의 픽셀을 쓰는다는 뜻입니다. 한 픽셀의 색을 결정하기위해 4개의 픽셀을 가지고 연산을 합니다. 이렇게 하면 좀 더 부드러운 화면(한 화면에 한정)을 만들 수 가 있는 기능입니다. 이 기능은 모든 픽셀에 적용이 되기 때문에, 이 것을 켜면 계산하기위해 GPU를 더 쓰게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 말해, 켜면 느려지지만 부드러운 화면을 볼 수 있고, 끄면 계단현상이 발생할 수 있지만 느리지않는 화면을 보게 되는 것입니다. 주제가 속도향상인 부분에서 끄는 것이 맞습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;aaa.gif&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u0Yig/btrFtOZ7hb6/DfIzb2LtAFRyvOEOIps6v1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u0Yig/btrFtOZ7hb6/DfIzb2LtAFRyvOEOIps6v1/img.gif&quot; data-alt=&quot;4x MSAA가 하는 짓&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u0Yig/btrFtOZ7hb6/DfIzb2LtAFRyvOEOIps6v1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/u0Yig/btrFtOZ7hb6/DfIzb2LtAFRyvOEOIps6v1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;180&quot; data-filename=&quot;aaa.gif&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;4x MSAA가 하는 짓&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>잘못된 건 고쳐야지</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/270</guid>
      <comments>https://jamssoft.tistory.com/270#entry270comment</comments>
      <pubDate>Tue, 21 Jun 2022 18:31:05 +0900</pubDate>
    </item>
    <item>
      <title>젊지만 가난한 당신에게.. 술에 대한 조언</title>
      <link>https://jamssoft.tistory.com/269</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 용돈받아 쓰는 사람에게는 그리 도움은 되지 않을 수 있지만, 당신도 머지않아 용돈을 받을 수 없기에, 이 글을 한번쯤은 읽기를 바란다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t0F5a/btrz4M2c0Po/G3GWdEAji0SDgb6WC0GklK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t0F5a/btrz4M2c0Po/G3GWdEAji0SDgb6WC0GklK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t0F5a/btrz4M2c0Po/G3GWdEAji0SDgb6WC0GklK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft0F5a%2Fbtrz4M2c0Po%2FG3GWdEAji0SDgb6WC0GklK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;633&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즈음은 젊은이들이 굳이 술자리를 억지로 해야하는 경우가 예전보다 훨씬 줄어든 것으로 알고 있지만, 여전히 우리나라의 술소비는 전 세계에서 상당히 높은 위치를 차지하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국사회에서 음주가무라는 핑계로 술문화가 발달되어있다. 어찌보면, 이 것도 엮인 사람이 많아 이 글을 쓰기가 좀 그렇지만, 안쓸 수 없는 상황이니..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4NIF7/btrz4PRFlWD/6DBx99M0kmBum858XRCaa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4NIF7/btrz4PRFlWD/6DBx99M0kmBum858XRCaa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4NIF7/btrz4PRFlWD/6DBx99M0kmBum858XRCaa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4NIF7%2Fbtrz4PRFlWD%2F6DBx99M0kmBum858XRCaa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;731&quot; height=&quot;551&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신은 아직 젊다. 이 말은 월급도 그리 많지 않을 것이다. 월급이 많다면, 이 글의 제목과 상반되니 다른 곳으로 이동하는 편이 좋을 수도 있다. 다시 원래 이야기로 돌아와서, 당신이 한달에 마시는 술값을 한번 계산해 보기를 바란다. 그 돈이 당신의 월급의 몇 퍼센트나 되는 지 계산해보고, 작년의 술값을 전부 합산해 보기를 바란다. 이 글을 읽는 사람들 중에 상당수가 아니 거의 대부분이 그 수치에 놀랄 것으로 판단된다. 물론 얼마되지 않는다고 생각할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FAzUh/btrz5oNmZnR/5ey0LICZhOqkewqC9kKk8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FAzUh/btrz5oNmZnR/5ey0LICZhOqkewqC9kKk8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FAzUh/btrz5oNmZnR/5ey0LICZhOqkewqC9kKk8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFAzUh%2Fbtrz5oNmZnR%2F5ey0LICZhOqkewqC9kKk8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;690&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리나라의 술문화는 안주를 꼭 시켜야 되는 문화를 가지고 있다. 모든 곳이 그렇지는 않지만, 안주없이 술을 먹을 수 있는 곳은 그리 많지 않으며, 그런 곳은 술값자체가 비싸다. 따라서 술값으로 지출하는 비용이 상당히 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pwEBQ/btrz60Zk9g2/cqKWptkz1xDo0fGn771b0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pwEBQ/btrz60Zk9g2/cqKWptkz1xDo0fGn771b0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pwEBQ/btrz60Zk9g2/cqKWptkz1xDo0fGn771b0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpwEBQ%2Fbtrz60Zk9g2%2FcqKWptkz1xDo0fGn771b0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;613&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 일년동안의 금액이 200만원을 넘는다면, 당신은 가난하면서도 돈을 술에 낭비하고 있는 것이다. 200만원이라고 해봤자 한달에 20만원도 안되는 돈일 수도 있지만, 만약 이 200만원을 술이 아닌 다른 곳에 두었다면 이라는 생각을 해보기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1년에 200만원을 모으기는 그리 쉽지 않다. 통장에 잘 모셔뒀다면, 200만원이 더 쌓일 수 있는 기회를 당신은 버린 것이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다고 아예 술을 끊어라라는 뜻은 아니다. 우리나라의 현실상 술은 안 마시기 힘들다. 인연을 맺고 살아야 하는 방식에 우리나라의 술문화는 큰 비중을 차지한다. 게다가, 우리나라 사람들은 토론을 잘 못하는데, 그나마 토론하는 실력이 늘어날 수 있는 거의 유일한 곳이 술자리기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;하고 싶었던 이야기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제안을 하나 하겠다. 술 값을 한번 줄여보라는 조언이다. 현재의 술값이 1/4이 될 때까지 한번 줄여보길 바란다. 사람마다 수치가 달라 1/4이라고 고정할 수는 없지만, 한달 후 나온 술값에 12를 곱하여 일년에 이 정도면 적당하다고 생각될 때까지 줄여보기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;술을 대체할 수 있는 방법&lt;/h3&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;&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;920&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boombN/btrz6ZF3iEl/YrsDkTvjN9ChLayDrs0XB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boombN/btrz6ZF3iEl/YrsDkTvjN9ChLayDrs0XB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boombN/btrz6ZF3iEl/YrsDkTvjN9ChLayDrs0XB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboombN%2Fbtrz6ZF3iEl%2FYrsDkTvjN9ChLayDrs0XB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;612&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;끊는 것도 방법이다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시나 술을 끊을 계획이 있는 사람이라면 한가지 조언을 하겠다. 술은 정말 끊기 쉽다. 그냥 술자리에 가지 않고, 술을 가게에서 사지만 않으면 된다. 그렇게 한 석달정도 지나면, 술에 관심이 별로 없어진다. 그럼 자연스럽게 술을 끊을 수 있다. 술을 끊는 것은 담배와 달리 젊은 당신에게는 정말 끊기 쉬운 것이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;다른 방법으로 욕구와 부족해지는 것을 채우자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;술을 거의 안먹게 되면, &quot;술도 한번 제대로 못 사먹는 인생을 살아야 하나?&quot;라는 생각이 든다. 이런 생각을 상쇄시킬 수 있는 것은 술값으로 지출될 뻔한 이 비용의 일부를 취미에 투자하기를 바란다. 물론 술이 취미인 사람이야 해당사항이 없겠지만... 차나 컴퓨터등 비싼 장비에 취미를 가지고 있는 사람도 아낀 술값만큼 지출을 줄일 수 있는 일이니 말리지는 않겠다... 아.. 조금은 말려야 겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 적당한 취미가 없다면, 아무책이라도 한번 사서 보기를 바란다. 책은 술자리에서 익힐 수 있는 지식(?)을 대체 해주며, 보통 경험이 많은 사람이 쓰기에, 고만고만한 친구들의 이야기보다 높은 수준의 정보를 얻을 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;술을 줄이면 잃어 버리는 것이 있다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 것이 우정이 줄어 들기 시작한다. 문화가 문화인지라, 같이 뭔가를 먹으면 정이 생기는 데, 그렇지를 못하니, 가장 술을 같이 먹는 친구와의 우정이 줄어 들 수 있다. 하지만, 우정을 유지하기위한 최소한의 술자리는 가져도 좋다. 어짜피, 시간이 지나면, 친구를 만날 시간도 줄어든다. 40세가 넘어가기 시작하면 친구도 일년에 2번 만나면 많이 만난다는 것을 알게 될 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oyE2f/btrz8CpK8dj/9QDkdXNqeB7P8NGJNiBapK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oyE2f/btrz8CpK8dj/9QDkdXNqeB7P8NGJNiBapK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oyE2f/btrz8CpK8dj/9QDkdXNqeB7P8NGJNiBapK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoyE2f%2Fbtrz8CpK8dj%2F9QDkdXNqeB7P8NGJNiBapK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;613&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;놓치치 말 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 통장잔고를 보고 술을 마시면 안된다. 내가 말한 방법으로 술을 줄이면, 술 값에 해당하는 만큼 통장에 돈이 쌓이게 된다. 그 수치는 생각보다 많아 술을 한번 맛있는 안주와 마셔도 된다는 생각이 들 것이다. 이 때 참는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신이 술을 편하게 먹을 수 있는 월급을 받을 때까지는 이 것을 지켜야 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 우울한 이야기를 한 것 같아, 희망을 좀 뿌리면 돈을 좀 열심히 벌어서 술을 사먹을 수 있음을 잊지 말라.&lt;/p&gt;</description>
      <category>인생은</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/269</guid>
      <comments>https://jamssoft.tistory.com/269#entry269comment</comments>
      <pubDate>Fri, 22 Apr 2022 11:52:43 +0900</pubDate>
    </item>
    <item>
      <title>나의 뮤즈는 어디에 있을 까?</title>
      <link>https://jamssoft.tistory.com/268</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;당신이 뮤즈를 찾고 있다면 당신은 뮤즈를 찾을 수 없다. 뮤즈는 찾는 대상이 아니고, 기다리는 대상에 더 가깝다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신의 뮤즈가 어딘가에 있다고 생각하는 것은 당신의 머리속에 있는 생각일 뿐, 실제 당신의 뮤즈가 있는 지는 당신이 이 세상을 떠날 때 알 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDYd0B/btrz8uenEy7/2Uv1Mn0q93CN6ExfCPdqe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDYd0B/btrz8uenEy7/2Uv1Mn0q93CN6ExfCPdqe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDYd0B/btrz8uenEy7/2Uv1Mn0q93CN6ExfCPdqe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDYd0B%2Fbtrz8uenEy7%2F2Uv1Mn0q93CN6ExfCPdqe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;891&quot; height=&quot;595&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;595&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;뮤즈의 성격&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dL19EF/btrz5ol6LqV/6RWcCZeeRFyOjKZ7R5kz6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dL19EF/btrz5ol6LqV/6RWcCZeeRFyOjKZ7R5kz6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dL19EF/btrz5ol6LqV/6RWcCZeeRFyOjKZ7R5kz6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdL19EF%2Fbtrz5ol6LqV%2F6RWcCZeeRFyOjKZ7R5kz6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;910&quot; height=&quot;601&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뮤즈는 찾는 대상이 아니고, 어느날 문을 열고 외출을 할 때, 문앞에 놓여있는 택배상자 같은 것이다. 그 것도 내가 주문하지 않은 택배상자다. 기다리는 대상에 더 가깝다라고 했지만, 실제 나도 모르게 그냥 길에서 줍는 것과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;뮤즈는 불공평하다.&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cr6ena/btrz4OrAPlw/YyLCi6jrPj0HkF4eXVdG2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cr6ena/btrz4OrAPlw/YyLCi6jrPj0HkF4eXVdG2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr6ena/btrz4OrAPlw/YyLCi6jrPj0HkF4eXVdG2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr6ena%2Fbtrz4OrAPlw%2FYyLCi6jrPj0HkF4eXVdG2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;887&quot; height=&quot;588&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세상은 불공평하다. 이는 세상이라는 곳의 기본 규칙이며, 지구가 사라지는 그날까지 공평해 질 수 없다. 그 중에 가장 불공평한 것이 뮤즈다. 노력과도 상관이 없고, 심지어는 운도 아니다. 뮤즈는 환경에 지배를 받는다. 뮤즈는 당신이 속한 환경에서 아주 쉽게 얻을 수도 있으며, 심지어는 태어났을 때 뮤즈를 가지고 태어날 수도 있다. 당신이 현재 뮤즈가 없다면, 영원히 없을 수 있을 가능성이 크다. 하지만 놓치지 말아야 할 것은 이미 당신은 뮤즈를 갖고 있는 지도 모른다. 이미 나에게 뮤즈가 왔는 지 먼저 생각해 봐야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누군가가 뮤즈를 택배상자처럼 받으면, 그 누군가가 받은 것일 뿐, 당신이 받은 것이 아니다. 그리고, 나도 받을 수 있다는 희망을 가지면 안된다. 가장 불공평하기에 불만을 가질 수도 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;뮤즈는 없다. 아니 당신의 뮤즈는 없다.&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WoRwA/btrz6rCIpQd/l8ox81xT4Ht2jVgnYq8vwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WoRwA/btrz6rCIpQd/l8ox81xT4Ht2jVgnYq8vwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WoRwA/btrz6rCIpQd/l8ox81xT4Ht2jVgnYq8vwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWoRwA%2Fbtrz6rCIpQd%2Fl8ox81xT4Ht2jVgnYq8vwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;593&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뮤즈가 있기를 희망하는 것은 당신의 자유지만, 그리고, 당신이 뮤즈가 오기를 희망할 수는 있지만, 당신의 뮤즈가 당신에게 찾아 올지는 당신의 뮤즈만이 알고 있다. 그 뮤즈는 원래 없을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;내가 할 수 있는 일은 무엇이며, 어떻게 해야 하는 가?&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2hvs0/btrz8CQKatZ/EM8OpUxGygsKXybqImI8V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2hvs0/btrz8CQKatZ/EM8OpUxGygsKXybqImI8V0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2hvs0/btrz8CQKatZ/EM8OpUxGygsKXybqImI8V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2hvs0%2Fbtrz8CQKatZ%2FEM8OpUxGygsKXybqImI8V0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;907&quot; height=&quot;590&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신은 뮤즈를 찾을 시간에 당신의 일을 해야한다. 뮤즈는 찾는 대상이 아니므로, 찾으러 나서는 것은 오히려 뮤즈를 더 멀리 도망가게 한다. 혹시나 있을 지도 모르는 뮤즈마저 더 멀리 보낼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해야할 마지막 기대&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brlYbC/btrz7yBkYVM/ns6efKAKR40SPgq9P8h7w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brlYbC/btrz7yBkYVM/ns6efKAKR40SPgq9P8h7w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brlYbC/btrz7yBkYVM/ns6efKAKR40SPgq9P8h7w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrlYbC%2Fbtrz7yBkYVM%2Fns6efKAKR40SPgq9P8h7w0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;895&quot; height=&quot;585&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뮤즈는 아주 불공평하지만, 전혀 관련없는 사람은 찾아 가지 않는다. 당신의 뮤즈가 당신을 찾아 올지도 모르기에, 당신은 뮤즈를 맞을 준비는 해야 한다. 그 준비는 당신이 하는 일을 묵묵히 하는 것 뿐이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단지 그 확률이 백만분의 일 정도 일뿐...&lt;/p&gt;</description>
      <category>인생은</category>
      <category>뮤즈</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/268</guid>
      <comments>https://jamssoft.tistory.com/268#entry268comment</comments>
      <pubDate>Fri, 22 Apr 2022 09:39:21 +0900</pubDate>
    </item>
    <item>
      <title>window samba 다중 연결하기..연결 동일한 사용자가 둘 이상의...</title>
      <link>https://jamssoft.tistory.com/265</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HFTR8/btrtk1jyDpC/FcjEfK4xcdW2td8XqnQe0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HFTR8/btrtk1jyDpC/FcjEfK4xcdW2td8XqnQe0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HFTR8/btrtk1jyDpC/FcjEfK4xcdW2td8XqnQe0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHFTR8%2Fbtrtk1jyDpC%2FFcjEfK4xcdW2td8XqnQe0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;560&quot; height=&quot;196&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허허... 좀 어이가 없는 에러를 만나게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상황&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 경우 linux서버에 samba로 4~5개의 smb를 셋팅해 두었는 데, 다른 사용자로 들어갈 경우, 이전의 사용자로는 이미 연결되어 있던 것 때문에 연결을 못 하게 된다. 이게 안된다는 것에 솔직히 많이 놀랐다. window버전별(home,pro,..)로 차이가 있을 것 같기는 했지만, 그래도 하나의 서버에 한 개만 접속이 가능하다니.. 이건 네트웍을 왜 쓰는지의 기본을 거스르는 상황이라 어이가 너무 없었다. 이로인해 같은 서버의 다른 폴더를 각각 다르게 네트웍드라이브를 연결을 할 수 없는 상황. 연결을 할 때마다 이전 것을 끊고 다시 다른 아이디/비번으로 연결하는 방법을 써야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;성공한 사람있음?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글링을 먼저해보니, 2개의 다른 계정으로 같은 서버에 연결을 성공한 사람을 찾을 수 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쩔 수 없이 짱구를 굴리기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;window에서 다른 서버라고 인식을 하면, 각각 다르게 연결이 가능하다는 것이었다. 다행이다. 이 것마저 안됐으면, 정말, 마소에 메일 보낼 뻔했다. 약간의 비신사적인 메일로..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 모든 연결을 끊고 cmd창에서 'net use /delete *' 해서 모든 연결을 끊는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 거 안하면, 자격증명이 막 꼬여서 잡기 힘들어서 하는 것 뿐이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;hosts파일 수정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 window가 같은 서버라도 다른 서버로 인식시키는 방법을 써보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 제목만 보고 아하~하는 독자는 그냥 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독자가 사용하기 편한 편집기를 &lt;b&gt;[관리자권한]&lt;/b&gt;으로 연다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;{windows}/system32/drivers/etc/hosts 파일을 열어 수정을 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일이 어떤 파일인지 모르는 사람은 구글링하면 금방 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 경우 linux서버의 IP는 192.168.0.100이다. 다음의 4개를 hosts파일에 추가 했다. 추가하는 거다 기존에 있던거 지우면 네트웍을 안쓰는 프로그램마저 동작을 안할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가할 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;192.168.0.100&amp;nbsp;server1&lt;br /&gt;192.168.0.100&amp;nbsp;server2&lt;br /&gt;192.168.0.100&amp;nbsp;server3&lt;br /&gt;192.168.0.100&amp;nbsp;server4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 추가를 하고 저장을 한다. 만약 저장이 되지 않거나 하면, &lt;b&gt;[관리지권한]으로 편집기&lt;/b&gt;를 열었는 지 확인 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이왕하는 거 단순히 server1같은 것보다 server_file 이런 식이 더 좋을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;hosts파일을 바꿨기 때문에 바이러스 잡는 프로그램에서 지롤을 할 수 있다. 그럼 허용하도록 하고&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\\server1&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;832&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HiQs1/btrtlTZHWeS/Q2gqlT2l8UHkBRrRMKUEpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HiQs1/btrtlTZHWeS/Q2gqlT2l8UHkBRrRMKUEpk/img.png&quot; data-alt=&quot;주소창에 영문으로 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HiQs1/btrtlTZHWeS/Q2gqlT2l8UHkBRrRMKUEpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHiQs1%2FbtrtlTZHWeS%2FQ2gqlT2l8UHkBRrRMKUEpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;832&quot; height=&quot;282&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;주소창에 영문으로 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 공유폴더가 보이지 않도록 서버를 설정했을 경우,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\\server1\{공유폴더}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식으로 접근하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 예로는 필자의 상황에서 james, mysmb, pi, toon을 다 따로 연결이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;james에&amp;nbsp;&amp;nbsp;&amp;nbsp; 연결할 때는, &quot;\\&lt;i&gt;&lt;b&gt;server1&lt;/b&gt;&lt;/i&gt;\james&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mysmb에&amp;nbsp; 연결할 때는, &quot;\\&lt;b&gt;server&lt;i&gt;2&lt;/i&gt;&lt;/b&gt;\mysmb&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pi에&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 연결할 때는, &quot;\\&lt;b&gt;server&lt;i&gt;3&lt;/i&gt;&lt;/b&gt;\pi&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toon에&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 연결할 때는, &quot;\\&lt;b&gt;server&lt;i&gt;4&lt;/i&gt;&lt;/b&gt;\toon&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;연결서버를 다르게 해주는 부분을 눈여겨 보라~&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPCc6N/btrtoy8yE5B/cCucbTie9q3UKn1iZf8c11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPCc6N/btrtoy8yE5B/cCucbTie9q3UKn1iZf8c11/img.png&quot; data-alt=&quot;실제는 같은 서버지만 window는 다르게 인식한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPCc6N/btrtoy8yE5B/cCucbTie9q3UKn1iZf8c11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPCc6N%2Fbtrtoy8yE5B%2FcCucbTie9q3UKn1iZf8c11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;435&quot; height=&quot;254&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제는 같은 서버지만 window는 다르게 인식한다.&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;이렇게하면 window는 server1~4를 다 다른 서버로 인식하기 때문에, 따로따로 네트워크드라이브 연결이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데... 귀찮다~ 이걸 왜 해야 하냐고..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 편한 방법 성공하신 분이나 아시는 분 댓글로.. 링크나..&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/265</guid>
      <comments>https://jamssoft.tistory.com/265#entry265comment</comments>
      <pubDate>Tue, 15 Feb 2022 08:52:07 +0900</pubDate>
    </item>
    <item>
      <title>대체 어디에 저장된 거야? 빠른 파일 찾기 Everything</title>
      <link>https://jamssoft.tistory.com/264</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 저장했는 데, 그만 어디에 저장된 건지, 저장하는 창을 확인하지 않아서 어디에 저장했는지 찾아야 될 경우가 있습니다. 물론 다시 저장을 하면 바로 찾을 수는 있죠. 파일을 다운로드 했는 데, 어디에 했는 지 또한 까먹을 때가 있습니다. Window에서 파일 찾기를 할 수 있지만 아주 느려서 기다리는 시간이 지루하게 됩니다. &quot;언제 찾나...&quot;라는 생각이 드실 겁니다.&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;674&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Le0ON/btrteh0Oh8E/BTOYbWWmhaKdkfGEkkQUkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Le0ON/btrteh0Oh8E/BTOYbWWmhaKdkfGEkkQUkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Le0ON/btrteh0Oh8E/BTOYbWWmhaKdkfGEkkQUkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLe0ON%2Fbtrteh0Oh8E%2FBTOYbWWmhaKdkfGEkkQUkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;660&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 아주 빠른 찾기가 가능한 프로그램이 있습니다. 물론 파일이름만 검색이 가능하지만, 저장되어있는 수 많은 파일 중에 정말 빠르게 찾기가 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용찾기도 지원은 되는 데, 이 부분은 느립니다. 하지만 파일찾는 목적으로는 정말 이만한 툴이 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.voidtools.com/ko-kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.voidtools.com/ko-kr/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644803346578&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;voidtools&quot; data-og-description=&quot;Everything 실시간 파일/폴더 검색 작은 설치파일 깔끔하고 단순한 UI 빠른 파일 색인 빠른 검색 최저 자원 사용 쉬운 파일 공유 실시간 갱신 등등... Everything 1.4.1.1015 다운로드 32비트 설치파일 64비&quot; data-og-host=&quot;www.voidtools.com&quot; data-og-source-url=&quot;https://www.voidtools.com/ko-kr/&quot; data-og-url=&quot;https://www.voidtools.com/ko-kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.voidtools.com/ko-kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.voidtools.com/ko-kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;voidtools&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Everything 실시간 파일/폴더 검색 작은 설치파일 깔끔하고 단순한 UI 빠른 파일 색인 빠른 검색 최저 자원 사용 쉬운 파일 공유 실시간 갱신 등등... Everything 1.4.1.1015 다운로드 32비트 설치파일 64비&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.voidtools.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;자신에 윈도우버전에 맞는 것을 골라 다운받아 설치하면 끝입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 색인을 만들 때도 거의 시간이 들지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 파일시스템의 파일이름 색인 부분만 싹 긁어오는 방식을 사용하는 것 같습니다. 솔직히 어떻게 이 속도가 나오는 지 허탈하기 까지 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 이제 파일 찾기에 두려움은 버리시고, 빨리 찾으시길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 개발자의 경우 정말 유용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/264</guid>
      <comments>https://jamssoft.tistory.com/264#entry264comment</comments>
      <pubDate>Mon, 14 Feb 2022 10:51:54 +0900</pubDate>
    </item>
    <item>
      <title>모두가 알아야 할 안전한 비밀번호 정하는 법</title>
      <link>https://jamssoft.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일단 이 내용은 많이 어려울 수도 있지만, 결론은 한가지밖에 없으니, 차근차근 읽어 주시면 감사하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷 쇼핑몰이 너무 늘어나다보니, 사이트의 비밀번호를 정하는 것도 어려운 일이 되어 버린지 오래군요. 카카오나 네이버 구글 로그인 같은 것을 이용하는 방법도 있지만, 이 것들을 지원해주지 않는 사이트도 있고, 지원한다고 해도 이 것들을 쓰기 싫은 상황도 있을 수 있습니다. 그 때마다 사이트의 비밀번호를 정해야 하는 데, 만약 당신의 비밀번호가 털린다면,... 그 들은 책임지지 않을 겁니다. 정확히 책임이 너무 커서 질 수도 없고, 오히려 교묘히 빠져나갈 궁리만 할 확률이 높습니다. 따라서 안전한 비밀번호를 정하는 것이 스스로를 지키는 유일한 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사이트에서 회원의 비밀번호를 저장하는 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 아무리 멋진? 비밀번호로 보호해도 사이트에 문제가 있으면, 이 멋진? 비밀번호는 무용지물이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 사이트에 저장되는 내 비밀번호는 해당 사이트의 개발자조차 알 수 없도록 처리하는 방식을 씁니다. 세상의 누구도 알수 없도록 저장을 합니다. 내가 비밀번호를 정하면 사이트내에 비밀번호를 저장하게 되는 데, 이 방식은 &lt;b&gt;원래의 비밀번호를 복원할 수 없는 방식&lt;/b&gt;을 씁니다. 이게 가능하냐구요? 네, 그 것도 아주 쉬운 작업입니다. 그리고 이 방식은 비밀번호를 아무리 길게 입력해도 처리할 수 있습니다. 무한대 길이의 비밀번호를 입력해도 처리가 가능합니다. 치는 사람 손가락만 아픕니다. 최소한 6만자까지는 안될 이유가 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;따라서 걸러야하는 사이트들이 있습니다.&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;0. 네트웍보안(SSL)이 적용되지 않은 사이트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 건 뭔가 하실 수 있는 데, 간단히 알 수 있는 문제니, 어려워 하실 필요 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이트에 들어가면, 위에 주소 표시줄이 있습니다. 이 곳 맨 앞에 보면, 자물쇠가 있는 데, 이 자물쇠가 없거나 풀려있는 곳에서는 절대 가입해서는 안됩니다. SSL이란 내가 입력한 모든 정보가 해당서버가 날아갈 때, 암호화를 해서 날아가도록 하는 방식입니다. 내가 친 비밀번호가 암호화되지 않고 그냥 날아가게 만든 사이트는 걸러내야 합니다. 비밀번호가 날아가는 그 짧은 순간에 &quot;어떻게 비밀번호를 탈취하냐?&quot;라고 생각할 수도 있는 데, 날아가는 모든 정보에서 비밀번호 비슷한 것을 잡아내서 저장하도록 만들기만 하면 되는 거라, 이 작업은 통신쪽 개발자에게는 그리 어려운 작업이 아닙니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 10년전까지는 사용자의 비밀번호를 포함한 개인정보만 SSL을 이용했습니다. SSL은 암호화등의 이유로 계산을 많이 해야하는 데, 그 당시의 컴퓨터들은 이들을 다 감당하기에는 좀 느렸습니다. 그러다 암호화된 연결과 그렇지 않은 연결간에 문제를 Google같은 곳에서 슬슬 보안에 문제가 있다는 이유로 혼용하지 않도록 아예 바꿔버렸습니다. 재작년정도였던것 같습니다. 그 만큼 컴퓨터의 성능도 좋아졌기 때문에 이제 거의 대부분의 사이트에 들어가면 자물쇠가 있는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오해하지 말아야 할 것은 아주 단순히 정보만을 보내주는 사이트들은 이 보안이 필요가 없습니다. 사용자의 정보를 하나도 받지 않는 그런 곳은 이 자물쇠가 필요 없긴하지만, 현재의 시점에서는 이 보안연결은 필수가 되었습니다. 구글에서 안드로이드용 앱에서 동작을 기본적으로 이 보안연결로 하도록 유도해버려서 자물쇠가 없는 곳은 찾아 보기 힘들게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 보안연결을 위해서는 서버운영자가 보안인증을 하는 인증서를 구매해야 해서... 이게 좀 비쌉니다. 그래서 적용을 못한 곳이 많았지만, 번거롭긴하지만 이 보안인증서를 무료로 해주는 곳도 있기에 이 것을 적용되어있지 않다는 것은 문제가 있다고 봐도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oaOZd/btrs5yXhUoF/k1psuJZNSxHHYaZG5VNqGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oaOZd/btrs5yXhUoF/k1psuJZNSxHHYaZG5VNqGk/img.png&quot; data-alt=&quot;주소표시줄의 자물쇠&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oaOZd/btrs5yXhUoF/k1psuJZNSxHHYaZG5VNqGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoaOZd%2Fbtrs5yXhUoF%2Fk1psuJZNSxHHYaZG5VNqGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;311&quot; height=&quot;179&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;179&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;h4 data-ke-size=&quot;size20&quot;&gt;1. 비밀번호를 그냥 저장하는 사이트&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;2. 비밀번호 길이에 제한이 너무 짧은 사이트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급했듯, 이 복원할 수 없는 방식은 무한대의 입력이 들어와도 문제가 없습니다. 그런데, 비밀번호를 16자리까지만 입력이 가능한 곳은 문제가 있는 것입니다. 필자는 주로 비밀번호를 32자에서 그 이상의 비밀번호도 쓰는 데(어떻게 기억하냐구요? 그 건 아래에.. 아.. 100글자 넘는 비밀번호도 있네요..) 16자리는 정말 적은 길이입니다. 32자도 긴 것이 아니기에 이런 제한을 두는 사이트에는 가입시에 한참 고민을 하는 편입니다.&amp;nbsp;&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;h3 data-ke-size=&quot;size23&quot;&gt;비밀번호의 형식&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;중요한 것은 길이&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 비밀번호는 길면 길수록 안전해집니다. 해커가 비밀번호를 알아내는 방식을 무차별로(정확히 일일이) 다 입력을 해보는 겁니다. 이걸 사람이 하는 것이 아닌 프로그램으로 대입해 보는 것입니다. 4자리 비밀번호 푸는 것은 일도 아닙니다. 하지만 이게 한자리씩늘어날 때마다 푸는 시간이 기하급수로 증가하게 됩니다. 따라서 최대한 길게 하는 것이 무엇보도 중요한 문제 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 컴퓨터의 성능도 계속 좋아지고 있습니다. 그래서 시간이 지날수록 비밀번호가 더 길어져야 합니다. 처음에 언급한 복원할 수 없는 방식도 계속 이에 맞춰서 더 강력해지고 있습니다. 컴퓨터 성능이 좋아지는 만큼 비밀번호를 때려 맞추기 어렵게 계속 연산량이 많이 지고 있는 것입니다. 하지만 이 연산량을 늘리는 것은 오히려 성능을 떨어뜨리기 때문에 컴퓨터의 성능 증가 폭보다 이 연산량이 많이 지지는 않습니다. 정확히 그럴 필요가 없기 때문입니다. 이 부분은 이 글을 읽는 독자에게는 필요한 내용이 아니니 그냥 넘어가고.. 어쨋든 길이가 길어야 합니다. 현재의 시점에서 10자는 당연히 넘겨 두는 것이 좋습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;특수문자/숫자를 섞는 것은 더 안전한가?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네, 더 안전합니다. 하지만 길이가 더 중요합니다. 좀 재미있는 이야기를 해드리죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언제가 보안문제가 커지면서, 사이트에서는 특수문자와 숫자도 조합하고.. 어떤 곳은 연속된 숫자는 못쓰게 하고 있습니다. 그러다 보니 사람들이 다음과 같은 식의 비밀번호사용하기 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;{영문자 몇글자}{숫자1~2개}{특수문자1~2개}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분 이런 패턴으로 사용자들이 사용한다는 통계가 나와 버렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 잠깐.. &quot;비밀번호를 모른다고 하지 않았냐?&quot;라고 물으신다면, 모른다고는 안했습니다. 비밀번호가 있어야 풀 수 없는 형태를 만들어 낼수 있습니다. 따라서, 보안된 연결로 날아간 비밀번호는 저장소에 저장이 될 때 풀 수 없게 들어갈 뿐 이 작업이 이루어지는 사이에는 프로그램내에서 알 수 있습니다. 단지 개발자가 이 것을 자신도 모르게 할 뿐입니다. 개발자가 마음만 먹으면 그냥 다 알 수 있습니다. 그렇게 하지 않을 뿐입니다.&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;사용자들이 이런 패턴으로 저장하다보니 무차별대입도 이렇게 해서 사용자의 비밀번호를 알아내고 있습니다. 따라서 위와같은 형태로 비밀번호를 정하는 것은 영문자만 넣고 길게 하는 것보다 오히려 위험할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;그럼 어떻게 해?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호는 외우기도 쉬워야하지만, 길이도 길어야 합니다. 이 것을 가능하게 하는 방법은 &quot;문장&quot;을 사용하면 됩니다.&lt;/p&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;&quot;오늘은 날이 밝아서 일하기 참 좋구나&quot;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 넣으면 됩니다. 자판으로는 42글자가 됩니다. 여기에 숫자와 특수 문자를 중간에 심습니다. 가장 쉬운방법이 띄어쓰기위치에 특수문자와 숫자를 넣는 것입니다. 다음과 같이요.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;오늘은!날이1밝아서!일하기2참!좋구나&quot;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이런 식이지요. 좀 더 강력하게 만들고 싶다면 다음의 방법이 있으나, 참고만 하시고 약간 자신만의 패턴을 가미하시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;오늘은@날이#밝아서$일하기%참^좋구나&quot;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;좀 어려운 것 같지만, @#$%^는 키보드의 순서일 뿐입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 문장을 더 길게 하시기를 추천하며, 명언은 사용금지입니다. 말 그대로 유명한 말이니까요.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;사이트마다 다른 비밀번호를 사용하는 것이 좋습니다.&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이건 개발자가 공부를 덜한 상태에서 발생하는 문제입니다. 잘 만들어진 사이트들은 위의 제가 설명해드린 문장방식을 사용하면 같은 비밀번호라도 문제가 없어야 합니다. 하지만, 공부가 덜된 개발자들이 이런 실수를 해버리는 경우가 있습니다. 원래의 비밀번호를 알아 내진 못하지만 같은 비밀번호를 쓰고 있다는 것을 알 수 있게 만들어 버리는 경우입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;보통 이런 경우가 짧은 비밀번호를 사용할 때 주로 발생하는 데, 사용자A와 사용자B가 같은 비밀번호를 쓰면, 이 풀 수 없는 방식의 결과가 같은 것이 되어버립니다. 그러다 보면 사용자A의 것만 탈취되거나 풀려 버려도, 사용자B의 비밀번호도 알게 되기 때문입니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;문제는 &quot;그럼 그 수많은 문장을 어떻게 기억하나?&quot;라는 문제 입니다. 이 는 좀 더 후반부에..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;우리에겐 생체인식이 있다. 개뿔~&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지문이나, 안면인식, 홍채인식...(추가로 똥꼬인식?) 등이 있습니다. 뭐... 지문 같은 경우, 같은 지문을 가진 사람도 있지만, 그런거 없다고 치겠습니다. &quot;전세계에서 유일하게 나만의 것이니 가장안전하다..&quot; 고 생각하면 안됩니다. 현재 가장 강력한 생체인식은 DNA입니다. 500억분의 1의 확률입니다. 와 이건 정말 안전하구나 할 수 있지만... 이게 과연 안전할까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 그냥 비밀번호(PIN번호라고 하죠) 42자리는 숫자로만 만들어도 불교에서 만든 단위인 &quot;정&quot;를 넘어갑니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;( 만 &lt;b&gt;&lt;i&gt;억&lt;/i&gt;&lt;/b&gt; 조 경 해 자 양 구 간 &lt;i&gt;&lt;b&gt;[&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;정] &lt;/b&gt;&lt;/i&gt;재 극 황하사 아승기 나유타 불가사의 무량대수 )&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;500억분의 1의 확률은 그리 좋은 비밀번호값이 아닙니다. 이해를 도와드리면, 컴퓨터는 모든 것을 숫자로 바꿉니다. 지문이든 DNA든... 그럼 이 가짓수가 중요한 데, 500억밖에 되지 않는 것입니다. 오히려 위의 핀번호방식이 훨씬 더 안전합니다. 물론 이 것도 좀 잘 다루면 오히려 이 확률을 확~ 늘려 버릴 수 있습니다. 하지만...&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;생채인식은 치명적인 문제가 있습니다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 나의 지문의 숫자값[컴퓨터로 저장되는]이 털리면... 어느 나쁜 해커놈이 지문값을 가지고 가버리면 이 건 답이 없습니다. &lt;i&gt;&lt;b&gt;지문은 바꿀 수 없습니다&lt;/b&gt;&lt;/i&gt;. 손가락 바꿀 겁니까? 홍채면 눈 빼고 다른 눈 넣을 겁니까? DNA는 다른 사람 DNA 복사 할 건가요? 털리면 죽는 그 순간까지 아무 것도 할 수 없습니다. 지문하나만 털리면 세상의 모든 지문인식을 쓰는 곳 전부를 쓸 수 없습니다. 그 나쁜놈이 지문으로 다른 곳에 회원등록하는 것도 가능하게 됩니다. 사실상 모든 상황이 종료되고 그 나쁜 놈이 나쁜 쪽으로 쓰지 않기를 기도하는 것 밖에 답이 없습니다. 그냥 무방비로 당해야 합니다. 아마 머지않아, 사이트에 본인인증하고 &quot;생체인식이 털렸으니, 영원히 이 방식을 사용하지 않겠습니다.&quot; 라는 등록페이지가 생길 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;생채인식보안이라는 환상을 절대 믿으시면 안됩니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;따라서, 생체인식은 아예 쓰지 말아야 하는 보안매체입니다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자들마저 이 생채인식을 잘 못 이해하고 환상을 꾸는 경우가 많습니다. 절대 쓰지 말아야 되는 방식입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;생체인식은 그 사람이 맞는지 눈앞에서 확인하는 용도일 뿐, 사이트에 들어가는 비밀번호로 사용해서는 안되는 것입니다.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;그럼 그 긴 비밀번호를 사이트마다 다르게 해야한다면 어떻게 외우나요?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외우는 것이 좋지만 많아지면 외우기 힘들어 지게 되죠. 알패스같은 어플을 이용할 수도 있지만, 이도 그리 좋은 방식은 아니라서...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 경우 엑셀파일이 하나 있습니다. 이 곳에는 저의 모든 비밀번호가 담겨 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 엑셀파일자체에 비밀번호가 있습니다.&lt;/b&gt; 유일하게 이 엑셀파일의 비밀번호만 외우고 있으면 됩니다. 물론 단점도 있습니다. 사람이 많은 곳에서는 열어 볼 수도 없으니, 하지만 워낙 비밀번호가 길어서, 옆에서 봐도...지만.. 카메라로 찍어 버릴 수 있으니 조심..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 좋은 방법있으면 메일로 좀 보내주시길..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;현재 가장 안전한 비밀번호는 그냥 타이핑으로 입력하는 길다란 비밀번호입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일반사용자가 알아야 하는 정도는 이정도... 개발자용은 다음에 기회가 되면 올리도록하겠습니다. 더 신경을 써야 할 것이 많으니까요... 그럼&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Just Upload NOW</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/263</guid>
      <comments>https://jamssoft.tistory.com/263#entry263comment</comments>
      <pubDate>Sun, 13 Feb 2022 23:01:31 +0900</pubDate>
    </item>
    <item>
      <title>android prebuilt curl library</title>
      <link>https://jamssoft.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;I just need a http downloader to use on android NDK, also ssl is not required on my app.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;so. I Search prebuilt curl library in google. but, most compiled version are not matched on my app. something conflict OpenSSL, something not works, and so on. After all, I decide to compile curl source code to use on my app.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;How to compile the curl source code.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Below link explains How to compile, android compiling also explained. but Its explaination is mismatched to my ndk version&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://curl.se/docs/install.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://curl.se/docs/install.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1640158221375&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;build and install curl from source&quot; data-og-description=&quot;how to install curl and libcurl Installing Binary Packages Lots of people download binary distributions of curl and libcurl. This document does not describe how to install curl or libcurl using such a binary package. This document describes how to compile,&quot; data-og-host=&quot;curl.se&quot; data-og-source-url=&quot;https://curl.se/docs/install.html&quot; data-og-url=&quot;https://curl.se/docs/install.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://curl.se/docs/install.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://curl.se/docs/install.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;build and install curl from source&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;how to install curl and libcurl Installing Binary Packages Lots of people download binary distributions of curl and libcurl. This document does not describe how to install curl or libcurl using such a binary package. This document describes how to compile,&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;curl.se&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;So, I modified &quot;exports&quot; from above links. I tried compiling, and it produced libcurl.a files.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Error on My App.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First. I encountered error message while linking my app like below.&lt;/p&gt;
&lt;pre id=&quot;code_1640158428612&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;libcurl.a(libcurl_la-mprintf.o):mprintf.c:function curl_mprintf: error: undefined reference to 'stdout'
libcurl.a(libcurl_la-multi.o):multi.c:function curl_multi_fdset: error: undefined reference to '__FD_SET_chk'
libcurl.a(libcurl_la-url.o):url.c:function Curl_init_userdefined: error: undefined reference to 'stdin'
libcurl.a(libcurl_la-url.o):url.c:function Curl_init_userdefined: error: undefined reference to 'stderr'
libcurl.a(libcurl_la-if2ip.o):if2ip.c:function Curl_if2ip: error: undefined reference to 'getifaddrs'
libcurl.a(libcurl_la-if2ip.o):if2ip.c:function Curl_if2ip: error: undefined reference to 'freeifaddrs'
libcurl.a(libcurl_la-netrc.o):netrc.c:function parsenetrc: error: undefined reference to 'fgets_unlocked'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;std* is not found... hm.. and What is getifaddrs...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I found this error was caused by compiler api version 29, my app is started from api 19. so I changed android compiler version to api21, [below api21 compilers are not exist in &quot;android-ndk-r21&quot;]. I retried with api21 ndk compiler.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Second, I encountered error messages while linking my app like below. TOO.... hm..&lt;/p&gt;
&lt;pre id=&quot;code_1640158764904&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;libcurl.a(libcurl_la-multi.o):multi.c:function curl_multi_fdset: error: undefined reference to '__FD_SET_chk'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Standard in-out-error&quot; relative error messages were eliminated, but I still got error on my app[minAPI 19].&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;__FD_SET_chk function(?) is introduced in API 21. api 19 devices have no this function.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #5733b1;&quot;&gt;&lt;i&gt;If You change minSkVersion to 21 or higher, above error messages will be eliminated.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Modify to work on below API 21&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I modified multi.c file in lib path on source code.&lt;/p&gt;
&lt;pre id=&quot;code_1640159185611&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lib/multi.c : line 1061 and 1068

From..........
    FD_SET(sockbunch[i], read_fd_set);
    
Replace With.........
__FDS_BITS(fd_set*,read_fd_set)[__FDELT(sockbunch[i])] |= __FDMASK(sockbunch[i]);

line 1068 is write_fd_set&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FD_SET is defined in header &amp;lt;select.h&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1640159227643&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#define __FD_SET(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] |= __FDMASK(fd))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Recompile and Test... Yes It works.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Download&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I attached prebuilt curl libraries in this article Two versions, one is api21 or higher, and Other is below api21&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Below api21 version. &lt;span style=&quot;color: #ee2323;&quot;&gt;NOSSL &lt;/span&gt;(Modified version)&lt;/b&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/twASn/btroDhjXZPZ/GixLOlK4kVKkwrPbkAmnJ0/libcurl.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;libcurl.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.09MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This files was tested on below devices.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Galaxy Note4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; armeabi-v7a&amp;nbsp; &amp;nbsp;&amp;nbsp; 32bits&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; api23&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Galaxy S6 Edge&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arm64-v8a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64bits&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; api24&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Chinese Intel android&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; x86&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32bits&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; api19&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LD player 64bits(emulater) &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; x86_64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64bits&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; api25?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;API 21 or higher, &lt;span style=&quot;color: #ee2323;&quot;&gt;NOSSL &lt;/span&gt;(Not Modified)&lt;/b&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/bLn6DM/btroDhEh61q/ZZPEzvelf8FPl2Opn09T10/libcurl.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;libcurl.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.09MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;API 21 or higher with OpenSSL&lt;/b&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/bug3q4/btrozxnTZbU/01KnKTjfnMRxcKtPfjtxvk/libcurl_ssl.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;libcurl_ssl.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.26MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;Not modified with SSL Version, These Files are not tested. But maybe works..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;OpenSSL for belo&lt;b&gt;w API 21(Modified)&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;This Files are required for linking above curl&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/wADHU/btroSVBQ2kO/aWdixv4UHhKTPPl2YKpqaK/openssl_for_curl_api19.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;openssl_for_curl_api19.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;7.07MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;64bit files are for API21 in this File. Don't warry 64bit android were introduce in 2019(?), so most 64bit device versions are equal or higher than API-21&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&quot;Configure&quot; results in my case&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Compile machine : Ubuntu 20.04.2 LTS/64bits on virtual machine.&lt;/p&gt;
&lt;pre id=&quot;code_1640159939066&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Host setup:       aarch64-unknown-linux-android
  Install prefix:   /usr/local
  Compiler:         ~~~~~/android_ndk/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi29-clang
   CFLAGS:          -Qunused-arguments -Os
   CPPFLAGS:        
   LDFLAGS:         
   LIBS:            -lz

  curl version:     7.80.0
  SSL:              no      (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )
  SSH:              no      (--with-{libssh,libssh2})
  zlib:             enabled
  brotli:           no      (--with-brotli)
  zstd:             no      (--with-zstd)
  GSS-API:          no      (--with-gssapi)
  GSASL:            no      (libgsasl not found)
  TLS-SRP:          no      (--enable-tls-srp)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              no      (--with-{libidn2,winidn})
  Build libcurl:    Shared=no, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no      (--enable-sspi)
  ca cert bundle:   no
  ca cert path:     
  ca fallback:      
  LDAP:             no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)
  LDAPS:            no      (--enable-ldaps)
  RTSP:             enabled
  RTMP:             no      (--with-librtmp)
  PSL:              no      (libpsl not found)
  Alt-svc:          enabled (--disable-alt-svc)
  HSTS:             no      (--enable-hsts)
  HTTP1:            enabled (internal)
  HTTP2:            no      (--with-nghttp2, --with-hyper)
  HTTP3:            no      (--with-ngtcp2, --with-quiche)
  ECH:              no      (--enable-ech)
  Protocols:        DICT FILE FTP GOPHER HTTP IMAP MQTT POP3 RTSP SMTP TELNET TFTP
  Features:         AsynchDNS IPv6 Largefile UnixSockets alt-svc libz&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Compile command&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;example for armeabi-v7a&lt;/p&gt;
&lt;pre id=&quot;code_1640160217904&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export NDK=~/android_ndk/android-ndk-r21
export HOST_TAG=linux-x86_64
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar
export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as
export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld
export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib
export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip


./configure --host aarch64-linux-android --with-pic --disable-shared  --without-ssl&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Source code&lt;/h4&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/bEngTy/btrox1vXprz/pZQUnINuRbrkkuM5e1FFUK/curl-7.80.0.tar.gz?attach=1&amp;amp;knm=tfile.gz&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;curl-7.80.0.tar.gz&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;3.97MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SSL Version NOTE&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By below error&lt;/p&gt;
&lt;pre id=&quot;code_1640168240548&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;undefined reference to `UI_OpenSSL'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I add compile flag like below.&lt;/p&gt;
&lt;pre id=&quot;code_1640168145333&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export CFLAGS=-DOPENSSL_NO_UI_CONSOLE&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android Develop/helper</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/262</guid>
      <comments>https://jamssoft.tistory.com/262#entry262comment</comments>
      <pubDate>Wed, 22 Dec 2021 10:04:44 +0900</pubDate>
    </item>
    <item>
      <title>How to enable openmp in Visual Studio(C/C++)</title>
      <link>https://jamssoft.tistory.com/259</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crlq6b/btroi46tltn/iD7vOWdNFHvkkOKKkFhp2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crlq6b/btroi46tltn/iD7vOWdNFHvkkOKKkFhp2k/img.png&quot; data-alt=&quot;[Your Project] Properties Window&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crlq6b/btroi46tltn/iD7vOWdNFHvkkOKKkFhp2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcrlq6b%2Fbtroi46tltn%2FiD7vOWdNFHvkkOKKkFhp2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;544&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;[Your Project] Properties Window&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;How to enable OpenMP in visual studio&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Menu[Project] -&amp;gt; [Your Project] Properties -&amp;gt; You can see above Window&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Configuration Properties -&amp;gt; 2. C/C++ -&amp;gt; 3. Language -&amp;gt; 4. Open MP Support -&amp;gt; 5. [Yes(/openmp)]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;References&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/cpp/parallel/openmp/openmp-in-visual-cpp?view=msvc-170&quot;&gt;https://docs.microsoft.com/en-us/cpp/parallel/openmp/openmp-in-visual-cpp?view=msvc-170&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;See this reference to take current status of openmp support and confliction with other compile flags&lt;/i&gt;&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/259</guid>
      <comments>https://jamssoft.tistory.com/259#entry259comment</comments>
      <pubDate>Mon, 20 Dec 2021 05:33:54 +0900</pubDate>
    </item>
    <item>
      <title>Google angle precompiled library for MS windows. (lib, dll)</title>
      <link>https://jamssoft.tistory.com/258</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;I just compiled google angle library by instruction of below link:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/google/angle&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/google/angle&lt;/a&gt; : angle home in github&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/google/angle/blob/main/doc/DevSetup.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/google/angle/blob/main/doc/DevSetup.md&lt;/a&gt; : compiling instruction&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Compiling Infomation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;compile time : 2021-12-17&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ANGLE 2.1.17547&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;compiler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : visual studio comunity 2019 / Windows 10 SDK 10.0.19041.0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Compile machine : Window 10(x64), Intel(R) Core(TM) i7-3630QM CPU(Laptop)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Download&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Before download this file, see [Some Note While compiling]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Here is compiled file, only release version, click below to download&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The usage of this library files is in second link above.[last on its page]&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/bFfrDw/btrodmTqEW0/g6UZkxJ9CkJKWsN22RgQbK/angle_x32.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;angle_x32.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;4.91MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/ILzv5/btroezdIp2J/yeNLkIifLFukz5lC7HoCnk/angle_x64.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;angle_x64.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;5.47MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Level of OpenGL ES support via backing renderers&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;borrowed from above git[just time of compiling time]&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;Direct3D 9&lt;/td&gt;
&lt;td&gt;Direct3D 11&lt;/td&gt;
&lt;td&gt;Desktop GL&lt;/td&gt;
&lt;td&gt;GL ES&lt;/td&gt;
&lt;td&gt;Vulkan&lt;/td&gt;
&lt;td&gt;Metal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenGL ES 2.0&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenGL ES 3.0&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;in progress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenGL ES 3.1&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/google/angle/blob/main/doc/ES31StatusOnD3D11.md&quot;&gt;incomplete&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;complete&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenGL ES 3.2&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;in progress&lt;/td&gt;
&lt;td&gt;in progress&lt;/td&gt;
&lt;td&gt;in progress&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Test&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I Just test OpenGL ES 3.1 using My ComputeShader code, Yes, It works~Ye~.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I am not sure all thing is work.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Some Note While compiling&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. I changed option like below for release version, both of x86 and x64&lt;/p&gt;
&lt;pre class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot;&gt;&lt;code&gt;angle_assert_always_on = false&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;b&gt;While compiling source code, I encounter error.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;(This error is eliminated by using clang, sorry, zip file was updated )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;message on file :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C:\angle\angle\third_party\VK-GL-CTS\src\external\openglcts\modules\glesext\tessellation_shader&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;esextcTessellationShaderVertexSpacing.hpp&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1639715294964&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;unary_function is not in namespace std&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This error caused by std::unary_function, This is deprecated in C++11. so, I just remove code like below.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1639767011839&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//struct _comparator_exact_tess_coordinate_match : public std::unary_function&amp;lt; float, bool &amp;gt;
struct _comparator_exact_tess_coordinate_match  // &amp;lt;~~~~~~~~~~~~~ changed
	{
		/* Constructor.
		 *
		 * @param in_base_coordinate Base tessellation coordinate to compare against.
		 */
		_comparator_exact_tess_coordinate_match(const _tess_coordinate_cartesian&amp;amp; in_base_coordinate)
			: base_coordinate(in_base_coordinate)
		{
		}

		/* Tells if the user-provided tessellation coordinate exactly matches the base tessellation
		 * coordinate.
		 *
		 * @param value Tessellation coordinate to use for the operation.
		 *
		 * @return true if the coordinates are equal, false otherwise.
		 */
		bool operator()(const _tess_coordinate_cartesian&amp;amp; value)
		{
			return (value.x == base_coordinate.x) &amp;amp;&amp;amp; (value.y == base_coordinate.y);
		}

		_tess_coordinate_cartesian base_coordinate;
	};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I recommend you to compile yourself.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Notes while compiling&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Where is &quot;Debugging Tools for Window&quot;?&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;1582&quot; data-origin-height=&quot;869&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4a5lA/btrocrgCmet/wrO2Ewp4WQutzSOfJFNT3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4a5lA/btrocrgCmet/wrO2Ewp4WQutzSOfJFNT3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4a5lA/btrocrgCmet/wrO2Ewp4WQutzSOfJFNT3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4a5lA%2FbtrocrgCmet%2FwrO2Ewp4WQutzSOfJFNT3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1582&quot; height=&quot;869&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;869&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/66710286/you-must-installwindows-10-sdk-version-10-0-19041-0-including-the-debugging-too&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/66710286/you-must-installwindows-10-sdk-version-10-0-19041-0-including-the-debugging-too&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Debugging Tools for Windows&quot; is in&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Control Panel &amp;rarr; Programs &amp;rarr; Programs and Features &amp;rarr; Select the &amp;ldquo;Windows Software Development Kit&amp;rdquo; &amp;rarr; Change &amp;rarr; Change &amp;rarr; Check &amp;ldquo;Debugging Tools For Windows&amp;rdquo; &amp;rarr; Change&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MS Windows</category>
      <author>What should I do?</author>
      <guid isPermaLink="true">https://jamssoft.tistory.com/258</guid>
      <comments>https://jamssoft.tistory.com/258#entry258comment</comments>
      <pubDate>Fri, 17 Dec 2021 12:58:13 +0900</pubDate>
    </item>
  </channel>
</rss>