<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>신규하 블로그</title>
    <link>https://gyuha.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 11 Jun 2026 05:58:28 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>신규하</managingEditor>
    <image>
      <title>신규하 블로그</title>
      <url>https://t1.daumcdn.net/cfile/tistory/27123C3C5666953032</url>
      <link>https://gyuha.tistory.com</link>
    </image>
    <item>
      <title>VSCode에서 python 개발 환경 구성 하기</title>
      <link>https://gyuha.tistory.com/551</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;간만에 python을 개발해 보려고 vscode에 세팅을 하다가 &lt;a href=&quot;https://docs.astral.sh/ruff/&quot;&gt;Ruff&lt;/a&gt;라는 것을 알게 되어서 정리 해 봅니다.&lt;/p&gt;
&lt;h1&gt;Ruff 소개&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Rust로 작성된 매우 빠른 파이썬 린터 및 코드 포매터입니다. 이전에 formatter와 linter를 쓰기 위해서 black, flake8 또는 pylint 등 이것 저것 조합해서 사용을 했었는데. 이걸 한번에 사용 할 수 있습니다.&lt;br /&gt;거기다 기존 linter나 formatter보다 속도가 10~100배까지 빠르다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Pasted image 20231219222502.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EjbDO/btsClZJhLc4/30BCIWwDMf7ePMBjIayK41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EjbDO/btsClZJhLc4/30BCIWwDMf7ePMBjIayK41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EjbDO/btsClZJhLc4/30BCIWwDMf7ePMBjIayK41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEjbDO%2FbtsClZJhLc4%2F30BCIWwDMf7ePMBjIayK41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;167&quot; data-filename=&quot;Pasted image 20231219222502.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;VSCode에서 설정 하기&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 확장&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.python&quot;&gt;Python&lt;/a&gt;: 파이썬 개발을 위해서 가장 기본적으로 설치 해 줘야 하는 확장입니다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance&quot;&gt;Pylance&lt;/a&gt; : 유용한 랭기지 서버로, Pyright를 이용해서 정적 유형 검사로 구동 되며, &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode&quot;&gt;IntelliCode&lt;/a&gt;를 같이 사용 하면 코딩 시 유용한 제안을 해 주게 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode&quot;&gt;Inetellicode&lt;/a&gt; : 코드의 자동 완성을 도와 줍니다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff&quot;&gt;Ruff&lt;/a&gt; : 위에 소개한 어플&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;python에 필요한 패키지 설치 하기&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 실행 해서 ruff를 실행합니다.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;pip install ruff pylance&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로는 vscode에서 자동으로 설치가 되지만 설치가 되지 않았을 경우나 수동으로 설치가 필요한 경우에는 직접 설치를 해 주셔야 합니다.&lt;/p&gt;
&lt;h1&gt;ruff 설정 파일&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트에서 사용하는 lint를 설정 할 수 있습니다. 현재 프로젝트의 상단에 &lt;code&gt;pyproject.toml&lt;/code&gt;, &lt;code&gt;ruff.toml&lt;/code&gt;, 또는 &lt;code&gt;.ruff.toml&lt;/code&gt; 파일을 작성해 주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL : &lt;a href=&quot;https://docs.astral.sh/ruff/configuration/&quot;&gt;Configuring Ruff&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 &amp;gt; &lt;code&gt;.ruff.toml&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;nix&quot;&gt;&lt;code&gt;exclude = [
    &quot;.bzr&quot;,
    &quot;.direnv&quot;,
    &quot;.eggs&quot;,
    &quot;.git&quot;,
    &quot;.git-rewrite&quot;,
    &quot;.hg&quot;,
    &quot;.mypy_cache&quot;,
    &quot;.nox&quot;,
    &quot;.pants.d&quot;,
    &quot;.pytype&quot;,
    &quot;.ruff_cache&quot;,
    &quot;.svn&quot;,
    &quot;.tox&quot;,
    &quot;.venv&quot;,
    &quot;__pypackages__&quot;,
    &quot;_build&quot;,
    &quot;buck-out&quot;,
    &quot;build&quot;,
    &quot;dist&quot;,
    &quot;node_modules&quot;,
    &quot;venv&quot;,
]

line-length = 120
indent-width = 4

[lint]
# 기본적으로 Pyflakes('F')와 pycodestyle('E') 코드의 하위 집합을 활성화합니다.
select = [&quot;E4&quot;, &quot;E7&quot;, &quot;E9&quot;, &quot;F&quot;]
ignore = []

# 활성화된 모든 규칙에 대한 수정 허용.
fixable = [&quot;ALL&quot;]
unfixable = []

# 밑줄 접두사가 붙은 경우 사용하지 않는 변수를 허용합니다.
dummy-variable-rgx = &quot;^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$&quot;

[format]
quote-style = &quot;double&quot;
indent-style = &quot;space&quot;
skip-magic-trailing-comma = false
line-ending = &quot;auto&quot;
docstring-code-format = false
docstring-code-line-length = &quot;dynamic&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;VScode 설정&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;settings.json&lt;/code&gt;에 아래와 같은 코드를 추가 해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;  &quot;python.languageServer&quot;: &quot;Pylance&quot;,
  &quot;[python]&quot;: {
    &quot;editor.defaultFormatter&quot;: &quot;charliermarsh.ruff&quot;,
    &quot;editor.insertSpaces&quot;: true,
    &quot;editor.formatOnSave&quot;: true,
    &quot;editor.codeActionsOnSave&quot;: {
      &quot;source.fixAll&quot;: true,
      &quot;source.organizeImports&quot;: true,
      &quot;editor.insertSpaces&quot;: true
    }
  },&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;참고&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.freecodecamp.org/news/how-to-configure-visual-studio-code-for-python-development/&quot;&gt;How to Configure Visual Studio Code for Python Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sicara.fr/blog-technique/boost-code-quality-ruff-linter&quot;&gt;The Fastest Way to Boost your Code Quality: Use Ruff Linter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://qiita.com/tamo_breaker/items/dbd8482e88c61269d531&quot;&gt;VSCodeのPython環境設定[poetry+ruff,mypy]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gpxz.io/blog/ruff&quot;&gt;How to configure ruff&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Programming</category>
      <category>lint</category>
      <category>Python</category>
      <category>vscode</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/551</guid>
      <comments>https://gyuha.tistory.com/551#entry551comment</comments>
      <pubDate>Tue, 19 Dec 2023 23:44:48 +0900</pubDate>
    </item>
    <item>
      <title>발헤임 유니티 에디터기에서 띄워보기</title>
      <link>https://gyuha.tistory.com/550</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6fEHY/btrNTd5l7dI/F6ZKYc8PikAqDRNwo8EM81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6fEHY/btrNTd5l7dI/F6ZKYc8PikAqDRNwo8EM81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6fEHY/btrNTd5l7dI/F6ZKYc8PikAqDRNwo8EM81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6fEHY%2FbtrNTd5l7dI%2FF6ZKYc8PikAqDRNwo8EM81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;461&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발헤임을 유니티 에디터기에서 띄워 보기를 해 봤는데..&lt;br /&gt;잘 되어서 기록 해 봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데, 버전이 중요 합니다.&lt;br /&gt;버전이 달라 지면, 잘 안 되네요 ㅜ.ㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발헤임을 분석해 보고 싶거나, 모드를 만드시려는 분은 참고 하세요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;준비물&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발헤임 버전 v0.209.10
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;되도록이면 위 버전이 좋습니다. 최신 버전에서는 이벤트 관련 오류가 잔뜩 발생하고, 이전 버전은 유니티 2019로 개발 되어서 테스트 해 보지 않았습니다.. 포럼에 보니.. 버전이 올라가면 다른 오류가 발생 하는 것 같더라군요... 위 버전이 트러블 없이 가장 깔끔하게 실행이 되었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/AssetRipper/AssetRipper/releases/tag/0.2.3.0&quot;&gt;AssetRipperGUI 0.2.3.0&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다운로드를 받고 실행 하고 싶은 곳에 압축을 풀어 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/heinermann/ValheimExportHelper/releases/tag/1.2.0&quot;&gt;ValheimExportHelper 1.2.0&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다운르도를 받고, 위에서 받은 &lt;code&gt;AssetRipperGUI&lt;/code&gt;폴더에 &lt;code&gt;Plugins&lt;/code&gt; 폴더를 만들고 복사 해 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://unity3d.com/get-unity/download&quot;&gt;Unity Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://unity3d.com/unity/whats-new/2020.3.33&quot;&gt;Unity 2020.3.33&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발헤임이 버전으로 되어 있습니다. 되도록이면 이 버전을 설치해서 실행 해 주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;에셋 추출&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;압축을 푼 &lt;code&gt;AssetRipper.exe&lt;/code&gt;를 실행해 줍니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Shader Export Format&lt;/code&gt;을 &lt;code&gt;Yaml Asset&lt;/code&gt;으로 설정 해 줍니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;1016&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkhGlV/btrNSNMTEyZ/DdsxxtTUbOYQen7gQDoGDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkhGlV/btrNSNMTEyZ/DdsxxtTUbOYQen7gQDoGDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkhGlV/btrNSNMTEyZ/DdsxxtTUbOYQen7gQDoGDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkhGlV%2FbtrNSNMTEyZ%2FDdsxxtTUbOYQen7gQDoGDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1432&quot; height=&quot;1016&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;1016&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;메뉴에서 &lt;code&gt;File &amp;gt; Open Folder&lt;/code&gt;를 선택 해 주고, 발헤임이 설치된 경로를 선택해 줍니다. 터미널에서 아래와 같이 텍스트로 발헤임 글씨가 나와야 &lt;code&gt;ValheimExportHelper&lt;/code&gt;가 정상적으로 설치가 된겁니다. 글씨가 안 나왔다면 준비물 3을 다시 진행 해 주세요.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;244&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rNgF7/btrNRDxel2t/EEyw80KncYh2IHtAeL4SiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rNgF7/btrNRDxel2t/EEyw80KncYh2IHtAeL4SiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rNgF7/btrNRDxel2t/EEyw80KncYh2IHtAeL4SiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrNgF7%2FbtrNRDxel2t%2FEEyw80KncYh2IHtAeL4SiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;244&quot; height=&quot;196&quot; data-origin-width=&quot;244&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vR0rL/btrNVmmKfW3/yxaBDL2X9fCgv895R3KM20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vR0rL/btrNVmmKfW3/yxaBDL2X9fCgv895R3KM20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vR0rL/btrNVmmKfW3/yxaBDL2X9fCgv895R3KM20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvR0rL%2FbtrNVmmKfW3%2FyxaBDL2X9fCgv895R3KM20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;993&quot; height=&quot;656&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;프로젝트가 열렸으면, &lt;code&gt;Export &amp;gt; Export all Files&lt;/code&gt;를 선택하고 export 할 빈 폴더를 선택해 줍니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;279&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJfIsu/btrNSCZatA5/5w8prMFVvUQKvICAuPHf20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJfIsu/btrNSCZatA5/5w8prMFVvUQKvICAuPHf20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJfIsu/btrNSCZatA5/5w8prMFVvUQKvICAuPHf20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJfIsu%2FbtrNSCZatA5%2F5w8prMFVvUQKvICAuPHf20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;279&quot; height=&quot;164&quot; data-origin-width=&quot;279&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;완료 될 때 까지 기다리면 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;유니티에서 열기&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유니티 허브를 실행합니다.&lt;/li&gt;
&lt;li&gt;열기를 선택하고 export 한 폴더에서 &lt;code&gt;valheim/Valheim 0.209.10 - [날짜]&lt;/code&gt;로 된 폴더를 열어 줍니다.&lt;/li&gt;
&lt;li&gt;열다가 &lt;code&gt;API Update Required&lt;/code&gt; 메시지 박스가 나오면 &lt;code&gt;I Made a Backup. Go Ahead!&lt;/code&gt;를 선택 합니다.&lt;/li&gt;
&lt;li&gt;프로젝트가 다 열리면 &lt;code&gt;Assets/Scenes/loading&lt;/code&gt;을 열어 줍니다.&lt;/li&gt;
&lt;li&gt;실행 버튼을 눌러주면 실행이 됩니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2037&quot; data-origin-height=&quot;1306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAz0Sj/btrNRBzoczk/diiYJ7K6vhik0Ns4tfgB5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAz0Sj/btrNRBzoczk/diiYJ7K6vhik0Ns4tfgB5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAz0Sj/btrNRBzoczk/diiYJ7K6vhik0Ns4tfgB5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAz0Sj%2FbtrNRBzoczk%2FdiiYJ7K6vhik0Ns4tfgB5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2037&quot; height=&quot;1306&quot; data-origin-width=&quot;2037&quot; data-origin-height=&quot;1306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전만 잘 맞춘다면, 무리 없이 실행이 가능 할 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼~&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>컴퓨터/게임</category>
      <category>dev</category>
      <category>unity</category>
      <category>VALHEIM</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/550</guid>
      <comments>https://gyuha.tistory.com/550#entry550comment</comments>
      <pubDate>Thu, 6 Oct 2022 00:49:04 +0900</pubDate>
    </item>
    <item>
      <title>Fontforge로 영문 폰트와 한글 폰트 합치기</title>
      <link>https://gyuha.tistory.com/549</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;a href=&quot;https://fontforge.org/en-US/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fontforge&lt;/a&gt; 사이트에서 소프트웨어를 다운로드 받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fontforge.org/en-US/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://fontforge.org/en-US/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664876161183&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;FontForge&quot; data-og-description=&quot;FontForge is a free and open-source outline font editor.&quot; data-og-host=&quot;fontforge.org&quot; data-og-source-url=&quot;https://fontforge.org/en-US/&quot; data-og-url=&quot;https://fontforge.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2Mfyw/hyP2apQHlg/2G3UkmPHs9YxryMXcGiMd0/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/kCyUS/hyP2eMyjnf/4sMw0g4XvVKPbz80MKC7xk/img.png?width=940&amp;amp;height=302&amp;amp;face=0_0_940_302&quot;&gt;&lt;a href=&quot;https://fontforge.org/en-US/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fontforge.org/en-US/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2Mfyw/hyP2apQHlg/2G3UkmPHs9YxryMXcGiMd0/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/kCyUS/hyP2eMyjnf/4sMw0g4XvVKPbz80MKC7xk/img.png?width=940&amp;amp;height=302&amp;amp;face=0_0_940_302');&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;FontForge&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;FontForge is a free and open-source outline font editor.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fontforge.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 하고 나면, 한글이 나오는데.. 많은 부분이 깨져서 나옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영문으로 실행 하고 싶다면, C:\Program Files (x86)\FontForgeBuilds\fontforge.bat 파일에서&lt;/p&gt;
&lt;pre id=&quot;code_1664877904105&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;::set LANGUAGE=en&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 부분은 아래와 같이 변경 해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664877912284&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;set LANGUAGE=en&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글이 잘 되면 좋은데.. 깨져서 나와서.. 도저히 쓸 수가 없어서.. 전 이렇게 사용 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 사용한 폰트는 &lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JetBrains Mono Regular Nerd Font&lt;/a&gt;와 &lt;a href=&quot;https://spoqa.github.io/spoqa-han-sans/ko-KR/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스포카한산스&lt;/a&gt; 폰트 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각 다운로드는 아래에서 받으시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot;&gt;https://www.nerdfonts.com/font-downloads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1664934997291&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;Nerd Fonts - Iconic font aggregator, glyphs/icons collection, &amp;amp; fonts patcher&quot; data-og-description=&quot;Iconic font aggregator, collection, &amp;amp; patcher: 3,600+ glyph/icons, 40+ patched fonts: Hack, Source Code Pro, more. Popular glyph collections: Font Awesome, Octicons, Material Design Icons, and more&quot; data-og-host=&quot;www.nerdfonts.com&quot; data-og-source-url=&quot;https://www.nerdfonts.com/font-downloads&quot; data-og-url=&quot;https://www.nerdfonts.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cu7UrR/hyP19rhUfT/KiMxXHEvvFcow25gbXKDo1/img.png?width=955&amp;amp;height=640&amp;amp;face=0_0_955_640,https://scrap.kakaocdn.net/dn/evBxri/hyP0zZq2lh/BbhTakVVNHjkeMixu8lRtk/img.png?width=955&amp;amp;height=640&amp;amp;face=0_0_955_640&quot;&gt;&lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.nerdfonts.com/font-downloads&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cu7UrR/hyP19rhUfT/KiMxXHEvvFcow25gbXKDo1/img.png?width=955&amp;amp;height=640&amp;amp;face=0_0_955_640,https://scrap.kakaocdn.net/dn/evBxri/hyP0zZq2lh/BbhTakVVNHjkeMixu8lRtk/img.png?width=955&amp;amp;height=640&amp;amp;face=0_0_955_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;Nerd Fonts - Iconic font aggregator, glyphs/icons collection, &amp;amp; fonts patcher&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Iconic font aggregator, collection, &amp;amp; patcher: 3,600+ glyph/icons, 40+ patched fonts: Hack, Source Code Pro, more. Popular glyph collections: Font Awesome, Octicons, Material Design Icons, and more&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.nerdfonts.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://spoqa.github.io/spoqa-han-sans/ko-KR/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://spoqa.github.io/spoqa-han-sans/ko-KR/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1664935777085&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;Spoqa Han Sans Neo&quot; data-og-description=&quot;Spoqa unveil the new Spoqa Han Sans Neo, which has evolved in many ways. | 여러모로 개선을 거쳐 진화한 스포카 한 산스 네오를 공개합니다. | これまでいろいろ改善して進化した新しいスポカーハンサンスネオ&quot; data-og-host=&quot;spoqa.github.io&quot; data-og-source-url=&quot;https://spoqa.github.io/spoqa-han-sans/ko-KR/&quot; data-og-url=&quot;https://spoqa.github.io/spoqa-han-sans/ko-KR/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bmvh0A/hyP0E0KHSi/HiXI6inM3hfbKmwOf7gaKk/img.png?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/lJbrj/hyP2lyvZPv/Yb8UPoxLjHAkXZkIZ603Ok/img.png?width=1570&amp;amp;height=1044&amp;amp;face=0_0_1570_1044,https://scrap.kakaocdn.net/dn/dqlF9P/hyP2jnayC9/BeAsyFAQpQtZcflQnQzeb1/img.png?width=1922&amp;amp;height=386&amp;amp;face=0_0_1922_386&quot;&gt;&lt;a href=&quot;https://spoqa.github.io/spoqa-han-sans/ko-KR/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://spoqa.github.io/spoqa-han-sans/ko-KR/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bmvh0A/hyP0E0KHSi/HiXI6inM3hfbKmwOf7gaKk/img.png?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/lJbrj/hyP2lyvZPv/Yb8UPoxLjHAkXZkIZ603Ok/img.png?width=1570&amp;amp;height=1044&amp;amp;face=0_0_1570_1044,https://scrap.kakaocdn.net/dn/dqlF9P/hyP2jnayC9/BeAsyFAQpQtZcflQnQzeb1/img.png?width=1922&amp;amp;height=386&amp;amp;face=0_0_1922_386');&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;Spoqa Han Sans Neo&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Spoqa unveil the new Spoqa Han Sans Neo, which has evolved in many ways. | 여러모로 개선을 거쳐 진화한 스포카 한 산스 네오를 공개합니다. | これまでいろいろ改善して進化した新しいスポカーハンサンスネオ&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;spoqa.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;합칠 폰트가 준비 되었다면, 폰트포지에서 2개의 폰트를 각각 로딩해 주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 주의 해야 할 점은 처음 로딩한 창에서 File &amp;gt; Open 메뉴를 통해서 Open을 해 주셔야 머지 할 때 편하게 머지 하실 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;File &amp;gt; Open 메뉴를 통하지 않으면 파일 단위로 머지를 하게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;gBUeuPKAjU.png&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNdB91/btrNNzARrzx/FCQZ4iPOHDpmVkw8KWceX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNdB91/btrNNzARrzx/FCQZ4iPOHDpmVkw8KWceX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNdB91/btrNNzARrzx/FCQZ4iPOHDpmVkw8KWceX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNdB91%2FbtrNNzARrzx%2FFCQZ4iPOHDpmVkw8KWceX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1208&quot; data-filename=&quot;gBUeuPKAjU.png&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 창이 두개가 뜨면, 두 폰트의 em size를 맞춰 줘야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 메뉴에서 &lt;b&gt;Element &amp;gt; Font Info&lt;/b&gt;를 선택 하시고 합칠려고 하는 폰트의 Em Size와 동일하게 설정해 주시면 폰트를 변경하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9GFnM8GhQf.png&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;579&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2iQUJ/btrNNNy3bo3/KrKZPJOXKJXYMkKJ2M65Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2iQUJ/btrNNNy3bo3/KrKZPJOXKJXYMkKJ2M65Y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2iQUJ/btrNNNy3bo3/KrKZPJOXKJXYMkKJ2M65Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2iQUJ%2FbtrNNNy3bo3%2FKrKZPJOXKJXYMkKJ2M65Y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;478&quot; data-filename=&quot;9GFnM8GhQf.png&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;579&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 폰트의 Em Size가 동일 하다면 이 과정은 생략 하셔도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정보가 맞춰 졌다면 &lt;b&gt;Element &amp;gt; Merge Fonts&lt;/b&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;bIftQY7aUP.png&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;701&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7amAU/btrNLA1BtGk/ZVw5JecpdrKYctPmpoIbD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7amAU/btrNLA1BtGk/ZVw5JecpdrKYctPmpoIbD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7amAU/btrNLA1BtGk/ZVw5JecpdrKYctPmpoIbD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7amAU%2FbtrNLA1BtGk%2FZVw5JecpdrKYctPmpoIbD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;386&quot; height=&quot;549&quot; data-filename=&quot;bIftQY7aUP.png&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;701&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눌러 주시면 아래와 같은 다이얼로그가 나오고 OK를 눌러 주시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;fontforge_66s5AsP44j.png&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ncUwA/btrNNAmgY3x/PgTAaRroAEsOQW6KvBnCv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ncUwA/btrNNAmgY3x/PgTAaRroAEsOQW6KvBnCv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ncUwA/btrNNAmgY3x/PgTAaRroAEsOQW6KvBnCv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FncUwA%2FbtrNNAmgY3x%2FPgTAaRroAEsOQW6KvBnCv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;253&quot; height=&quot;139&quot; data-filename=&quot;fontforge_66s5AsP44j.png&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폰트가 잘 합쳐진것을 확인 하시고, File &amp;gt; Generate Fonts를 통해서 폰트를 내보내기 하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;hJ76awZu5J.png&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w36WD/btrNOUj8vMz/qy38lPmotgZb5EdxfyX380/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w36WD/btrNOUj8vMz/qy38lPmotgZb5EdxfyX380/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w36WD/btrNOUj8vMz/qy38lPmotgZb5EdxfyX380/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw36WD%2FbtrNOUj8vMz%2Fqy38lPmotgZb5EdxfyX380%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;271&quot; height=&quot;456&quot; data-filename=&quot;hJ76awZu5J.png&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 창에서 유형을 TrueType을 선택 하시고, 폰트 이름을 적어 주시고 Generate 버튼을 누르시면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;gZa5Xr3ShJ.png&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/befsZy/btrNQpYkR5m/7Je92LSEs1WU3owKn9t5w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/befsZy/btrNQpYkR5m/7Je92LSEs1WU3owKn9t5w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/befsZy/btrNQpYkR5m/7Je92LSEs1WU3owKn9t5w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbefsZy%2FbtrNQpYkR5m%2F7Je92LSEs1WU3owKn9t5w0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;394&quot; height=&quot;491&quot; data-filename=&quot;gZa5Xr3ShJ.png&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;491&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;</description>
      <category>폰트</category>
      <category>프로그래머</category>
      <category>프로그램</category>
      <category>한영</category>
      <category>합치기</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/549</guid>
      <comments>https://gyuha.tistory.com/549#entry549comment</comments>
      <pubDate>Wed, 5 Oct 2022 11:16:21 +0900</pubDate>
    </item>
    <item>
      <title>유니티에서 BlendShape의 노멀이 깨져 보일때..</title>
      <link>https://gyuha.tistory.com/548</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Unity_KT1KDpVWHg.png&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs3l26/btrL4bIgP6A/8cNJfcB29bUEELDxbJfUkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs3l26/btrL4bIgP6A/8cNJfcB29bUEELDxbJfUkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs3l26/btrL4bIgP6A/8cNJfcB29bUEELDxbJfUkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs3l26%2FbtrL4bIgP6A%2F8cNJfcB29bUEELDxbJfUkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;395&quot; height=&quot;292&quot; data-filename=&quot;Unity_KT1KDpVWHg.png&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 보이면, 해당 모델의 인스펙터에서..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;uAhlkUR0YS.png&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;707&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmVc5F/btrL5RWBwdT/v22VESDp2N3O76gZiSBMM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmVc5F/btrL5RWBwdT/v22VESDp2N3O76gZiSBMM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmVc5F/btrL5RWBwdT/v22VESDp2N3O76gZiSBMM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmVc5F%2FbtrL5RWBwdT%2Fv22VESDp2N3O76gZiSBMM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;554&quot; data-filename=&quot;uAhlkUR0YS.png&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;707&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Blend Shape Normals&lt;/b&gt;를 &lt;b&gt;None&lt;/b&gt; 또는 &lt;b&gt;Import&lt;/b&gt;로 변경해 주시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Unity_MCAta8siJ7.png&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bde6Mq/btrL2n3Mofy/z9fuj1NKmm26LgHWYWMaP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bde6Mq/btrL2n3Mofy/z9fuj1NKmm26LgHWYWMaP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bde6Mq/btrL2n3Mofy/z9fuj1NKmm26LgHWYWMaP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbde6Mq%2FbtrL2n3Mofy%2Fz9fuj1NKmm26LgHWYWMaP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;418&quot; height=&quot;304&quot; data-filename=&quot;Unity_MCAta8siJ7.png&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;640&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;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>blendshape</category>
      <category>unity</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/548</guid>
      <comments>https://gyuha.tistory.com/548#entry548comment</comments>
      <pubDate>Wed, 14 Sep 2022 11:16:51 +0900</pubDate>
    </item>
    <item>
      <title>WSL2에서 Docker Desktop을 사용하지 않고 docker 설치하기..</title>
      <link>https://gyuha.tistory.com/547</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;chrome_dsPKjLq3Ix.png&quot; data-origin-width=&quot;1327&quot; data-origin-height=&quot;641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oF0rx/btrKMFD5Sn3/MaETT8S0gqAi29Xo6pfExk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oF0rx/btrKMFD5Sn3/MaETT8S0gqAi29Xo6pfExk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oF0rx/btrKMFD5Sn3/MaETT8S0gqAi29Xo6pfExk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoF0rx%2FbtrKMFD5Sn3%2FMaETT8S0gqAi29Xo6pfExk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1327&quot; height=&quot;641&quot; data-filename=&quot;chrome_dsPKjLq3Ix.png&quot; data-origin-width=&quot;1327&quot; data-origin-height=&quot;641&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker Desktop이 2022년 8월 31일 부터.. 250명 미만이고 년간 수익이 천만달러(약100억) 미만인 기업에서만 Docker Desktop을 무료로 사용 할 수 있다고 합니다. 개인이나 비영리는 계속 사용 가능 하고요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서, Docker Desktop에서 벗어 날려고 자료를 좀 정리 해 봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;WSL에 Docker 설치하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 시스템에는 WSL2가 설치가 되어 있어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl이 설치가 되어 있지 않다면 아래 URL을 참고 해서 설치 해 주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/ko-kr/windows/wsl/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.microsoft.com/ko-kr/windows/wsl/install&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl의 배포판이 설치 되어 있지 않다면, 아래와 같이 wsl --list --online 이라고 하면 유효한 배포 목록이 나옵니다. 현재 우분투는 22.04가 윈도우 스토어에 있지만 여기는 20.04가 최신 입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;WindowsTerminal_O32SU5rcB8.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZfuik/btrKJ4qSvEN/uqTgriCj4zRUw0qQgC5HIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZfuik/btrKJ4qSvEN/uqTgriCj4zRUw0qQgC5HIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZfuik/btrKJ4qSvEN/uqTgriCj4zRUw0qQgC5HIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZfuik%2FbtrKJ4qSvEN%2FuqTgriCj4zRUw0qQgC5HIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;257&quot; data-filename=&quot;WindowsTerminal_O32SU5rcB8.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1661749752499&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; wsl --install -d &quot;Ubuntu-20.04&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료 되었으면 docker를 아래와 같이 설치 해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661750005852&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update
curl -sSL get.docker.com | sh
sudo usermod $USER -aG docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;WindowsTerminal_WvNPNGnKrs.png&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLrYpG/btrKOH9v5VC/26P1ggVBIutUN6yhlzbXyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLrYpG/btrKOH9v5VC/26P1ggVBIutUN6yhlzbXyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLrYpG/btrKOH9v5VC/26P1ggVBIutUN6yhlzbXyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLrYpG%2FbtrKOH9v5VC%2F26P1ggVBIutUN6yhlzbXyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;185&quot; data-filename=&quot;WindowsTerminal_WvNPNGnKrs.png&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;185&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;그리고, 아래와 같이 /etc/wsl.conf 파일을 열어서..&lt;/p&gt;
&lt;pre id=&quot;code_1661750162297&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi /etc/wsl.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 내용을 입력 해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661750188208&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[boot]
command=&quot;/etc/init.d/docker start&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장하고 닫고 나서 해당 파일에 실행 권한을 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661750264932&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; sudo chmod 777 /etc/wsl.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 exit로 쉘을 나가 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661750420802&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl을 wsl --shutdown으로 wsl을 종료 후 다시 wsl로 wsl을 시작 해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러고 docker ps를 쳐 봐서.. 아래와 같은 화면이 나오면 정상 적으로 설치가 완료 된 상태 입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661750765945&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; wsl --shutdown
&amp;gt; wsl
$ docker ps&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;WindowsTerminal_oBc2BwelYa.png&quot; data-origin-width=&quot;897&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by0ZZo/btrKMncBaBE/AigJH3ksX2S8lUocLrf6Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by0ZZo/btrKMncBaBE/AigJH3ksX2S8lUocLrf6Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by0ZZo/btrKMncBaBE/AigJH3ksX2S8lUocLrf6Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby0ZZo%2FbtrKMncBaBE%2FAigJH3ksX2S8lUocLrf6Ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;897&quot; height=&quot;342&quot; data-filename=&quot;WindowsTerminal_oBc2BwelYa.png&quot; data-origin-width=&quot;897&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Docker Compose 설치 하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl 상태에서 아래와 같이 입력 해서 설치 해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661751136106&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo curl -SL https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 확인을 아래와 같이 하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661751251642&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ docker-compose version
Docker Compose version v2.7.0&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;PowerShell에서 docker 사용하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 명령어로 사용 하려고 하면, 아래와 같이 입력 해 주시면 사용이 가능 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661751324350&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wsl docker ps
wsl docker-compose --version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 간단하게 Alias만 해 주면 좀 더 편하게 docker를 사용 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파워쉘에서 아래와 같이 입력해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661752033619&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;notepad $PROFILE&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모장이 뜨고 여기에 아래의 내용을 입력해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661752090544&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Function Start-WslDocker {
    wsl docker $args
}
Function Start-WslDockerCompose {
    wsl docker-compose $args
}
Set-Alias -Name docker -Value Start-WslDocker
Set-Alias -Name docker-compose -Value Start-WslDockerCompose&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Notepad_GTjYi501sn.png&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqSQFy/btrKIssayxu/lkC0cUAKUyUjETDoZLrYG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqSQFy/btrKIssayxu/lkC0cUAKUyUjETDoZLrYG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqSQFy/btrKIssayxu/lkC0cUAKUyUjETDoZLrYG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqSQFy%2FbtrKIssayxu%2FlkC0cUAKUyUjETDoZLrYG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;534&quot; height=&quot;279&quot; data-filename=&quot;Notepad_GTjYi501sn.png&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 해주고 파워셀을 띄우면, 파워쉘에서 docker 명령어를 사용 할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VSCODE에 Docker 설정하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 기존 docker extension이 설치가 되어 있다면 삭제를 해 주셔야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;vscode에서 extension에서 wsl을 검색 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bculir/btrKUcPaaij/NfgLSZNSHaMi8f4mZNPh80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bculir/btrKUcPaaij/NfgLSZNSHaMi8f4mZNPh80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bculir/btrKUcPaaij/NfgLSZNSHaMi8f4mZNPh80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbculir%2FbtrKUcPaaij%2FNfgLSZNSHaMi8f4mZNPh80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1040&quot; height=&quot;476&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Remote -WSL을 설치 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, F1을 눌러서 &lt;b&gt;remote-wsl: New WSL Window using Distro..&lt;/b&gt; 를 선택 하시거나 왼쪽 밑 버튼을 눌러서 &lt;b&gt;New WSL Window using Distro..&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;707&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIHaFf/btrKUtpCcZt/R6NUllwVwuTXOv5WgH3Jl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIHaFf/btrKUtpCcZt/R6NUllwVwuTXOv5WgH3Jl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIHaFf/btrKUtpCcZt/R6NUllwVwuTXOv5WgH3Jl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIHaFf%2FbtrKUtpCcZt%2FR6NUllwVwuTXOv5WgH3Jl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;457&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 현재 사용중인 WSL 이미지를 선택 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면, 새로운 vscode가 뜨면서 WSL 과 연결이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 상태에서 Extension에서 Docker를 새로 설치를 해 줍니다.&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;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t5czN/btrKSLkmUZl/gs7BqKuoJqhZBTEVjWmsJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t5czN/btrKSLkmUZl/gs7BqKuoJqhZBTEVjWmsJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t5czN/btrKSLkmUZl/gs7BqKuoJqhZBTEVjWmsJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft5czN%2FbtrKSLkmUZl%2Fgs7BqKuoJqhZBTEVjWmsJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;433&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;433&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면, 옆에 docker아이콘이 생기고 vscode에서 wsl의 docker가 접근이 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YNu71/btrKWABAzs9/ZCmhmUSfKVp4h5Hf8prjzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YNu71/btrKWABAzs9/ZCmhmUSfKVp4h5Hf8prjzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YNu71/btrKWABAzs9/ZCmhmUSfKVp4h5Hf8prjzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYNu71%2FbtrKWABAzs9%2FZCmhmUSfKVp4h5Hf8prjzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1071&quot; height=&quot;748&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게만 세팅을 해 놓으면 docker desktop이 없더라도 툴까지 사용이 가능 해 집니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;유용한 CLI&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ctop&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에 top과 비슷한 컨셉으로 docker의 프로세스 목록을 보여 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wsl에서 apt 로 간단하게 설치가 가능 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661836193149&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt install ctop&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;928&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qizBs/btrKTScTNmQ/ki57vq32fW6iqeim1O4fNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qizBs/btrKTScTNmQ/ki57vq32fW6iqeim1O4fNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qizBs/btrKTScTNmQ/ki57vq32fW6iqeim1O4fNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqizBs%2FbtrKTScTNmQ%2Fki57vq32fW6iqeim1O4fNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;313&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;lazydocker&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;wsl에서 설치 해 주시면 됩니다. 설치 방법은 아래와 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1661836393750&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash&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;928&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nuTLG/btrKSLE7DKK/dbAxeOF1rHm2clm6VvAJQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nuTLG/btrKSLE7DKK/dbAxeOF1rHm2clm6VvAJQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nuTLG/btrKSLE7DKK/dbAxeOF1rHm2clm6VvAJQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnuTLG%2FbtrKSLE7DKK%2FdbAxeOF1rHm2clm6VvAJQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;317&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;참고&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://awesome-docker.netlify.app/#terminal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://awesome-docker.netlify.app/#terminal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/vscode-docker/issues/1582#issuecomment-578882428&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/microsoft/vscode-docker/issues/1582#issuecomment-578882428&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/_nicolas_louis_/how-to-run-docker-on-windows-without-docker-desktop-hik&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;How&amp;nbsp;to&amp;nbsp;run&amp;nbsp;docker&amp;nbsp;on&amp;nbsp;Windows&amp;nbsp;without&amp;nbsp;Docker&amp;nbsp;Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://securecloud.blog/2021/12/07/wsl2-use-docker-with-vscode-without-docker-desktop/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WSL2&amp;nbsp;&amp;ndash;&amp;nbsp;Use&amp;nbsp;docker&amp;nbsp;with&amp;nbsp;VSCode&amp;nbsp;without&amp;nbsp;docker&amp;nbsp;desktop&amp;nbsp;(Windows&amp;nbsp;11)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://issuecloser.com/blog/configuring-docker-without-docker-desktop-on-windows-wsl2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Configuring&amp;nbsp;Docker&amp;nbsp;without&amp;nbsp;Docker&amp;nbsp;Desktop&amp;nbsp;on&amp;nbsp;Windows&amp;nbsp;/&amp;nbsp;WSL2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Programming/Windows</category>
      <category>docker</category>
      <category>Windows</category>
      <category>WSL</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/547</guid>
      <comments>https://gyuha.tistory.com/547#entry547comment</comments>
      <pubDate>Mon, 29 Aug 2022 17:46:27 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 10에서 Docker desktop이 포트 충돌로 실행 되지 않을 때..</title>
      <link>https://gyuha.tistory.com/546</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우10에서 도커를 사용하면서 간혹 포트가 충돌 난다고 해서.. 도커 이미지가 뜨지 않을 때가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴때는 아래와 같이 해 보세요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, 관리자 모드롤 cmd또는 powershell을 띄웁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 하이퍼-V를 꺼 줍니다.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;dism.exe /Online /Disable-Feature:Microsoft-Hyper-V&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;해당 포트를 제외해 줍니다. 여기서는 1433포트를 예제로 했습니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;netsh int ipv4 add excludedportrange protocol=tcp startport=1433 numberofports=1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다시 파이퍼-v를 켜 줍니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All&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;br /&gt;전 이렇게 사용하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 다른 방법이 있다면 공유 해 주세요~&lt;/p&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <category>docker</category>
      <category>Windows 10</category>
      <category>도커</category>
      <category>윈도우10</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/546</guid>
      <comments>https://gyuha.tistory.com/546#entry546comment</comments>
      <pubDate>Fri, 20 Aug 2021 11:09:06 +0900</pubDate>
    </item>
    <item>
      <title>웹페이지 파비콘을 이미지로 사용하기</title>
      <link>https://gyuha.tistory.com/545</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;chrome_1618976778.png&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;153&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAvqcY/btq2199xXDE/SzePkftWsN8iaWmXGwCAM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAvqcY/btq2199xXDE/SzePkftWsN8iaWmXGwCAM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAvqcY/btq2199xXDE/SzePkftWsN8iaWmXGwCAM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAvqcY%2Fbtq2199xXDE%2FSzePkftWsN8iaWmXGwCAM1%2Fimg.png&quot; data-filename=&quot;chrome_1618976778.png&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;153&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;link 태그에 아래와 같은 형식으로 이모지를 넣어 주면 된다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;link rel=&quot;icon&quot; href='data:image/svg+xml,&amp;lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 100 100&quot;&amp;gt;&amp;lt;text y=&quot;.9em&quot; font-size=&quot;90&quot;&amp;gt;⚡️&amp;lt;/text&amp;gt;&amp;lt;/svg&amp;gt;'; /&amp;gt;
    &amp;lt;title&amp;gt;Emoji&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
Emoji
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <category>Emoji</category>
      <category>favicon</category>
      <category>HTML</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/545</guid>
      <comments>https://gyuha.tistory.com/545#entry545comment</comments>
      <pubDate>Wed, 21 Apr 2021 12:51:38 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 한번에 여러 프로젝트 한번에 불러 오기</title>
      <link>https://gyuha.tistory.com/544</link>
      <description>&lt;p&gt;vscode로 작업 하면서, 프론트와 백엔드를 별도의 제작해서 사용하는 경우가 있습니다.&lt;br /&gt;매번 실행 프로젝트를 띄울때 마다.. 여러개의 창을 띄워야 하는데..&lt;/p&gt;
&lt;p&gt;이게 귀찮아서 한방에 띄우는 batch 파일을 한번 만들어 봤습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1615355247124&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@echo off
set paths[0]=&quot;C:\workspace\project-frontend\&quot;
set paths[1]=&quot;C:\workspace\project-backend\&quot;
set paths[2]=&quot;C:\workspace\project-cms\&quot;

for /F &quot;tokens=2 delims==&quot; %%s in ('set paths[') do (
	echo run %%s
	cd %%s
	CALL code .
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위에서&amp;nbsp;코드에서&amp;nbsp;paths의&amp;nbsp;폴더와&amp;nbsp;숫자를&amp;nbsp;신경써서&amp;nbsp;넣어&amp;nbsp;주시면&amp;nbsp;됩니다.&lt;/p&gt;</description>
      <category>Programming</category>
      <category>Batch</category>
      <category>vscode</category>
      <category>Windows</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/544</guid>
      <comments>https://gyuha.tistory.com/544#entry544comment</comments>
      <pubDate>Wed, 10 Mar 2021 14:48:49 +0900</pubDate>
    </item>
    <item>
      <title>Typescript로 만든 react 프로젝트에서 경로 별칭 사용하기..</title>
      <link>https://gyuha.tistory.com/543</link>
      <description>&lt;p&gt;react 프로젝트를 진행하다 보면 아래와 같이 경로가 복잡해 지는 경우가 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1606106529889&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import MyComponent from &quot;../../../../../components/MyComponent&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이럴때 간단하게 별칭을 사용해서 아래와 같이 줄이는 방법을 소개 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606106601584&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import MyComponent from &quot;@/components/MyComponent&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;tsconfig.json에 아래와 같이 추가를 해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606108657466&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;compilerOptions&quot;: {
    // 추가 룰
    &quot;baseUrl&quot;: &quot;./src&quot;,
    &quot;paths&quot;: {
      &quot;@/*&quot;: [&quot;*&quot;],
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;create-reacte-app으로 프로젝트를 만들었다면, npm run eject를 해 주시고 tsconfig-paths-webpack-plugin을 설치해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606113844025&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm i -D tsconfig-paths-webpack-plugin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그리고, webpack.config.js 파일에&amp;nbsp; 아래와 같은 내용을 추가해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606113894483&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const TsconfigPathsPlugin = require(&amp;lsquo;tsconfig-paths-webpack-plugin&amp;rsquo;);

module.exports = {
  // 추가
  resolve: {
    plugins: [new TsconfigPathsPlugin()],
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;eslint를 사용한다면 eslint.json에 아래의 룰을 추가해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606114573573&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;rules&quot;: {
    &quot;import/no-unresolved&quot;: &quot;off&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 206px; top: 1048.4px;&quot;&gt;
&lt;div class=&quot;gtx-trans-icon&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>컴퓨터/인터넷</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/543</guid>
      <comments>https://gyuha.tistory.com/543#entry543comment</comments>
      <pubDate>Mon, 23 Nov 2020 15:56:32 +0900</pubDate>
    </item>
    <item>
      <title>Create React App으로 만든 electron앱에서 fs 사용하기..</title>
      <link>https://gyuha.tistory.com/542</link>
      <description>&lt;p&gt;&lt;span&gt;fs 모듈을 쓰려고 하면 `&lt;/span&gt;&lt;span&gt;Module not found` 라고 오류가 발생합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문제는 webpack 타겟을 &lt;span&gt;electron-renderer으로 잡아야 하는데, CRA(Create React App)으로 만든 프로젝트는 yarn eject를 해서 수정을 해 줘야 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;여기서는 eject를 하지 않고 해결하는 방법이 2가지을 소개 합니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;span&gt;craco를 사용하기&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;craco는 CRA로 만든 프로젝트를 eject하지 않고 간단하게 설정하게 해 주는 패키지이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;먼저 craco를 설치해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1600538486407&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm i -D @craco/craco&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그리고, craco.config.js 파일을 만들고 아래 내용을 입력해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600538570201&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;module.exports = {
  webpack: {
    configure: {
       target: 'electron-renderer'
    }
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;package.json 파일에서 start와 build 등을 아래와 같이 수정해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600575219042&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;start&quot;: &quot;craco start&quot;,
&quot;build&quot;: &quot;craco build&quot;,
&quot;test&quot;: &quot;craco test&quot;,&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;마지막으로&amp;nbsp; BrowserWindow 설정에서 아래와 같이 nodeIntegration, enableRemoteModule 를 추가해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600538633583&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  mainWindow = new BrowserWindow({
    width: 900,
    height: 680,
    frame: false,
    transparent: true,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
    },
  });&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 설정해 주면 fs 사용이 가능해 집니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;rescripts를 사용하기&lt;/h3&gt;
&lt;p&gt;rescripts는 CRA프로젝트를 eject하지 않고 설정해서 사용할게 있게 해 주는 패키지 입니다.&lt;/p&gt;
&lt;p&gt;rescripts를 설치해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600538871155&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm i -D @rescripts/cli @rescripts/rescript-env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;package.json 파일에서 start와 build 등을 아래와 같이 수정해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600538923098&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;start&quot;: &quot;rescripts start&quot;,
&quot;build&quot;: &quot;rescripts build&quot;,
&quot;test&quot;: &quot;rescripts test&quot;,&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;.rescriptsrc.js 파일을 만들고 아래와 같이 입력해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1600538964190&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;module.exports = [require.resolve('./.webpack.config.js')]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;.&lt;span&gt;webpack.config.js&lt;/span&gt;&lt;span&gt;&lt;span&gt; 파일을 만들고 아래와 같이 편집해 줍니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1600538994239&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;module.exports = config =&amp;gt; {
  config.target = 'electron-renderer';
  return config;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;마지막으로 craco와 마찬가지로&amp;nbsp; BrowserWindow 설정에서 아래와 같이 nodeIntegration, enableRemoteModule 를 추가해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600575309866&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  mainWindow = new BrowserWindow({
    width: 900,
    height: 680,
    frame: false,
    transparent: true,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
    },
  });&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 까지 설정해 주면 fs 사용이 가능해 집니다.&lt;/p&gt;</description>
      <category>electron</category>
      <category>file</category>
      <category>FS</category>
      <category>react</category>
      <category>Reactjs</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/542</guid>
      <comments>https://gyuha.tistory.com/542#entry542comment</comments>
      <pubDate>Sun, 20 Sep 2020 03:11:07 +0900</pubDate>
    </item>
    <item>
      <title>react-create-app으로 만든 typescript 프로젝트에 eslint 적용하기</title>
      <link>https://gyuha.tistory.com/541</link>
      <description>&lt;p&gt;적용해 보면서 하도 고생해서 정리해 봅니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Create-react-app&lt;/h2&gt;
&lt;p&gt;먼저 create-react-app를 통해서 프로젝트를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600150534003&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn create react-app my-app-name --template=typescript
$ cd my-app-name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Eslint&lt;/h2&gt;
&lt;p&gt;생성된 프로젝트 폴더로 이동한 후 eslint를 설치 해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600150751908&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn add -D eslint&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이게 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;yarn eslint --init&lt;/span&gt;을 통해서 eslint를 설정해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600151825847&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn eslint --init
? How would you like to use ESLint? 
  To check syntax only 
  To check syntax and find problems 
❯ To check syntax, find problems, and enforce code style

? What type of modules does your project use? (Use arrow keys)
❯ JavaScript modules (import/export) 
  CommonJS (require/exports) 
  None of these

? Which framework does your project use? 
❯ React 
  Vue.js 
  None of these

? Does your project use TypeScript? &amp;raquo; No / Yes

? Where does your code run? ...  (Press &amp;lt;space&amp;gt; to select, &amp;lt;a&amp;gt; to toggle all, &amp;lt;i&amp;gt; to invert selection)
&amp;radic; Browser
&amp;radic; Node

? How would you like to define a style for your project? ...
&amp;gt; Use a popular style guide
  Answer questions about your style
  Inspect your JavaScript file(s)

? Which style guide do you want to follow? ...
&amp;gt; Airbnb: https://github.com/airbnb/javascript
  Standard: https://github.com/standard/standard
  Google: https://github.com/google/eslint-config-google

? What format do you want your config file to be in? ...
  JavaScript
  YAML
&amp;gt; JSON

Checking peerDependencies of eslint-config-airbnb@latest
The config that you've selected requires the following dependencies:

eslint-plugin-react@^7.20.0 @typescript-eslint/eslint-plugin@latest eslint-config-airbnb@latest eslint@^5.16.0 || ^6.8.0 || ^7.2.0 eslint-plugin-import@^2.21.2 eslint-plugin-jsx-a11y@^6.3.0 eslint-plugin-react-hooks@^4 || ^3 || ^2.3.0 || ^1.7.0 @typescript-eslint/parser@latest
? Would you like to install them now with npm? &amp;raquo; No / Yes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;옵션은 위와 같이 설치해 줍니다.&lt;/p&gt;
&lt;p&gt;그런데 마지막에 필요한 패키지가 있다고 설치 하라고 하는데, 그걸 설치하면 react-scripts가 실행이 되지 않는 문제가 현재(2020년 9월 15일) 발생합니다. 나중에 고쳐 질 것 으로 보이지만 지금은 문제가 발생합니다. 그래서 eslintrc.json만 작성하고 설치는 No를 선택합니다.&lt;/p&gt;
&lt;p&gt;그리고 아래의 명령어로 설치해 줍니다. 위에꺼대로 설치 해서 잘 된다면 아래꺼는 하실 필요가 없습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600152101779&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yarn add eslint-plugin-react@^7.19.0 @typescript-eslint/eslint-plugin@&amp;circ;2.28.0 eslint-config-airbnb@latest eslint@^6.8.0 eslint-plugin-import@^2.20.1 eslint-plugin-jsx-a11y@^6.2.3 eslint-plugin-react-hooks@^2.5.0 @typescript-eslint/parser@latest -D&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 리엑트에서 타입 스크립트의 import를 이해 eslint-import-resolver-typescript 패키지가 필요 합니다. 아래와 같이 설치해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600152181967&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yarn add -D eslint-plugin-react@^7.19.0 @typescript-eslint/eslint-plugin@&amp;circ;2.28.0 eslint-config-airbnb@latest eslint@^6.8.0 eslint-plugin-import@^2.20.1 eslint-plugin-jsx-a11y@^6.2.3 eslint-plugin-react-hooks@^2.5.0 @typescript-eslint/parser@latest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;@typescript-eslint/eslint-plugin 패키지를 고르라고 나오는데 여기서는 4.1.1을 골랐습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고, eslint에서 제외할 폴더를 지정하기 위해서 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;.eslintignore&lt;/span&gt; 파일을 만들고 아래와 같이 넣어 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600152219666&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;**/*.js
node_modules
build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그리고 아래와 같이 eslint를 실행해 봅니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600152446610&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yarn eslint ./src/**/*.tsx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그러면 es2021을 모르겠다고 나옵니다. eslint 버전을 낮춰서 설치를 해서 생긴 문제 입니다. 이건 .eslintrc.json 파일의 env 항목에서 es2021을 es6로 변경해 주면 됩니다.&lt;/p&gt;
&lt;p&gt;그리고 다시 실행하면 eslint에 맞지 않는 파일들이 쭈욱~ 나오는 것을 확인 하 수 있습니다. eslint가 정상적으로 설치 된 것을 확인 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;요즘 react에서 hooks를 안 쓰면 react가 아니죠. eslint-plugin-react-hooks를 설치해 줍니다. 그리고 추가로 jest용 eslint도 추가해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600153001154&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn add -D eslint-plugin-react-hooks eslint-plugin-jest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그리고 eslintrc.json 파일에 아래와 같이 추가해 주면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600153038132&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;plugins&quot;: [
    // ...
    &quot;jest&quot;,
    &quot;react-hooks&quot;
  ],
  &quot;rules&quot;: {
    // ...
    &quot;react-hooks/rules-of-hooks&quot;: &quot;error&quot;,
    &quot;react-hooks/exhaustive-deps&quot;: &quot;warn&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Prettier&lt;/h2&gt;
&lt;p&gt;이제 vscode에서 원활한 사용을 위해서 prettier를 설치해 줍니다. vscode의 prettier 확장은 꼭~ 설치해 주세요.. 정말 보물 같은 확장입니다.&lt;/p&gt;
&lt;p&gt;그러면 아래와 같이 prettier관련 패키지를 설치해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600153113192&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yarn add -D prettier eslint-config-prettier eslint-plugin-prettier&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;.eslintrc.json&lt;/span&gt; 파일을 아래와 같이 넣어 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600153183722&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;env&quot;: {
    &quot;browser&quot;: true,
    &quot;es6&quot;: true,
    &quot;jest&quot;: true
  },
  &quot;extends&quot;: [
    &quot;plugin:react/recommended&quot;,
    &quot;airbnb&quot;,
    &quot;prettier/@typescript-eslint&quot;,
    &quot;plugin:prettier/recommended&quot;,
    &quot;prettier/react&quot;
  ],
  &quot;globals&quot;: {
    &quot;Atomics&quot;: &quot;readonly&quot;,
    &quot;SharedArrayBuffer&quot;: &quot;readonly&quot;
  },
  &quot;parser&quot;: &quot;@typescript-eslint/parser&quot;,
  &quot;parserOptions&quot;: {
    &quot;ecmaFeatures&quot;: {
      &quot;jsx&quot;: true
    },
    &quot;ecmaVersion&quot;: 2018,
    &quot;sourceType&quot;: &quot;module&quot;
  },
  &quot;plugins&quot;: [
    &quot;jest&quot;,
    &quot;react&quot;,
    &quot;@typescript-eslint&quot;,
    &quot;prettier&quot;,
    &quot;react-hooks&quot;
  ],
  &quot;rules&quot;: {
    &quot;prettier/prettier&quot;: [
      &quot;error&quot;
    ],
    &quot;no-console&quot;: &quot;off&quot;,
    &quot;react/jsx-filename-extension&quot;: [
      1,
      {
        &quot;extensions&quot;: [
          &quot;.js&quot;,
          &quot;.jsx&quot;,
          &quot;.ts&quot;,
          &quot;.tsx&quot;
        ]
      }
    ],
    &quot;import/extensions&quot;: [
      &quot;error&quot;,
      &quot;ignorePackages&quot;,
      {
        &quot;js&quot;: &quot;never&quot;,
        &quot;jsx&quot;: &quot;never&quot;,
        &quot;ts&quot;: &quot;never&quot;,
        &quot;tsx&quot;: &quot;never&quot;,
        &quot;json&quot;: &quot;never&quot;
      }
    ],
    &quot;react/jsx-props-no-spreading&quot;: &quot;off&quot;,
    &quot;jsx-a11y/click-events-have-key-events&quot;: 0,
    &quot;jsx-a11y/no-static-element-interactions&quot;: 0,
    &quot;no-plusplus&quot;: &quot;off&quot;,
    &quot;import/prefer-default-export&quot;: &quot;off&quot;,
    &quot;@typescript-eslint/no-unused-vars&quot;: &quot;warn&quot;,
    &quot;no-unused-vars&quot;: &quot;off&quot;,
    &quot;@typescript-eslint/no-unused-vars-experimental&quot;: &quot;warn&quot;,
    &quot;react/js-no-target-blank&quot;: &quot;off&quot;,
    &quot;react-hooks/rules-of-hooks&quot;: &quot;error&quot;,
    &quot;react-hooks/exhaustive-deps&quot;: &quot;warn&quot;,
    &quot;@typescript-eslint/explicit-function-return-type&quot;: &quot;off&quot;,
    &quot;no-use-before-define&quot;: [&quot;off&quot;, { &quot;variables&quot;: false }]
  },
  &quot;settings&quot;: {
    &quot;import/resolver&quot;: {
      &quot;node&quot;: {
        &quot;extensions&quot;: [
          &quot;.js&quot;,
          &quot;.jsx&quot;,
          &quot;.ts&quot;,
          &quot;.tsx&quot;
        ]
      }
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 내용은 제가 사용하면서 정리한 내용이라서 사용자의 편의에 따라서 수정해서 사용하시면 됩니다.&lt;/p&gt;
&lt;p&gt;그리고, .prettierrc 파일을 만들고 아래와 같이 입력해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600153291222&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;endOfLine&quot;: &quot;auto&quot;,
  &quot;parser&quot;: &quot;typescript&quot;,
  &quot;printWidth&quot;: 100,
  &quot;semi&quot;: true,
  &quot;singleQuote&quot;: true,
  &quot;tabWidth&quot;: 2,
  &quot;useTabs&quot;: false
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;대부분은 prettier의 기본값으로 사용하고 있으면 특별히 변경해서 사용하는 것만 기록을 해 뒀습니다. 기본 값은 아래 주소에서 확인 하시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://prettier.io/docs/en/options.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;prettier.io/docs/en/options.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1600153362144&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Prettier &amp;middot; Opinionated Code Formatter&quot; data-og-description=&quot;Opinionated Code Formatter&quot; data-og-host=&quot;prettier.io&quot; data-og-source-url=&quot;https://prettier.io/docs/en/options.html&quot; data-og-url=&quot;https://prettier.io/index.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/x6fMM/hyHwCvkRRY/k0y055kx6oaiRSUlj0KIJ0/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256,https://scrap.kakaocdn.net/dn/dzfvsk/hyHoXHzy9x/mrsOPKophjKfAQTeubHqmK/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256&quot;&gt;&lt;a href=&quot;https://prettier.io/docs/en/options.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://prettier.io/docs/en/options.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/x6fMM/hyHwCvkRRY/k0y055kx6oaiRSUlj0KIJ0/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256,https://scrap.kakaocdn.net/dn/dzfvsk/hyHoXHzy9x/mrsOPKophjKfAQTeubHqmK/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Prettier &amp;middot; Opinionated Code Formatter&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Opinionated Code Formatter&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;prettier.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;이제 prettier에서 제외로 할 파일 또는 폴더를 지정해 줍니다.&lt;/p&gt;
&lt;p&gt;.pre.prettierignore 파일을 만들고 아래와 같이 입력해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600153425426&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dist
build
package.json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VSCODE&lt;/h2&gt;
&lt;p&gt;이제 마지막으로 vscode에서 파일을 저장 할 때 자동으로 포맷을 할 수 있도록 설정해 줍니다.&lt;/p&gt;
&lt;p&gt;.vscode 폴더를 만들고 settgins.json 파일에 아래와 같이 입력해 줍니다.&lt;/p&gt;
&lt;p&gt;파일명 : .vscode/settings.json&lt;/p&gt;
&lt;pre id=&quot;code_1600153587955&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;[typescript]&quot;: {
    &quot;editor.formatOnSave&quot;: true,
    &quot;editor.defaultFormatter&quot;: &quot;esbenp.prettier-vscode&quot;
  },
  &quot;[typescriptreact]&quot;: {
    &quot;editor.formatOnSave&quot;: true,
    &quot;editor.defaultFormatter&quot;: &quot;esbenp.prettier-vscode&quot;
  },
  &quot;[javscript]&quot;: {
    &quot;editor.formatOnSave&quot;: true,
    &quot;editor.defaultFormatter&quot;: &quot;esbenp.prettier-vscode&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기까지 하시면 eslint 설정은 거의 완료 됩니다.&lt;/p&gt;
&lt;p&gt;이제 열코딩을 하시면 됩니다~&lt;/p&gt;
&lt;p&gt;그리고, 뭔가 이상하면 하거나 불편하다면 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;.eslintrc.json&lt;/span&gt; 또는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;.prettierrc&lt;/span&gt; 파일을 수정해 나가면서 나한테 맞는 lint 값을 찾아 가시면 됩니다.&lt;/p&gt;
&lt;p&gt;위 내용이 적용된 소스를 아래 주소에 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/gyuha/react-create-app-eslint&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/gyuha/react-create-app-eslint&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1600154179374&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;gyuha/react-create-app-eslint&quot; data-og-description=&quot;Contribute to gyuha/react-create-app-eslint development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/gyuha/react-create-app-eslint&quot; data-og-url=&quot;https://github.com/gyuha/react-create-app-eslint&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cT57O1/hyHwBiUzAB/tzqlEQ9X0UKKp43LBINfk1/img.jpg?width=400&amp;amp;height=400&amp;amp;face=161_129_302_283&quot;&gt;&lt;a href=&quot;https://github.com/gyuha/react-create-app-eslint&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/gyuha/react-create-app-eslint&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cT57O1/hyHwBiUzAB/tzqlEQ9X0UKKp43LBINfk1/img.jpg?width=400&amp;amp;height=400&amp;amp;face=161_129_302_283');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;gyuha/react-create-app-eslint&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Contribute to gyuha/react-create-app-eslint development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming/Node.js</category>
      <category>eslint</category>
      <category>Formatter</category>
      <category>lint</category>
      <category>prettier</category>
      <category>react</category>
      <category>TypeScript</category>
      <category>vscode</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/541</guid>
      <comments>https://gyuha.tistory.com/541#entry541comment</comments>
      <pubDate>Tue, 15 Sep 2020 15:35:25 +0900</pubDate>
    </item>
    <item>
      <title>Typescript 기반으로 React Electron App 시작하기.</title>
      <link>https://gyuha.tistory.com/540</link>
      <description>&lt;p&gt;먼저 기본적으로 node.js가 설치가 되어 있다는 가정으로 설명 합니다.&lt;/p&gt;
&lt;p&gt;yarn이 설치 되어 있지 않다면 먼저 yarn을 설치해 줍니다.&amp;nbsp; yarn은 npm과 같은 node의 패키지 매니저 입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600098660114&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm install -g yarn&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그리고, create-react-app을 통해서 타입스크립트 기반의 프로젝트를 생성해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600098594401&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npx create-react-app my-app-name --template typescript
$ cd my-app-name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위와 같이 명령어를 넣어 주면 타입스크립트 기반으로 react와 webpack 설정이 되어 있는 프로젝트가 설정 됩니다.&lt;/p&gt;
&lt;p&gt;이제 Electron과 실행에 필요한 패키지를 설치해 줍니다. 아래 패키지들은 개발에서만 사용되는 패키지라서 --dev를 붙여 줬습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600099011150&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn add --dev electron electron-builder concurrently wait-on cross-env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;각 패키지의 역할은 아래와 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;electron : Electron 기본 패키지&lt;/li&gt;
&lt;li&gt;electron-builder : electron을 원하는 플랫폼으로 빌드해 줍니다.&lt;/li&gt;
&lt;li&gt;concurrently : 한번에 여러개의 명령어를 실행할 수 있게 해 줍니다.&lt;/li&gt;
&lt;li&gt;wait-on : 특정 포트 또는 파일이 활성화 될 때까지 대기를 해 줍니다.&lt;/li&gt;
&lt;li&gt;cross-env : 시스템에 관계없이 환경변수 값을 설정할 수 있게 해 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그리고 추가로 아래의 패키지를 설치해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600100224700&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn add electron-is-dev&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;electron-is-dev 패키지는 현재 환경이 개발 환경인지를 확인 해 주는 패키지 입니다. 이 파일을 별도로 설치한 이유는 앱 실행시 이 패키지를 통해서 실행 경로를 바꿔주기 위해서 입니다.&lt;/p&gt;
&lt;p&gt;이게 public 폴더 안에 electron.js 파일을 아래와 같이 작성해 줍니다.&lt;/p&gt;
&lt;p&gt;./public/electron.js&lt;/p&gt;
&lt;pre id=&quot;code_1600098093790&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const electron = require(&quot;electron&quot;);
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const path = require(&quot;path&quot;);
const isDev = require(&quot;electron-is-dev&quot;);

let mainWindow;

function createWindow() {
  mainWindow = new BrowserWindow({ 
    width: 900, 
    height: 680,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
      devTools: isDev,
    },
  });
  
  mainWindow.loadURL(
    isDev
      ? &quot;http://localhost:3000&quot;
      : `file://${path.join(__dirname, &quot;../build/index.html&quot;)}`
  );
  
  if (isDev) {
    mainWindow.webContents.openDevTools({ mode: 'detach' });
  }
  
  mainWindow.setResizable(true);
  mainWindow.on('closed', () =&amp;gt; (mainWindow = null));
  mainWindow.focus();
}

app.on(&quot;ready&quot;, createWindow);

app.on(&quot;window-all-closed&quot;, () =&amp;gt; {
  if (process.platform !== &quot;darwin&quot;) {
    app.quit();
  }
});

app.on(&quot;activate&quot;, () =&amp;gt; {
  if (mainWindow === null) {
    createWindow();
  }
});&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;소스의 가운데 쯤 &lt;b&gt;isDev&lt;/b&gt;를 보시면 http와 file로 분기하는 걸 보실 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;개발 환경인 경우에는 아래 그림과 같이 Webpack을 통해서 빌드 된 화면에 Electron app에서 실행되게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;react electron-Page-1 (2).png&quot; data-origin-width=&quot;1445&quot; data-origin-height=&quot;527&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL4rdZ/btqIBODWtjp/yMdZygxC85WBJEhHBFrOJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL4rdZ/btqIBODWtjp/yMdZygxC85WBJEhHBFrOJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL4rdZ/btqIBODWtjp/yMdZygxC85WBJEhHBFrOJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL4rdZ%2FbtqIBODWtjp%2FyMdZygxC85WBJEhHBFrOJ1%2Fimg.png&quot; data-filename=&quot;react electron-Page-1 (2).png&quot; data-origin-width=&quot;1445&quot; data-origin-height=&quot;527&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;이렇게 구성을 하게 되면 소스 파일을 수정하게 되면 앱을 새로 빌드하지 않고도 바로 고친 내용을 Electron 앱에서 실행이 되게 됩니다. 덕분에 빠른 속도로 개발이 가능해 집니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;그리고 일반적인 빌드를 하게 되면 Webpack으로 묶인 React App 파일이 Electron App에 포함해서 실행 파일로 만들어 지게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;react electron-Page-2 (1).png&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;542&quot; width=&quot;510&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KmFOy/btqIBOjD8GC/IzxsxXPEGCvFw4gWZ8uCL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KmFOy/btqIBOjD8GC/IzxsxXPEGCvFw4gWZ8uCL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KmFOy/btqIBOjD8GC/IzxsxXPEGCvFw4gWZ8uCL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKmFOy%2FbtqIBOjD8GC%2FIzxsxXPEGCvFw4gWZ8uCL0%2Fimg.png&quot; data-filename=&quot;react electron-Page-2 (1).png&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;542&quot; width=&quot;510&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;그리고, BrowerWindow는 Electron 앱의 다양한 실행 형태를 지정하는 옵션을 가지고 있습니다. 상세한 옵션은 아래 주소를 참고 하세요.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.electronjs.org/docs/api/browser-window&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.electronjs.org/docs/api/browser-window&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1600100735679&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;BrowserWindow | Electron&quot; data-og-description=&quot;브라우저 윈도우를 생성하고 제어합니다.&quot; data-og-host=&quot;www.electronjs.org&quot; data-og-source-url=&quot;https://www.electronjs.org/docs/api/browser-window&quot; data-og-url=&quot;https://www.electronjs.org/docs/api/browser-window&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wB20T/hyHoQhjBuZ/UlEF7M9BzVxkDJsM3tHz0K/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://www.electronjs.org/docs/api/browser-window&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.electronjs.org/docs/api/browser-window&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wB20T/hyHoQhjBuZ/UlEF7M9BzVxkDJsM3tHz0K/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;BrowserWindow | Electron&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;브라우저 윈도우를 생성하고 제어합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.electronjs.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;이제 마지막 과정으로 아래 내용을 package.json 파일에 추가해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600101320148&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &quot;author&quot;: &quot;My name&quot;,
  &quot;build&quot;: {
    &quot;appId&quot;: &quot;com.appId&quot;
  },
  &quot;main&quot;: &quot;public/electron.js&quot;,
  &quot;homepage&quot;: &quot;./&quot;,
  &quot;scripts&quot;: {
    &quot;react-start&quot;: &quot;react-scripts start&quot;,
    &quot;react-build&quot;: &quot;react-scripts build&quot;,
    &quot;react-test&quot;: &quot;react-scripts test&quot;,
    &quot;react-eject&quot;: &quot;react-scripts eject&quot;,
    &quot;start&quot;: &quot;concurrently \&quot;cross-env NODE_ENV=development BROWSER=none yarn react-start\&quot; \&quot;wait-on http://localhost:3000 &amp;amp;&amp;amp; electron .\&quot;&quot;,
    &quot;build&quot;: &quot;yarn react-build &amp;amp;&amp;amp; electron-builder&quot;,
    &quot;release&quot;: &quot;yarn react-build &amp;amp;&amp;amp; electron-builder --publish=always&quot;
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;기존의 scripts 내용은 제거하고 위 내용을 넣어 주시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;여기서 main과 homepage는 꼭 넣어 줘야 빌드하고 나서 실행이 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;이제 설정을 모두 마쳤습니다. 그리고 아래와 같이 실행을 하게 되면 React App 윈도우가 뜨게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600101482071&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn start&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2TVaKtBtq6.png&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;1010&quot; width=&quot;404&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2wfaa/btqIPRyL2LM/5ujLJCUKZ24STdCxCS8ZF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2wfaa/btqIPRyL2LM/5ujLJCUKZ24STdCxCS8ZF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2wfaa/btqIPRyL2LM/5ujLJCUKZ24STdCxCS8ZF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2wfaa%2FbtqIPRyL2LM%2F5ujLJCUKZ24STdCxCS8ZF1%2Fimg.png&quot; data-filename=&quot;2TVaKtBtq6.png&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;1010&quot; width=&quot;404&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;그리고 실행 파일을 만들고 싶다면 아래와 같이 입력 하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1600101577202&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn build&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;package.json 파일에 배포 설정이 되어 있다면 yarn release를 통해서 배포도 가능 합니다.&lt;/p&gt;</description>
      <category>Programming/Node.js</category>
      <category>electron</category>
      <category>nodejs</category>
      <category>react</category>
      <category>TypeScript</category>
      <category>webpack</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/540</guid>
      <comments>https://gyuha.tistory.com/540#entry540comment</comments>
      <pubDate>Tue, 15 Sep 2020 01:48:48 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 vue  프로젝트 생성시 ESlint와 Prettier 설정해 주기</title>
      <link>https://gyuha.tistory.com/539</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/539?type=post&amp;amp;returnURL=https%3A%2F%2Fgyuha.tistory.com%2F539&quot;&gt;&lt;img src=&quot;https://k.kakaocdn.net/dn/1UIai/btqDwdoAvUq/kd3vIpYWMuqwKgRdwEnkY0/img.jpg&quot; width=&quot;440&quot; height=&quot;208&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/1UIai/btqDwdoAvUq/kd3vIpYWMuqwKgRdwEnkY0/img.jpg&quot; data-filename=&quot;1_mVqJFrdzjxBcx63I6P4V2A.jpeg&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;663&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;기존에 사용하던 &lt;a href=&quot;https://www.npmjs.com/package/tslint&quot;&gt;TSLint가 더이상 지원&lt;/a&gt;을 받지 못 하게 되면서, ESlint로 넘어가야 상태가 되었습니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;여기서는 Vue 프로젝트를 생성하면서 ESlint와 Prettier를 사용하는 세팅을 간단하게 설정하려고 합니다. 사용하는 툴은 vscode입니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;vue create myproject&lt;/code&gt; 형태로 기본 프로젝트를 선택 합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&amp;gt; npx vue create myproject 

? Please pick a preset: Manually select features 
? Check the features needed &lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;for&lt;/span&gt; your project: 
 (*) Babel 
 (*) TypeScript 
 ( ) Progressive Web App (PWA) Support 
 ( ) Router 
 ( ) Vuex 
 (*) CSS Pre-processors 
&amp;gt;(*) Linter / Formatter 
 ( ) Unit Testing 
 ( ) E2E Testing      

? Use Babel alongside TypeScript (required &lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;for&lt;/span&gt; modern mode, auto-detected polyfills, transpiling JSX)? (Y/n) Y  

? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): 
&amp;gt; Sass/SCSS (with dart-sass) 
  Sass/SCSS (with node-sass) 
  Less 
  Stylus       

? Pick a linter / formatter config: 
  ESLint with error prevention only 
  ESLint + Airbnb config 
  ESLint + Standard config 
&amp;gt;  ESLint + Prettier 
  TSLint (deprecated)     

? Pick additional lint features: (Press  to select,  to toggle all,  to invert selection) 
&amp;gt;(*) Lint on save 
 ( ) Lint and fix on commit  

? Where &lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;do&lt;/span&gt; you prefer placing config &lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;for&lt;/span&gt; Babel, ESLint, etc.? (Use arrow keys) 
&amp;gt; In dedicated config files 
  In package.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;여기서 처음 체크 박스에서 Linter / Formatter를 꼭 선택해 주시고, Linter / Formatter는 ESLint + Prettier를 선택해 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;cd&lt;/span&gt; myproject 
&amp;gt; code .
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고 위와 같이 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;vscode&lt;/code&gt;를 실행 해 줍니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;만약 VSCode에는 아래와 같은 확장 프로그램을 설치가 되어 있지 않으면 설치를 해 줍니다.&lt;/p&gt;
&lt;ul style=&quot;margin: 1.2em 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;ESLint&lt;/li&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;Prettier - Code formatter&lt;/li&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;Vetur&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고, vscode의 설정에서 아래와 내용을 추가해 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-json&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;{ 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;[typescript]&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;{ 
    &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;editor.defaultFormatter&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;&quot;esbenp.prettier-vscode&quot;&lt;/span&gt;&lt;/span&gt;, 
    &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;editor.formatOnSave&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-literal&quot;&gt;true&lt;/span&gt; 
  &lt;/span&gt;}&lt;/span&gt;, 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;[vue]&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;{ 
    &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;editor.defaultFormatter&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;&quot;esbenp.prettier-vscode&quot;&lt;/span&gt;&lt;/span&gt;, 
    &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;editor.formatOnSave&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-literal&quot;&gt;true&lt;/span&gt; 
  &lt;/span&gt;} 
&lt;/span&gt;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;여기까지 하면 vscode에서 파일을 저장 할 때 알아서 포맷팅을 해 주고 저장을 해 주게 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;마지막으로 추가로 좀 더 상세한 설정을 하고 싶다면, 프로젝트 루트 폴더에 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;.prettierrc.json&lt;/code&gt;파일을 만들고 상세한 설정을 해 주시면 됩니다. 아래와 같은 형식으로 만들어 주시면 됩니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-json&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;{ 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;tabWidth&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;&lt;/span&gt;, 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;semi&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-literal&quot;&gt;true&lt;/span&gt;&lt;/span&gt;, 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;singleQuote&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;, 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;trailingComma&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;&quot;es5&quot;&lt;/span&gt;&lt;/span&gt;, 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;bracketSpacing&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;, 
  &quot;&lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-attribute&quot;&gt;arrowParens&lt;/span&gt;&quot;: &lt;span style=&quot;color: #bf79db;&quot; class=&quot;hljs-value&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;&quot;always&quot;&lt;/span&gt; 
&lt;/span&gt;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;상세한 내용은 아래 링크를 확인 하시면 됩니다.&lt;/p&gt;
&lt;ul style=&quot;margin: 1.2em 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;&lt;a href=&quot;https://prettier.io/docs/en/options.html&quot;&gt;https://prettier.io/docs/en/options.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;참고&lt;/h2&gt;
&lt;ul style=&quot;margin: 1.2em 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;&lt;a href=&quot;https://www.anthonygonzales.dev/blog/setup-eslint-prettier-with-typescript.html&quot;&gt;Setup Prettier and ESLint for Typescript&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;&lt;a href=&quot;https://prettier.io/&quot;&gt;https://prettier.io/&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;&lt;a href=&quot;https://velog.io/@kyusung/eslint-config-3&quot;&gt;Typescript ESLint 설정하기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 0.5em 0px;&quot;&gt;&lt;a href=&quot;https://velog.io/@kyusung/eslint-config-4&quot;&gt;ESLint - 4. Prettier 적용&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PGZpZ3VyZSBkYXRhLWtlLXR5cGU9ImltYWdlIiBkYXRhLWtlLXN0eWxlPSJhbGlnbkNlbnRlciIg
ZGF0YS12aWRlby13aWR0aD0iNDQwIj48aW1nIHNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9k
bi8xVUlhaS9idHFEd2RvQXZVcS9rZDN2SXBZV011cXdLZ1Jkd0Vua1kwL2ltZy5qcGciIGRhdGEt
aW1hZ2Utc3JjPSJodHRwczovL2sua2FrYW9jZG4ubmV0L2RuLzFVSWFpL2J0cUR3ZG9BdlVxL2tk
M3ZJcFlXTXVxd0tnUmR3RW5rWTAvaW1nLmpwZyIgZGF0YS1maWxlbmFtZT0iMV9tVnFKRnJkemp4
QmN4NjNJNlA0VjJBLmpwZWciIGRhdGEtb3JpZ2luLXdpZHRoPSIxNDAwIiBkYXRhLW9yaWdpbi1o
ZWlnaHQ9IjY2MyIgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIyMDgiPjxmaWdjYXB0aW9uIHN0eWxlPSJk
aXNwbGF5OiBub25lOyI+PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPuq4sOyhtOyXkCZuYnNwO+yC
rOyaqe2VmOuNmCZuYnNwO1tUU0xpbnTqsIAmbmJzcDvrjZTsnbTsg4EmbmJzcDvsp4Dsm5BdKDxh
IGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3RzbGludCnsnYQiIHRhcmdldD0i
X2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL3d3dy5ucG1qcy5j
b20vcGFja2FnZS90c2xpbnQp7J2EIj5odHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS90c2xp
bnQp7J2EPC9hPiZuYnNwO+uwm+yngCZuYnNwO+uquyZuYnNwO+2VmOqyjCZuYnNwO+uQmOuptOyE
nCwmbmJzcDtFU2xpbnTroZwmbmJzcDvrhJjslrTqsIDslbwmbmJzcDvsg4Htg5zqsIAmbmJzcDvr
kJjsl4jsirXri4jri6QuIDxicj48YnI+7Jes6riw7ISc64qUJm5ic3A7VnVlJm5ic3A77ZSE66Gc
7KCd7Yq466W8Jm5ic3A77IOd7ISx7ZWY66m07IScJm5ic3A7RVNsaW507JmAJm5ic3A7UHJldHRp
ZXLrpbwmbmJzcDvsgqzsmqntlZjripQmbmJzcDvshLjtjIXsnYQmbmJzcDvqsITri6jtlZjqsowm
bmJzcDvshKTsoJXtlZjroKTqs6AmbmJzcDvtlanri4jri6QuJm5ic3A77IKs7Jqp7ZWY64qUJm5i
c3A77Yi07J2AJm5ic3A7dnNjb2Rl7J6F64uI64ukLiA8YnI+PGJyPmB2dWUmbmJzcDtjcmVhdGUm
bmJzcDtteXByb2plY3RgJm5ic3A77ZiV7YOc66GcJm5ic3A76riw67O4Jm5ic3A77ZSE66Gc7KCd
7Yq466W8Jm5ic3A77ISg7YOdJm5ic3A77ZWp64uI64ukLiA8YnI+PGJyPmBgYGJhc2ggPGJyPiZn
dDsmbmJzcDtucHgmbmJzcDt2dWUmbmJzcDtjcmVhdGUmbmJzcDtteXByb2plY3QgPGJyPjxicj4/
Jm5ic3A7UGxlYXNlJm5ic3A7cGljayZuYnNwO2EmbmJzcDtwcmVzZXQ6Jm5ic3A7TWFudWFsbHkm
bmJzcDtzZWxlY3QmbmJzcDtmZWF0dXJlcyA8YnI+PyZuYnNwO0NoZWNrJm5ic3A7dGhlJm5ic3A7
ZmVhdHVyZXMmbmJzcDtuZWVkZWQmbmJzcDtmb3ImbmJzcDt5b3VyJm5ic3A7cHJvamVjdDogPGJy
PiZuYnNwOygqKSZuYnNwO0JhYmVsIDxicj4mbmJzcDsoKikmbmJzcDtUeXBlU2NyaXB0IDxicj4m
bmJzcDsoJm5ic3A7KSZuYnNwO1Byb2dyZXNzaXZlJm5ic3A7V2ViJm5ic3A7QXBwJm5ic3A7KFBX
QSkmbmJzcDtTdXBwb3J0IDxicj4mbmJzcDsoJm5ic3A7KSZuYnNwO1JvdXRlciA8YnI+Jm5ic3A7
KCZuYnNwOykmbmJzcDtWdWV4IDxicj4mbmJzcDsoKikmbmJzcDtDU1MmbmJzcDtQcmUtcHJvY2Vz
c29ycyA8YnI+Jmd0OygqKSZuYnNwO0xpbnRlciZuYnNwOy8mbmJzcDtGb3JtYXR0ZXIgPGJyPiZu
YnNwOygmbmJzcDspJm5ic3A7VW5pdCZuYnNwO1Rlc3RpbmcgPGJyPiZuYnNwOygmbmJzcDspJm5i
c3A7RTJFJm5ic3A7VGVzdGluZyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YnI+PGJy
Pj8mbmJzcDtVc2UmbmJzcDtCYWJlbCZuYnNwO2Fsb25nc2lkZSZuYnNwO1R5cGVTY3JpcHQmbmJz
cDsocmVxdWlyZWQmbmJzcDtmb3ImbmJzcDttb2Rlcm4mbmJzcDttb2RlLCZuYnNwO2F1dG8tZGV0
ZWN0ZWQmbmJzcDtwb2x5ZmlsbHMsJm5ic3A7dHJhbnNwaWxpbmcmbmJzcDtKU1gpPyZuYnNwOyhZ
L24pJm5ic3A7WSZuYnNwOyA8YnI+PGJyPj8mbmJzcDtQaWNrJm5ic3A7YSZuYnNwO0NTUyZuYnNw
O3ByZS1wcm9jZXNzb3ImbmJzcDsoUG9zdENTUywmbmJzcDtBdXRvcHJlZml4ZXImbmJzcDthbmQm
bmJzcDtDU1MmbmJzcDtNb2R1bGVzJm5ic3A7YXJlJm5ic3A7c3VwcG9ydGVkJm5ic3A7YnkmbmJz
cDtkZWZhdWx0KTogPGJyPiZndDsmbmJzcDtTYXNzL1NDU1MmbmJzcDsod2l0aCZuYnNwO2RhcnQt
c2FzcykgPGJyPiZuYnNwOyZuYnNwO1Nhc3MvU0NTUyZuYnNwOyh3aXRoJm5ic3A7bm9kZS1zYXNz
KSA8YnI+Jm5ic3A7Jm5ic3A7TGVzcyA8YnI+Jm5ic3A7Jm5ic3A7U3R5bHVzJm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxicj48YnI+PyZuYnNwO1BpY2smbmJzcDthJm5ic3A7
bGludGVyJm5ic3A7LyZuYnNwO2Zvcm1hdHRlciZuYnNwO2NvbmZpZzogPGJyPiZuYnNwOyZuYnNw
O0VTTGludCZuYnNwO3dpdGgmbmJzcDtlcnJvciZuYnNwO3ByZXZlbnRpb24mbmJzcDtvbmx5IDxi
cj4mbmJzcDsmbmJzcDtFU0xpbnQmbmJzcDsrJm5ic3A7QWlyYm5iJm5ic3A7Y29uZmlnIDxicj4m
bmJzcDsmbmJzcDtFU0xpbnQmbmJzcDsrJm5ic3A7U3RhbmRhcmQmbmJzcDtjb25maWcgPGJyPiZn
dDsmbmJzcDsmbmJzcDtFU0xpbnQmbmJzcDsrJm5ic3A7UHJldHRpZXIgPGJyPiZuYnNwOyZuYnNw
O1RTTGludCZuYnNwOyhkZXByZWNhdGVkKSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YnI+PGJy
Pj8mbmJzcDtQaWNrJm5ic3A7YWRkaXRpb25hbCZuYnNwO2xpbnQmbmJzcDtmZWF0dXJlczombmJz
cDsoUHJlc3MmbmJzcDsmbmJzcDt0byZuYnNwO3NlbGVjdCwmbmJzcDs8YT4mbmJzcDt0byZuYnNw
O3RvZ2dsZSZuYnNwO2FsbCwmbmJzcDs8aT4mbmJzcDt0byZuYnNwO2ludmVydCZuYnNwO3NlbGVj
dGlvbikgPGJyPiZndDsoKikmbmJzcDtMaW50Jm5ic3A7b24mbmJzcDtzYXZlIDxicj4mbmJzcDso
Jm5ic3A7KSZuYnNwO0xpbnQmbmJzcDthbmQmbmJzcDtmaXgmbmJzcDtvbiZuYnNwO2NvbW1pdCZu
YnNwOyA8YnI+PGJyPj8mbmJzcDtXaGVyZSZuYnNwO2RvJm5ic3A7eW91Jm5ic3A7cHJlZmVyJm5i
c3A7cGxhY2luZyZuYnNwO2NvbmZpZyZuYnNwO2ZvciZuYnNwO0JhYmVsLCZuYnNwO0VTTGludCwm
bmJzcDtldGMuPyZuYnNwOyhVc2UmbmJzcDthcnJvdyZuYnNwO2tleXMpIDxicj4mZ3Q7Jm5ic3A7
SW4mbmJzcDtkZWRpY2F0ZWQmbmJzcDtjb25maWcmbmJzcDtmaWxlcyA8YnI+Jm5ic3A7Jm5ic3A7
SW4mbmJzcDs8L2k+PC9hPjxpPjxhIGhyZWY9InBhY2thZ2UuanNvbiIgdGFyZ2V0PSJfYmxhbmsi
IHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9InBhY2thZ2UuanNvbiI+cGFja2FnZS5qc29u
PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8
YnI+YGBgIDxicj48YnI+7Jes6riw7IScJm5ic3A77LKY7J2MJm5ic3A77LK07YGsJm5ic3A767CV
7Iqk7JeQ7IScJm5ic3A7TGludGVyJm5ic3A7LyZuYnNwO0Zvcm1hdHRlcuulvCZuYnNwO+q8rSZu
YnNwO+yEoO2Dne2VtCZuYnNwO+yjvOyLnOqzoCwmbmJzcDtMaW50ZXImbmJzcDsvJm5ic3A7Rm9y
bWF0dGVy64qUJm5ic3A7RVNMaW50Jm5ic3A7KyZuYnNwO1ByZXR0aWVy66W8Jm5ic3A77ISg7YOd
7ZW0Jm5ic3A77KSN64uI64ukLiA8YnI+PGJyPmBgYGJhc2ggPGJyPiZndDsmbmJzcDtjZCZuYnNw
O215cHJvamVjdCA8YnI+Jmd0OyZuYnNwO2NvZGUmbmJzcDsuIDxicj5gYGAgPGJyPjxicj7qt7jr
pqzqs6AmbmJzcDvsnITsmYAmbmJzcDvqsJnsnbQmbmJzcDtgdnNjb2RlYOulvCZuYnNwO+yLpO2W
iSZuYnNwO+2VtCZuYnNwO+ykjeuLiOuLpC4gPGJyPjxicj48YnI+PGJyPuunjOyVvSZuYnNwO1ZT
Q29kZeyXkOuKlCZuYnNwO+yVhOuemOyZgCZuYnNwO+qwmeydgCZuYnNwO+2ZleyepSZuYnNwO+2U
hOuhnOq3uOueqOydhCZuYnNwO+yEpOy5mOqwgCZuYnNwO+uQmOyWtCZuYnNwO+yeiOyngCZuYnNw
O+yViuycvOuptCZuYnNwO+yEpOy5mOulvCZuYnNwO+2VtCZuYnNwO+ykjeuLiOuLpC4gPGJyPjxi
cj4tJm5ic3A7Jm5ic3A7Jm5ic3A7RVNMaW50IDxicj4tJm5ic3A7Jm5ic3A7Jm5ic3A7UHJldHRp
ZXImbmJzcDstJm5ic3A7Q29kZSZuYnNwO2Zvcm1hdHRlciA8YnI+LSZuYnNwOyZuYnNwOyZuYnNw
O1ZldHVyIDxicj48YnI+PGJyPjxicj7qt7jrpqzqs6AsJm5ic3A7dnNjb2Rl7J2YJm5ic3A77ISk
7KCV7JeQ7IScJm5ic3A77JWE656Y7JmAJm5ic3A764K07Jqp7J2EJm5ic3A77LaU6rCA7ZW0Jm5i
c3A77KSN64uI64ukLiA8YnI+PGJyPmBgYGpzb24gPGJyPnsgPGJyPiZuYnNwOyZuYnNwOyJbdHlw
ZXNjcmlwdF0iOiZuYnNwO3sgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyJlZGl0b3IuZGVm
YXVsdEZvcm1hdHRlciI6Jm5ic3A7ImVzYmVucC5wcmV0dGllci12c2NvZGUiLCA8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7ImVkaXRvci5mb3JtYXRPblNhdmUiOiZuYnNwO3RydWUgPGJyPiZu
YnNwOyZuYnNwO30sIDxicj4mbmJzcDsmbmJzcDsiW3Z1ZV0iOiZuYnNwO3sgPGJyPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyJlZGl0b3IuZGVmYXVsdEZvcm1hdHRlciI6Jm5ic3A7ImVzYmVucC5w
cmV0dGllci12c2NvZGUiLCA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ImVkaXRvci5mb3Jt
YXRPblNhdmUiOiZuYnNwO3RydWUgPGJyPiZuYnNwOyZuYnNwO30gPGJyPn0gPGJyPmBgYCA8YnI+
PGJyPuyXrOq4sOq5jOyngCZuYnNwO+2VmOuptCZuYnNwO3ZzY29kZeyXkOyEnCZuYnNwO+2MjOyd
vOydhCZuYnNwO+yggOyepSZuYnNwO+2VoCZuYnNwO+uVjCZuYnNwO+yVjOyVhOyEnCZuYnNwO+2P
rOunt+2MheydhCZuYnNwO+2VtCZuYnNwO+yjvOqzoCZuYnNwO+yggOyepeydhCZuYnNwO+2VtCZu
YnNwO+yjvOqyjCZuYnNwO+uQqeuLiOuLpC4gPGJyPjxicj7rp4jsp4Drp4nsnLzroZwmbmJzcDvs
tpTqsIDroZwmbmJzcDvsooAmbmJzcDvrjZQmbmJzcDvsg4HshLjtlZwmbmJzcDvshKTsoJXsnYQm
bmJzcDvtlZjqs6AmbmJzcDvsi7bri6TrqbQsJm5ic3A77ZSE66Gc7KCd7Yq4Jm5ic3A766Oo7Yq4
Jm5ic3A77Y+0642U7JeQJm5ic3A7YDxhIGhyZWY9Ii5wcmV0dGllcnJjLmpzb24iIHRhcmdldD0i
X2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSIucHJldHRpZXJyYy5qc29uIj4u
cHJldHRpZXJyYy5qc29uPC9hPmDtjIzsnbzsnYQmbmJzcDvrp4zrk6Tqs6AmbmJzcDvsg4HshLjt
lZwmbmJzcDvshKTsoJXsnYQmbmJzcDvtlbQmbmJzcDvso7zsi5zrqbQmbmJzcDvrkKnri4jri6Qu
Jm5ic3A77JWE656Y7JmAJm5ic3A76rCZ7J2AJm5ic3A77ZiV7Iud7Jy866GcJm5ic3A766eM65Ok
7Ja0Jm5ic3A77KO87Iuc66m0Jm5ic3A765Cp64uI64ukLiA8YnI+PGJyPmBgYGpzb24gPGJyPnsg
PGJyPiZuYnNwOyZuYnNwOyJ0YWJXaWR0aCI6Jm5ic3A7MiwgPGJyPiZuYnNwOyZuYnNwOyJzZW1p
IjombmJzcDt0cnVlLCA8YnI+Jm5ic3A7Jm5ic3A7InNpbmdsZVF1b3RlIjombmJzcDtmYWxzZSwg
PGJyPiZuYnNwOyZuYnNwOyJ0cmFpbGluZ0NvbW1hIjombmJzcDsiZXM1IiwgPGJyPiZuYnNwOyZu
YnNwOyJicmFja2V0U3BhY2luZyI6Jm5ic3A7ZmFsc2UsIDxicj4mbmJzcDsmbmJzcDsiYXJyb3dQ
YXJlbnMiOiZuYnNwOyJhbHdheXMiIDxicj59IDxicj5gYGAgPGJyPjxicj7sg4HshLjtlZwmbmJz
cDvrgrTsmqnsnYAmbmJzcDvslYTrnpgmbmJzcDvrp4HtgazrpbwmbmJzcDvtmZXsnbgmbmJzcDvt
lZjsi5zrqbQmbmJzcDvrkKnri4jri6QuIDxicj48YnI+KiZuYnNwOzxhIGhyZWY9Imh0dHBzOi8v
cHJldHRpZXIuaW8vZG9jcy9lbi9vcHRpb25zLmh0bWwiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5v
b3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL3ByZXR0aWVyLmlvL2RvY3MvZW4vb3B0aW9u
cy5odG1sIj5odHRwczovL3ByZXR0aWVyLmlvL2RvY3MvZW4vb3B0aW9ucy5odG1sPC9hPiA8YnI+
PGJyPjxicj48YnI+IyMmbmJzcDvssLjqs6AgPGJyPjxicj4qJm5ic3A7W1NldHVwJm5ic3A7UHJl
dHRpZXImbmJzcDthbmQmbmJzcDtFU0xpbnQmbmJzcDtmb3ImbmJzcDtUeXBlc2NyaXB0XSg8YSBo
cmVmPSJodHRwczovL3d3dy5hbnRob255Z29uemFsZXMuZGV2L2Jsb2cvc2V0dXAtZXNsaW50LXBy
ZXR0aWVyLXdpdGgtdHlwZXNjcmlwdC5odG1sKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVu
ZXIiIGRhdGEtbWNlLWhyZWY9Imh0dHBzOi8vd3d3LmFudGhvbnlnb256YWxlcy5kZXYvYmxvZy9z
ZXR1cC1lc2xpbnQtcHJldHRpZXItd2l0aC10eXBlc2NyaXB0Lmh0bWwpIj5odHRwczovL3d3dy5h
bnRob255Z29uemFsZXMuZGV2L2Jsb2cvc2V0dXAtZXNsaW50LXByZXR0aWVyLXdpdGgtdHlwZXNj
cmlwdC5odG1sKTwvYT4gPGJyPiombmJzcDs8YSBocmVmPSJodHRwczovL3ByZXR0aWVyLmlvLyIg
dGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9Imh0dHBzOi8vcHJl
dHRpZXIuaW8vIj5odHRwczovL3ByZXR0aWVyLmlvLzwvYT4gPGJyPiombmJzcDtbVHlwZXNjcmlw
dCZuYnNwO0VTTGludCZuYnNwO+yEpOygle2VmOq4sF0oPGEgaHJlZj0iaHR0cHM6Ly92ZWxvZy5p
by9Aa3l1c3VuZy9lc2xpbnQtY29uZmlnLTMpIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5l
ciIgZGF0YS1tY2UtaHJlZj0iaHR0cHM6Ly92ZWxvZy5pby9Aa3l1c3VuZy9lc2xpbnQtY29uZmln
LTMpIj5odHRwczovL3ZlbG9nLmlvL0BreXVzdW5nL2VzbGludC1jb25maWctMyk8L2E+IDxicj4q
Jm5ic3A7W0VTTGludCZuYnNwOy0mbmJzcDs0LiZuYnNwO1ByZXR0aWVyJm5ic3A77KCB7JqpXSg8
YSBocmVmPSJodHRwczovL3ZlbG9nLmlvL0BreXVzdW5nL2VzbGludC1jb25maWctNCkiIHRhcmdl
dD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL3ZlbG9nLmlv
L0BreXVzdW5nL2VzbGludC1jb25maWctNCkiPmh0dHBzOi8vdmVsb2cuaW8vQGt5dXN1bmcvZXNs
aW50LWNvbmZpZy00KTwvYT4gPGJyPjxicj48YnI+PGJyPjxicj48YnI+PC9pPjwvcD48cD7quLDs
obTsl5AmbmJzcDvsgqzsmqntlZjrjZgmbmJzcDtbVFNMaW506rCAJm5ic3A7642U7J207IOBJm5i
c3A77KeA7JuQXSg8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS90c2xpbnQp
7J2EIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0cHM6
Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHNsaW50KeydhCI+aHR0cHM6Ly93d3cubnBtanMuY29t
L3BhY2thZ2UvdHNsaW50KeydhDwvYT4mbmJzcDvrsJvsp4AmbmJzcDvrqrsmbmJzcDvtlZjqsowm
bmJzcDvrkJjrqbTshJwsJm5ic3A7RVNsaW5066GcJm5ic3A764SY7Ja06rCA7JW8Jm5ic3A77IOB
7YOc6rCAJm5ic3A765CY7JeI7Iq164uI64ukLiA8YnI+PGJyPuyXrOq4sOyEnOuKlCZuYnNwO1Z1
ZSZuYnNwO+2UhOuhnOygne2KuOulvCZuYnNwO+yDneyEse2VmOuptOyEnCZuYnNwO0VTbGludOyZ
gCZuYnNwO1ByZXR0aWVy66W8Jm5ic3A77IKs7Jqp7ZWY64qUJm5ic3A77IS47YyF7J2EJm5ic3A7
6rCE64uo7ZWY6rKMJm5ic3A77ISk7KCV7ZWY66Ck6rOgJm5ic3A77ZWp64uI64ukLiZuYnNwO+yC
rOyaqe2VmOuKlCZuYnNwO+2ItOydgCZuYnNwO3ZzY29kZeyeheuLiOuLpC4gPGJyPjxicj5gdnVl
Jm5ic3A7Y3JlYXRlJm5ic3A7bXlwcm9qZWN0YCZuYnNwO+2Yle2DnOuhnCZuYnNwO+q4sOuzuCZu
YnNwO+2UhOuhnOygne2KuOulvCZuYnNwO+yEoO2DnSZuYnNwO+2VqeuLiOuLpC4gPGJyPjxicj5g
YGBiYXNoIDxicj4mZ3Q7Jm5ic3A7bnB4Jm5ic3A7dnVlJm5ic3A7Y3JlYXRlJm5ic3A7bXlwcm9q
ZWN0IDxicj48YnI+PyZuYnNwO1BsZWFzZSZuYnNwO3BpY2smbmJzcDthJm5ic3A7cHJlc2V0OiZu
YnNwO01hbnVhbGx5Jm5ic3A7c2VsZWN0Jm5ic3A7ZmVhdHVyZXMgPGJyPj8mbmJzcDtDaGVjayZu
YnNwO3RoZSZuYnNwO2ZlYXR1cmVzJm5ic3A7bmVlZGVkJm5ic3A7Zm9yJm5ic3A7eW91ciZuYnNw
O3Byb2plY3Q6IDxicj4mbmJzcDsoKikmbmJzcDtCYWJlbCA8YnI+Jm5ic3A7KCopJm5ic3A7VHlw
ZVNjcmlwdCA8YnI+Jm5ic3A7KCZuYnNwOykmbmJzcDtQcm9ncmVzc2l2ZSZuYnNwO1dlYiZuYnNw
O0FwcCZuYnNwOyhQV0EpJm5ic3A7U3VwcG9ydCA8YnI+Jm5ic3A7KCZuYnNwOykmbmJzcDtSb3V0
ZXIgPGJyPiZuYnNwOygmbmJzcDspJm5ic3A7VnVleCA8YnI+Jm5ic3A7KCopJm5ic3A7Q1NTJm5i
c3A7UHJlLXByb2Nlc3NvcnMgPGJyPiZndDsoKikmbmJzcDtMaW50ZXImbmJzcDsvJm5ic3A7Rm9y
bWF0dGVyIDxicj4mbmJzcDsoJm5ic3A7KSZuYnNwO1VuaXQmbmJzcDtUZXN0aW5nIDxicj4mbmJz
cDsoJm5ic3A7KSZuYnNwO0UyRSZuYnNwO1Rlc3RpbmcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsgPGJyPjxicj4/Jm5ic3A7VXNlJm5ic3A7QmFiZWwmbmJzcDthbG9uZ3NpZGUmbmJzcDtU
eXBlU2NyaXB0Jm5ic3A7KHJlcXVpcmVkJm5ic3A7Zm9yJm5ic3A7bW9kZXJuJm5ic3A7bW9kZSwm
bmJzcDthdXRvLWRldGVjdGVkJm5ic3A7cG9seWZpbGxzLCZuYnNwO3RyYW5zcGlsaW5nJm5ic3A7
SlNYKT8mbmJzcDsoWS9uKSZuYnNwO1kmbmJzcDsgPGJyPjxicj4/Jm5ic3A7UGljayZuYnNwO2Em
bmJzcDtDU1MmbmJzcDtwcmUtcHJvY2Vzc29yJm5ic3A7KFBvc3RDU1MsJm5ic3A7QXV0b3ByZWZp
eGVyJm5ic3A7YW5kJm5ic3A7Q1NTJm5ic3A7TW9kdWxlcyZuYnNwO2FyZSZuYnNwO3N1cHBvcnRl
ZCZuYnNwO2J5Jm5ic3A7ZGVmYXVsdCk6IDxicj4mZ3Q7Jm5ic3A7U2Fzcy9TQ1NTJm5ic3A7KHdp
dGgmbmJzcDtkYXJ0LXNhc3MpIDxicj4mbmJzcDsmbmJzcDtTYXNzL1NDU1MmbmJzcDsod2l0aCZu
YnNwO25vZGUtc2FzcykgPGJyPiZuYnNwOyZuYnNwO0xlc3MgPGJyPiZuYnNwOyZuYnNwO1N0eWx1
cyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YnI+PGJyPj8mbmJzcDtQaWNr
Jm5ic3A7YSZuYnNwO2xpbnRlciZuYnNwOy8mbmJzcDtmb3JtYXR0ZXImbmJzcDtjb25maWc6IDxi
cj4mbmJzcDsmbmJzcDtFU0xpbnQmbmJzcDt3aXRoJm5ic3A7ZXJyb3ImbmJzcDtwcmV2ZW50aW9u
Jm5ic3A7b25seSA8YnI+Jm5ic3A7Jm5ic3A7RVNMaW50Jm5ic3A7KyZuYnNwO0FpcmJuYiZuYnNw
O2NvbmZpZyA8YnI+Jm5ic3A7Jm5ic3A7RVNMaW50Jm5ic3A7KyZuYnNwO1N0YW5kYXJkJm5ic3A7
Y29uZmlnIDxicj4mZ3Q7Jm5ic3A7Jm5ic3A7RVNMaW50Jm5ic3A7KyZuYnNwO1ByZXR0aWVyIDxi
cj4mbmJzcDsmbmJzcDtUU0xpbnQmbmJzcDsoZGVwcmVjYXRlZCkmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsgPGJyPjxicj4/Jm5ic3A7UGljayZuYnNwO2FkZGl0aW9uYWwmbmJzcDtsaW50Jm5ic3A7
ZmVhdHVyZXM6Jm5ic3A7KFByZXNzJm5ic3A7Jm5ic3A7dG8mbmJzcDtzZWxlY3QsJm5ic3A7PGE+
Jm5ic3A7dG8mbmJzcDt0b2dnbGUmbmJzcDthbGwsJm5ic3A7PGk+Jm5ic3A7dG8mbmJzcDtpbnZl
cnQmbmJzcDtzZWxlY3Rpb24pIDxicj4mZ3Q7KCopJm5ic3A7TGludCZuYnNwO29uJm5ic3A7c2F2
ZSA8YnI+Jm5ic3A7KCZuYnNwOykmbmJzcDtMaW50Jm5ic3A7YW5kJm5ic3A7Zml4Jm5ic3A7b24m
bmJzcDtjb21taXQmbmJzcDsgPGJyPjxicj4/Jm5ic3A7V2hlcmUmbmJzcDtkbyZuYnNwO3lvdSZu
YnNwO3ByZWZlciZuYnNwO3BsYWNpbmcmbmJzcDtjb25maWcmbmJzcDtmb3ImbmJzcDtCYWJlbCwm
bmJzcDtFU0xpbnQsJm5ic3A7ZXRjLj8mbmJzcDsoVXNlJm5ic3A7YXJyb3cmbmJzcDtrZXlzKSA8
YnI+Jmd0OyZuYnNwO0luJm5ic3A7ZGVkaWNhdGVkJm5ic3A7Y29uZmlnJm5ic3A7ZmlsZXMgPGJy
PiZuYnNwOyZuYnNwO0luJm5ic3A7PC9pPjwvYT48aT48YSBocmVmPSJwYWNrYWdlLmpzb24iIHRh
cmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJwYWNrYWdlLmpzb24i
PnBhY2thZ2UuanNvbjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsgPGJyPmBgYCA8YnI+PGJyPuyXrOq4sOyEnCZuYnNwO+yymOydjCZuYnNwO+yy
tO2BrCZuYnNwO+uwleyKpOyXkOyEnCZuYnNwO0xpbnRlciZuYnNwOy8mbmJzcDtGb3JtYXR0ZXLr
pbwmbmJzcDvqvK0mbmJzcDvshKDtg53tlbQmbmJzcDvso7zsi5zqs6AsJm5ic3A7TGludGVyJm5i
c3A7LyZuYnNwO0Zvcm1hdHRlcuuKlCZuYnNwO0VTTGludCZuYnNwOysmbmJzcDtQcmV0dGllcuul
vCZuYnNwO+yEoO2Dne2VtCZuYnNwO+ykjeuLiOuLpC4gPGJyPjxicj5gYGBiYXNoIDxicj4mZ3Q7
Jm5ic3A7Y2QmbmJzcDtteXByb2plY3QgPGJyPiZndDsmbmJzcDtjb2RlJm5ic3A7LiA8YnI+YGBg
IDxicj48YnI+6re466as6rOgJm5ic3A77JyE7JmAJm5ic3A76rCZ7J20Jm5ic3A7YHZzY29kZWDr
pbwmbmJzcDvsi6TtlokmbmJzcDvtlbQmbmJzcDvspI3ri4jri6QuIDxicj48YnI+PGJyPjxicj7r
p4zslb0mbmJzcDtWU0NvZGXsl5DripQmbmJzcDvslYTrnpjsmYAmbmJzcDvqsJnsnYAmbmJzcDvt
mZXsnqUmbmJzcDvtlITroZzqt7jrnqjsnYQmbmJzcDvshKTsuZjqsIAmbmJzcDvrkJjslrQmbmJz
cDvsnojsp4AmbmJzcDvslYrsnLzrqbQmbmJzcDvshKTsuZjrpbwmbmJzcDvtlbQmbmJzcDvspI3r
i4jri6QuIDxicj48YnI+LSZuYnNwOyZuYnNwOyZuYnNwO0VTTGludCA8YnI+LSZuYnNwOyZuYnNw
OyZuYnNwO1ByZXR0aWVyJm5ic3A7LSZuYnNwO0NvZGUmbmJzcDtmb3JtYXR0ZXIgPGJyPi0mbmJz
cDsmbmJzcDsmbmJzcDtWZXR1ciA8YnI+PGJyPjxicj48YnI+6re466as6rOgLCZuYnNwO3ZzY29k
ZeydmCZuYnNwO+yEpOygleyXkOyEnCZuYnNwO+yVhOuemOyZgCZuYnNwO+uCtOyaqeydhCZuYnNw
O+y2lOqwgO2VtCZuYnNwO+ykjeuLiOuLpC4gPGJyPjxicj5gYGBqc29uIDxicj57IDxicj4mbmJz
cDsmbmJzcDsiW3R5cGVzY3JpcHRdIjombmJzcDt7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsiZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXIiOiZuYnNwOyJlc2JlbnAucHJldHRpZXItdnNjb2Rl
IiwgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyJlZGl0b3IuZm9ybWF0T25TYXZlIjombmJz
cDt0cnVlIDxicj4mbmJzcDsmbmJzcDt9LCA8YnI+Jm5ic3A7Jm5ic3A7Ilt2dWVdIjombmJzcDt7
IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXIiOiZu
YnNwOyJlc2JlbnAucHJldHRpZXItdnNjb2RlIiwgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyJlZGl0b3IuZm9ybWF0T25TYXZlIjombmJzcDt0cnVlIDxicj4mbmJzcDsmbmJzcDt9IDxicj59
IDxicj5gYGAgPGJyPjxicj7sl6zquLDquYzsp4AmbmJzcDvtlZjrqbQmbmJzcDt2c2NvZGXsl5Ds
hJwmbmJzcDvtjIzsnbzsnYQmbmJzcDvsoIDsnqUmbmJzcDvtlaAmbmJzcDvrlYwmbmJzcDvslYzs
lYTshJwmbmJzcDvtj6zrp7ftjIXsnYQmbmJzcDvtlbQmbmJzcDvso7zqs6AmbmJzcDvsoIDsnqXs
nYQmbmJzcDvtlbQmbmJzcDvso7zqsowmbmJzcDvrkKnri4jri6QuIDxicj48YnI+66eI7KeA66eJ
7Jy866GcJm5ic3A77LaU6rCA66GcJm5ic3A77KKAJm5ic3A7642UJm5ic3A77IOB7IS47ZWcJm5i
c3A77ISk7KCV7J2EJm5ic3A77ZWY6rOgJm5ic3A77Iu264uk66m0LCZuYnNwO+2UhOuhnOygne2K
uCZuYnNwO+ujqO2KuCZuYnNwO+2PtOuNlOyXkCZuYnNwO2A8YSBocmVmPSIucHJldHRpZXJyYy5q
c29uIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iLnByZXR0
aWVycmMuanNvbiI+LnByZXR0aWVycmMuanNvbjwvYT5g7YyM7J287J2EJm5ic3A766eM65Ok6rOg
Jm5ic3A77IOB7IS47ZWcJm5ic3A77ISk7KCV7J2EJm5ic3A77ZW0Jm5ic3A77KO87Iuc66m0Jm5i
c3A765Cp64uI64ukLiZuYnNwO+yVhOuemOyZgCZuYnNwO+qwmeydgCZuYnNwO+2YleyLneycvOuh
nCZuYnNwO+unjOuTpOyWtCZuYnNwO+yjvOyLnOuptCZuYnNwO+uQqeuLiOuLpC4gPGJyPjxicj5g
YGBqc29uIDxicj57IDxicj4mbmJzcDsmbmJzcDsidGFiV2lkdGgiOiZuYnNwOzIsIDxicj4mbmJz
cDsmbmJzcDsic2VtaSI6Jm5ic3A7dHJ1ZSwgPGJyPiZuYnNwOyZuYnNwOyJzaW5nbGVRdW90ZSI6
Jm5ic3A7ZmFsc2UsIDxicj4mbmJzcDsmbmJzcDsidHJhaWxpbmdDb21tYSI6Jm5ic3A7ImVzNSIs
IDxicj4mbmJzcDsmbmJzcDsiYnJhY2tldFNwYWNpbmciOiZuYnNwO2ZhbHNlLCA8YnI+Jm5ic3A7
Jm5ic3A7ImFycm93UGFyZW5zIjombmJzcDsiYWx3YXlzIiA8YnI+fSA8YnI+YGBgIDxicj48YnI+
7IOB7IS47ZWcJm5ic3A764K07Jqp7J2AJm5ic3A77JWE656YJm5ic3A766eB7YGs66W8Jm5ic3A7
7ZmV7J24Jm5ic3A77ZWY7Iuc66m0Jm5ic3A765Cp64uI64ukLiA8YnI+PGJyPiombmJzcDs8YSBo
cmVmPSJodHRwczovL3ByZXR0aWVyLmlvL2RvY3MvZW4vb3B0aW9ucy5odG1sIiB0YXJnZXQ9Il9i
bGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0cHM6Ly9wcmV0dGllci5pby9k
b2NzL2VuL29wdGlvbnMuaHRtbCI+aHR0cHM6Ly9wcmV0dGllci5pby9kb2NzL2VuL29wdGlvbnMu
aHRtbDwvYT4gPGJyPjxicj48YnI+PGJyPiMjJm5ic3A77LC46rOgIDxicj48YnI+KiZuYnNwO1tT
ZXR1cCZuYnNwO1ByZXR0aWVyJm5ic3A7YW5kJm5ic3A7RVNMaW50Jm5ic3A7Zm9yJm5ic3A7VHlw
ZXNjcmlwdF0oPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW50aG9ueWdvbnphbGVzLmRldi9ibG9nL3Nl
dHVwLWVzbGludC1wcmV0dGllci13aXRoLXR5cGVzY3JpcHQuaHRtbCkiIHRhcmdldD0iX2JsYW5r
IiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL3d3dy5hbnRob255Z29uemFs
ZXMuZGV2L2Jsb2cvc2V0dXAtZXNsaW50LXByZXR0aWVyLXdpdGgtdHlwZXNjcmlwdC5odG1sKSI+
aHR0cHM6Ly93d3cuYW50aG9ueWdvbnphbGVzLmRldi9ibG9nL3NldHVwLWVzbGludC1wcmV0dGll
ci13aXRoLXR5cGVzY3JpcHQuaHRtbCk8L2E+IDxicj4qJm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9w
cmV0dGllci5pby8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVm
PSJodHRwczovL3ByZXR0aWVyLmlvLyI+aHR0cHM6Ly9wcmV0dGllci5pby88L2E+IDxicj4qJm5i
c3A7W1R5cGVzY3JpcHQmbmJzcDtFU0xpbnQmbmJzcDvshKTsoJXtlZjquLBdKDxhIGhyZWY9Imh0
dHBzOi8vdmVsb2cuaW8vQGt5dXN1bmcvZXNsaW50LWNvbmZpZy0zKSIgdGFyZ2V0PSJfYmxhbmsi
IHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9Imh0dHBzOi8vdmVsb2cuaW8vQGt5dXN1bmcv
ZXNsaW50LWNvbmZpZy0zKSI+aHR0cHM6Ly92ZWxvZy5pby9Aa3l1c3VuZy9lc2xpbnQtY29uZmln
LTMpPC9hPiA8YnI+KiZuYnNwO1tFU0xpbnQmbmJzcDstJm5ic3A7NC4mbmJzcDtQcmV0dGllciZu
YnNwO+yggeyaqV0oPGEgaHJlZj0iaHR0cHM6Ly92ZWxvZy5pby9Aa3l1c3VuZy9lc2xpbnQtY29u
ZmlnLTQpIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0
cHM6Ly92ZWxvZy5pby9Aa3l1c3VuZy9lc2xpbnQtY29uZmlnLTQpIj5odHRwczovL3ZlbG9nLmlv
L0BreXVzdW5nL2VzbGludC1jb25maWctNCk8L2E+IDxicj48YnI+PGJyPjxicj48YnI+PGJyPjwv
aT48L3A+&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>컴퓨터/인터넷</category>
      <category>eslint</category>
      <category>lint</category>
      <category>prettier</category>
      <category>tslint</category>
      <category>TypeScript</category>
      <category>vscode</category>
      <category>VUE</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/539</guid>
      <comments>https://gyuha.tistory.com/539#entry539comment</comments>
      <pubDate>Sun, 19 Apr 2020 03:45:44 +0900</pubDate>
    </item>
    <item>
      <title>Postman에서 응답으로 받은 변수 사용하기</title>
      <link>https://gyuha.tistory.com/538</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/?type=post&amp;amp;returnURL=%2Fmanage%2Fposts%2F&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/?type=post&amp;amp;returnURL=%2Fmanage%2Fposts%2F&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;Postman을 사용하다 보면 요청한 값을 변수를 이용해서 저장하고 싶은 데이터가 있을 경우가 많습니다.&lt;br /&gt;예를 들면 인증키 값이라던지, 사용자 정보 등등.. 이 있는데.. 이럴때 사용할 수 있는 유용한 기능이 있어서 소개 합니다.&lt;br /&gt;Tests를 기능을 이용하는 방법입니다.&lt;br /&gt;물론 테스트용도로 사용한다면 더욱 훌륭하게 사용 할 수 있을 겁니다.&lt;br /&gt;먼저 사용할 요청에서 Tests 탭을 선택하고 아래와 같이 넣어 줍니다.&lt;/p&gt;
&lt;img src=&quot;https://k.kakaocdn.net/dn/cf61w3/btqDf1A0LsL/deDdurPCijV3iIfIOU8tIK/img.png&quot; data-filename=&quot;2020-04-07_162343.png&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;272&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/cf61w3/btqDf1A0LsL/deDdurPCijV3iIfIOU8tIK/img.png&quot; /&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;var jsonData = JSON.parse(responseBody); 

if (jsonData.result === true) { 
    pm.environment.set(&quot;authToken&quot;,jsonData.data.authToken); 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고 혹시 요청의 내용을 보고 싶다면 아래와 같이 console.log 사용합니다.&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;console.log(jsonData)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;메뉴에서 View &amp;gt; Show Postman Console 을 선택하시면 콘솔창을 통해서 내용을 확인 해 볼 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이렇게 해서 값이 잘 입력 되었는지 확인은 우측 상단의 눈 버튼을 눌러 보면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;img src=&quot;https://k.kakaocdn.net/dn/cF9WxW/btqDfCuG7Nu/rVNcfBJe4P93ZvzxghhlcK/img.png&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/cF9WxW/btqDfCuG7Nu/rVNcfBJe4P93ZvzxghhlcK/img.png&quot; data-filename=&quot;2020-04-07_162721.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;304&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;참고 : &lt;a href=&quot;https://learning.postman.com/docs/postman/scripts/test-scripts/&quot;&gt;https://learning.postman.com/docs/postman/scripts/test-scripts/&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PGRpdiBjbGFzcz0ibWFya2Rvd24taGVyZS13cmFwcGVyIiBkYXRhLW1kLXVybD0iaHR0cHM6Ly9n
eXVoYS50aXN0b3J5LmNvbS9tYW5hZ2UvbmV3cG9zdC8/dHlwZT1wb3N0JmFtcDtyZXR1cm5VUkw9
JTJGbWFuYWdlJTJGcG9zdHMlMkYiPjxwIHN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWlt
cG9ydGFudDsiIGRhdGEtbWNlLXN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFu
dDsiPlBvc3RtYW7snYQg7IKs7Jqp7ZWY64ukIOuztOuptCZuYnNwOyDsmpTssq3tlZwg6rCS7J2E
IOuzgOyImOulvCDsnbTsmqntlbTshJwg7KCA7J6l7ZWY6rOgIOyLtuydgCDrjbDsnbTthLDqsIAg
7J6I7J2EIOqyveyasOqwgCDrp47sirXri4jri6QuPC9wPjxwIHN0eWxlPSJtYXJnaW46IDBweCAw
cHggMS4yZW0gIWltcG9ydGFudDsiIGRhdGEtbWNlLXN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4y
ZW0gIWltcG9ydGFudDsiPuyYiOulvCDrk6TrqbQg7J247Kad7YKkIOqwkuydtOudvOuNmOyngCwg
7IKs7Jqp7J6QIOygleuztCDrk7Hrk7EuLiDsnbQg7J6I64qU642wLi4g7J2065+065WMIOyCrOya
qe2VoCDsiJgg7J6I64qUIOycoOyaqe2VnCDquLDriqXsnbQg7J6I7Ja07IScIOyGjOqwnCDtlanr
i4jri6QuPC9wPjxwIHN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiIGRh
dGEtbWNlLXN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiPjxiPlRlc3Rz
PC9iPuulvCDquLDriqXsnYQg7J207Jqp7ZWY64qUIOuwqeuyleyeheuLiOuLpC48YnI+66y866Gg
IO2FjOyKpO2KuOyaqeuPhOuhnCDsgqzsmqntlZzri6TrqbQg642U7JqxIO2bjOulre2VmOqyjCDs
gqzsmqkg7ZWgIOyImCDsnojsnYQg6rKB64uI64ukLjwvcD48cCBzdHlsZT0ibWFyZ2luOiAwcHgg
MHB4IDEuMmVtICFpbXBvcnRhbnQ7IiBkYXRhLW1jZS1zdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEu
MmVtICFpbXBvcnRhbnQ7Ij7rqLzsoIAg7IKs7Jqp7ZWgIOyalOyyreyXkOyEnCA8Yj5UZXN0czwv
Yj4g7YOt7J2EIOyEoO2Dne2VmOqzoCDslYTrnpjsmYAg6rCZ7J20IOuEo+yWtCDspI3ri4jri6Qu
PC9wPjxmaWd1cmUgZGF0YS1rZS10eXBlPSJpbWFnZSIgZGF0YS1rZS1zdHlsZT0iYWxpZ25DZW50
ZXIiPjxpbWcgc3JjPSJodHRwczovL2sua2FrYW9jZG4ubmV0L2RuL2NmNjF3My9idHFEZjFBMExz
TC9kZURkdXJQQ2lqVjNpSWZJT1U4dElLL2ltZy5wbmciIGRhdGEtZmlsZW5hbWU9IjIwMjAtMDQt
MDdfMTYyMzQzLnBuZyIgZGF0YS1vcmlnaW4td2lkdGg9Ijg3MyIgZGF0YS1vcmlnaW4taGVpZ2h0
PSIyNzIiIGRhdGEtbWNlLXNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9jZjYxdzMvYnRx
RGYxQTBMc0wvZGVEZHVyUENpalYzaUlmSU9VOHRJSy9pbWcucG5nIiBkYXRhLWltYWdlLXNyYz0i
aHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9jZjYxdzMvYnRxRGYxQTBMc0wvZGVEZHVyUENpalYz
aUlmSU9VOHRJSy9pbWcucG5nIj48ZmlnY2FwdGlvbiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwv
ZmlnY2FwdGlvbj48L2ZpZ3VyZT48cCBzdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFpbXBv
cnRhbnQ7IiBkYXRhLW1jZS1zdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFpbXBvcnRhbnQ7
Ij48YnI+PC9wPjxwIHN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiIGRh
dGEtbWNlLXN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiPmBgYGphdmFz
Y3JpcHQ8YnI+77u/dmFyJm5ic3A7anNvbkRhdGEmbmJzcDs9Jm5ic3A7PGEgaHJlZj0iSlNPTi5w
YXJzZShyZXNwb25zZUJvZHkpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEt
bWNlLWhyZWY9IkpTT04ucGFyc2UocmVzcG9uc2VCb2R5KTsiPkpTT04ucGFyc2UocmVzcG9uc2VC
b2R5KTs8L2E+IDxicj48YnI+aWYmbmJzcDsoPGEgaHJlZj0ianNvbkRhdGEucmVzdWx0IiB0YXJn
ZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0ianNvbkRhdGEucmVzdWx0
Ij5qc29uRGF0YS5yZXN1bHQ8L2E+Jm5ic3A7PT09Jm5ic3A7dHJ1ZSkmbmJzcDt7IDxicj4mbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJwbS5lbnZpcm9ubWVudC5zZXQoIiB0YXJnZXQ9
Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0icG0uZW52aXJvbm1lbnQuc2V0
KCI+cG0uZW52aXJvbm1lbnQuc2V0KDwvYT4iYXV0aFRva2VuIiw8YSBocmVmPSJqc29uRGF0YS5k
YXRhLmF1dGhUb2tlbik7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2Ut
aHJlZj0ianNvbkRhdGEuZGF0YS5hdXRoVG9rZW4pOyI+anNvbkRhdGEuZGF0YS5hdXRoVG9rZW4p
OzwvYT4gPGJyPn0gPGJyPjwvcD48cCBzdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFpbXBv
cnRhbnQ7IiBkYXRhLW1jZS1zdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFpbXBvcnRhbnQ7
Ij5gYGA8L3A+PHAgc3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyIgZGF0
YS1tY2Utc3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyI+PGJyPjwvcD48
cD7qt7jrpqzqs6Ag7Zi57IucIOyalOyyreydmCDrgrTsmqnsnYQg67O06rOgIOyLtuuLpOuptDwv
cD48cD4mZ3Q7IGNvbnNvbGUubG9nKGpzb25EYXRhKTwvcD48cD7rqZTribTsl5DshJwgVmlldyAm
Z3Q7IFNob3cgUG9zdG1hbiBDb25zb2xlIOydhCDshKDtg53tlZjsi5zrqbQg7L2Y7IaU7LC97J2E
IO2Gte2VtOyEnCDrgrTsmqnsnYQg7ZmV7J24IO2VtCDrs7wg7IiYIOyeiOyKteuLiOuLpC48L3A+
PHA+7J2066CH6rKMIO2VtOyEnCDqsJLsnbQg7J6YIOyeheugpSDrkJjsl4jripTsp4Ag7ZmV7J24
7J2AIOyasOy4oSDsg4Hri6jsnZgg64iIIOuyhO2KvOydhCDriIzrn6wg67O066m0IOuQqeuLiOuL
pC48L3A+PC9kaXY+PGZpZ3VyZSBkYXRhLWtlLXR5cGU9ImltYWdlIiBkYXRhLWtlLXN0eWxlPSJh
bGlnbkNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vay5rYWthb2Nkbi5uZXQvZG4vY0Y5V3hXL2J0
cURmQ3VHN051L3JWTmNmQkplNFA5M1p2enhnaGhsY0svaW1nLnBuZyIgZGF0YS1pbWFnZS1zcmM9
Imh0dHBzOi8vay5rYWthb2Nkbi5uZXQvZG4vY0Y5V3hXL2J0cURmQ3VHN051L3JWTmNmQkplNFA5
M1p2enhnaGhsY0svaW1nLnBuZyIgZGF0YS1maWxlbmFtZT0iMjAyMC0wNC0wN18xNjI3MjEucG5n
IiBkYXRhLW9yaWdpbi13aWR0aD0iNzI1IiBkYXRhLW9yaWdpbi1oZWlnaHQ9IjMwNCI+PGZpZ2Nh
cHRpb24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+PGJy
IGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+PHA+7LC46rOgIDogPGEgaHJlZj0iaHR0cHM6Ly9sZWFy
bmluZy5wb3N0bWFuLmNvbS9kb2NzL3Bvc3RtYW4vc2NyaXB0cy90ZXN0LXNjcmlwdHMvIiBkYXRh
LW1jZS1ocmVmPSJodHRwczovL2xlYXJuaW5nLnBvc3RtYW4uY29tL2RvY3MvcG9zdG1hbi9zY3Jp
cHRzL3Rlc3Qtc2NyaXB0cy8iPmh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9wb3N0
bWFuL3NjcmlwdHMvdGVzdC1zY3JpcHRzLzwvYT48L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIx
Ij48L3A+PHA+PGJyPjwvcD4=&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Get</category>
      <category>http</category>
      <category>JavaScript</category>
      <category>Post</category>
      <category>PostMan</category>
      <category>Request</category>
      <category>Web</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/538</guid>
      <comments>https://gyuha.tistory.com/538#entry538comment</comments>
      <pubDate>Tue, 7 Apr 2020 16:38:34 +0900</pubDate>
    </item>
    <item>
      <title>medis를 윈도우용으로 빌드하기..</title>
      <link>https://gyuha.tistory.com/537</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;664&quot; height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bca2Bu/btqC9OCGykk/4rMLhkvuGLhg4lZFkKk2Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bca2Bu/btqC9OCGykk/4rMLhkvuGLhg4lZFkKk2Qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bca2Bu/btqC9OCGykk/4rMLhkvuGLhg4lZFkKk2Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbca2Bu%2FbtqC9OCGykk%2F4rMLhkvuGLhg4lZFkKk2Qk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;664&quot; height=&quot;436&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/luin/medis&quot;&gt;https://github.com/luin/medis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;medis는 앱스토어에서 $4.99에 판매하는 redis용 gui 어플리케이션입니다.&lt;br /&gt;하지만, 소스를 직접 컴파일하면 사용이 가능 합니다.&lt;/p&gt;
&lt;p&gt;그런데 윈도우용 컴파일 링크가 있는데.. 이상한 설치 화면이 나오고, 빌드 한지도 2년이 넘었길래 빌드 하는 스크립트를 만들어서 직접 빌드를 해 봤습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/gyuha/medis&quot;&gt;https://github.com/gyuha/medis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;아래 주소에서 소스를 clone 받으신 후&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;&amp;gt; npm install
&amp;gt; npm run packWin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 하면 &lt;code&gt;.\dist\out\Medis-win32-ia32&lt;/code&gt; 폴더에 실행 파일이 생깁니다.&lt;/p&gt;
&lt;p&gt;실행하면 아래와 같이 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2020-04-03_233047.png&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;742&quot; width=&quot;530&quot; height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IpBfd/btqDbmeogWP/bdSCI7jMFEEsjDgkfg2Re1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IpBfd/btqDbmeogWP/bdSCI7jMFEEsjDgkfg2Re1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IpBfd/btqDbmeogWP/bdSCI7jMFEEsjDgkfg2Re1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIpBfd%2FbtqDbmeogWP%2FbdSCI7jMFEEsjDgkfg2Re1%2Fimg.png&quot; data-filename=&quot;2020-04-03_233047.png&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;742&quot; width=&quot;530&quot; height=&quot;332&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/gyuha/medis/commit/acf42bec41a2a6a624c7f7a2daf63518fa699049&quot;&gt;https://github.com/gyuha/medis/commit/acf42bec41a2a6a624c7f7a2daf63518fa699049&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;변경 사항은 위 url을 확인해 보시면 됩니다.&lt;/p&gt;</description>
      <category>Programming/Windows</category>
      <category>Build</category>
      <category>eletron</category>
      <category>node</category>
      <category>redis</category>
      <category>Windows</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/537</guid>
      <comments>https://gyuha.tistory.com/537#entry537comment</comments>
      <pubDate>Sat, 4 Apr 2020 01:02:20 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트 배열 메서드 정리</title>
      <link>https://gyuha.tistory.com/536</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/536?type=post&amp;amp;returnURL=https%3A%2F%2Fgyuha.tistory.com%2F536&quot;&gt;
&lt;h1 id=&quot;array-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;Array 추가/삭제&lt;/h1&gt;
&lt;h2 id=&quot;-array-push-array-push-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.push()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 마지막 요소를 추가해 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; number_arr = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt; ];  
number_arr.push(&lt;span class=&quot;hljs-number&quot;&gt;6&lt;/span&gt;);  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [ 1, 2, 3, 4, 5, 6 ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[1, 2, 3, 4, 5, 6]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;array-unshift-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.unshift()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 가장 첫번째 요소를 추가해 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; number_arr = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt; ];  
number_arr.unshift(&lt;span class=&quot;hljs-number&quot;&gt;6&lt;/span&gt;);  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [ 6, 1, 2, 3, 4, 5 ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[6, 1, 2, 3, 4, 5]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-pop-array-pop-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.pop()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 가장 마지막 요소를 삭제 합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; number_arr = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt; ];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; pop = number_arr.pop();  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [ 1, 2, 3, 4 ]  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(pop);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[1, 2, 3, 4]&lt;br /&gt;5&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-shift-array-shift-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.shift()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열에서 가장 첫번째 요소를 삭제합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; number_arr = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt; ];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; shift = number_arr.shift();  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [ 2, 3, 4, 5 ]  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(shift);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[2, 3, 4, 5]&lt;br /&gt;1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-slice-array-slice-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.slice()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;기존 배열은 변하지 않고, 해당 요소를 반환 합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; number_arr = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt; ];  
&lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// Syntax : Array.slice(시작위치, 끝위치)  &lt;/span&gt;
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; sp = number_arr.slice(&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 2번째 부터 3번째 까지 반환합니다. &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [1, 2, 3, 4, 5] &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(sp);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [2, 3] &lt;/span&gt;
sp = number_arr.slice(&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;); 
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(sp);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [3, 4, 5]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[1, 2, 3, 4, 5]&lt;br /&gt;[2, 3]&lt;br /&gt;[3, 4, 5]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-splice-array-splice-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.splice()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;지정한 위치의 배열을 삭제 합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; number_arr = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt; ];  
&lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// Syntax : Array.splice(시작위치, 삭제할갯수, 추가_할_아이템...)  &lt;/span&gt;
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; sp = number_arr.splice(&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 2번째 요소부터 2개를 삭제 합니다.  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [ 1, 4, 5 ]  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(sp);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [2, 3]  &lt;/span&gt;
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; sp2 = number_arr.splice(&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 2번재 요소 위치에 0개를 지우고 7,8,9를 추가해 줍니다.  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(number_arr); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [1, 7, 8, 9, 4, 5]  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(sp2); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// undefined : 0개를 삭제해서 값이 없습니다.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[1, 4, 5]&lt;br /&gt;[2, 3]&lt;br /&gt;[1, 7, 8, 9, 4, 5]&lt;br /&gt;[]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-concat-array-concat-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.concat()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열을 합쳐 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; num1 = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; num2 = [&lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;,&lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;,&lt;span class=&quot;hljs-number&quot;&gt;6&lt;/span&gt;];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; combine = num1.concat(num2);  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(combine); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [1, 2, 3, 4, 5, 6]  &lt;/span&gt;
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; num3 = [&lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;];  
combine = num1.concat(num2, num3);  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(combine); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[1, 2, 3, 4, 5, 6]&lt;br /&gt;[1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-of-array-of-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.of()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;함수의 인수로 새 인스터스 배열을 만들어 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; ar = &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;Array&lt;/span&gt;.of(&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;)  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(ar); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [1, 2, 3]  &lt;/span&gt;
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; ch = &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;Array&lt;/span&gt;.of(&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;&quot;짜장&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;&quot;짬뽕&quot;&lt;/span&gt;);  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(ch); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// [&quot;짜장&quot;, &quot;짬뽕&quot;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[1, 2, 3]&lt;br /&gt;[ &amp;ldquo;짜장&amp;rdquo;, &amp;ldquo;짬뽕&amp;rdquo;]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;array-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Array 반복&lt;/h1&gt;
&lt;h2 id=&quot;array-foreach-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.forEach()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 요소를 순차적으로 반복해 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; vl = [ &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'one'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'two'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'three'&lt;/span&gt; ];  
vl.forEach((e) =&amp;gt; {  
    &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(e); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// one, two, three를 차례대로 출력  &lt;/span&gt;
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;one&lt;br /&gt;two&lt;br /&gt;three&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;2번째 인자는 요소의 인덱스를 돌려 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; vl = [ &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'one'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'two'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'three'&lt;/span&gt; ];  
vl.forEach((e, i) =&amp;gt; {  
    &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(e, i);  
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;one 0&lt;br /&gt;two 1&lt;br /&gt;three 2&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-values-array-values-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.values()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 요소를 새로운 반복형 객체로 만들어 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; vl = [ &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'one'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'two'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'three'&lt;/span&gt; ];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; iterator = vl.values();  

&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(iterator.next().value);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// one  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(iterator.next().value);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// two  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(iterator.next().value);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// three  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(iterator.next().value);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// undefined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;one&lt;br /&gt;two&lt;br /&gt;three&lt;br /&gt;undefined&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; vl = [ &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'one'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'two'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'three'&lt;/span&gt; ];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; iterator = vl.values();  

&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; i of iterator) {  
    &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(i);  
}  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(iterator.next().value);  &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// undefined : 위에서 모두 반복해서 없음.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;one&lt;br /&gt;two&lt;br /&gt;three&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;array-entries-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.entries()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 요소를 키(key)와 값(value)로 짝지어진 반복형 객체로 만들어 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; vl = [ &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'one'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'two'&lt;/span&gt;, &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-string&quot;&gt;'three'&lt;/span&gt; ];  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; iterator = vl.values();  
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; i of iterator) {  
    &lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(i);  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[0, \&amp;rdquo;one&amp;rdquo;]&lt;br /&gt;[1, \&amp;rdquo;two&amp;rdquo;]&lt;br /&gt;[2, \&amp;rdquo;three&amp;rdquo;]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;array-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Array 찾기&lt;/h1&gt;
&lt;h2 id=&quot;-array-some-array-some-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.some()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열중에서 요소가 조건식에 맞는게 1개라도 있으면 true를 반환합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].some((e) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].some((e) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;true&lt;br /&gt;false&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-every-array-every-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.every()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열의 요소가 모두 조건식에 맞아야 true를 반환합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].every((e) =&amp;gt; e &amp;lt; &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].every((e) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;true&lt;br /&gt;false&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-find-array-find-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.find()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열에서 조건식에 맞는 첫번째 요소를 반환합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].find((e) =&amp;gt; e &amp;lt; &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].find((e) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;2&lt;br /&gt;5&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;2번째 값은 배열의 index, 3번째는 현재 배열을 입니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].find((e, i) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;  &amp;amp;&amp;amp; i &amp;lt; &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;5&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;array-findindex-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.findIndex()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열에서 조건식에 맞는 첫번째 요소의 인덱스를 반환합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].findIndex((e) =&amp;gt; e &amp;lt; &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].findIndex((e) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;0&lt;br /&gt;1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-array-filter-array-filter-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.filter()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열에서 조건식에 맞는 요소들을 배열로 반환합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].filter((e) =&amp;gt; e &amp;lt; &lt;span class=&quot;hljs-number&quot;&gt;9&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].filter((e) =&amp;gt; e &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[ 2, 5, 8, 1, 4 ]&lt;br /&gt;[ 5, 8 ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;array-indexof-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.indexOf()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열에서 요소의 위치를 찾는다. 찾을수가 없으면 -1을 반환합니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;두번째 값을 찾을 시작 위치 입니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].indexOf(&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].indexOf(&lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;));  
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;].indexOf(&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;0&lt;br /&gt;2&lt;br /&gt;3&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;array-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Array 변환하기&lt;/h1&gt;
&lt;h2 id=&quot;-array-fill-array-fill-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.fill()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;배열을 요소를 채워 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; arr = [&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;];  
arr.fill(&lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 모두 7로 채워 넣는다.  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(arr);
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[ 7, 7, 7, 7 ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;시작 지점을 정해서 채워 줄 수 있습니다. 시작 위치는 원하는 위치의 -1을 해서 넣어 줍니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; arr = [&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;];  
arr.fill(&lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 2번째 부터 끝까지 7로 채움, 0부터 시작이다.  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(arr);
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[ 1, 7, 7, 7 ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;시작과 끝 지점을 지정해서 채워 줄 수 있습니다. 끝 지점은 위치를 넣어 줘야 합니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;let&lt;/span&gt; arr = [&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;];  
arr.fill(&lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;); &lt;span style=&quot;color: #75715e;&quot; class=&quot;hljs-comment&quot;&gt;// 2번째 부터 3번째 까지 7로 채움  &lt;/span&gt;
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(arr);
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[ 1, 7, 7, 4 ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;array-copywithin-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 1.6em; border-bottom: 1px solid #eeeeee;&quot;&gt;Array.copyWithin()&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;지정한 위치에 값을 복사해서 넣어 줍니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;첫번째는 복사할 위치, 두번째는 시작위치 (기본값:0), 세번째는 끝위치(기본값: array.length))&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;&lt;span style=&quot;color: #f92672; font-weight: bold;&quot; class=&quot;hljs-keyword&quot;&gt;var&lt;/span&gt; array = [ &lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;6&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt; ];   
&lt;span style=&quot;color: #a6e22e;&quot; class=&quot;hljs-built_in&quot;&gt;console&lt;/span&gt;.log(array.copyWithin(&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;b&gt;Output :&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;[ 1, 4, 5, 4, 5, 6, 7 ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+IyZuYnNwO0FycmF5Jm5ic3A77LaU6rCAL+yCreygnCZuYnNwOyA8YnI+PGJyPiMjJm5ic3A7
PGEgaHJlZj0iQXJyYXkucHVzaCgpIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0
YS1tY2UtaHJlZj0iQXJyYXkucHVzaCgpIj5BcnJheS5wdXNoKCk8L2E+Jm5ic3A7IDxicj48YnI+
67Cw7Je07J2YJm5ic3A766eI7KeA66eJJm5ic3A77JqU7IaM66W8Jm5ic3A77LaU6rCA7ZW0Jm5i
c3A77KSN64uI64ukLiZuYnNwOyZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJy
PmxldCZuYnNwO251bWJlcl9hcnImbmJzcDs9Jm5ic3A7WyZuYnNwOzEsJm5ic3A7MiwmbmJzcDsz
LCZuYnNwOzQsJm5ic3A7NSZuYnNwO107Jm5ic3A7IDxicj48YSBocmVmPSJudW1iZXJfYXJyLnB1
c2goNik7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0ibnVt
YmVyX2Fyci5wdXNoKDYpOyI+bnVtYmVyX2Fyci5wdXNoKDYpOzwvYT4mbmJzcDsgPGJyPjxhIGhy
ZWY9ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVu
ZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyI+Y29uc29sZS5sb2co
bnVtYmVyX2Fycik7PC9hPiZuYnNwOyZuYnNwOy8vJm5ic3A7WyZuYnNwOzEsJm5ic3A7MiwmbmJz
cDszLCZuYnNwOzQsJm5ic3A7NSwmbmJzcDs2Jm5ic3A7XSZuYnNwOyA8YnI+YGBgIDxicj48YnI+
KipPdXRwdXQmbmJzcDs6KiombmJzcDsgPGJyPjxicj4mZ3Q7Jm5ic3A7WzEsJm5ic3A7MiwmbmJz
cDszLCZuYnNwOzQsJm5ic3A7NSwmbmJzcDs2XSZuYnNwOyA8YnI+PGJyPjxicj48YnI+IyMmbmJz
cDtBcnJheS51bnNoaWZ0KCkmbmJzcDsgPGJyPjxicj7rsLDsl7TsnZgmbmJzcDvqsIDsnqUmbmJz
cDvssqvrsojsp7gmbmJzcDvsmpTshozrpbwmbmJzcDvstpTqsIDtlbQmbmJzcDvspI3ri4jri6Qu
Jm5ic3A7IDxicj48YnI+YGBgamF2YXNjcmlwdCZuYnNwOyA8YnI+bGV0Jm5ic3A7bnVtYmVyX2Fy
ciZuYnNwOz0mbmJzcDtbJm5ic3A7MSwmbmJzcDsyLCZuYnNwOzMsJm5ic3A7NCwmbmJzcDs1Jm5i
c3A7XTsmbmJzcDsgPGJyPm51bWJlcl9hcnIudW5zaGlmdCg2KTsmbmJzcDsgPGJyPjxhIGhyZWY9
ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIi
IGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyI+Y29uc29sZS5sb2cobnVt
YmVyX2Fycik7PC9hPiZuYnNwOyZuYnNwOy8vJm5ic3A7WyZuYnNwOzYsJm5ic3A7MSwmbmJzcDsy
LCZuYnNwOzMsJm5ic3A7NCwmbmJzcDs1Jm5ic3A7XSZuYnNwOyA8YnI+YGBgIDxicj48YnI+KipP
dXRwdXQmbmJzcDs6KiombmJzcDsgPGJyPjxicj4mZ3Q7Jm5ic3A7WzYsJm5ic3A7MSwmbmJzcDsy
LCZuYnNwOzMsJm5ic3A7NCwmbmJzcDs1XSZuYnNwOyA8YnI+PGJyPjxicj48YnI+IyMmbmJzcDs8
YSBocmVmPSJBcnJheS5wb3AoKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEt
bWNlLWhyZWY9IkFycmF5LnBvcCgpIj5BcnJheS5wb3AoKTwvYT4mbmJzcDsgPGJyPjxicj7rsLDs
l7TsnZgmbmJzcDvqsIDsnqUmbmJzcDvrp4jsp4Drp4kmbmJzcDvsmpTshozrpbwmbmJzcDvsgq3s
oJwmbmJzcDvtlanri4jri6QuJm5ic3A7IDxicj48YnI+YGBgamF2YXNjcmlwdCZuYnNwOyA8YnI+
bGV0Jm5ic3A7bnVtYmVyX2FyciZuYnNwOz0mbmJzcDtbJm5ic3A7MSwmbmJzcDsyLCZuYnNwOzMs
Jm5ic3A7NCwmbmJzcDs1Jm5ic3A7XTsmbmJzcDsgPGJyPmxldCZuYnNwO3BvcCZuYnNwOz0mbmJz
cDs8YSBocmVmPSJudW1iZXJfYXJyLnBvcCgpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVu
ZXIiIGRhdGEtbWNlLWhyZWY9Im51bWJlcl9hcnIucG9wKCk7Ij5udW1iZXJfYXJyLnBvcCgpOzwv
YT4mbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyIgdGFyZ2V0PSJf
YmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKG51bWJlcl9h
cnIpOyI+Y29uc29sZS5sb2cobnVtYmVyX2Fycik7PC9hPiZuYnNwOyZuYnNwOy8vJm5ic3A7WyZu
YnNwOzEsJm5ic3A7MiwmbmJzcDszLCZuYnNwOzQmbmJzcDtdJm5ic3A7IDxicj48YSBocmVmPSJj
b25zb2xlLmxvZyhwb3ApOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNl
LWhyZWY9ImNvbnNvbGUubG9nKHBvcCk7Ij5jb25zb2xlLmxvZyhwb3ApOzwvYT4mbmJzcDsmbmJz
cDsvLyZuYnNwOzUmbmJzcDsgPGJyPmBgYCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7
IDxicj48YnI+Jmd0OyZuYnNwO1sxLCZuYnNwOzIsJm5ic3A7MywmbmJzcDs0XSZuYnNwOyA8YnI+
Jmd0OyZuYnNwOzUmbmJzcDsgPGJyPjxicj48YnI+PGJyPiMjJm5ic3A7PGEgaHJlZj0iQXJyYXku
c2hpZnQoKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9IkFy
cmF5LnNoaWZ0KCkiPkFycmF5LnNoaWZ0KCk8L2E+Jm5ic3A7IDxicj48YnI+67Cw7Je07JeQ7ISc
Jm5ic3A76rCA7J6lJm5ic3A77LKr67KI7Ke4Jm5ic3A77JqU7IaM66W8Jm5ic3A77IKt7KCc7ZWp
64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJyPmxldCZuYnNwO251
bWJlcl9hcnImbmJzcDs9Jm5ic3A7WyZuYnNwOzEsJm5ic3A7MiwmbmJzcDszLCZuYnNwOzQsJm5i
c3A7NSZuYnNwO107Jm5ic3A7IDxicj5sZXQmbmJzcDtzaGlmdCZuYnNwOz0mbmJzcDs8YSBocmVm
PSJudW1iZXJfYXJyLnNoaWZ0KCk7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0
YS1tY2UtaHJlZj0ibnVtYmVyX2Fyci5zaGlmdCgpOyI+bnVtYmVyX2Fyci5zaGlmdCgpOzwvYT4m
bmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyIgdGFyZ2V0PSJfYmxh
bmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKG51bWJlcl9hcnIp
OyI+Y29uc29sZS5sb2cobnVtYmVyX2Fycik7PC9hPiZuYnNwOyZuYnNwOy8vJm5ic3A7WyZuYnNw
OzIsJm5ic3A7MywmbmJzcDs0LCZuYnNwOzUmbmJzcDtdJm5ic3A7IDxicj48YSBocmVmPSJjb25z
b2xlLmxvZyhzaGlmdCk7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2Ut
aHJlZj0iY29uc29sZS5sb2coc2hpZnQpOyI+Y29uc29sZS5sb2coc2hpZnQpOzwvYT4mbmJzcDsm
bmJzcDsvLyZuYnNwOzEmbmJzcDsgPGJyPmBgYCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5i
c3A7IDxicj48YnI+Jmd0OyZuYnNwO1syLCZuYnNwOzMsJm5ic3A7NCwmbmJzcDs1XSZuYnNwOyA8
YnI+Jmd0OyZuYnNwOzEmbmJzcDsgPGJyPjxicj48YnI+PGJyPiMjJm5ic3A7PGEgaHJlZj0iQXJy
YXkuc2xpY2UoKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9
IkFycmF5LnNsaWNlKCkiPkFycmF5LnNsaWNlKCk8L2E+Jm5ic3A7Jm5ic3A7IDxicj48YnI+6riw
7KG0Jm5ic3A767Cw7Je07J2AJm5ic3A767OA7ZWY7KeAJm5ic3A77JWK6rOgLCZuYnNwO+2VtOuL
uSZuYnNwO+yalOyGjOulvCZuYnNwO+uwmO2ZmCZuYnNwO+2VqeuLiOuLpC4gPGJyPjxicj5gYGBq
YXZhc2NyaXB0Jm5ic3A7IDxicj5sZXQmbmJzcDtudW1iZXJfYXJyJm5ic3A7PSZuYnNwO1smbmJz
cDsxLCZuYnNwOzIsJm5ic3A7MywmbmJzcDs0LCZuYnNwOzUmbmJzcDtdOyZuYnNwOyA8YnI+Ly8m
bmJzcDtTeW50YXgmbmJzcDs6Jm5ic3A7PGEgaHJlZj0iQXJyYXkuc2xpY2Uo7Iuc7J6R7JyE7LmY
LCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9IkFycmF5LnNs
aWNlKOyLnOyekeychOy5mCwiPkFycmF5LnNsaWNlKOyLnOyekeychOy5mCw8L2E+Jm5ic3A764Gd
7JyE7LmYKSZuYnNwOyA8YnI+bGV0Jm5ic3A7c3AmbmJzcDs9Jm5ic3A7PGEgaHJlZj0ibnVtYmVy
X2Fyci5zbGljZSgxLCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhy
ZWY9Im51bWJlcl9hcnIuc2xpY2UoMSwiPm51bWJlcl9hcnIuc2xpY2UoMSw8L2E+Jm5ic3A7Myk7
Jm5ic3A7Jm5ic3A7Ly8mbmJzcDsy67KI7Ke4Jm5ic3A767aA7YSwJm5ic3A7M+uyiOynuCZuYnNw
O+q5jOyngCZuYnNwO+uwmO2ZmO2VqeuLiOuLpC4gPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKG51
bWJlcl9hcnIpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9
ImNvbnNvbGUubG9nKG51bWJlcl9hcnIpOyI+Y29uc29sZS5sb2cobnVtYmVyX2Fycik7PC9hPiZu
YnNwOyZuYnNwOy8vJm5ic3A7WzEsJm5ic3A7MiwmbmJzcDszLCZuYnNwOzQsJm5ic3A7NV0gPGJy
PjxhIGhyZWY9ImNvbnNvbGUubG9nKHNwKTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVy
IiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhzcCk7Ij5jb25zb2xlLmxvZyhzcCk7PC9hPiZu
YnNwOyZuYnNwOy8vJm5ic3A7WzIsJm5ic3A7M10gPGJyPnNwJm5ic3A7PSZuYnNwOzxhIGhyZWY9
Im51bWJlcl9hcnIuc2xpY2UoMik7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0
YS1tY2UtaHJlZj0ibnVtYmVyX2Fyci5zbGljZSgyKTsiPm51bWJlcl9hcnIuc2xpY2UoMik7PC9h
PiA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2coc3ApOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9v
cGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKHNwKTsiPmNvbnNvbGUubG9nKHNwKTs8
L2E+Jm5ic3A7Jm5ic3A7Ly8mbmJzcDtbMywmbmJzcDs0LCZuYnNwOzVdIDxicj5gYGAgPGJyPjxi
cj4qKk91dHB1dCZuYnNwOzoqKiZuYnNwOyA8YnI+PGJyPiZndDsmbmJzcDtbMSwmbmJzcDsyLCZu
YnNwOzMsJm5ic3A7NCwmbmJzcDs1XSZuYnNwOyA8YnI+Jmd0OyZuYnNwO1syLCZuYnNwOzNdJm5i
c3A7IDxicj4mZ3Q7Jm5ic3A7WzMsJm5ic3A7NCwmbmJzcDs1XSA8YnI+PGJyPjxicj48YnI+IyMm
bmJzcDs8YSBocmVmPSJBcnJheS5zcGxpY2UoKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVu
ZXIiIGRhdGEtbWNlLWhyZWY9IkFycmF5LnNwbGljZSgpIj5BcnJheS5zcGxpY2UoKTwvYT4mbmJz
cDsmbmJzcDsgPGJyPjxicj7sp4DsoJXtlZwmbmJzcDvsnITsuZjsnZgmbmJzcDvrsLDsl7TsnYQm
bmJzcDvsgq3soJwmbmJzcDvtlanri4jri6QuJm5ic3A7IDxicj48YnI+YGBgamF2YXNjcmlwdCZu
YnNwOyA8YnI+bGV0Jm5ic3A7bnVtYmVyX2FyciZuYnNwOz0mbmJzcDtbJm5ic3A7MSwmbmJzcDsy
LCZuYnNwOzMsJm5ic3A7NCwmbmJzcDs1Jm5ic3A7XTsmbmJzcDsgPGJyPi8vJm5ic3A7U3ludGF4
Jm5ic3A7OiZuYnNwOzxhIGhyZWY9IkFycmF5LnNwbGljZSjsi5zsnpHsnITsuZgsIiB0YXJnZXQ9
Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iQXJyYXkuc3BsaWNlKOyLnOye
keychOy5mCwiPkFycmF5LnNwbGljZSjsi5zsnpHsnITsuZgsPC9hPiZuYnNwO+yCreygnO2VoOqw
r+yImCwmbmJzcDvstpTqsIBf7ZWgX+yVhOydtO2FnC4uLikmbmJzcDsgPGJyPmxldCZuYnNwO3Nw
Jm5ic3A7PSZuYnNwOzxhIGhyZWY9Im51bWJlcl9hcnIuc3BsaWNlKDEsIiB0YXJnZXQ9Il9ibGFu
ayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0ibnVtYmVyX2Fyci5zcGxpY2UoMSwiPm51
bWJlcl9hcnIuc3BsaWNlKDEsPC9hPiZuYnNwOzIpOyZuYnNwOyZuYnNwOy8vJm5ic3A7MuuyiOyn
uCZuYnNwO+yalOyGjOu2gO2EsCZuYnNwOzLqsJzrpbwmbmJzcDvsgq3soJwmbmJzcDvtlanri4jr
i6QuJm5ic3A7IDxicj48YSBocmVmPSJjb25zb2xlLmxvZyhudW1iZXJfYXJyKTsiIHRhcmdldD0i
X2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhudW1iZXJf
YXJyKTsiPmNvbnNvbGUubG9nKG51bWJlcl9hcnIpOzwvYT4mbmJzcDsmbmJzcDsvLyZuYnNwO1sm
bmJzcDsxLCZuYnNwOzQsJm5ic3A7NSZuYnNwO10mbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUu
bG9nKHNwKTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJj
b25zb2xlLmxvZyhzcCk7Ij5jb25zb2xlLmxvZyhzcCk7PC9hPiZuYnNwOyZuYnNwOy8vJm5ic3A7
WzIsJm5ic3A7M10mbmJzcDsgPGJyPmxldCZuYnNwO3NwMiZuYnNwOz0mbmJzcDs8YSBocmVmPSJu
dW1iZXJfYXJyLnNwbGljZSgxLCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEt
bWNlLWhyZWY9Im51bWJlcl9hcnIuc3BsaWNlKDEsIj5udW1iZXJfYXJyLnNwbGljZSgxLDwvYT4m
bmJzcDswLCZuYnNwOzcsJm5ic3A7OCwmbmJzcDs5KTsmbmJzcDsvLyZuYnNwOzLrsojsnqwmbmJz
cDvsmpTshowmbmJzcDvsnITsuZjsl5AmbmJzcDsw6rCc66W8Jm5ic3A77KeA7Jqw6rOgJm5ic3A7
Nyw4LDnrpbwmbmJzcDvstpTqsIDtlbQmbmJzcDvspI3ri4jri6QuJm5ic3A7IDxicj48YSBocmVm
PSJjb25zb2xlLmxvZyhudW1iZXJfYXJyKTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVy
IiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhudW1iZXJfYXJyKTsiPmNvbnNvbGUubG9nKG51
bWJlcl9hcnIpOzwvYT4mbmJzcDsvLyZuYnNwO1sxLCZuYnNwOzcsJm5ic3A7OCwmbmJzcDs5LCZu
YnNwOzQsJm5ic3A7NV0mbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKHNwMik7IiB0YXJn
ZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iY29uc29sZS5sb2coc3Ay
KTsiPmNvbnNvbGUubG9nKHNwMik7PC9hPiZuYnNwOy8vJm5ic3A7dW5kZWZpbmVkJm5ic3A7OiZu
YnNwOzDqsJzrpbwmbmJzcDvsgq3soJztlbTshJwmbmJzcDvqsJLsnbQmbmJzcDvsl4bsirXri4jr
i6QuJm5ic3A7IDxicj5gYGAgPGJyPjxicj4qKk91dHB1dCZuYnNwOzoqKiZuYnNwOyA8YnI+PGJy
PiZndDsmbmJzcDtbMSwmbmJzcDs0LCZuYnNwOzVdJm5ic3A7IDxicj4mZ3Q7Jm5ic3A7WzIsJm5i
c3A7M10mbmJzcDsgPGJyPiZndDsmbmJzcDtbMSwmbmJzcDs3LCZuYnNwOzgsJm5ic3A7OSwmbmJz
cDs0LCZuYnNwOzVdJm5ic3A7IDxicj4mZ3Q7Jm5ic3A7W10mbmJzcDsgPGJyPjxicj48YnI+PGJy
PiMjJm5ic3A7PGEgaHJlZj0iQXJyYXkuY29uY2F0KCkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5v
b3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJBcnJheS5jb25jYXQoKSI+QXJyYXkuY29uY2F0KCk8L2E+
Jm5ic3A7IDxicj48YnI+67Cw7Je07J2EJm5ic3A77ZWp7LOQJm5ic3A77KSN64uI64ukLiZuYnNw
OyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJyPmxldCZuYnNwO251bTEmbmJzcDs9Jm5i
c3A7WyZuYnNwOzEsJm5ic3A7MiwmbmJzcDszXTsmbmJzcDsgPGJyPmxldCZuYnNwO251bTImbmJz
cDs9Jm5ic3A7WzQsNSw2XTsmbmJzcDsgPGJyPmxldCZuYnNwO2NvbWJpbmUmbmJzcDs9Jm5ic3A7
PGEgaHJlZj0ibnVtMS5jb25jYXQobnVtMik7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5l
ciIgZGF0YS1tY2UtaHJlZj0ibnVtMS5jb25jYXQobnVtMik7Ij5udW0xLmNvbmNhdChudW0yKTs8
L2E+Jm5ic3A7IDxicj48YSBocmVmPSJjb25zb2xlLmxvZyhjb21iaW5lKTsiIHRhcmdldD0iX2Js
YW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhjb21iaW5lKTsi
PmNvbnNvbGUubG9nKGNvbWJpbmUpOzwvYT4mbmJzcDsvLyZuYnNwO1sxLCZuYnNwOzIsJm5ic3A7
MywmbmJzcDs0LCZuYnNwOzUsJm5ic3A7Nl0mbmJzcDsgPGJyPmxldCZuYnNwO251bTMmbmJzcDs9
Jm5ic3A7WzcsJm5ic3A7OCwmbmJzcDs5XTsmbmJzcDsgPGJyPmNvbWJpbmUmbmJzcDs9Jm5ic3A7
PGEgaHJlZj0ibnVtMS5jb25jYXQobnVtMiwiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVy
IiBkYXRhLW1jZS1ocmVmPSJudW0xLmNvbmNhdChudW0yLCI+bnVtMS5jb25jYXQobnVtMiw8L2E+
Jm5ic3A7bnVtMyk7Jm5ic3A7IDxicj48YSBocmVmPSJjb25zb2xlLmxvZyhjb21iaW5lKTsiIHRh
cmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhj
b21iaW5lKTsiPmNvbnNvbGUubG9nKGNvbWJpbmUpOzwvYT4mbmJzcDsvLyZuYnNwO1sxLCZuYnNw
OzIsJm5ic3A7MywmbmJzcDs0LCZuYnNwOzUsJm5ic3A7NiwmbmJzcDs3LCZuYnNwOzgsJm5ic3A7
OV0mbmJzcDsgPGJyPmBgYCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7IDxicj48YnI+
Jmd0OyZuYnNwO1sxLCZuYnNwOzIsJm5ic3A7MywmbmJzcDs0LCZuYnNwOzUsJm5ic3A7Nl0mbmJz
cDsgPGJyPiZndDsmbmJzcDtbMSwmbmJzcDsyLCZuYnNwOzMsJm5ic3A7NCwmbmJzcDs1LCZuYnNw
OzYsJm5ic3A7NywmbmJzcDs4LCZuYnNwOzldJm5ic3A7IDxicj48YnI+PGJyPjxicj4jIyZuYnNw
OzxhIGhyZWY9IkFycmF5Lm9mKCkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRh
LW1jZS1ocmVmPSJBcnJheS5vZigpIj5BcnJheS5vZigpPC9hPiZuYnNwOyA8YnI+PGJyPu2VqOyI
mOydmCZuYnNwO+yduOyImOuhnCZuYnNwO+yDiCZuYnNwO+yduOyKpO2EsOyKpCZuYnNwO+uwsOyX
tOydhCZuYnNwO+unjOuTpOyWtCZuYnNwO+ykjeuLiOuLpC4mbmJzcDsgPGJyPjxicj5gYGBqYXZh
c2NyaXB0Jm5ic3A7IDxicj5sZXQmbmJzcDthciZuYnNwOz0mbmJzcDs8YSBocmVmPSJBcnJheS5v
ZigxLCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9IkFycmF5
Lm9mKDEsIj5BcnJheS5vZigxLDwvYT4mbmJzcDsyLCZuYnNwOzMpJm5ic3A7IDxicj48YSBocmVm
PSJjb25zb2xlLmxvZyhhcik7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1t
Y2UtaHJlZj0iY29uc29sZS5sb2coYXIpOyI+Y29uc29sZS5sb2coYXIpOzwvYT4mbmJzcDsvLyZu
YnNwO1sxLCZuYnNwOzIsJm5ic3A7M10mbmJzcDsgPGJyPmxldCZuYnNwO2NoJm5ic3A7PSZuYnNw
OzxhIGhyZWY9IkFycmF5Lm9mKCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEt
bWNlLWhyZWY9IkFycmF5Lm9mKCI+QXJyYXkub2YoPC9hPiLsp5zsnqUiLCZuYnNwOyLsp6zrvZUi
KTsmbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKGNoKTsiIHRhcmdldD0iX2JsYW5rIiBy
ZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhjaCk7Ij5jb25zb2xlLmxv
ZyhjaCk7PC9hPiZuYnNwOy8vJm5ic3A7WyLsp5zsnqUiLCZuYnNwOyLsp6zrvZUiXSZuYnNwOyA8
YnI+YGBgIDxicj48YnI+KipPdXRwdXQmbmJzcDs6KiombmJzcDsgPGJyPjxicj4mZ3Q7Jm5ic3A7
WzEsJm5ic3A7MiwmbmJzcDszXSZuYnNwOyA8YnI+Jmd0OyZuYnNwO1smbmJzcDsi7Kec7J6lIiwm
bmJzcDsi7Kes672VIl0mbmJzcDsgPGJyPjxicj48YnI+PGJyPiMmbmJzcDtBcnJheSZuYnNwO+uw
mOuztSZuYnNwOyA8YnI+PGJyPiMjJm5ic3A7QXJyYXkuZm9yRWFjaCgpJm5ic3A7IDxicj48YnI+
67Cw7Je07J2YJm5ic3A77JqU7IaM66W8Jm5ic3A77Iic7LCo7KCB7Jy866GcJm5ic3A767CY67O1
7ZW0Jm5ic3A77KSN64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJy
PmxldCZuYnNwO3ZsJm5ic3A7PSZuYnNwO1smbmJzcDsnb25lJywmbmJzcDsndHdvJywmbmJzcDsn
dGhyZWUnJm5ic3A7XTsmbmJzcDsgPGJyPnZsLmZvckVhY2goKGUpJm5ic3A7PSZndDsmbmJzcDt7
Jm5ic3A7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJjb25zb2xlLmxvZyhl
KTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xl
LmxvZyhlKTsiPmNvbnNvbGUubG9nKGUpOzwvYT4mbmJzcDsvLyZuYnNwO29uZSwmbmJzcDt0d28s
Jm5ic3A7dGhyZWXrpbwmbmJzcDvssKjroYDrjIDroZwmbmJzcDvstpzroKUmbmJzcDsgPGJyPn0p
Jm5ic3A7IDxicj5gYGAgPGJyPjxicj4qKk91dHB1dCZuYnNwOzoqKiZuYnNwOyA8YnI+PGJyPiZn
dDsmbmJzcDtvbmUmbmJzcDsgPGJyPiZndDsmbmJzcDt0d28mbmJzcDsgPGJyPiZndDsmbmJzcDt0
aHJlZSZuYnNwOyA8YnI+PGJyPjLrsojsp7gmbmJzcDvsnbjsnpDripQmbmJzcDvsmpTshozsnZgm
bmJzcDvsnbjrjbHsiqTrpbwmbmJzcDvrj4zroKQmbmJzcDvspI3ri4jri6QuJm5ic3A7IDxicj48
YnI+YGBgamF2YXNjcmlwdCZuYnNwOyA8YnI+bGV0Jm5ic3A7dmwmbmJzcDs9Jm5ic3A7WyZuYnNw
OydvbmUnLCZuYnNwOyd0d28nLCZuYnNwOyd0aHJlZScmbmJzcDtdOyZuYnNwOyA8YnI+dmwuZm9y
RWFjaCgoZSwmbmJzcDtpKSZuYnNwOz0mZ3Q7Jm5ic3A7eyZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iY29uc29sZS5sb2coZSwiIHRhcmdldD0iX2JsYW5rIiByZWw9
Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhlLCI+Y29uc29sZS5sb2coZSw8
L2E+Jm5ic3A7aSk7Jm5ic3A7IDxicj59KSZuYnNwOyA8YnI+YGBgIDxicj48YnI+KipPdXRwdXQm
bmJzcDs6KiombmJzcDsgPGJyPjxicj4mZ3Q7Jm5ic3A7b25lJm5ic3A7MCZuYnNwOyA8YnI+Jmd0
OyZuYnNwO3R3byZuYnNwOzEmbmJzcDsgPGJyPiZndDsmbmJzcDt0aHJlZSZuYnNwOzImbmJzcDsg
PGJyPjxicj48YnI+PGJyPiMjJm5ic3A7PGEgaHJlZj0iQXJyYXkudmFsdWVzKCkiIHRhcmdldD0i
X2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJBcnJheS52YWx1ZXMoKSI+QXJy
YXkudmFsdWVzKCk8L2E+Jm5ic3A7IDxicj48YnI+67Cw7Je07J2YJm5ic3A77JqU7IaM66W8Jm5i
c3A77IOI66Gc7Jq0Jm5ic3A767CY67O17ZiVJm5ic3A76rCd7LK066GcJm5ic3A766eM65Ok7Ja0
Jm5ic3A77KSN64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJyPmxl
dCZuYnNwO3ZsJm5ic3A7PSZuYnNwO1smbmJzcDsnb25lJywmbmJzcDsndHdvJywmbmJzcDsndGhy
ZWUnJm5ic3A7XTsmbmJzcDsgPGJyPmxldCZuYnNwO2l0ZXJhdG9yJm5ic3A7PSZuYnNwOzxhIGhy
ZWY9InZsLnZhbHVlcygpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNl
LWhyZWY9InZsLnZhbHVlcygpOyI+dmwudmFsdWVzKCk7PC9hPiZuYnNwOyA8YnI+PGJyPjxhIGhy
ZWY9ImNvbnNvbGUubG9nKGl0ZXJhdG9yLm5leHQoKS52YWx1ZSk7IiB0YXJnZXQ9Il9ibGFuayIg
cmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iY29uc29sZS5sb2coaXRlcmF0b3IubmV4dCgp
LnZhbHVlKTsiPmNvbnNvbGUubG9nKGl0ZXJhdG9yLm5leHQoKS52YWx1ZSk7PC9hPiZuYnNwOyZu
YnNwOy8vJm5ic3A7b25lJm5ic3A7IDxicj48YSBocmVmPSJjb25zb2xlLmxvZyhpdGVyYXRvci5u
ZXh0KCkudmFsdWUpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhy
ZWY9ImNvbnNvbGUubG9nKGl0ZXJhdG9yLm5leHQoKS52YWx1ZSk7Ij5jb25zb2xlLmxvZyhpdGVy
YXRvci5uZXh0KCkudmFsdWUpOzwvYT4mbmJzcDsmbmJzcDsvLyZuYnNwO3R3byZuYnNwOyA8YnI+
PGEgaHJlZj0iY29uc29sZS5sb2coaXRlcmF0b3IubmV4dCgpLnZhbHVlKTsiIHRhcmdldD0iX2Js
YW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhpdGVyYXRvci5u
ZXh0KCkudmFsdWUpOyI+Y29uc29sZS5sb2coaXRlcmF0b3IubmV4dCgpLnZhbHVlKTs8L2E+Jm5i
c3A7Jm5ic3A7Ly8mbmJzcDt0aHJlZSZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2coaXRl
cmF0b3IubmV4dCgpLnZhbHVlKTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRh
LW1jZS1ocmVmPSJjb25zb2xlLmxvZyhpdGVyYXRvci5uZXh0KCkudmFsdWUpOyI+Y29uc29sZS5s
b2coaXRlcmF0b3IubmV4dCgpLnZhbHVlKTs8L2E+Jm5ic3A7Jm5ic3A7Ly8mbmJzcDt1bmRlZmlu
ZWQmbmJzcDsgPGJyPmBgYCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7IDxicj48YnI+
Jmd0O29uZSZuYnNwOyA8YnI+Jmd0O3R3byZuYnNwOyA8YnI+Jmd0O3RocmVlJm5ic3A7IDxicj4m
Z3Q7dW5kZWZpbmVkJm5ic3A7IDxicj48YnI+YGBgamF2YXNjcmlwdCZuYnNwOyA8YnI+bGV0Jm5i
c3A7dmwmbmJzcDs9Jm5ic3A7WyZuYnNwOydvbmUnLCZuYnNwOyd0d28nLCZuYnNwOyd0aHJlZScm
bmJzcDtdOyZuYnNwOyA8YnI+bGV0Jm5ic3A7aXRlcmF0b3ImbmJzcDs9Jm5ic3A7PGEgaHJlZj0i
dmwudmFsdWVzKCk7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJl
Zj0idmwudmFsdWVzKCk7Ij52bC52YWx1ZXMoKTs8L2E+Jm5ic3A7IDxicj48YnI+Zm9yJm5ic3A7
KGxldCZuYnNwO2kmbmJzcDtvZiZuYnNwO2l0ZXJhdG9yKSZuYnNwO3smbmJzcDsgPGJyPiZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9ImNvbnNvbGUubG9nKGkpOyIgdGFyZ2V0PSJfYmxh
bmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKGkpOyI+Y29uc29s
ZS5sb2coaSk7PC9hPiZuYnNwOyA8YnI+fSZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2co
aXRlcmF0b3IubmV4dCgpLnZhbHVlKTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBk
YXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhpdGVyYXRvci5uZXh0KCkudmFsdWUpOyI+Y29uc29s
ZS5sb2coaXRlcmF0b3IubmV4dCgpLnZhbHVlKTs8L2E+Jm5ic3A7Jm5ic3A7Ly8mbmJzcDt1bmRl
ZmluZWQmbmJzcDs6Jm5ic3A77JyE7JeQ7IScJm5ic3A766qo65GQJm5ic3A767CY67O17ZW07ISc
Jm5ic3A77JeG7J2MLiZuYnNwOyA8YnI+YGBgIDxicj48YnI+KipPdXRwdXQmbmJzcDs6KiombmJz
cDsgPGJyPjxicj4mZ3Q7Jm5ic3A7b25lJm5ic3A7IDxicj4mZ3Q7Jm5ic3A7dHdvJm5ic3A7IDxi
cj4mZ3Q7Jm5ic3A7dGhyZWUmbmJzcDsgPGJyPjxicj48YnI+PGJyPiMjJm5ic3A7QXJyYXkuZW50
cmllcygpJm5ic3A7IDxicj48YnI+67Cw7Je07J2YJm5ic3A77JqU7IaM66W8Jm5ic3A77YKkKGtl
eSnsmYAmbmJzcDvqsJIodmFsdWUp66GcJm5ic3A77Ked7KeA7Ja07KeEJm5ic3A767CY67O17ZiV
Jm5ic3A76rCd7LK066GcJm5ic3A766eM65Ok7Ja0Jm5ic3A77KSN64uI64ukLiZuYnNwOyA8YnI+
PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJyPmxldCZuYnNwO3ZsJm5ic3A7PSZuYnNwO1smbmJz
cDsnb25lJywmbmJzcDsndHdvJywmbmJzcDsndGhyZWUnJm5ic3A7XTsmbmJzcDsgPGJyPmxldCZu
YnNwO2l0ZXJhdG9yJm5ic3A7PSZuYnNwOzxhIGhyZWY9InZsLnZhbHVlcygpOyIgdGFyZ2V0PSJf
YmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9InZsLnZhbHVlcygpOyI+dmwudmFs
dWVzKCk7PC9hPiZuYnNwOyA8YnI+Zm9yJm5ic3A7KGxldCZuYnNwO2kmbmJzcDtvZiZuYnNwO2l0
ZXJhdG9yKSZuYnNwO3smbmJzcDsgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9
ImNvbnNvbGUubG9nKGkpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNl
LWhyZWY9ImNvbnNvbGUubG9nKGkpOyI+Y29uc29sZS5sb2coaSk7PC9hPiZuYnNwOyA8YnI+fSZu
YnNwOyA8YnI+YGBgIDxicj48YnI+KipPdXRwdXQmbmJzcDs6KiombmJzcDsgPGJyPjxicj4mZ3Q7
WzAsJm5ic3A7XCJvbmUiXSZuYnNwOyA8YnI+Jmd0O1sxLCZuYnNwO1widHdvIl0mbmJzcDsgPGJy
PiZndDtbMiwmbmJzcDtcInRocmVlIl0mbmJzcDsgPGJyPjxicj48YnI+PGJyPiMmbmJzcDtBcnJh
eSZuYnNwO+ywvuq4sCZuYnNwOyA8YnI+PGJyPiMjJm5ic3A7PGEgaHJlZj0iQXJyYXkuc29tZSgp
IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iQXJyYXkuc29t
ZSgpIj5BcnJheS5zb21lKCk8L2E+Jm5ic3A7IDxicj48YnI+67Cw7Je07KSR7JeQ7IScJm5ic3A7
7JqU7IaM6rCAJm5ic3A77KGw6rG07Iud7JeQJm5ic3A766ee64qU6rKMJm5ic3A7MeqwnOudvOuP
hCZuYnNwO+yeiOycvOuptCZuYnNwO3RydWXrpbwmbmJzcDvrsJjtmZjtlanri4jri6QuJm5ic3A7
IDxicj48YnI+YGBgamF2YXNjcmlwdCZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2coWzIs
IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iY29uc29sZS5s
b2coWzIsIj5jb25zb2xlLmxvZyhbMiw8L2E+Jm5ic3A7NSwmbmJzcDs4LCZuYnNwOzEsJm5ic3A7
NF0uc29tZSgoZSkmbmJzcDs9Jmd0OyZuYnNwO2UmbmJzcDsmZ3Q7Jm5ic3A7NSkpOyZuYnNwOyA8
YnI+PGEgaHJlZj0iY29uc29sZS5sb2coWzIsIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5l
ciIgZGF0YS1tY2UtaHJlZj0iY29uc29sZS5sb2coWzIsIj5jb25zb2xlLmxvZyhbMiw8L2E+Jm5i
c3A7NSwmbmJzcDs4LCZuYnNwOzEsJm5ic3A7NF0uc29tZSgoZSkmbmJzcDs9Jmd0OyZuYnNwO2Um
bmJzcDsmZ3Q7Jm5ic3A7OSkpOyZuYnNwOyA8YnI+YGBgIDxicj48YnI+KipPdXRwdXQmbmJzcDs6
KiombmJzcDsgPGJyPjxicj4mZ3Q7dHJ1ZSZuYnNwOyA8YnI+Jmd0O2ZhbHNlJm5ic3A7IDxicj48
YnI+PGJyPjxicj4jIyZuYnNwOzxhIGhyZWY9IkFycmF5LmV2ZXJ5KCkiIHRhcmdldD0iX2JsYW5r
IiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJBcnJheS5ldmVyeSgpIj5BcnJheS5ldmVy
eSgpPC9hPiZuYnNwOyA8YnI+PGJyPuuwsOyXtOydmCZuYnNwO+yalOyGjOqwgCZuYnNwO+uqqOuR
kCZuYnNwO+yhsOqxtOyLneyXkCZuYnNwO+unnuyVhOyVvCZuYnNwO3RydWXrpbwmbmJzcDvrsJjt
mZjtlanri4jri6QuJm5ic3A7IDxicj48YnI+YGBgamF2YXNjcmlwdCZuYnNwOyA8YnI+PGEgaHJl
Zj0iY29uc29sZS5sb2coWzIsIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1t
Y2UtaHJlZj0iY29uc29sZS5sb2coWzIsIj5jb25zb2xlLmxvZyhbMiw8L2E+Jm5ic3A7NSwmbmJz
cDs4LCZuYnNwOzEsJm5ic3A7NF0uZXZlcnkoKGUpJm5ic3A7PSZndDsmbmJzcDtlJm5ic3A7Jmx0
OyZuYnNwOzkpKTsmbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKFsyLCIgdGFyZ2V0PSJf
YmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKFsyLCI+Y29u
c29sZS5sb2coWzIsPC9hPiZuYnNwOzUsJm5ic3A7OCwmbmJzcDsxLCZuYnNwOzRdLmV2ZXJ5KChl
KSZuYnNwOz0mZ3Q7Jm5ic3A7ZSZuYnNwOyZndDsmbmJzcDs0KSk7Jm5ic3A7IDxicj5gYGAgPGJy
Pjxicj4qKk91dHB1dCZuYnNwOzoqKiZuYnNwOyA8YnI+PGJyPiZndDt0cnVlJm5ic3A7IDxicj4m
Z3Q7ZmFsc2UmbmJzcDsgPGJyPjxicj48YnI+PGJyPiMjJm5ic3A7PGEgaHJlZj0iQXJyYXkuZmlu
ZCgpIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iQXJyYXku
ZmluZCgpIj5BcnJheS5maW5kKCk8L2E+Jm5ic3A7IDxicj48YnI+67Cw7Je07JeQ7IScJm5ic3A7
7KGw6rG07Iud7JeQJm5ic3A766ee64qUJm5ic3A77LKr67KI7Ke4Jm5ic3A77JqU7IaM66W8Jm5i
c3A767CY7ZmY7ZWp64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJy
PjxhIGhyZWY9ImNvbnNvbGUubG9nKFsyLCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIi
IGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKFsyLCI+Y29uc29sZS5sb2coWzIsPC9hPiZuYnNw
OzUsJm5ic3A7OCwmbmJzcDsxLCZuYnNwOzRdLmZpbmQoKGUpJm5ic3A7PSZndDsmbmJzcDtlJm5i
c3A7Jmx0OyZuYnNwOzkpKTsmbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKFsyLCIgdGFy
Z2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKFsy
LCI+Y29uc29sZS5sb2coWzIsPC9hPiZuYnNwOzUsJm5ic3A7OCwmbmJzcDsxLCZuYnNwOzRdLmZp
bmQoKGUpJm5ic3A7PSZndDsmbmJzcDtlJm5ic3A7Jmd0OyZuYnNwOzQpKTsmbmJzcDsgPGJyPmBg
YCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7IDxicj48YnI+Jmd0OzImbmJzcDsgPGJy
PiZndDs1Jm5ic3A7IDxicj48YnI+PGJyPjxicj4y67KI7Ke4Jm5ic3A76rCS7J2AJm5ic3A767Cw
7Je07J2YJm5ic3A7aW5kZXgsJm5ic3A7M+uyiOynuOuKlCZuYnNwO+2YhOyerCZuYnNwO+uwsOyX
tOydhCZuYnNwO+yeheuLiOuLpC4mbmJzcDsgPGJyPjxicj5gYGBqYXZhc2NyaXB0Jm5ic3A7IDxi
cj48YSBocmVmPSJjb25zb2xlLmxvZyhbMiwiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVy
IiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhbMiwiPmNvbnNvbGUubG9nKFsyLDwvYT4mbmJz
cDs1LCZuYnNwOzgsJm5ic3A7MSwmbmJzcDs0XS5maW5kKChlLCZuYnNwO2kpJm5ic3A7PSZndDsm
bmJzcDtlJm5ic3A7Jmd0OyZuYnNwOzMmbmJzcDsmbmJzcDsmYW1wOyZhbXA7Jm5ic3A7aSZuYnNw
OyZsdDsmbmJzcDsyKSk7Jm5ic3A7IDxicj5gYGAgPGJyPjxicj4qKk91dHB1dCZuYnNwOzoqKiZu
YnNwOyA8YnI+PGJyPiZndDs1Jm5ic3A7IDxicj48YnI+PGJyPjxicj4jIyZuYnNwO0FycmF5LmZp
bmRJbmRleCgpJm5ic3A7IDxicj48YnI+67Cw7Je07JeQ7IScJm5ic3A77KGw6rG07Iud7JeQJm5i
c3A766ee64qUJm5ic3A77LKr67KI7Ke4Jm5ic3A77JqU7IaM7J2YJm5ic3A77J24642x7Iqk66W8
Jm5ic3A767CY7ZmY7ZWp64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsg
PGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKFsyLCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVu
ZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKFsyLCI+Y29uc29sZS5sb2coWzIsPC9hPiZu
YnNwOzUsJm5ic3A7OCwmbmJzcDsxLCZuYnNwOzRdLmZpbmRJbmRleCgoZSkmbmJzcDs9Jmd0OyZu
YnNwO2UmbmJzcDsmbHQ7Jm5ic3A7OSkpOyZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2co
WzIsIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iY29uc29s
ZS5sb2coWzIsIj5jb25zb2xlLmxvZyhbMiw8L2E+Jm5ic3A7NSwmbmJzcDs4LCZuYnNwOzEsJm5i
c3A7NF0uZmluZEluZGV4KChlKSZuYnNwOz0mZ3Q7Jm5ic3A7ZSZuYnNwOyZndDsmbmJzcDs0KSk7
Jm5ic3A7IDxicj5gYGAgPGJyPjxicj4qKk91dHB1dCZuYnNwOzoqKiZuYnNwOyA8YnI+PGJyPiZn
dDswJm5ic3A7IDxicj4mZ3Q7MSZuYnNwOyA8YnI+PGJyPjxicj48YnI+IyMmbmJzcDs8YSBocmVm
PSJBcnJheS5maWx0ZXIoKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNl
LWhyZWY9IkFycmF5LmZpbHRlcigpIj5BcnJheS5maWx0ZXIoKTwvYT4mbmJzcDsgPGJyPjxicj7r
sLDsl7Tsl5DshJwmbmJzcDvsobDqsbTsi53sl5AmbmJzcDvrp57ripQmbmJzcDvsmpTshozrk6Ts
nYQmbmJzcDvrsLDsl7TroZwmbmJzcDvrsJjtmZjtlanri4jri6QuJm5ic3A7IDxicj48YnI+YGBg
amF2YXNjcmlwdCZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2coWzIsIiB0YXJnZXQ9Il9i
bGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iY29uc29sZS5sb2coWzIsIj5jb25z
b2xlLmxvZyhbMiw8L2E+Jm5ic3A7NSwmbmJzcDs4LCZuYnNwOzEsJm5ic3A7NF0uZmlsdGVyKChl
KSZuYnNwOz0mZ3Q7Jm5ic3A7ZSZuYnNwOyZsdDsmbmJzcDs5KSk7Jm5ic3A7IDxicj48YSBocmVm
PSJjb25zb2xlLmxvZyhbMiwiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1j
ZS1ocmVmPSJjb25zb2xlLmxvZyhbMiwiPmNvbnNvbGUubG9nKFsyLDwvYT4mbmJzcDs1LCZuYnNw
OzgsJm5ic3A7MSwmbmJzcDs0XS5maWx0ZXIoKGUpJm5ic3A7PSZndDsmbmJzcDtlJm5ic3A7Jmd0
OyZuYnNwOzQpKTsmbmJzcDsgPGJyPmBgYCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7
IDxicj48YnI+Jmd0O1smbmJzcDsyLCZuYnNwOzUsJm5ic3A7OCwmbmJzcDsxLCZuYnNwOzQmbmJz
cDtdJm5ic3A7IDxicj4mZ3Q7WyZuYnNwOzUsJm5ic3A7OCZuYnNwO10mbmJzcDsgPGJyPjxicj48
YnI+PGJyPjxicj48YnI+IyMmbmJzcDtBcnJheS5pbmRleE9mKCkmbmJzcDsgPGJyPjxicj7rsLDs
l7Tsl5DshJwmbmJzcDvsmpTshozsnZgmbmJzcDvsnITsuZjrpbwmbmJzcDvssL7ripTri6QuJm5i
c3A77LC+7J2E7IiY6rCAJm5ic3A77JeG7Jy866m0Jm5ic3A7LTHsnYQmbmJzcDvrsJjtmZjtlanr
i4jri6QuJm5ic3A7IDxicj48YnI+65GQ67KI7Ke4Jm5ic3A76rCS7J2EJm5ic3A77LC+7J2EJm5i
c3A77Iuc7J6RJm5ic3A77JyE7LmYJm5ic3A77J6F64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGph
dmFzY3JpcHQmbmJzcDsgPGJyPjxhIGhyZWY9ImNvbnNvbGUubG9nKFsyLCIgdGFyZ2V0PSJfYmxh
bmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKFsyLCI+Y29uc29s
ZS5sb2coWzIsPC9hPiZuYnNwOzUsJm5ic3A7OCwmbmJzcDsxLCZuYnNwOzRdLmluZGV4T2YoMikp
OyZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2coWzIsIiB0YXJnZXQ9Il9ibGFuayIgcmVs
PSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iY29uc29sZS5sb2coWzIsIj5jb25zb2xlLmxvZyhb
Miw8L2E+Jm5ic3A7NSwmbmJzcDs4LCZuYnNwOzEsJm5ic3A7NF0uaW5kZXhPZig4KSk7Jm5ic3A7
IDxicj48YSBocmVmPSJjb25zb2xlLmxvZyhbMiwiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3Bl
bmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhbMiwiPmNvbnNvbGUubG9nKFsyLDwvYT4m
bmJzcDsxLCZuYnNwOzgsJm5ic3A7MSwmbmJzcDs0XS5pbmRleE9mKDEsJm5ic3A7MykpOyZuYnNw
OyA8YnI+YGBgIDxicj48YnI+KipPdXRwdXQmbmJzcDs6KiombmJzcDsgPGJyPjxicj4mZ3Q7MCZu
YnNwOyA8YnI+Jmd0OzImbmJzcDsgPGJyPiZndDszJm5ic3A7IDxicj48YnI+PGJyPjxicj48YnI+
PGJyPiMmbmJzcDtBcnJheSZuYnNwO+uzgO2ZmO2VmOq4sCZuYnNwOyA8YnI+PGJyPiMjJm5ic3A7
PGEgaHJlZj0iQXJyYXkuZmlsbCgpIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0
YS1tY2UtaHJlZj0iQXJyYXkuZmlsbCgpIj5BcnJheS5maWxsKCk8L2E+Jm5ic3A7IDxicj48YnI+
67Cw7Je07J2EJm5ic3A77JqU7IaM66W8Jm5ic3A77LGE7JuMJm5ic3A77KSN64uI64ukLiZuYnNw
OyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJyPmxldCZuYnNwO2FyciZuYnNwOz0mbmJz
cDtbMSwmbmJzcDsyLCZuYnNwOzMsJm5ic3A7NF07Jm5ic3A7IDxicj48YSBocmVmPSJhcnIuZmls
bCg3KTsiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJhcnIu
ZmlsbCg3KTsiPmFyci5maWxsKDcpOzwvYT4mbmJzcDsvLyZuYnNwO+uqqOuRkCZuYnNwOzfroZwm
bmJzcDvssYTsm4wmbmJzcDvrhKPripTri6QuJm5ic3A7IDxicj48YSBocmVmPSJjb25zb2xlLmxv
ZyhhcnIpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNv
bnNvbGUubG9nKGFycik7Ij5jb25zb2xlLmxvZyhhcnIpOzwvYT4mbmJzcDsgPGJyPmBgYCA8YnI+
PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7IDxicj48YnI+Jmd0O1smbmJzcDs3LCZuYnNwOzcs
Jm5ic3A7NywmbmJzcDs3Jm5ic3A7XSZuYnNwOyA8YnI+PGJyPjxicj48YnI+7Iuc7J6RJm5ic3A7
7KeA7KCQ7J2EJm5ic3A77KCV7ZW07IScJm5ic3A77LGE7JuMJm5ic3A77KSEJm5ic3A77IiYJm5i
c3A77J6I7Iq164uI64ukLiZuYnNwO+yLnOyekSZuYnNwO+ychOy5mOuKlCZuYnNwO+ybkO2VmOuK
lCZuYnNwO+ychOy5mOydmCZuYnNwOy0x7J2EJm5ic3A77ZW07IScJm5ic3A764Sj7Ja0Jm5ic3A7
7KSN64uI64ukLiZuYnNwOyA8YnI+PGJyPmBgYGphdmFzY3JpcHQmbmJzcDsgPGJyPmxldCZuYnNw
O2FyciZuYnNwOz0mbmJzcDtbMSwmbmJzcDsyLCZuYnNwOzMsJm5ic3A7NF07Jm5ic3A7IDxicj48
YSBocmVmPSJhcnIuZmlsbCg3LCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEt
bWNlLWhyZWY9ImFyci5maWxsKDcsIj5hcnIuZmlsbCg3LDwvYT4mbmJzcDsxKTsmbmJzcDsvLyZu
YnNwOzLrsojsp7gmbmJzcDvrtoDthLAmbmJzcDvrgZ3quYzsp4AmbmJzcDs366GcJm5ic3A77LGE
7JuALCZuYnNwOzDrtoDthLAmbmJzcDvsi5zsnpHsnbTri6QuJm5ic3A7IDxicj48YSBocmVmPSJj
b25zb2xlLmxvZyhhcnIpOyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNl
LWhyZWY9ImNvbnNvbGUubG9nKGFycik7Ij5jb25zb2xlLmxvZyhhcnIpOzwvYT4mbmJzcDsgPGJy
PmBgYCA8YnI+PGJyPioqT3V0cHV0Jm5ic3A7OioqJm5ic3A7IDxicj48YnI+Jmd0O1smbmJzcDsx
LCZuYnNwOzcsJm5ic3A7NywmbmJzcDs3Jm5ic3A7XSZuYnNwOyA8YnI+PGJyPjxicj48YnI+7Iuc
7J6R6rO8Jm5ic3A764GdJm5ic3A77KeA7KCQ7J2EJm5ic3A77KeA7KCV7ZW07IScJm5ic3A77LGE
7JuMJm5ic3A77KSEJm5ic3A77IiYJm5ic3A77J6I7Iq164uI64ukLiZuYnNwO+uBnSZuYnNwO+yn
gOygkOydgCZuYnNwO+ychOy5mOulvCZuYnNwO+uEo+yWtCZuYnNwO+ykmOyVvCZuYnNwO+2VqeuL
iOuLpC4mbmJzcDsgPGJyPjxicj5gYGBqYXZhc2NyaXB0Jm5ic3A7IDxicj5sZXQmbmJzcDthcnIm
bmJzcDs9Jm5ic3A7WzEsJm5ic3A7MiwmbmJzcDszLCZuYnNwOzRdOyZuYnNwOyA8YnI+PGEgaHJl
Zj0iYXJyLmZpbGwoNywiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1o
cmVmPSJhcnIuZmlsbCg3LCI+YXJyLmZpbGwoNyw8L2E+Jm5ic3A7MSwmbmJzcDszKTsmbmJzcDsv
LyZuYnNwOzLrsojsp7gmbmJzcDvrtoDthLAmbmJzcDsz67KI7Ke4Jm5ic3A76rmM7KeAJm5ic3A7
N+uhnCZuYnNwO+yxhOybgCZuYnNwOyA8YnI+PGEgaHJlZj0iY29uc29sZS5sb2coYXJyKTsiIHRh
cmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJjb25zb2xlLmxvZyhh
cnIpOyI+Y29uc29sZS5sb2coYXJyKTs8L2E+Jm5ic3A7IDxicj5gYGAgPGJyPjxicj4qKk91dHB1
dCZuYnNwOzoqKiZuYnNwOyA8YnI+PGJyPiZndDtbJm5ic3A7MSwmbmJzcDs3LCZuYnNwOzcsJm5i
c3A7NCZuYnNwO10mbmJzcDsgPGJyPjxicj48YnI+PGJyPiMjJm5ic3A7QXJyYXkuY29weVdpdGhp
bigpJm5ic3A7IDxicj48YnI+7KeA7KCV7ZWcJm5ic3A77JyE7LmY7JeQJm5ic3A76rCS7J2EJm5i
c3A767O17IKs7ZW07IScJm5ic3A764Sj7Ja0Jm5ic3A77KSN64uI64ukLiZuYnNwOyA8YnI+PGJy
Puyyq+uyiOynuOuKlCZuYnNwO+uzteyCrO2VoCZuYnNwO+ychOy5mCwmbmJzcDvrkZDrsojsp7jr
ipQmbmJzcDvsi5zsnpHsnITsuZgmbmJzcDso6riw67O46rCSOjApLCZuYnNwO+yEuOuyiOynuOuK
lCZuYnNwO+uBneychOy5mCjquLDrs7jqsJI6Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iYXJyYXkubGVu
Z3RoKSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImFycmF5
Lmxlbmd0aCkiPmFycmF5Lmxlbmd0aCk8L2E+Jm5ic3A7IDxicj48YnI+YGBgamF2YXNjcmlwdCZu
YnNwOyA8YnI+dmFyJm5ic3A7YXJyYXkmbmJzcDs9Jm5ic3A7WyZuYnNwOzEsJm5ic3A7MiwmbmJz
cDszLCZuYnNwOzQsJm5ic3A7NSwmbmJzcDs2LCZuYnNwOzcmbmJzcDtdOyZuYnNwOyZuYnNwOyA8
YnI+PGEgaHJlZj0iY29uc29sZS5sb2coYXJyYXkuY29weVdpdGhpbigxLCIgdGFyZ2V0PSJfYmxh
bmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKGFycmF5LmNvcHlX
aXRoaW4oMSwiPmNvbnNvbGUubG9nKGFycmF5LmNvcHlXaXRoaW4oMSw8L2E+Jm5ic3A7MywmbmJz
cDs1KSk7Jm5ic3A7Jm5ic3A7IDxicj5gYGAgPGJyPjxicj4qKk91dHB1dCZuYnNwOzoqKiZuYnNw
OyA8YnI+PGJyPiZndDtbJm5ic3A7MSwmbmJzcDs0LCZuYnNwOzUsJm5ic3A7NCwmbmJzcDs1LCZu
YnNwOzYsJm5ic3A7NyZuYnNwO10gPGJyPjxicj48L3A+&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Programming/Node.js</category>
      <category>array</category>
      <category>function</category>
      <category>JavaScript</category>
      <category>method</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/536</guid>
      <comments>https://gyuha.tistory.com/536#entry536comment</comments>
      <pubDate>Sun, 2 Feb 2020 03:23:12 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 터미널 프리뷰 복사/붙여 넣기 단축키 설정하기</title>
      <link>https://gyuha.tistory.com/535</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/?type=post&amp;amp;returnURL=%2Fmanage%2Fposts%2F&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;Windows Terminal (preview)를 기본 cmd 대신 써 볼까하고 사용중인데.. 복사/붙여넣기가 잘 동작하지 않아서 방법을 찾아서 공유 합니다.&lt;/p&gt;
&lt;img src=&quot;https://k.kakaocdn.net/dn/UObHU/btqBzkaDMyK/LkM5Djgj6ZJRNlZjSDy1lK/img.png&quot; width=&quot;613&quot; height=&quot;321&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/t398G/btqBua1S2TV/vjNUs6zKs3TgwkoyrMHg90/img.png&quot; data-origin-width=&quot;1539&quot; data-origin-height=&quot;806&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;메뉴에서 settings 또는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;Ctrl + ,&lt;/code&gt;을 누르면 메모장에 설정값이 표시 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;여기서 keybindings에 아래와 같은 내용을 추가 하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;prolog&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;
    &quot;keybindings&quot;: [
      {
        &quot;command&quot;: &quot;paste&quot;,
        &quot;keys&quot;: [&quot;ctrl+shift+v&quot;, &quot;shift+ins&quot;]
      },
      {
        &quot;command&quot;: &quot;copy&quot;,
        &quot;keys&quot;: [&quot;ctrl+shift+c&quot;]
      }
    ]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;복사는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;ctrl+shift+c&lt;/code&gt;로 가능하고 붙여 넣기는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;ctrl+shift+v&lt;/code&gt;또는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;shft+ins&lt;/code&gt;로 가능해 집니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;잘 사용하세요~&lt;/p&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+V2luZG93cyBUZXJtaW5hbCAocHJldmlldynrpbwg6riw67O4IGNtZCDrjIDsi6Ag7I2oIOuz
vOq5jO2VmOqzoCDsgqzsmqnspJHsnbjrjbAuLiDrs7Xsgqwv67aZ7Jes64Sj6riw6rCAIOyemCDr
j5nsnpHtlZjsp4Ag7JWK7JWE7IScIOuwqeuyleydhCDssL7slYTshJwg6rO17JygIO2VqeuLiOuL
pC48YnI+PC9wPjxmaWd1cmUgZGF0YS1rZS10eXBlPSJpbWFnZSIgZGF0YS1rZS1zdHlsZT0iYWxp
Z25DZW50ZXIiPjxpbWcgc3JjPSJodHRwczovL2sua2FrYW9jZG4ubmV0L2RuL3QzOThHL2J0cUJ1
YTFTMlRWL3ZqTlVzNnpLczNUZ3drb3lyTUhnOTAvaW1nLnBuZyIgZGF0YS1pbWFnZS1zcmM9Imh0
dHBzOi8vay5rYWthb2Nkbi5uZXQvZG4vdDM5OEcvYnRxQnVhMVMyVFYvdmpOVXM2ektzM1Rnd2tv
eXJNSGc5MC9pbWcucG5nIiBkYXRhLW9yaWdpbi13aWR0aD0iMTUzOSIgZGF0YS1vcmlnaW4taGVp
Z2h0PSI4MDYiIGRhdGEtbWNlLXNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9VT2JIVS9i
dHFCemthRE15Sy9Ma001RGpnajZaSlJObFpqU0R5MWxLL2ltZy5wbmciPjxmaWdjYXB0aW9uIHN0
eWxlPSJkaXNwbGF5OiBub25lOyI+PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPuuplOuJtOyXkOyE
nCBzZXR0aW5ncyDrmJDripQgYEN0cmwgKyAsYOydhCDriITrpbTrqbQg66mU66qo7J6l7JeQIOyE
pOygleqwkuydtCDtkZzsi5wg65Cp64uI64ukLjwvcD48cD7sl6zquLDshJwga2V5YmluZGluZ3Ps
l5Ag7JWE656Y7JmAIOqwmeydgCDrgrTsmqnsnYQg7LaU6rCAIO2VmOuptCDrkKnri4jri6QuJm5i
c3A7PC9wPjxwPmBgYGpzb248L3A+PHA+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ImtleWJpbmRp
bmdzIjombmJzcDtbPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3s8YnI+
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ImNvbW1hbmQi
OiZuYnNwOyJwYXN0ZSIsPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyJrZXlzIjombmJzcDtbImN0cmwrc2hpZnQrdiIsJm5ic3A7InNoaWZ0K2lucyJd
PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO30sPGJyPiZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3s8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ImNvbW1hbmQiOiZuYnNwOyJjb3B5Iiw8YnI+Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ImtleXMiOiZuYnNwO1siY3Ry
bCtzaGlmdCtjIl08YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7fTxicj4m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtdPC9wPjxwPmBgYDwvcD48cD7rs7XsgqzripQgYGN0cmwr
c2hpZnQrY2DroZwg6rCA64ql7ZWY6rOgIOu2meyXrCDrhKPquLDripQgYGN0cmwrc2hpZnQrdmDr
mJDripQgYHNoZnQraW5zYOuhnCDqsIDriqXtlbQg7KeR64uI64ukLjwvcD48cD7snpgg7IKs7Jqp
7ZWY7IS47JqUfjwvcD4=&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/535</guid>
      <comments>https://gyuha.tistory.com/535#entry535comment</comments>
      <pubDate>Tue, 28 Jan 2020 00:30:35 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 JetBrains Mono 폰트 사용하기</title>
      <link>https://gyuha.tistory.com/534</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2020-01-17_2329_44.png&quot; data-origin-width=&quot;1689&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ISpdD/btqBkqa4E0V/twm2d0n0O1O2A3dwhkivD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ISpdD/btqBkqa4E0V/twm2d0n0O1O2A3dwhkivD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ISpdD/btqBkqa4E0V/twm2d0n0O1O2A3dwhkivD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FISpdD%2FbtqBkqa4E0V%2Ftwm2d0n0O1O2A3dwhkivD0%2Fimg.png&quot; data-filename=&quot;2020-01-17_2329_44.png&quot; data-origin-width=&quot;1689&quot; data-origin-height=&quot;583&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;개발툴로 유명한 JetBrains에서 코딩용 새로운 고정폭폰트를 공개 했습니다. 상업적용도와 비상업적용도 모두 사용이 가능한 아파치2.0 라이센스 입니다.&lt;/p&gt;
&lt;p&gt;그런데, 이 폰트에 보면 합자(ligature)기능이 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2020-01-17_2335_23.png&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLWwTx/btqBh05Vb9x/08Rwe9aD54Pjxo0NqMOi51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLWwTx/btqBh05Vb9x/08Rwe9aD54Pjxo0NqMOi51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLWwTx/btqBh05Vb9x/08Rwe9aD54Pjxo0NqMOi51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLWwTx%2FbtqBh05Vb9x%2F08Rwe9aD54Pjxo0NqMOi51%2Fimg.png&quot; data-filename=&quot;2020-01-17_2335_23.png&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;506&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이 기능은 코딩하다 보면 많이 쓰이는 ==이나 !=를 합자 형태로 표시해서 가독성을 높여주는 기능입니다.&lt;br /&gt;대략적으로 보면 아래와 같이 차이가 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://k.kakaocdn.net/dn/YskHe/btqBg8i9H1h/UKb1PA948SIAVCqNYDK810/img.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;그리고, vscode에서는 합자 기능을 사용할 수 있습니다.&lt;br /&gt;설정하는 방법은 File &amp;gt; Preferense &amp;gt; Settings (단축키: &lt;code&gt;Ctrl + ,&lt;/code&gt;)을 선택하고 상단에 Open Settings(JSON) 버튼을 눌러 줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS2r3H/btqBg8cmIFn/ifPbBAfk3FIIFga5Qp9xWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS2r3H/btqBg8cmIFn/ifPbBAfk3FIIFga5Qp9xWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS2r3H/btqBg8cmIFn/ifPbBAfk3FIIFga5Qp9xWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS2r3H%2FbtqBg8cmIFn%2FifPbBAfk3FIIFga5Qp9xWk%2Fimg.png&quot; width=&quot;100%&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그리고, 아래 내용을 추가해 주면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;{
    &quot;editor.fontFamily&quot;: &quot;Jetbrains Mono&quot;,
    &quot;editor.fontLigatures&quot;: true,
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <category>Font</category>
      <category>jetbrain</category>
      <category>ligature</category>
      <category>Mono</category>
      <category>vscode</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/534</guid>
      <comments>https://gyuha.tistory.com/534#entry534comment</comments>
      <pubDate>Fri, 17 Jan 2020 23:46:12 +0900</pubDate>
    </item>
    <item>
      <title>TypeORM 데이터베이스 자료형</title>
      <link>https://gyuha.tistory.com/533</link>
      <description>&lt;p&gt;TypeORM에서 자료형이 데이터베이스 마다 약간이 다른게 지원하고 있어서.. 정리 해 본 김에 공유 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;FireShot Capture 002 - - .png&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;3021&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh72TC/btqA5RgBJQj/8U0HdkZphK7ntyeOLN9VE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh72TC/btqA5RgBJQj/8U0HdkZphK7ntyeOLN9VE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh72TC/btqA5RgBJQj/8U0HdkZphK7ntyeOLN9VE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh72TC%2FbtqA5RgBJQj%2F8U0HdkZphK7ntyeOLN9VE0%2Fimg.png&quot; data-filename=&quot;FireShot Capture 002 - - .png&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;3021&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;표를 다시 만들려고 했지만, 너무 번거로워서 캡쳐 본을 올립니다. 자세한 내용은 아래 링크를 봐주시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1YqU1048fIpxxLMJ5eOxLEfxKUAN9AdVuTaL4kbPad7g/edit?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.google.com/spreadsheets/d/1YqU1048fIpxxLMJ5eOxLEfxKUAN9AdVuTaL4kbPad7g/edit?usp=sharing&lt;/a&gt;&lt;/p&gt;</description>
      <category>Programming/Node.js</category>
      <category>Database</category>
      <category>Schema</category>
      <category>typeORM</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/533</guid>
      <comments>https://gyuha.tistory.com/533#entry533comment</comments>
      <pubDate>Sun, 12 Jan 2020 01:51:19 +0900</pubDate>
    </item>
    <item>
      <title>MediaWiki에 VisualEditor 설치하기</title>
      <link>https://gyuha.tistory.com/532</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/?type=post&amp;amp;returnURL=%2Fmanage%2Fposts%2F&quot;&gt;&lt;img src=&quot;https://k.kakaocdn.net/dn/K6uXT/btqA8iqq9wx/weZaXaYsgDJkW6Ar9BY35K/img.png&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/K6uXT/btqA8iqq9wx/weZaXaYsgDJkW6Ar9BY35K/img.png&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1011&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;어쩌다 미디어위키에 Visual Editor를 설치 할 일이 생겨서 설치 하면서 고생을 많이 해서 정리해 둡니다 ㅜ.ㅜ.&lt;/p&gt;
&lt;h1 id=&quot;visual-editor-extension-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;Visual Editor Extension 설치 하기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;a href=&quot;https://www.mediawiki.org/wiki/Extension:VisualEditor&quot;&gt;https://www.mediawiki.org/wiki/Extension:VisualEditor&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;우선 이 사이트에 방문해서 아무런 생각없이 사이트에서 git으로 설치 하라는 대로 설치하고 띄워 봤더니.. 하얀 화면만 나오고 아무것도 없이 먹통이 되더군요 -_-;;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;뭐가 잘 못 된지도 모르고 하얀 먹통이라서 뭐가 잘 못 된지도 모르는 채 하루를 날려 버렸습니다.  &lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;결국 알아 낸것이 버전에 맞는 extension을 설치해야 하는 것이였습니다..&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;아래 url에 가서 내가 설치한 mediawiki와 맞는 버전을 찾아서 받아서 설치해야 합니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;a href=&quot;https://www.mediawiki.org/wiki/Special:ExtensionDistributor/VisualEditor&quot;&gt;https://www.mediawiki.org/wiki/Special:ExtensionDistributor/VisualEditor&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://k.kakaocdn.net/dn/bt5nQP/btqA7pJ6qoo/sYarriKipZN2PPFYPHFkn0/img.png&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/bt5nQP/btqA7pJ6qoo/sYarriKipZN2PPFYPHFkn0/img.png&quot; data-origin-width=&quot;1509&quot; data-origin-height=&quot;498&quot; /&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;wget https://extdist.wmflabs.org/dist/extensions/VisualEditor-REL1_33-f64e411.tar.gz
tar -xzf VisualEditor-REL1_33-f64e411.tar.gz -C /var/www/mediawiki/extensions
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;LocalSettings.php&lt;/code&gt; 파일에 아래 내용을 추가해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;php&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;wfLoadExtension( 'VisualEditor' ); 
$wgDefaultUserOptions['visualeditor-enable'] = 1; 
$wgHiddenPrefs[] = 'visualeditor-enable'; 

$wgVirtualRestConfig['modules']['parsoid'] = array( 
    'url' =&amp;gt; 'http://mydomain.com:8000', 
);
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;parsoid-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;Parsoid 설치하기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;Visual Editor는 확장만 설치해서 동작하지 않고 parsoid를도 같이 설치를 해 줘야 합니다.&lt;br /&gt;먼저 paroid를 사용하려면 node가 설치가 되어 있어야 합니다. &lt;a href=&quot;https://www.google.co.kr/search?q=nodejs+설치&quot;&gt;설치&lt;/a&gt;가 되어 있지 않다면 설치하시면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;shell&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;$ mkdir /opt/parsoid
$ cd /opt/parsoid
$ git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
$ cd parsoid
$ npm install
$ cp config.example.yaml config.yaml
$ cp localsettings.example.js localsettings.js
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;먼저 api.php의 주소를 확인 합니다. 설치된 미디어위키의 주소에서 api.php파일을 띄워서 아래와 같은 화면이 나오면 됩니다.&lt;/p&gt;
&lt;img src=&quot;https://k.kakaocdn.net/dn/K82ma/btqA2PxeZnn/JtTzlNqFtPlh3JMYLaMlCk/img.png&quot; width=&quot;554&quot; height=&quot;205&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/K82ma/btqA2PxeZnn/JtTzlNqFtPlh3JMYLaMlCk/img.png&quot; data-filename=&quot;이미지 001.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;357&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;config.yaml&lt;/code&gt;에서 mwApis 부분을 아래와 같이 수정해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;mwApis: 
- # This is the only required parameter, 
  # the URL of you MediaWiki API endpoint. 
  uri: 'http://mydomain.com/api.php'
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고, &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;localsettings.js&lt;/code&gt;파일도 아래와 같이 편집해 줍니다. domain과 prefix라는게 있는 옵션이라서 생략해도 됩니다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;'use strict'; 

exports.setup = function(parsoidConfig) { 
    parsoidConfig.setMwApi({ 
        uri: 'http://mydomain.com/api.php', 
    }); 
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;위에까지 설정이 완료 되었으면, 실행해 봅니다.&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;$ npm start
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;혹시 방화벽을 사용중이라면 방화벽을 풀어주는 것도 잊지 말아 주세요.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;이제 세팅이 다 되었으니, 미디어위키에서 잘 동작하는지 테스트 해 보시면 됩니다.&lt;/p&gt;
&lt;h1 id=&quot;pm2-parsoid-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;pm2로 parsoid를 서비스형태로 설정해 주기..&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;먼저 pm2를 설치해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;$ npm install -g pm2
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고, parsoid가 설치된 폴더로 이동해서 실행해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ cd /opt/parsoid
$ pm2 start --name parsoid npm -- start
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;다음부터 pm2에 방금 등록한 앱을 저장해 주고 서비스로 등록해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;elixir&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;$ pm2 save
$ pm2 startup
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;startup을 했을경우 root권한이 아닐 경우, 아래와 같은 메시지가 나옵니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;[PM2] Init System found: systemd 
[PM2] To setup the Startup Script, copy/paste the following command: 
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u USERNAME --hp /home/USERNAME
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;마지막 sudo가 있는 내용을 복사해서 붙여넣기 해서 실행해 주면 다음부터 컴퓨터를 껐다키면 알아서 parsoid를 실행해 주게 됩니다.&lt;/p&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+PGZpZ3VyZSBkYXRhLWtlLXR5cGU9ImltYWdl
IiBkYXRhLWtlLXN0eWxlPSJhbGlnbkNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vay5rYWthb2Nk
bi5uZXQvZG4vSzZ1WFQvYnRxQThpcXE5d3gvd2VaYVhhWXNnREprVzZBcjlCWTM1Sy9pbWcucG5n
IiBkYXRhLWltYWdlLXNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9LNnVYVC9idHFBOGlx
cTl3eC93ZVphWGFZc2dESmtXNkFyOUJZMzVLL2ltZy5wbmciIGRhdGEtb3JpZ2luLXdpZHRoPSIy
ODgwIiBkYXRhLW9yaWdpbi1oZWlnaHQ9IjEwMTEiIGRhdGEtbWNlLXNyYz0iaHR0cHM6Ly9rLmth
a2FvY2RuLm5ldC9kbi9LNnVYVC9idHFBOGlxcTl3eC93ZVphWGFZc2dESmtXNkFyOUJZMzVLL2lt
Zy5wbmciPjxmaWdjYXB0aW9uIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9maWdjYXB0aW9uPjwv
ZmlndXJlPjxwPjxicj48L3A+PHAgc3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0
YW50OyIgZGF0YS1tY2Utc3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyI+
7Ja07KmM64ukIOuvuOuUlOyWtOychO2CpOyXkCBWaXN1YWwgRWRpdG9y66W8IOyEpOy5mCDtlaAg
7J287J20IOyDneqyqOyEnCDshKTsuZgg7ZWY66m07IScIOqzoOyDneydhCDrp47snbQg7ZW07ISc
IOygleumrO2VtCDrkaHri4jri6Qg44WcLuOFnC48L3A+PHAgc3R5bGU9Im1hcmdpbjogMHB4IDBw
eCAxLjJlbSAhaW1wb3J0YW50OyIgZGF0YS1tY2Utc3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJl
bSAhaW1wb3J0YW50OyI+IyBWaXN1YWwgRWRpdG9yIEV4dGVuc2lvbiDshKTsuZgg7ZWY6riwPC9w
PjxwIHN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiIGRhdGEtbWNlLXN0
eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiPjxhIGhyZWY9Imh0dHBzOi8v
d3d3Lm1lZGlhd2lraS5vcmcvd2lraS9FeHRlbnNpb246VmlzdWFsRWRpdG9yIiBkYXRhLW1jZS1o
cmVmPSJodHRwczovL3d3dy5tZWRpYXdpa2kub3JnL3dpa2kvRXh0ZW5zaW9uOlZpc3VhbEVkaXRv
ciI+aHR0cHM6Ly93d3cubWVkaWF3aWtpLm9yZy93aWtpL0V4dGVuc2lvbjpWaXN1YWxFZGl0b3I8
L2E+PC9wPjxwIHN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiIGRhdGEt
bWNlLXN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsiPuyasOyEoCDsnbQg
7IKs7J207Yq47JeQIOuwqeusuO2VtOyEnCDslYTrrLTrn7Ag7IOd6rCB7JeG7J20IOyCrOydtO2K
uOyXkOyEnCBnaXTsnLzroZwg7ISk7LmYIO2VmOudvOuKlCDrjIDroZwg7ISk7LmY7ZWY6rOgIOud
hOybjCDrtKTrjZTri4guLiDtlZjsloAg7ZmU66m066eMIOuCmOyYpOqzoCDslYTrrLTqsoPrj4Qg
7JeG7J20IOuoue2GteydtCDrkJjrjZTqtbDsmpQgLV8tOzs8L3A+PHAgc3R5bGU9Im1hcmdpbjog
MHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyIgZGF0YS1tY2Utc3R5bGU9Im1hcmdpbjogMHB4IDBw
eCAxLjJlbSAhaW1wb3J0YW50OyI+662Q6rCAIOyemCDrqrsg65Cc7KeA64+EIOuqqOultOqzoCDt
lZjsloAg66i57Ya17J2065287IScIOutkOqwgCDsnpgg66q7IOuQnOyngOuPhCDrqqjrpbTripQg
7LGEIO2VmOujqOulvCDrgqDroKQg67KE66C47Iq164uI64ukLiDtoL3tuKg8L3A+PHAgc3R5bGU9
Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyIgZGF0YS1tY2Utc3R5bGU9Im1hcmdp
bjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyI+6rKw6rWtIOyVjOyVhCDrgrjqsoPsnbQg67KE
7KCE7JeQIOunnuuKlCBleHRlbnNpb27snYQg7ISk7LmY7ZW07JW8IO2VmOuKlCDqsoPsnbTsmIDs
irXri4jri6QuLjwvcD48cCBzdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFpbXBvcnRhbnQ7
IiBkYXRhLW1jZS1zdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFpbXBvcnRhbnQ7Ij7slYTr
npggdXJs7JeQIOqwgOyEnCDrgrTqsIAg7ISk7LmY7ZWcIG1lZGlhd2lraeyZgCDrp57ripQg67KE
7KCE7J2EIOywvuyVhOyEnCDrsJvslYTshJwg7ISk7LmY7ZW07JW8IO2VqeuLiOuLpC48L3A+PHAg
c3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyIgZGF0YS1tY2Utc3R5bGU9
Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyI+PGEgaHJlZj0iaHR0cHM6Ly93d3cu
bWVkaWF3aWtpLm9yZy93aWtpL1NwZWNpYWw6RXh0ZW5zaW9uRGlzdHJpYnV0b3IvVmlzdWFsRWRp
dG9yIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL3d3dy5tZWRpYXdpa2kub3JnL3dpa2kvU3BlY2lh
bDpFeHRlbnNpb25EaXN0cmlidXRvci9WaXN1YWxFZGl0b3IiPmh0dHBzOi8vd3d3Lm1lZGlhd2lr
aS5vcmcvd2lraS9TcGVjaWFsOkV4dGVuc2lvbkRpc3RyaWJ1dG9yL1Zpc3VhbEVkaXRvcjwvYT48
L3A+PHAgc3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyIgZGF0YS1tY2Ut
c3R5bGU9Im1hcmdpbjogMHB4IDBweCAxLjJlbSAhaW1wb3J0YW50OyI+PGJyPjwvcD48ZmlndXJl
IGRhdGEta2UtdHlwZT0iaW1hZ2UiIGRhdGEta2Utc3R5bGU9ImFsaWduQ2VudGVyIj48aW1nIHNy
Yz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9idDVuUVAvYnRxQTdwSjZxb28vc1lhcnJpS2lw
Wk4yUFBGWVBIRmtuMC9pbWcucG5nIiBkYXRhLWltYWdlLXNyYz0iaHR0cHM6Ly9rLmtha2FvY2Ru
Lm5ldC9kbi9idDVuUVAvYnRxQTdwSjZxb28vc1lhcnJpS2lwWk4yUFBGWVBIRmtuMC9pbWcucG5n
IiBkYXRhLW9yaWdpbi13aWR0aD0iMTUwOSIgZGF0YS1vcmlnaW4taGVpZ2h0PSI0OTgiIGRhdGEt
bWNlLXNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9idDVuUVAvYnRxQTdwSjZxb28vc1lh
cnJpS2lwWk4yUFBGWVBIRmtuMC9pbWcucG5nIj48ZmlnY2FwdGlvbiBzdHlsZT0iZGlzcGxheTog
bm9uZTsiPjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cCBzdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEu
MmVtICFpbXBvcnRhbnQ7IiBkYXRhLW1jZS1zdHlsZT0ibWFyZ2luOiAwcHggMHB4IDEuMmVtICFp
bXBvcnRhbnQ7Ij48YnI+PC9wPjxwIHN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9y
dGFudDsiIGRhdGEtbWNlLXN0eWxlPSJtYXJnaW46IDBweCAwcHggMS4yZW0gIWltcG9ydGFudDsi
PmBgYGJhc2g8YnI+d2dldDxzcGFuPiA8YSBocmVmPSJodHRwczovL2V4dGRpc3Qud21mbGFicy5v
cmcvZGlzdC9leHRlbnNpb25zL1Zpc3VhbEVkaXRvci1SRUwxXzMzLWY2NGU0MTEudGFyLmd6IiB0
YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0cHM6Ly9leHRk
aXN0LndtZmxhYnMub3JnL2Rpc3QvZXh0ZW5zaW9ucy9WaXN1YWxFZGl0b3ItUkVMMV8zMy1mNjRl
NDExLnRhci5neiI+aHR0cHM6Ly9leHRkaXN0LndtZmxhYnMub3JnL2Rpc3QvZXh0ZW5zaW9ucy9W
aXN1YWxFZGl0b3ItUkVMMV8zMy1mNjRlNDExLnRhci5nejwvYT48YnI+PC9zcGFuPjxhIGhyZWY9
Imh0dHBzOi8vZXh0ZGlzdC53bWZsYWJzLm9yZy9kaXN0L2V4dGVuc2lvbnMvVmlzdWFsRWRpdG9y
LVJFTDFfMzMtZjY0ZTQxMS50YXIuZ3oiIGRhdGEtbWNlLWhyZWY9Imh0dHBzOi8vZXh0ZGlzdC53
bWZsYWJzLm9yZy9kaXN0L2V4dGVuc2lvbnMvVmlzdWFsRWRpdG9yLVJFTDFfMzMtZjY0ZTQxMS50
YXIuZ3oiPjwvYT50YXIgLXh6ZiBWaXN1YWxFZGl0b3ItUkVMMV8zMy1mNjRlNDExLnRhci5neiAt
QyAvdmFyL3d3dy9tZWRpYXdpa2kvZXh0ZW5zaW9uczxicj5gYGA8L3A+PHA+YExvY2FsU2V0dGlu
Z3MucGhwYCDtjIzsnbzsl5Ag7JWE656YIOuCtOyaqeydhCDstpTqsIDtlbQg7KSN64uI64ukLjwv
cD48cD5gYGBwaHA8YnI+d2ZMb2FkRXh0ZW5zaW9uKCZuYnNwOydWaXN1YWxFZGl0b3InJm5ic3A7
KTsgPGJyPiR3Z0RlZmF1bHRVc2VyT3B0aW9uc1sndmlzdWFsZWRpdG9yLWVuYWJsZSddJm5ic3A7
PSZuYnNwOzE7IDxicj4kd2dIaWRkZW5QcmVmc1tdJm5ic3A7PSZuYnNwOyd2aXN1YWxlZGl0b3It
ZW5hYmxlJzsgPGJyPjxicj4kd2dWaXJ0dWFsUmVzdENvbmZpZ1snbW9kdWxlcyddWydwYXJzb2lk
J10mbmJzcDs9Jm5ic3A7YXJyYXkoIDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsndXJsJyZu
YnNwOz0mZ3Q7Jm5ic3A7JzxhIGhyZWY9Imh0dHA6Ly9teWRvbWFpbi5jb206ODAwMCcsIiB0YXJn
ZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0cDovL215ZG9tYWlu
LmNvbTo4MDAwJywiPmh0dHA6Ly9teWRvbWFpbi5jb206ODAwMCcsPC9hPiA8YnI+KTs8YnI+YGBg
PC9wPjxwPiMgUGFyc29pZCDshKTsuZjtlZjquLA8L3A+PHA+VmlzdWFsIEVkaXRvcuuKlCDtmZXs
nqXrp4wg7ISk7LmY7ZW07IScIOuPmeyeke2VmOyngCDslYrqs6AgcGFyc29pZOulvOuPhCDqsJns
nbQg7ISk7LmY66W8IO2VtCDspJjslbwg7ZWp64uI64ukLjxicj7rqLzsoIAgcGFyb2lk66W8IOyC
rOyaqe2VmOugpOuptCBub2Rl6rCAIOyEpOy5mOqwgCDrkJjslrQg7J6I7Ja07JW8IO2VqeuLiOuL
pC4gW+yEpOy5mF0oPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvLmtyL3NlYXJjaD9zb3Vy
Y2U9aHAmYW1wO2VpPTZxWVpYczdfRE52ai1BYXd4eU0mYW1wO3E9bm9kZWpzK+yEpOy5mCIgdGFy
Z2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9Imh0dHBzOi8vd3d3Lmdv
b2dsZS5jby5rci9zZWFyY2g/c291cmNlPWhwJmFtcDtlaT02cVlaWHM3X0ROdmotQWF3eHlNJmFt
cDtxPW5vZGVqcyvshKTsuZgiPmh0dHBzOi8vd3d3Lmdvb2dsZS5jby5rci9zZWFyY2g/cT1ub2Rl
anMr7ISk7LmYPC9hPinqsIAg65CY7Ja0IOyeiOyngCDslYrri6TrqbQg7ISk7LmY7ZWY7Iuc66m0
IOuQqeuLiOuLpC48L3A+PHA+YGBgYmFzaDxicj4kIG1rZGlyIC9vcHQvcGFyc29pZDxicj4kIGNk
IC9vcHQvcGFyc29pZDxicj4kIGdpdCBjbG9uZSA8c3BhbiBkYXRhLXBhcnNvaWQ9InsmcXVvdDtk
c3ImcXVvdDs6Wzg0MTgsODQ5Miw4LDldfSI+PGEgaHJlZj0iaHR0cHM6Ly9nZXJyaXQud2lraW1l
ZGlhLm9yZy9yL21lZGlhd2lraS9zZXJ2aWNlcy9wYXJzb2lkIiBkYXRhLW1jZS1ocmVmPSJodHRw
czovL2dlcnJpdC53aWtpbWVkaWEub3JnL3IvbWVkaWF3aWtpL3NlcnZpY2VzL3BhcnNvaWQiPmh0
dHBzOi8vZ2Vycml0Lndpa2ltZWRpYS5vcmcvci9tZWRpYXdpa2kvc2VydmljZXMvcGFyc29pZDwv
YT48L3NwYW4+PGJyPiQgY2QgcGFyc29pZDxicj4kIG5wbSBpbnN0YWxsPGJyPiQgY3AgY29uZmln
LmV4YW1wbGUueWFtbCBjb25maWcueWFtbDxicj4kIGNwIGxvY2Fsc2V0dGluZ3MuZXhhbXBsZS5q
cyBsb2NhbHNldHRpbmdzLmpzPGJyPmBgYDwvcD48cD7rqLzsoIAgYXBpLnBocOydmCDso7zshozr
pbwg7ZmV7J24IO2VqeuLiOuLpC4g7ISk7LmY65CcIOuvuOuUlOyWtOychO2CpOydmCDso7zshozs
l5DshJwgYXBpLnBocO2MjOydvOydhCDrnYTsm4zshJwg7JWE656Y7JmAIOqwmeydgCDtmZTrqbTs
nbQg64KY7Jik66m0IOuQqeuLiOuLpC48L3A+PGZpZ3VyZSBkYXRhLWtlLXR5cGU9ImltYWdlIiBk
YXRhLWtlLXN0eWxlPSJhbGlnbkNlbnRlciIgZGF0YS12aWRlby13aWR0aD0iNTU0Ij48aW1nIHNy
Yz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi9LODJtYS9idHFBMlB4ZVpubi9KdFR6bE5xRnRQ
bGgzSk1ZTGFNbENrL2ltZy5wbmciIGRhdGEtaW1hZ2Utc3JjPSJodHRwczovL2sua2FrYW9jZG4u
bmV0L2RuL0s4Mm1hL2J0cUEyUHhlWm5uL0p0VHpsTnFGdFBsaDNKTVlMYU1sQ2svaW1nLnBuZyIg
ZGF0YS1maWxlbmFtZT0i7J2066+47KeAIDAwMS5wbmciIGRhdGEtb3JpZ2luLXdpZHRoPSI5NjYi
IGRhdGEtb3JpZ2luLWhlaWdodD0iMzU3IiB3aWR0aD0iNTU0IiBoZWlnaHQ9IjIwNSI+PGZpZ2Nh
cHRpb24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+YGNv
bmZpZy55YW1sYOyXkOyEnCBtd0FwaXMg67aA67aE7J2EIOyVhOuemOyZgCDqsJnsnbQg7IiY7KCV
7ZW0IOykjeuLiOuLpC48L3A+PHA+YGBgeWFtbDxicj5td0FwaXM6IDxicj4tJm5ic3A7IyZuYnNw
O1RoaXMmbmJzcDtpcyZuYnNwO3RoZSZuYnNwO29ubHkmbmJzcDtyZXF1aXJlZCZuYnNwO3BhcmFt
ZXRlciwgPGJyPiZuYnNwOyZuYnNwOyMmbmJzcDt0aGUmbmJzcDtVUkwmbmJzcDtvZiZuYnNwO3lv
dSZuYnNwO01lZGlhV2lraSZuYnNwO0FQSSZuYnNwO2VuZHBvaW50LiA8YnI+Jm5ic3A7Jm5ic3A7
dXJpOiZuYnNwOyc8YSBocmVmPSJodHRwOi8vbXlkb21haW4uY29tL2FwaS5waHAnIiB0YXJnZXQ9
Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0cDovL215ZG9tYWluLmNv
bS9hcGkucGhwJyI+aHR0cDovL215ZG9tYWluLmNvbS9hcGkucGhwJzwvYT48L3A+PHA+YGBgPC9w
PjxwPuq3uOumrOqzoCwgYGxvY2Fsc2V0dGluZ3MuanNg7YyM7J2864+EIOyVhOuemOyZgCDqsJns
nbQg7Y647KeR7ZW0IOykjeuLiOuLpC4gZG9tYWlu6rO8IHByZWZpeOudvOuKlOqyjCDsnojripQg
7Ji17IWY7J2065287IScIOyDneuete2VtOuPhCDrkKnri4jri6QuPC9wPjxwPmBgYGphdmFzY3Jp
cHQ8YnI+J3VzZSZuYnNwO3N0cmljdCc7IDxicj48YnI+PGEgaHJlZj0iZXhwb3J0cy5zZXR1cCIg
dGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImV4cG9ydHMuc2V0
dXAiPmV4cG9ydHMuc2V0dXA8L2E+Jm5ic3A7PSZuYnNwO2Z1bmN0aW9uKHBhcnNvaWRDb25maWcp
Jm5ic3A7eyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cGFyc29pZENvbmZpZy5zZXRNd0Fw
aSh7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt1
cmk6Jm5ic3A7JzxhIGhyZWY9Imh0dHA6Ly9teWRvbWFpbi5jb20vYXBpLnBocCcsIiB0YXJnZXQ9
Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0iaHR0cDovL215ZG9tYWluLmNv
bS9hcGkucGhwJywiPmh0dHA6Ly9teWRvbWFpbi5jb20vYXBpLnBocCcsPC9hPiA8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7fSk7IDxicj59Ozxicj5gYGA8L3A+PHA+7JyE7JeQ6rmM7KeAIOyE
pOygleydtCDsmYTro4wg65CY7JeI7Jy866m0LCDsi6TtlontlbQg67SF64uI64ukLjwvcD48cD5g
YGBiYXNoPGJyPiQgbnBtIHN0YXJ0PGJyPmBgYDwvcD48cD7tmLnsi5wg67Cp7ZmU67K97J2EIOyC
rOyaqeykkeydtOudvOuptCDrsKntmZTrsr3snYQg7ZKA7Ja07KO864qUIOqyg+uPhCDsnorsp4Ag
66eQ7JWEIOyjvOyEuOyalC48L3A+PHA+7J207KCcIOyEuO2MheydtCDri6Qg65CY7JeI7Jy864uI
LCDrr7jrlJTslrTsnITtgqTsl5DshJwg7J6YIOuPmeyeke2VmOuKlOyngCDthYzsiqTtirgg7ZW0
IOuztOyLnOuptCDrkKnri4jri6QuPC9wPjxwPjxiciBkYXRhLW1jZS1ib2d1cz0iMSI+PC9wPjxw
PiMgcG0y66GcIHBhcnNvaWTrpbwg7ISc67mE7Iqk7ZiV7YOc66GcIOyEpOygle2VtCDso7zquLAu
LjwvcD48cD7rqLzsoIAgcG0y66W8IOyEpOy5mO2VtCDspI3ri4jri6QuPC9wPjxwPmBgYGJhc2g8
YnI+JCA8c3Bhbj5ucG0gaW5zdGFsbCAtZyBwbTI8YnI+PC9zcGFuPjxzcGFuIHN0eWxlPSJsZXR0
ZXItc3BhY2luZzogMHB4OyI+YGBgPGJyPjwvc3Bhbj48c3BhbiBzdHlsZT0ibGV0dGVyLXNwYWNp
bmc6IDBweDsiPjwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImxldHRlci1zcGFjaW5nOiAwcHg7
Ij7qt7jrpqzqs6AsIHBhcnNvaWTqsIAg7ISk7LmY65CcIO2PtOuNlOuhnCDsnbTrj5ntlbTshJwg
7Iuk7ZaJ7ZW0IOykjeuLiOuLpC48L3NwYW4+PC9wPjxwPjxzcGFuIHN0eWxlPSJsZXR0ZXItc3Bh
Y2luZzogMHB4OyI+YGBgYmFzaDxicj4kIGNkIC9vcHQvcGFyc29pZDxicj4kIHBtMiBzdGFydCAt
LW5hbWUgcGFyc29pZCBzdGFydCAtLSBzdGFydDxicj5gYGA8L3NwYW4+PC9wPjxwPjxzcGFuIHN0
eWxlPSJsZXR0ZXItc3BhY2luZzogMHB4OyI+64uk7J2M67aA7YSwIHBtMuyXkCDrsKnquIgg65Ox
66Gd7ZWcIOyVseydhCDsoIDsnqXtlbQg7KO86rOgIOyEnOu5hOyKpOuhnCDrk7HroZ3tlbQg7KSN
64uI64ukLjwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImxldHRlci1zcGFjaW5nOiAwcHg7Ij5g
YGBiYXNoPGJyPiQgcG0yIHNhdmU8YnI+JCBwbTIgc3RhcnR1cDxicj5gYGA8L3NwYW4+PHNwYW4g
c3R5bGU9ImxldHRlci1zcGFjaW5nOiAwcHg7Ij48L3NwYW4+PC9wPjxwPjxzcGFuIHN0eWxlPSJs
ZXR0ZXItc3BhY2luZzogMHB4OyI+c3RhcnR1cOydhCDtlojsnYTqsr3smrAgcm9vdOq2jO2VnOyd
tCDslYTri5Ag6rK97JqwLCDvu7/slYTrnpjsmYAg6rCZ7J2AIOuplOyLnOyngOqwgCDrgpjsmLXr
i4jri6QuPC9zcGFuPjwvcD48cD48c3BhbiBzdHlsZT0ibGV0dGVyLXNwYWNpbmc6IDBweDsiPmBg
YGJhc2g8YnI+W1BNMl0mbmJzcDtJbml0Jm5ic3A7U3lzdGVtJm5ic3A7Zm91bmQ6Jm5ic3A7c3lz
dGVtZCA8YnI+W1BNMl0mbmJzcDtUbyZuYnNwO3NldHVwJm5ic3A7dGhlJm5ic3A7U3RhcnR1cCZu
YnNwO1NjcmlwdCwmbmJzcDtjb3B5L3Bhc3RlJm5ic3A7dGhlJm5ic3A7Zm9sbG93aW5nJm5ic3A7
Y29tbWFuZDogPGJyPnN1ZG8mbmJzcDtlbnYmbmJzcDtQQVRIPSRQQVRIOi91c3IvYmluJm5ic3A7
L3Vzci9saWIvbm9kZV9tb2R1bGVzL3BtMi9iaW4vcG0yJm5ic3A7c3RhcnR1cCZuYnNwO3N5c3Rl
bWQmbmJzcDstdSZuYnNwO1VTRVJOQU1FJm5ic3A7LS1ocCZuYnNwOy9ob21lL1VTRVJOQU1FPGJy
PmBgYDwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImxldHRlci1zcGFjaW5nOiAwcHg7Ij7rp4js
p4Drp4kgc3Vkb+qwgCDsnojripQg64K07Jqp7J2EIOuzteyCrO2VtOyEnCDrtpnsl6zrhKPquLAg
7ZW07IScIOyLpO2Wie2VtCDso7zrqbQg64uk7J2M67aA7YSwIOy7tO2TqO2EsOulvCDqu5Dri6Tt
gqTrqbQg7JWM7JWE7IScIHBhcnNvaWTrpbwg7Iuk7ZaJ7ZW0IOyjvOqyjCDrkKnri4jri6QuPC9z
cGFuPjwvcD48cD48YnIgZGF0YS1tY2UtYm9ndXM9IjEiPjwvcD48cD48YnIgZGF0YS1tY2UtYm9n
dXM9IjEiPjwvcD48cD48YnIgZGF0YS1tY2UtYm9ndXM9IjEiPjwvcD48cD48YnIgZGF0YS1tY2Ut
Ym9ndXM9IjEiPjwvcD4=&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;</description>
      <category>컴퓨터/인터넷</category>
      <category>extension</category>
      <category>MediaWiki</category>
      <category>node</category>
      <category>parsoid</category>
      <category>pm2</category>
      <category>visual editor</category>
      <category>Wiki</category>
      <category>미디어위키</category>
      <category>설치</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/532</guid>
      <comments>https://gyuha.tistory.com/532#entry532comment</comments>
      <pubDate>Sat, 11 Jan 2020 20:05:24 +0900</pubDate>
    </item>
    <item>
      <title>윈도우용 패키지 매니저 Chocolatey 사용법</title>
      <link>https://gyuha.tistory.com/531</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/531?type=post&amp;amp;returnURL=https%3A%2F%2Fgyuha.tistory.com%2F531&quot;&gt;&lt;img src=&quot;https://k.kakaocdn.net/dn/8KvuO/btqA3fa2yEq/6Q0slWPwGiJnSmqtGWkkdk/img.png&quot; data-filename=&quot;99FB114B5C91F80605.png&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;371&quot; data-image-src=&quot;https://k.kakaocdn.net/dn/8KvuO/btqA3fa2yEq/6Q0slWPwGiJnSmqtGWkkdk/img.png&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;Chocolatey는 윈도우용 패키지 매니저로, 설치하려는 윈도우용 소프트웨어를 일일이 웹사이트에서 찾아서 설치할 필요 없이 간단하게 커맨드 만으로 윈도우용 소프트웨어를 설치 할 수 있게 해 줍니다.&lt;/p&gt;
&lt;h1 id=&quot;chocolatey-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;Chocolatey 설치&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;chocolate를 설치 하려면 관리자 권한 cmd나 PowerShell을 실행해서 설치를 해 줘야 합니다.&lt;/p&gt;
&lt;h1 id=&quot;cmd-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;cmd 사용시&lt;/h1&gt;
&lt;pre class=&quot;mel&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;@powershell -NoProfile -ExecutionPolicy Bypass -Command &quot;iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))))&quot; &amp;amp;&amp;amp; SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;powershell-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;powershell 사용시&lt;/h1&gt;
&lt;pre class=&quot;gams&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')).DownloadString('https://chocolatey.org/install.ps1')))
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;패키지 찾기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;아래 웹페이지에 접속해서 검색하시면 됩니다.&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;a href=&quot;https://chocolatey.org/packages&quot;&gt;https://chocolatey.org/packages&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;또는 cmd에서 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;search&lt;/code&gt; 나 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;list&lt;/code&gt; 명령어로 검색을 할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco search googlechrome
Chocolatey v0.10.15
GoogleChrome 79.0.3945.117 [Approved] Downloads cached for licensed users
vivaldi.install 2.10.1745.23
... 생략
10 packages found.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;예로 구글크롬 웹브라우저를 검색해 보면 10개의 패키지가 나옵니다. 그냥 chrome을 검색하면 백여개가 넘는 패키지가 목록이 나오게 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;여기서 정확하게 필요한 패키지만을 보기 위해서는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-e&lt;/code&gt; 또는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;--exact&lt;/code&gt; 옵션을 넣어 줘야 합니다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco search googlechrome -e
Chocolatey v0.10.15
GoogleChrome 79.0.3945.117 [Approved] Downloads cached for licensed users
1 packages found.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고, 간혹 특정 버전의 패키지를 설치 해야 할 경우가 있습니다. 그럴 경우 버전을 확인하기 위해서는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-a&lt;/code&gt;, &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;--all&lt;/code&gt; 옵션을 넣어 주면 버전 정보를 확인 할 수 있습니다.&lt;/p&gt;
&lt;h1 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;패키지 상세 정보 보기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;info&lt;/code&gt; 명령어을 사용하거나 search에서 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-v&lt;/code&gt;옵션을 추가해 주면 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그런데 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;info&lt;/code&gt; 명령어 search에서 -e 옵션이 붙은 것처럼 동작을 하게 됩니다.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco info googlechrome
Chocolatey v0.10.15
GoogleChrome 79.0.3945.117 [Approved] Downloads cached for licensed users
Title: Google Chrome | Published: 2020-01-07
Package approved as a trusted package on 1 08 2020 01:22:22.
... 생략
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;또는&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco search googlechrome -ev
Chocolatey v0.10.15
GoogleChrome 79.0.3945.117 [Approved] Downloads cached for licensed users
Title: Google Chrome | Published: 2020-01-07
Package approved as a trusted package on 1 08 2020 01:22:22.
... 생략
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;여기서 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-ev&lt;/code&gt; 로 옵션을 줬는데, 이건 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-e -v&lt;/code&gt;를 하나로 요약한 형식입니다.&lt;/p&gt;
&lt;h1 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;패키지 설치 하기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;install&lt;/code&gt; 명령을 이용해서 설치하고 싶은 패키지를 아래와 같이 설치 합니다.&lt;/p&gt;
&lt;pre class=&quot;vhdl&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco install bandizip
Chocolatey v0.10.15
Installing the following packages:
bandizip
... 생략
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[A]ll - yes to all/[N]o/[P]rint):
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;명령어 프롬프트가 나오면 y를 눌러주면 간단하게 설치가 완료 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;설치 시 자동으로 y를 누르고 싶다면 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-y&lt;/code&gt; 옵션을 넣어 주면 됩니다. 그리고 강제로 설치하고 싶다면 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-f&lt;/code&gt;를 넣어 주면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco install -yf bandizip
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;혹시 특정 버전을 설치하고 싶다면 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;--version&lt;/code&gt; 옵션을 이용해서 해당 버전을 설치 할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;choco install bandizip --version=6.24
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;패키지 삭제 하기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;chocolatey는 설치된 패키지도 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;uninstall&lt;/code&gt; 명령어를 이용해서 편하게 삭제가 가능 합니다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco uninstall bandizip
Chocolatey v0.10.15
Uninstalling the following packages:
bandizip
... 생략
Do you want to run the script?([Y]es/[A]ll - yes to all/[N]o/[P]rint):
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;명령어 프롬프트가 나오면 y를 눌러주면 삭제가 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;y&lt;/code&gt;키를 누르기 귀찮다면 설치 할 때와 같이 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-yf&lt;/code&gt;를 누르시면 바로 삭제가 가능 합니다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco uninstall -yf bandizip
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;choco-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;choco로 설치된 패키지 목록 확인하기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;search&lt;/code&gt; 또는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;list&lt;/code&gt;명령로 확인 가능 합니다. 뒤에 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;-l&lt;/code&gt; 옵션을 주면 로컬에 설치된 패키지의 목록을 출력 해 줍니다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco search -l
bandizip 6.25
... 생략
zeal 0.6.1
zeal.install 0.6.1
62 packages installed.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;또는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;clist&lt;/code&gt; 명령어를 사용해서도 조회가 가능 합니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; clist -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;clist&lt;/code&gt; 명령은 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;choco search&lt;/code&gt;를 와 같은 역할을 합니다.&lt;/p&gt;
&lt;h1 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;패키지 업데이트 하기&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;upgrade&lt;/code&gt; 명령어를 통해서 패키지를 최신 버전으로 업데이트가 가능 합니다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco upgrade bandizip
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;혹시, choco를 통해서 설치한 프로그램을 모두 업데이트 하고 싶다면 패키지 이름 대신 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;all&lt;/code&gt;을 넣어 주면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;ada&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;&amp;gt; choco upgrade all
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;chocolatey-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, 'Malgun Gothic', Consolas, Inconsolata, Courier, monospace; font-size: 2em; border-bottom: 1px solid #dddddd;&quot;&gt;chocolatey 설치부터 패키지 설치까지 한방 스크립트&lt;/h1&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;choco_install.bat&lt;/code&gt;라는 파일을 만들고 아래의 내용을 복사해서 넣어 주세요.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고, 뒷 부분에 설치하고 싶은 패키지를 넣어 주시면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;julia&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code&gt;@echo off
CLS
ECHO **************************************
ECHO * Start Chocolatey Batch
ECHO **************************************

:::::::::::::::::::::::::::::::::::::::::
:: 체크 및 관리자 권한 가져 오기
NET FILE 1&amp;gt;NUL 2&amp;gt;NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
:::::::::::::::::::::::::::::::::::::::::
:: UAC를 사용해서 관리자 권한으로 전환
if '%1'=='ELEV' (shift &amp;amp; goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO * Use UAC, switch to admin
ECHO **************************************

setlocal DisableDelayedExpansion
set &quot;batchPath=%~0&quot;
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^(&quot;Shell.Application&quot;^) &amp;gt; &quot;%temp%\OEgetPrivileges.vbs&quot;
ECHO UAC.ShellExecute &quot;!batchPath!&quot;, &quot;ELEV&quot;, &quot;&quot;, &quot;runas&quot;, 1 &amp;gt;&amp;gt; &quot;%temp%\OEgetPrivileges.vbs&quot;
&quot;%temp%\OEgetPrivileges.vbs&quot;
exit /B

:gotPrivileges
:::::::::::::::::::::::::::::::::::::::::
:: 시작 하기
setlocal &amp;amp; pushd .

WHERE choco 1&amp;gt;NUL 2&amp;gt;NUL
if '%errorlevel%' == '0' ( goto chocoInstalled ) else ( goto chocoMissing )

:chocoMissing
::::::::::::::::::::::::::::
:: Chocolatey가 없을 경우 설치
::::::::::::::::::::::::::::
ECHO.
choice /M &quot;Chocolatey not found. Install now?&quot;
IF '%errorlevel%' == '2' exit /B
ECHO.
ECHO **************************************
ECHO * Chocolatey install
ECHO **************************************

@powershell -NoProfile -ExecutionPolicy Bypass -Command &quot;iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))))&quot; &amp;amp;&amp;amp; SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

:chocoInstalled
ECHO.
ECHO **************************************
ECHO * Packages install
ECHO **************************************

@echo on

:: 항상 자동으로 yes를 선택하도록 설정
choco feature enable --name=allowGlobalConfirmation

:: 먼저 기존 패키지 업데이트
choco upgrade all -y

:: 사용할 어플리케이션 설치
set choco_install=choco install -fy
%choco_install% bandizip
%choco_install% firefox
%choco_install% googlechrome
%choco_install% vcredist140
%choco_install% vcredist2012
%choco_install% directx
%choco_install% dotnetfx
%choco_install% javaruntime
%choco_install% everything
%choco_install% wox
%choco_install% qbittorrent
%choco_install% f.lux
%choco_install% typora
%choco_install% freefilesync
%choco_install% calibre
%choco_install% notion
%choco_install% vlc
%choco_install% krita
%choco_install% paint.net
%choco_install% jbs
%choco_install% ditto
%choco_install% ccleaner.portable
%choco_install% git.install --params &quot;/GitAndUnixToolsOnPath /NoShellIntegration /NoGuiHereIntegration /WindowsTerminal&quot;

:: 항상 자동으로 yes를 선택하는 옵션 끄기
choco feature disable --name=allowGlobalConfirmation

:: 업데이트 된 설정 다시 읽기
RefreshEnv.cmd

pause
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; display: inline;&quot;&gt;choco_install.bat&lt;/code&gt; 파일을 실행했을때 관리자 권한이 아니면 관리자 권한을 부여해서 실행하게 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;컴퓨터 설치를 자주 하시게 되는 분들은 위와 같이 파일을 하나 설정해 둔다면 유용하게 사용 할 수 있을 것이라고 생각 됩니다.&lt;/p&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PGZpZ3VyZSBkYXRhLWtlLXR5cGU9ImltYWdlIiBkYXRhLWtlLXN0eWxlPSJhbGlnbkNlbnRlciIg
ZGF0YS1tY2Utc2VsZWN0ZWQ9ImtlIj48aW1nIHNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9k
bi84S3Z1Ty9idHFBM2ZhMnlFcS82UTBzbFdQd0dpSm5TbXF0R1dra2RrL2ltZy5wbmciIGRhdGEt
ZmlsZW5hbWU9Ijk5RkIxMTRCNUM5MUY4MDYwNS5wbmciIGRhdGEtb3JpZ2luLXdpZHRoPSI4NjAi
IGRhdGEtb3JpZ2luLWhlaWdodD0iMzcxIiBkYXRhLW1jZS1zcmM9Imh0dHBzOi8vay5rYWthb2Nk
bi5uZXQvZG4vOEt2dU8vYnRxQTNmYTJ5RXEvNlEwc2xXUHdHaUpuU21xdEdXa2tkay9pbWcucG5n
IiBkYXRhLWltYWdlLXNyYz0iaHR0cHM6Ly9rLmtha2FvY2RuLm5ldC9kbi84S3Z1Ty9idHFBM2Zh
MnlFcS82UTBzbFdQd0dpSm5TbXF0R1dra2RrL2ltZy5wbmciPjxmaWdjYXB0aW9uIHN0eWxlPSJk
aXNwbGF5OiBub25lOyI+PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkNob2NvbGF0ZXnripQg7JyI
64+E7Jqw7JqpIO2MqO2CpOyngCDrp6Tri4jsoIDroZwsIOyEpOy5mO2VmOugpOuKlCDsnIjrj4Ts
mrDsmqkg7IaM7ZSE7Yq47Juo7Ja066W8IOydvOydvOydtCDsm7nsgqzsnbTtirjsl5DshJwg7LC+
7JWE7IScIOyEpOy5mO2VoCDtlYTsmpQg7JeG7J20IOqwhOuLqO2VmOqyjCDsu6Trp6jrk5wg66eM
7Jy866GcIOyciOuPhOyasOyaqSDshoztlITtirjsm6jslrTrpbwg7ISk7LmYIO2VoCDsiJgg7J6I
6rKMIO2VtCDspI3ri4jri6QuPC9wPjxoMT4jIENob2NvbGF0ZXkg7ISk7LmYPC9oMT48cD5jaG9j
b2xhdGXrpbwg7ISk7LmYIO2VmOugpOuptCDqtIDrpqzsnpAg6raM7ZWcIGNtZOuCmCBQb3dlclNo
ZWxs7J2EIOyLpO2Wie2VtOyEnCDshKTsuZjrpbwg7ZW0IOykmOyVvCDtlanri4jri6QuPC9wPjxo
Mj4jIGNtZCDsgqzsmqnsi5w8L2gyPjxwPmBgYGJhdGNoPGJyPkBwb3dlcnNoZWxsIC1Ob1Byb2Zp
bGUgLUV4ZWN1dGlvblBvbGljeSBCeXBhc3MgLUNvbW1hbmQgImlleCAoKG5ldy1vYmplY3QgbmV0
LndlYmNsaWVudCkuRG93bmxvYWRTdHJpbmcoJzxhIGhyZWY9Imh0dHBzOi8vY2hvY29sYXRleS5v
cmcvaW5zdGFsbC5wczEnIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL2Nob2NvbGF0ZXkub3JnL2lu
c3RhbGwucHMxJyI+aHR0cHM6Ly9jaG9jb2xhdGV5Lm9yZy9pbnN0YWxsLnBzMScpKTwvYT4pKSIg
JmFtcDsmYW1wOyBTRVQgUEFUSD0lUEFUSCU7JUFMTFVTRVJTUFJPRklMRSVcY2hvY29sYXRleVxi
aW48YnI+YGBgPC9wPjxoMj4jIHBvd2Vyc2hlbGwg7IKs7Jqp7IucPC9oMj48cD5gYGBiYXRjaDxi
cj5TZXQtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtU2NvcGUgUHJvY2VzcyAtRm9yY2U7IGlleCAo
KE5ldy1PYmplY3QgPGEgaHJlZj0iU3lzdGVtLk5ldC5XZWJDbGllbnQiIGRhdGEtbWNlLWhyZWY9
IlN5c3RlbS5OZXQuV2ViQ2xpZW50Ij5TeXN0ZW0uTmV0LldlYkNsaWVudCkuRG93bmxvYWRTdHJp
bmcoJ2h0dHBzOi8vY2hvY29sYXRleS5vcmcvaW5zdGFsbC5wczEnKSk8L2E+LkRvd25sb2FkU3Ry
aW5nKCc8YSBocmVmPSJodHRwczovL2Nob2NvbGF0ZXkub3JnL2luc3RhbGwucHMxJyIgZGF0YS1t
Y2UtaHJlZj0iaHR0cHM6Ly9jaG9jb2xhdGV5Lm9yZy9pbnN0YWxsLnBzMSciPmh0dHBzOi8vY2hv
Y29sYXRleS5vcmcvaW5zdGFsbC5wczEnPC9hPikpKTxicj5gYGA8L3A+PGgxPiMg7Yyo7YKk7KeA
IOywvuq4sDwvaDE+PHA+7JWE656YIOybue2OmOydtOyngOyXkCDsoJHsho3tlbTshJwg6rKA7IOJ
7ZWY7Iuc66m0IOuQqeuLiOuLpC48L3A+PHA+Jmd0OyA8YSBocmVmPSJodHRwczovL2Nob2NvbGF0
ZXkub3JnL3BhY2thZ2VzIiBkYXRhLW1jZS1ocmVmPSJodHRwczovL2Nob2NvbGF0ZXkub3JnL3Bh
Y2thZ2VzIj5odHRwczovL2Nob2NvbGF0ZXkub3JnL3BhY2thZ2VzPC9hPjwvcD48cD7rmJDripQg
Y21k7JeQ7IScIGBzZWFyY2hgIOuCmCBgbGlzdGAg66qF66C57Ja066GcIOqygOyDieydhCDtlaAg
7IiYIOyeiOyKteuLiOuLpC48L3A+PHA+YGBgYmF0Y2g8YnI+Jmd0OyBjaG9jbyBzZWFyY2ggZ29v
Z2xlY2hyb21lPGJyPkNob2NvbGF0ZXkgdjAuMTAuMTU8YnI+R29vZ2xlQ2hyb21lIDc5LjAuMzk0
NS4xMTcgW0FwcHJvdmVkXSBEb3dubG9hZHMgY2FjaGVkIGZvciBsaWNlbnNlZCB1c2Vyczxicj52
aXZhbGRpLmluc3RhbGwgMi4xMC4xNzQ1LjIzPGJyPi4uLiDsg53rnrU8YnI+MTAgcGFja2FnZXMg
Zm91bmQuPGJyPmBgYDwvcD48cD7smIjroZwg6rWs6riA7YGs66GsIOybueu4jOudvOyasOyggOul
vCDqsoDsg4ntlbQg67O066m0IDEw6rCc7J2YIO2MqO2CpOyngOqwgCDrgpjsmLXri4jri6QuIOq3
uOuDpSBjaHJvbWXsnYQg6rKA7IOJ7ZWY66m0IOuwseyXrOqwnOqwgCDrhJjripQg7Yyo7YKk7KeA
6rCAIOuqqeuhneydtCDrgpjsmKTqsowg65Cp64uI64ukLjwvcD48cD7sl6zquLDshJwg7KCV7ZmV
7ZWY6rKMIO2VhOyalO2VnCDtjKjtgqTsp4Drp4zsnYQg67O06riwIOychO2VtOyEnOuKlCBgLWVg
IOuYkOuKlCBgLS1leGFjdGAg7Ji17IWY7J2EIOuEo+yWtCDspJjslbwg7ZWp64uI64ukLjwvcD48
cD5gYGBiYXRjaDxicj4mZ3Q7IGNob2NvIHNlYXJjaCBnb29nbGVjaHJvbWUgLWU8YnI+Q2hvY29s
YXRleSB2MC4xMC4xNTxicj5Hb29nbGVDaHJvbWUgNzkuMC4zOTQ1LjExNyBbQXBwcm92ZWRdIERv
d25sb2FkcyBjYWNoZWQgZm9yIGxpY2Vuc2VkIHVzZXJzPGJyPjEgcGFja2FnZXMgZm91bmQuPGJy
PmBgYDwvcD48cD7qt7jrpqzqs6AsIOqwhO2YuSDtirnsoJUg67KE7KCE7J2YIO2MqO2CpOyngOul
vCDshKTsuZgg7ZW07JW8IO2VoCDqsr3smrDqsIAg7J6I7Iq164uI64ukLiDqt7jrn7Qg6rK97Jqw
IOuyhOyghOydhCDtmZXsnbjtlZjquLAg7JyE7ZW07ISc64qUIGAtYWAsIGAtLWFsbGAg7Ji17IWY
7J2EIOuEo+yWtCDso7zrqbQg67KE7KCEIOygleuztOulvCDtmZXsnbgg7ZWgIOyImCDsnojsirXr
i4jri6QuPC9wPjxoMT4jIO2MqO2CpOyngCDsg4HshLgg7KCV67O0IOuztOq4sDwvaDE+PHA+YGlu
Zm9gIOuqheugueyWtOydhCDsgqzsmpTtlZjqsbDrgpggc2VhcmNo7JeQ7IScIGAtdmDsmLXshZjs
nYQg7LaU6rCA7ZW0IOyjvOuptCDrkKnri4jri6QuPC9wPjxwPuq3uOufsOuNsCBgaW5mb2Ag66qF
66C57Ja0IHNlYXJjaOyXkOyEnCAtZSDsmLXshZjsnbQg67aZ7J2AIOqyg+yymOufvCDrj5nsnpHs
nYQg7ZWY6rKMIOuQqeuLiOuLpC48L3A+PHA+YGBgYmF0Y2g8YnI+Jmd0OyBjaG9jbyBpbmZvIGdv
b2dsZWNocm9tZTxicj5DaG9jb2xhdGV5IHYwLjEwLjE1PGJyPkdvb2dsZUNocm9tZSA3OS4wLjM5
NDUuMTE3IFtBcHByb3ZlZF0gRG93bmxvYWRzIGNhY2hlZCBmb3IgbGljZW5zZWQgdXNlcnM8YnI+
VGl0bGU6IEdvb2dsZSBDaHJvbWUgfCBQdWJsaXNoZWQ6IDIwMjAtMDEtMDc8YnI+UGFja2FnZSBh
cHByb3ZlZCBhcyBhIHRydXN0ZWQgcGFja2FnZSBvbiAxIDA4IDIwMjAgMDE6MjI6MjIuPGJyPi4u
LiDsg53rnrU8YnI+YGBgPC9wPjxwPuuYkOuKlDwvcD48cD5gYGBiYXRjaDxicj4mZ3Q7IGNob2Nv
IHNlYXJjaCBnb29nbGVjaHJvbWUgLWV2PGJyPkNob2NvbGF0ZXkgdjAuMTAuMTU8YnI+R29vZ2xl
Q2hyb21lIDc5LjAuMzk0NS4xMTcgW0FwcHJvdmVkXSBEb3dubG9hZHMgY2FjaGVkIGZvciBsaWNl
bnNlZCB1c2Vyczxicj5UaXRsZTogR29vZ2xlIENocm9tZSB8IFB1Ymxpc2hlZDogMjAyMC0wMS0w
Nzxicj5QYWNrYWdlIGFwcHJvdmVkIGFzIGEgdHJ1c3RlZCBwYWNrYWdlIG9uIDEgMDggMjAyMCAw
MToyMjoyMi48YnI+Li4uIOyDneuetTxicj5gYGA8L3A+PHA+7Jes6riw7IScIGAtZXZgIOuhnCDs
mLXshZjsnYQg7KSs64qU642wLCDsnbTqsbQgYC1lIC12YOulvCDtlZjrgpjroZwg7JqU7JW97ZWc
IO2YleyLneyeheuLiOuLpC48L3A+PGgxPiMg7Yyo7YKk7KeAIOyEpOy5mCDtlZjquLA8L2gxPjxw
PmBpbnN0YWxsYCDrqoXroLnsnYQg7J207Jqp7ZW07IScIOyEpOy5mO2VmOqzoCDsi7bsnYAg7Yyo
7YKk7KeA66W8IOyVhOuemOyZgCDqsJnsnbQg7ISk7LmYIO2VqeuLiOuLpC48L3A+PHA+YGBgYmF0
Y2g8YnI+Jmd0OyBjaG9jbyBpbnN0YWxsIGJhbmRpemlwPGJyPkNob2NvbGF0ZXkgdjAuMTAuMTU8
YnI+SW5zdGFsbGluZyB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOjxicj5iYW5kaXppcDxicj4uLi4g
7IOd6561PGJyPk5vdGU6IElmIHlvdSBkb24ndCBydW4gdGhpcyBzY3JpcHQsIHRoZSBpbnN0YWxs
YXRpb24gd2lsbCBmYWlsLjxicj5Ob3RlOiBUbyBjb25maXJtIGF1dG9tYXRpY2FsbHkgbmV4dCB0
aW1lLCB1c2UgJy15JyBvciBjb25zaWRlcjo8YnI+Y2hvY28gZmVhdHVyZSBlbmFibGUgLW4gYWxs
b3dHbG9iYWxDb25maXJtYXRpb248YnI+RG8geW91IHdhbnQgdG8gcnVuIHRoZSBzY3JpcHQ/KFtZ
XWVzL1tBXWxsIC0geWVzIHRvIGFsbC9bTl1vL1tQXXJpbnQpOjxicj5gYGA8L3A+PHA+66qF66C5
7Ja0IO2UhOuhrO2UhO2KuOqwgCDrgpjsmKTrqbQgeeulvCDriIzrn6zso7zrqbQg6rCE64uo7ZWY
6rKMIOyEpOy5mOqwgCDsmYTro4wg65Cp64uI64ukLjwvcD48cD7shKTsuZgg7IucIOyekOuPmeyc
vOuhnCB566W8IOuIhOultOqzoCDsi7bri6TrqbQgYC15YCDsmLXshZjsnYQg64Sj7Ja0IOyjvOup
tCDrkKnri4jri6QuIOq3uOumrOqzoCDqsJXsoJzroZwg7ISk7LmY7ZWY6rOgIOyLtuuLpOuptCBg
LWZg66W8IOuEo+yWtCDso7zrqbQg65Cp64uI64ukLjwvcD48cD5gYGBiYXRjaDxicj4mZ3Q7IGNo
b2NvIGluc3RhbGwgLXlmIGJhbmRpemlwPGJyPmBgYDwvcD48cD7tmLnsi5wg7Yq57KCVIOuyhOyg
hOydhCDshKTsuZjtlZjqs6Ag7Iu264uk66m0IGAtLXZlcnNpb25gIOyYteyFmOydhCDsnbTsmqnt
lbTshJwg7ZW064u5IOuyhOyghOydhCDshKTsuZgg7ZWgIOyImCDsnojsirXri4jri6QuPC9wPjxw
PmBgYGJhdGNoPGJyPmNob2NvIGluc3RhbGwgYmFuZGl6aXAgLS12ZXJzaW9uPTYuMjQ8YnI+YGBg
PC9wPjxoMT4jIO2MqO2CpOyngCDsgq3soJwg7ZWY6riwPC9oMT48cD5jaG9jb2xhdGV564qUIOyE
pOy5mOuQnCDtjKjtgqTsp4Drj4QgYHVuaW5zdGFsbGAg66qF66C57Ja066W8IOydtOyaqe2VtOyE
nCDtjrjtlZjqsowg7IKt7KCc6rCAIOqwgOuKpSDtlanri4jri6QuPC9wPjxwPmBgYGJhdGNoPGJy
PiZndDsgY2hvY28gdW5pbnN0YWxsIGJhbmRpemlwPGJyPkNob2NvbGF0ZXkgdjAuMTAuMTU8YnI+
VW5pbnN0YWxsaW5nIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6PGJyPmJhbmRpemlwPGJyPi4uLiDs
g53rnrU8YnI+RG8geW91IHdhbnQgdG8gcnVuIHRoZSBzY3JpcHQ/KFtZXWVzL1tBXWxsIC0geWVz
IHRvIGFsbC9bTl1vL1tQXXJpbnQpOjxicj5gYGA8L3A+PHA+66qF66C57Ja0IO2UhOuhrO2UhO2K
uOqwgCDrgpjsmKTrqbQgeeulvCDriIzrn6zso7zrqbQg7IKt7KCc6rCAIOuQqeuLiOuLpC48L3A+
PHA+YHlg7YKk66W8IOuIhOultOq4sCDqt4DssK7ri6TrqbQg7ISk7LmYIO2VoCDrlYzsmYAg6rCZ
7J20IGAteWZg66W8IOuIhOultOyLnOuptCDrsJTroZwg7IKt7KCc6rCAIOqwgOuKpSDtlanri4jr
i6QuPC9wPjxwPmBgYGJhdGNoPGJyPiZndDsgY2hvY28gdW5pbnN0YWxsIC15ZiBiYW5kaXppcDxi
cj5gYGA8L3A+PGgxPiMgY2hvY2/roZwg7ISk7LmY65CcIO2MqO2CpOyngCDrqqnroZ0g7ZmV7J24
7ZWY6riwPC9oMT48cD5gc2VhcmNoYCDrmJDripQgYGxpc3Rg66qF66C566GcIO2ZleyduCDqsIDr
iqUg7ZWp64uI64ukLiDrkqTsl5AgYC1sYCDsmLXshZjsnYQg7KO866m0IOuhnOy7rOyXkCDshKTs
uZjrkJwg7Yyo7YKk7KeA7J2YIOuqqeuhneydhCDstpzroKUg7ZW0IOykjeuLiOuLpC48L3A+PHA+
YGBgYmF0Y2g8YnI+Jmd0OyBjaG9jbyBzZWFyY2ggLWw8YnI+YmFuZGl6aXAgNi4yNTxicj4uLi4g
7IOd6561PGJyPnplYWwgMC42LjE8YnI+emVhbC5pbnN0YWxsIDAuNi4xPGJyPjYyIHBhY2thZ2Vz
IGluc3RhbGxlZC48YnI+YGBgPC9wPjxwPuuYkOuKlCBgY2xpc3RgIOuqheugueyWtOulvCDsgqzs
mqntlbTshJzrj4Qg7KGw7ZqM6rCAIOqwgOuKpSDtlanri4jri6QuPC9wPjxwPmBgYGJhdGNoPGJy
PiZndDsgY2xpc3QgLWw8YnI+YGBgPC9wPjxwPmBjbGlzdGAg66qF66C57J2AIGBjaG9jbyBzZWFy
Y2hg66W8IOyZgCDqsJnsnYAg7Jet7ZWg7J2EIO2VqeuLiOuLpC48L3A+PGgxPiMg7Yyo7YKk7KeA
IOyXheuNsOydtO2KuCDtlZjquLA8L2gxPjxwPmB1cGdyYWRlYCDrqoXroLnslrTrpbwg7Ya17ZW0
7IScIO2MqO2CpOyngOulvCDstZzsi6Ag67KE7KCE7Jy866GcIOyXheuNsOydtO2KuOqwgCDqsIDr
iqUg7ZWp64uI64ukLjwvcD48cD5gYGBiYXRjaDxicj4mZ3Q7IGNob2NvIHVwZ3JhZGUgYmFuZGl6
aXA8YnI+YGBgPC9wPjxwPu2YueyLnCwgY2hvY2/rpbwg7Ya17ZW07IScIOyEpOy5mO2VnCDtlITr
oZzqt7jrnqjsnYQg66qo65GQIOyXheuNsOydtO2KuCDtlZjqs6Ag7Iu264uk66m0IO2MqO2CpOyn
gCDsnbTrpoQg64yA7IugIGBhbGxg7J2EIOuEo+yWtCDso7zrqbQg65Cp64uI64ukLjwvcD48cD5g
YGBiYXRjaDxicj4mZ3Q7IGNob2NvIHVwZ3JhZGUgYWxsPGJyPmBgYDwvcD48aDE+IyBjaG9jb2xh
dGV5IOyEpOy5mOu2gO2EsCDtjKjtgqTsp4Ag7ISk7LmY6rmM7KeAIO2VnOuwqSDsiqTtgazrpr3t
irg8L2gxPjxwPmA8YSBocmVmPSJjaG9jb19pbnN0YWxsLmJhdCIgZGF0YS1tY2UtaHJlZj0iY2hv
Y29faW5zdGFsbC5iYXQiPmNob2NvX2luc3RhbGwuYmF0PC9hPmDrnbzripQg7YyM7J287J2EIOun
jOuTpOqzoCDslYTrnpjsnZgg64K07Jqp7J2EIOuzteyCrO2VtOyEnCDrhKPslrQg7KO87IS47JqU
LjwvcD48cD7qt7jrpqzqs6AsIOuStyDrtoDrtoTsl5Ag7ISk7LmY7ZWY6rOgIOyLtuydgCDtjKjt
gqTsp4Drpbwg64Sj7Ja0IOyjvOyLnOuptCDrkKnri4jri6QuPC9wPjxwPmBgYGJhdGNoPGJyPkBl
Y2hvIG9mZjxicj5DTFM8YnI+RUNITyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKjxicj5FQ0hPICogU3RhcnQgQ2hvY29sYXRleSBCYXRjaDxicj5FQ0hPICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqPC9wPjxwPjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6
Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6PGJyPjo6IOyytO2BrCDrsI8g6rSA66as7J6QIOq2jO2VnCDqsIDs
oLgg7Jik6riwPGJyPk5FVCBGSUxFIDEmZ3Q7TlVMIDImZ3Q7TlVMPGJyPmlmICclZXJyb3JsZXZl
bCUnID09ICcwJyAoIGdvdG8gZ290UHJpdmlsZWdlcyApIGVsc2UgKCBnb3RvIGdldFByaXZpbGVn
ZXMgKTwvcD48cD46Z2V0UHJpdmlsZWdlczxicj46Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6
Ojo6Ojo6Ojo6Ojo6Ojxicj46OiBVQUPrpbwg7IKs7Jqp7ZW07IScIOq0gOumrOyekCDqtoztlZzs
nLzroZwg7KCE7ZmYPGJyPmlmICclMSc9PSdFTEVWJyAoc2hpZnQgJmFtcDsgZ290byBnb3RQcml2
aWxlZ2VzKTxicj5FQ0hPLjxicj5FQ0hPICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqPGJyPkVDSE8gKiBVc2UgVUFDLCBzd2l0Y2ggdG8gYWRtaW48YnI+RUNITyAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKjwvcD48cD5zZXRsb2NhbCBEaXNhYmxlRGVs
YXllZEV4cGFuc2lvbjxicj5zZXQgImJhdGNoUGF0aD0lfjAiPGJyPnNldGxvY2FsIEVuYWJsZURl
bGF5ZWRFeHBhbnNpb248YnI+RUNITyBTZXQgVUFDID0gQ3JlYXRlT2JqZWN0XigiU2hlbGwuQXBw
bGljYXRpb24iXikgJmd0OyAiJXRlbXAlXDxhIGhyZWY9Ik9FZ2V0UHJpdmlsZWdlcy52YnMiIGRh
dGEtbWNlLWhyZWY9Ik9FZ2V0UHJpdmlsZWdlcy52YnMiPk9FZ2V0UHJpdmlsZWdlcy52YnM8L2E+
Ijxicj5FQ0hPIFVBQy5TaGVsbEV4ZWN1dGUgIiFiYXRjaFBhdGghIiwgIkVMRVYiLCAiIiwgInJ1
bmFzIiwgMSAmZ3Q7Jmd0OyAiJXRlbXAlXDxhIGhyZWY9Ik9FZ2V0UHJpdmlsZWdlcy52YnMiIGRh
dGEtbWNlLWhyZWY9Ik9FZ2V0UHJpdmlsZWdlcy52YnMiPk9FZ2V0UHJpdmlsZWdlcy52YnM8L2E+
Ijxicj4iJXRlbXAlXDxhIGhyZWY9Ik9FZ2V0UHJpdmlsZWdlcy52YnMiIGRhdGEtbWNlLWhyZWY9
Ik9FZ2V0UHJpdmlsZWdlcy52YnMiPk9FZ2V0UHJpdmlsZWdlcy52YnM8L2E+Ijxicj5leGl0IC9C
PC9wPjxwPjpnb3RQcml2aWxlZ2VzPGJyPjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6
Ojo6Ojo6Ojo6PGJyPjo6IOyLnOyekSDtlZjquLA8YnI+c2V0bG9jYWwgJmFtcDsgcHVzaGQgLjwv
cD48cD5XSEVSRSBjaG9jbyAxJmd0O05VTCAyJmd0O05VTDxicj5pZiAnJWVycm9ybGV2ZWwlJyA9
PSAnMCcgKCBnb3RvIGNob2NvSW5zdGFsbGVkICkgZWxzZSAoIGdvdG8gY2hvY29NaXNzaW5nICk8
L3A+PHA+OmNob2NvTWlzc2luZzxicj46Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6PGJyPjo6
IENob2NvbGF0ZXnqsIAg7JeG7J2EIOqyveyasCDshKTsuZg8YnI+Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6
Ojo6Ojo6Ojo6Ojxicj5FQ0hPLjxicj5jaG9pY2UgL00gIkNob2NvbGF0ZXkgbm90IGZvdW5kLiBJ
bnN0YWxsIG5vdz8iPGJyPklGICclZXJyb3JsZXZlbCUnID09ICcyJyBleGl0IC9CPGJyPkVDSE8u
PGJyPkVDSE8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio8YnI+RUNITyAq
IENob2NvbGF0ZXkgaW5zdGFsbDxicj5FQ0hPICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqPC9wPjxwPkBwb3dlcnNoZWxsIC1Ob1Byb2ZpbGUgLUV4ZWN1dGlvblBvbGljeSBC
eXBhc3MgLUNvbW1hbmQgImlleCAoKG5ldy1vYmplY3QgbmV0LndlYmNsaWVudCkuRG93bmxvYWRT
dHJpbmcoJzxhIGhyZWY9Imh0dHBzOi8vY2hvY29sYXRleS5vcmcvaW5zdGFsbC5wczEnIiBkYXRh
LW1jZS1ocmVmPSJodHRwczovL2Nob2NvbGF0ZXkub3JnL2luc3RhbGwucHMxJyI+aHR0cHM6Ly9j
aG9jb2xhdGV5Lm9yZy9pbnN0YWxsLnBzMScpKTwvYT4pKSIgJmFtcDsmYW1wOyBTRVQgUEFUSD0l
UEFUSCU7JUFMTFVTRVJTUFJPRklMRSVcY2hvY29sYXRleVxiaW48L3A+PHA+OmNob2NvSW5zdGFs
bGVkPGJyPkVDSE8uPGJyPkVDSE8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kio8YnI+RUNITyAqIFBhY2thZ2VzIGluc3RhbGw8YnI+RUNITyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKjwvcD48cD5AZWNobyBvbjwvcD48cD46OiDtla3sg4Eg7J6Q64+Z
7Jy866GcIHllc+ulvCDshKDtg53tlZjrj4TroZ0g7ISk7KCVPGJyPmNob2NvIGZlYXR1cmUgZW5h
YmxlIC0tbmFtZT1hbGxvd0dsb2JhbENvbmZpcm1hdGlvbjwvcD48cD46OiDrqLzsoIAg6riw7KG0
IO2MqO2CpOyngCDsl4XrjbDsnbTtirg8YnI+Y2hvY28gdXBncmFkZSBhbGwgLXk8L3A+PHA+Ojog
7IKs7Jqp7ZWgIOyWtO2UjOumrOy8gOydtOyFmCDshKTsuZg8YnI+c2V0IGNob2NvX2luc3RhbGw9
Y2hvY28gaW5zdGFsbCAtZnk8YnI+JWNob2NvX2luc3RhbGwlIGJhbmRpemlwPGJyPiVjaG9jb19p
bnN0YWxsJSBmaXJlZm94PGJyPiVjaG9jb19pbnN0YWxsJSBnb29nbGVjaHJvbWU8YnI+JWNob2Nv
X2luc3RhbGwlIHZjcmVkaXN0MTQwPGJyPiVjaG9jb19pbnN0YWxsJSB2Y3JlZGlzdDIwMTI8YnI+
JWNob2NvX2luc3RhbGwlIGRpcmVjdHg8YnI+JWNob2NvX2luc3RhbGwlIGRvdG5ldGZ4PGJyPiVj
aG9jb19pbnN0YWxsJSBqYXZhcnVudGltZTxicj4lY2hvY29faW5zdGFsbCUgZXZlcnl0aGluZzxi
cj4lY2hvY29faW5zdGFsbCUgd294PGJyPiVjaG9jb19pbnN0YWxsJSBxYml0dG9ycmVudDxicj4l
Y2hvY29faW5zdGFsbCUgZi5sdXg8YnI+JWNob2NvX2luc3RhbGwlIHR5cG9yYTxicj4lY2hvY29f
aW5zdGFsbCUgZnJlZWZpbGVzeW5jPGJyPiVjaG9jb19pbnN0YWxsJSBjYWxpYnJlPGJyPiVjaG9j
b19pbnN0YWxsJSBub3Rpb248YnI+JWNob2NvX2luc3RhbGwlIHZsYzxicj4lY2hvY29faW5zdGFs
bCUga3JpdGE8YnI+JWNob2NvX2luc3RhbGwlIDxhIGhyZWY9InBhaW50Lm5ldCIgZGF0YS1tY2Ut
aHJlZj0icGFpbnQubmV0Ij5wYWludC5uZXQ8L2E+PGJyPiVjaG9jb19pbnN0YWxsJSBqYnM8YnI+
JWNob2NvX2luc3RhbGwlIGRpdHRvPGJyPiVjaG9jb19pbnN0YWxsJSBjY2xlYW5lci5wb3J0YWJs
ZTxicj4lY2hvY29faW5zdGFsbCUgZ2l0Lmluc3RhbGwgLS1wYXJhbXMgIi9HaXRBbmRVbml4VG9v
bHNPblBhdGggL05vU2hlbGxJbnRlZ3JhdGlvbiAvTm9HdWlIZXJlSW50ZWdyYXRpb24gL1dpbmRv
d3NUZXJtaW5hbCI8L3A+PHA+Ojog7ZWt7IOBIOyekOuPmeycvOuhnCB5ZXPrpbwg7ISg7YOd7ZWY
64qUIOyYteyFmCDrgYTquLA8YnI+Y2hvY28gZmVhdHVyZSBkaXNhYmxlIC0tbmFtZT1hbGxvd0ds
b2JhbENvbmZpcm1hdGlvbjwvcD48cD46OiDsl4XrjbDsnbTtirgg65CcIOyEpOyglSDri6Tsi5wg
7J296riwPGJyPjxhIGhyZWY9IlJlZnJlc2hFbnYuY21kIiBkYXRhLW1jZS1ocmVmPSJSZWZyZXNo
RW52LmNtZCI+UmVmcmVzaEVudi5jbWQ8L2E+PC9wPjxwPnBhdXNlPGJyPmBgYDwvcD48cD5gPGEg
aHJlZj0iY2hvY29faW5zdGFsbC5iYXQiIGRhdGEtbWNlLWhyZWY9ImNob2NvX2luc3RhbGwuYmF0
Ij5jaG9jb19pbnN0YWxsLmJhdDwvYT5gIO2MjOydvOydhCDsi6TtlontlojsnYTrlYwg6rSA66as
7J6QIOq2jO2VnOydtCDslYTri4jrqbQg6rSA66as7J6QIOq2jO2VnOydhCDrtoDsl6ztlbTshJwg
7Iuk7ZaJ7ZWY6rKMIOuQqeuLiOuLpC48L3A+PHA+7Lu07ZOo7YSwIOyEpOy5mOulvCDsnpDso7wg
7ZWY7Iuc6rKMIOuQmOuKlCDrtoTrk6TsnYAg7JyE7JmAIOqwmeydtCDtjIzsnbzsnYQg7ZWY64KY
IOyEpOygle2VtCDrkZTri6TrqbQg7Jyg7Jqp7ZWY6rKMIOyCrOyaqSDtlaAg7IiYIOyeiOydhCDq
soPsnbTrnbzqs6Ag7IOd6rCBIOuQqeuLiOuLpC48L3A+&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;</description>
      <category>컴퓨터/Windows</category>
      <category>choco</category>
      <category>Chocolatey</category>
      <category>install</category>
      <category>Manager</category>
      <category>Package</category>
      <category>Windows</category>
      <category>매니저</category>
      <category>윈도우</category>
      <category>패키지</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/531</guid>
      <comments>https://gyuha.tistory.com/531#entry531comment</comments>
      <pubDate>Fri, 10 Jan 2020 00:14:58 +0900</pubDate>
    </item>
    <item>
      <title>타입스크립트, AWS 서버리스로 들어올리다.</title>
      <link>https://gyuha.tistory.com/530</link>
      <description>&lt;p&gt;올해 초에 쓰기 시작했는데..&lt;/p&gt;
&lt;p&gt;연말이 돼서야 겨우 완료했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실무 개발을 해 보면서 프로젝트를 진행할 때, 최소한 이런 건 알고 하면 좋겠다 싶은 것들을 넣다 보니까 페이지가 많이 늘어나 버렸습니다.&lt;/p&gt;
&lt;p&gt;뭔가 하나를 깊게 파는 서적인 아니지만, 전체적인 흐름 파악이나 개발의 선택 과정을 파악 할 때는 도움이 될 것이라는 생각으로 글을 썼습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;img1.daumcdn.net.jpg&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU47gS/btqAjM0Yj8G/xxPDkh15DVH8nQ0U4Gj2fK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU47gS/btqAjM0Yj8G/xxPDkh15DVH8nQ0U4Gj2fK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU47gS/btqAjM0Yj8G/xxPDkh15DVH8nQ0U4Gj2fK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU47gS%2FbtqAjM0Yj8G%2FxxPDkh15DVH8nQ0U4Gj2fK%2Fimg.jpg&quot; data-filename=&quot;img1.daumcdn.net.jpg&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;721&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;책 소개&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;타입스크립트를 활용한 웹 애플리케이션 개발 가이드 북&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재 웹 애플리케이션을 개발하기 위한 많은 개발 환경과 그 환경에 맞는 다양한 방법들이 생겨나고 있다. 그래서 우리는 어떤 방법으로 개발을 시작해야 할지 선택하기를 주저하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 책에서는 실무에 적합한 플랫폼과 다양한 개발 프레임워크 및 라이브러리를 소개하고, 각 상황에 맞는 플랫폼 및 프레임워크를 선택하고 개발하는 과정을 안내한다. 이런 과정을 통해서 개발의 식견을 넓히고, 새로운 개발 방법을 학습하여 새로운 프로젝트가 생길 때 다양한 구현 방법을 검토하고 결정할 수 있도록 도와준다. 독자 여러분도 이 책만 있으면 어떤 프로젝트든지 훌륭하게 완료할 수 있을 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; 서버리스 및 AWS 서비스 소개&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Typescript 기본 문법&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; VSCODE를 이용한 개발 환경 구성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Typescript를 사용한 AWS 람다 서비스 구성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Typescript를 이용한 Vue.js 개발&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Vue.js에서 UI Framework 사용하기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Docker 기본 사용법&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Typescript를 이용한 ORM 사용&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Typescript를 이용한 GraphQL 사용&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; TDD 기본 사용법&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; AWS를 통한 배포&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이&amp;nbsp;책의 특징&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a&gt;- 가장 최신의 모던한 웹 애플리케이션 개발 과정을 제공한다.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 플랫폼 선택부터 웹 애플리케이션 개발 과정까지 다양한 선택 과정을 배울 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 실무 웹 개발에 필요한 다양한 방법 및 개발 환경 구성을 배울 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;이 책이 필요한 독자&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a&gt;- 웹 개발을 시작하시는 분&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 웹 개발 경험이 있으면서 새로운 개발 환경이 궁금하신 분&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 최신 웹 개발 트렌드에 관심이 있으신 분&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;독자대상&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초중급&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;소스코드&amp;nbsp;다운로드&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/&quot;&gt;https://github.com/&lt;/a&gt;&lt;a href=&quot;https://github.com/bjpublic/typescript&quot;&gt;bjpublic/typescript&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;출처: &lt;a href=&quot;https://bjpublic.tistory.com/346&quot;&gt;https://bjpublic.tistory.com/346&lt;/a&gt; [비제이퍼블릭]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;온라인 판매&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84793216?Acode=101&quot;&gt;http://www.yes24.com/Product/Goods/84793216?Acode=101&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1575856964945&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;book&quot; data-og-title=&quot;타입스크립트, AWS 서버리스로 들어올리다&quot; data-og-description=&quot;타입스크립트를 활용한 웹 애플리케이션 개발 가이드 북 현재 웹 애플리케이션을 개발하기 위한 많은 개발 환경과 그 환경에 맞는 다양한 방법들이 생겨나고 있다. 그래서 우리는 어떤 방법으로 개발을 시작해야 할지 선택하기를 주저하게 된다.본서에서는 실무에 적합한 플랫폼과 다양한 개발 프레임워크 및 라이브러리를 소개하고, 각 상황에 맞는 ...&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/84793216?Acode=101&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/84793216&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jfjLL/hyD2QKgaFP/0qtm4JLGv2Ze08AuxK7vTk/img.jpg?width=306&amp;amp;height=400&amp;amp;face=0_0_306_400&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84793216&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/84793216?Acode=101&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jfjLL/hyD2QKgaFP/0qtm4JLGv2Ze08AuxK7vTk/img.jpg?width=306&amp;amp;height=400&amp;amp;face=0_0_306_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;타입스크립트, AWS 서버리스로 들어올리다&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;타입스크립트를 활용한 웹 애플리케이션 개발 가이드 북 현재 웹 애플리케이션을 개발하기 위한 많은 개발 환경과 그 환경에 맞는 다양한 방법들이 생겨나고 있다. 그래서 우리는 어떤 방법으로 개발을 시작해야 할지 선택하기를 주저하게 된다.본서에서는 실무에 적합한 플랫폼과 다양한 개발 프레임워크 및 라이브러리를 소개하고, 각 상황에 맞는 ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.yes24.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=220420639&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=220420639&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1575857004912&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;books.book&quot; data-og-title=&quot;타입스크립트, AWS 서버리스로 들어올리다&quot; data-og-description=&quot;실무에 적합한 플랫폼과 다양한 개발 프레임워크 및 라이브러리를 소개하고, 각 상황에 맞는 플랫폼 및 프레임워크를 선택하고 개발하는 과정을 안내한다. 새로운 개발 방법을 학습하여 새로운 프로젝트가 생길 때 ...&quot; data-og-host=&quot;www.aladin.co.kr&quot; data-og-source-url=&quot;https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=220420639&quot; data-og-url=&quot;https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=220420639&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bQIjTi/hyD22DWic0/ZkVINrwxKGMKxL956XIs80/img.jpg?width=500&amp;amp;height=652&amp;amp;face=0_0_500_652,https://scrap.kakaocdn.net/dn/bWJ0Xb/hyD1boYdHR/tvdR6crWIv5HdkOM1jhIX0/img.jpg?width=500&amp;amp;height=652&amp;amp;face=0_0_500_652&quot;&gt;&lt;a href=&quot;https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=220420639&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=220420639&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bQIjTi/hyD22DWic0/ZkVINrwxKGMKxL956XIs80/img.jpg?width=500&amp;amp;height=652&amp;amp;face=0_0_500_652,https://scrap.kakaocdn.net/dn/bWJ0Xb/hyD1boYdHR/tvdR6crWIv5HdkOM1jhIX0/img.jpg?width=500&amp;amp;height=652&amp;amp;face=0_0_500_652');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;타입스크립트, AWS 서버리스로 들어올리다&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;실무에 적합한 플랫폼과 다양한 개발 프레임워크 및 라이브러리를 소개하고, 각 상황에 맞는 플랫폼 및 프레임워크를 선택하고 개발하는 과정을 안내한다. 새로운 개발 방법을 학습하여 새로운 프로젝트가 생길 때 ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.aladin.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791190014595&amp;amp;orderClick=LEa&amp;amp;Kc=&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791190014595&amp;amp;orderClick=LEa&amp;amp;Kc=&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1575857066027&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;book&quot; data-og-title=&quot;타입스크립트, AWS 서버리스로 들어올리다&quot; data-og-description=&quot;현재 웹 애플리케이션을 개발하기 위한 많은 개발 환경과...&quot; data-og-host=&quot;www.kyobobook.co.kr&quot; data-og-source-url=&quot;http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791190014595&amp;amp;orderClick=LEa&amp;amp;Kc=&quot; data-og-url=&quot;http://www.kyobobook.co.kr/redi_book.jsp?b=9791190014595&amp;amp;g=KOR&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dJisL4/hyD1cIcPAi/vQzt0Fu6aX2bV7HYxuOnLk/img.jpg?width=458&amp;amp;height=597&amp;amp;face=0_0_458_597&quot;&gt;&lt;a href=&quot;http://www.kyobobook.co.kr/redi_book.jsp?b=9791190014595&amp;amp;g=KOR&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791190014595&amp;amp;orderClick=LEa&amp;amp;Kc=&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dJisL4/hyD1cIcPAi/vQzt0Fu6aX2bV7HYxuOnLk/img.jpg?width=458&amp;amp;height=597&amp;amp;face=0_0_458_597');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;타입스크립트, AWS 서버리스로 들어올리다&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;현재 웹 애플리케이션을 개발하기 위한 많은 개발 환경과...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming/Node.js</category>
      <category>책</category>
      <category>타입스크리트</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/530</guid>
      <comments>https://gyuha.tistory.com/530#entry530comment</comments>
      <pubDate>Mon, 9 Dec 2019 11:05:39 +0900</pubDate>
    </item>
    <item>
      <title>Typescript에서 default import 개선..</title>
      <link>https://gyuha.tistory.com/528</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/528?type=post&amp;amp;returnURL=https%3A%2F%2Fgyuha.tistory.com%2F528&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;express를 import하면 아래와 같이 import 했을 겁니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0.5em 0.7em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block !important; overflow: auto;&quot;&gt;import * as Express from 'express';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;하지만 &lt;a href=&quot;http://tsconfig.json&quot;&gt;tsconfig.json&lt;/a&gt; 파일에 아래 내용을 추가 하면..&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0.5em 0.7em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block !important; overflow: auto;&quot;&gt;{
   &quot;compilerOptions&quot;: {
    &quot;allowSyntheticDefaultImports&quot;: true,
    &quot;esModuleInterop&quot;: true,
   }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;이렇게 import가 가능해 집니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #222222; padding: 0.5em 0.7em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block !important; overflow: auto;&quot;&gt;import Express from 'express'
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+ZXhwcmVzc+ulvCZuYnNwO2ltcG9ydO2VmOuptCZuYnNwO+yVhOuemOyZgCZuYnNwO+qwmeyd
tCZuYnNwO2ltcG9ydCZuYnNwO+2WiOydhCZuYnNwO+qygeuLiOuLpC48YnI+PGJyPmBgYDxicj5p
bXBvcnQmbmJzcDsqJm5ic3A7YXMmbmJzcDtFeHByZXNzJm5ic3A7ZnJvbSZuYnNwOydleHByZXNz
Jzs8YnI+YGBgPGJyPjxicj7tlZjsp4Drp4wmbmJzcDs8YSBocmVmPSJ0c2NvbmZpZy5qc29uIiB0
YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0idHNjb25maWcuanNv
biI+dHNjb25maWcuanNvbjwvYT4mbmJzcDvtjIzsnbzsl5AmbmJzcDvslYTrnpgmbmJzcDvrgrTs
mqnsnYQmbmJzcDvstpTqsIAmbmJzcDvtlZjrqbQuLjxicj48YnI+YGBgPGJyPns8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7ImNvbXBpbGVyT3B0aW9ucyI6Jm5ic3A7ezxicj4mbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsiYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyI6Jm5ic3A7dHJ1ZSw8YnI+Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ImVzTW9kdWxlSW50ZXJvcCI6Jm5ic3A7dHJ1ZSw8YnI+Jm5i
c3A7Jm5ic3A7Jm5ic3A7fTxicj59PGJyPmBgYDxicj48YnI+7J2066CH6rKMJm5ic3A7aW1wb3J0
6rCAJm5ic3A76rCA64ql7ZW0Jm5ic3A77KeR64uI64ukLjxicj48YnI+YGBgPGJyPmltcG9ydCZu
YnNwO0V4cHJlc3MmbmJzcDtmcm9tJm5ic3A7J2V4cHJlc3MnPGJyPmBgYDwvcD4=&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Programming/Node.js</category>
      <category>express</category>
      <category>import</category>
      <category>node</category>
      <category>TypeScript</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/528</guid>
      <comments>https://gyuha.tistory.com/528#entry528comment</comments>
      <pubDate>Mon, 12 Aug 2019 12:58:09 +0900</pubDate>
    </item>
    <item>
      <title>세계 국기 SVG 파일</title>
      <link>https://gyuha.tistory.com/527</link>
      <description>&lt;p&gt;국제화 개발 하다 보면, 간혹 필요한 국기 이미지 입니다.&lt;br&gt;벡터인 svg 파일이라서 필요에 따라서 변환해서 사용 하세요.&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/b2UPGz/btqwIiWNTX3/LegtjwOlU4Kw8ErkM8yPQk/flags.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;flags.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;2.02MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; height=&quot;480&quot; width=&quot;640&quot; version=&quot;1&quot;&gt;&lt;defs&gt;&lt;clipPath id=&quot;a&quot;&gt;&lt;path fill-opacity=&quot;.67&quot; d=&quot;M-95.808-.44h682.67v512h-682.67z&quot;/&gt;&lt;/clipPath&gt;&lt;/defs&gt;&lt;g fill-rule=&quot;evenodd&quot; clip-path=&quot;url(#a)&quot; transform=&quot;translate(89.82 .412) scale(.9375)&quot;&gt;&lt;path fill=&quot;#fff&quot; d=&quot;M610.61 511.56h-730.17v-512h730.17z&quot;/&gt;&lt;path d=&quot;M251.871 256.021c0 62.137-50.372 112.508-112.507 112.508-62.137 0-112.507-50.372-112.507-112.508 0-62.137 50.371-112.507 112.507-112.507 62.137 0 112.507 50.372 112.507 112.507z&quot; fill=&quot;#fff&quot;/&gt;&lt;path d=&quot;M393.011 262.55c0 81.079-65.034 146.803-145.261 146.803S102.488 343.63 102.488 262.55s65.034-146.804 145.262-146.804 145.26 65.725 145.26 146.804z&quot; fill=&quot;#c70000&quot;/&gt;&lt;path d=&quot;M-49.417 126.44l83.66-96.77 19.821 17.135-83.66 96.771zm27.399 23.687l83.66-96.77 19.82 17.135-83.66 96.77z&quot;/&gt;&lt;path d=&quot;M-49.417 126.44l83.66-96.77 19.821 17.135-83.66 96.771z&quot;/&gt;&lt;path d=&quot;M-49.417 126.44l83.66-96.77 19.821 17.135-83.66 96.771zm55.384 47.88l83.66-96.77 19.82 17.136-83.66 96.77z&quot;/&gt;&lt;path d=&quot;M-49.417 126.44l83.66-96.77 19.821 17.135-83.66 96.771z&quot;/&gt;&lt;path d=&quot;M-49.417 126.44l83.66-96.77 19.821 17.135-83.66 96.771zm508.83-96.802l83.002 97.335-19.937 17-83.002-97.334zm-55.706 47.503l83.002 97.335-19.936 17-83.002-97.334z&quot;/&gt;&lt;path d=&quot;M417.55 133.19l78.602-67.814 14.641 16.953-83.996 75.519-9.247-24.659z&quot; fill=&quot;#fff&quot;/&gt;&lt;path d=&quot;M514.228 372.013l-80.416 95.829-19.716-16.4 80.417-95.828zM431.853 53.14l83.002 97.334-19.936 17.001-83.002-97.334zm109.622 341.536l-80.417 95.829-19.715-16.399 80.417-95.829zm-55.085-45.819l-80.417 95.83-19.715-16.4 80.416-95.829z&quot;/&gt;&lt;path d=&quot;M104.6 236.68c4.592 36.974 11.297 78.175 68.199 82.455 21.328 1.278 62.817-5.074 77.061-63.19 18.688-55.829 74.975-71.88 113.28-41.613 21.718 14.166 27.727 36.666 29.283 53.557-1.739 54.243-32.874 101.2-72.823 122.14-45.93 27.3-109.56 27.87-165.3-13.49-25.12-23.57-60.219-67.02-49.7-139.86z&quot; fill=&quot;#3d5897&quot;/&gt;&lt;path d=&quot;M435.91 370.59l78.734 67.661-14.591 16.997-87.156-71.851 23.013-12.807z&quot; fill=&quot;#fff&quot;/&gt;&lt;path d=&quot;M-1.887 357.197l83.002 97.335-19.937 17-83.002-97.334z&quot;/&gt;&lt;path d=&quot;M-16.188 437.25l78.602-67.814 14.641 16.953-83.996 75.519-9.247-24.659z&quot; fill=&quot;#fff&quot;/&gt;&lt;path d=&quot;M25.672 333.696l83.003 97.334-19.937 17-83.002-97.334zm-55.705 47.503l83.002 97.334-19.936 17L-49.97 398.2z&quot;/&gt;&lt;/g&gt;&lt;/svg&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <category>flag</category>
      <category>Icon</category>
      <category>localization</category>
      <category>SVG</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/527</guid>
      <comments>https://gyuha.tistory.com/527#entry527comment</comments>
      <pubDate>Fri, 12 Jul 2019 09:46:06 +0900</pubDate>
    </item>
    <item>
      <title>웹 캐시를 지우고 리로딩하기..</title>
      <link>https://gyuha.tistory.com/526</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/?type=post&amp;amp;returnURL=%2Fmanage%2Fposts%2F&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;SPA를 개발하다 보면, 앱의 버전을 올려서 서버에 반영을 했는데, 웹은 캐시를 타버려서 업데이트가 되지 않는 경우가 빈번합니다. 웹 서버와 웹 어플리케이션의 버전이 맞지 않아서 이상하게 동작도 하고.. 대략적으로 난감한 경우가 발생해서, 캐시를 지우고 리로드 하는 코드를 간단하게 만들어 봤습니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;caches  
    .keys()  
    .then(c =&amp;gt; {  
    &lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;const&lt;/span&gt; i of c) {  
        caches.delete(i);  
    }  
}).then(() =&amp;gt; {  
    location.reload(&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;true&lt;/span&gt;);  
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그리고 아래는 axios를 이용해서 버전을 확인하고 업데이트를 진행하는 코드 입니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;import * as axios from &lt;span style=&quot;color: #a6e22e;&quot;&gt;'axios'&lt;/span&gt; 

&lt;span style=&quot;color: #a6e22e;&quot;&gt;console&lt;/span&gt;.log(&lt;span style=&quot;color: #a6e22e;&quot;&gt;'current version :'&lt;/span&gt;, version);  
&lt;span style=&quot;color: #75715e;&quot;&gt;// 버전업이 되었으면 버전을 올리도록 처리  &lt;/span&gt;
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;if&lt;/span&gt; (process.env.NODE_ENV === &lt;span style=&quot;color: #a6e22e;&quot;&gt;'production'&lt;/span&gt;) {  
  &lt;span style=&quot;color: #a6e22e;&quot;&gt;console&lt;/span&gt;.log(&lt;span style=&quot;color: #a6e22e;&quot;&gt;'version update check...'&lt;/span&gt;);  
  axios.get(`/version.json?timestamp=${&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;Date&lt;/span&gt;().getTime()}`).then((data: any) =&amp;gt; {  
    &lt;span style=&quot;color: #a6e22e;&quot;&gt;console&lt;/span&gt;.log(&lt;span style=&quot;color: #a6e22e;&quot;&gt;'server version :'&lt;/span&gt;, data.data);  
    &lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;if&lt;/span&gt; (data.data.app &amp;gt; version.app) {  
      &lt;span style=&quot;color: #75715e;&quot;&gt;// 캐쉬 지우기  &lt;/span&gt;
      caches  
        .keys()  
        .then(c =&amp;gt; {  
          &lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;const&lt;/span&gt; i of c) {  
            caches.delete(i);  
          }  
        })  
        .then(() =&amp;gt; {  
          location.reload(&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;true&lt;/span&gt;);  
        });  
      &lt;span style=&quot;color: #a6e22e;&quot;&gt;console&lt;/span&gt;.log(&lt;span style=&quot;color: #a6e22e;&quot;&gt;'update app...'&lt;/span&gt;);  
    }  
  });  
}
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+Jm5ic3A7U1BB66W8Jm5ic3A76rCc67Cc7ZWY64ukJm5ic3A767O066m0LCZuYnNwO+yVseyd
mCZuYnNwO+uyhOyghOydhCZuYnNwO+yYrOugpOyEnCZuYnNwO+yEnOuyhOyXkCZuYnNwO+uwmOyY
geydhCZuYnNwO+2WiOuKlOuNsCwmbmJzcDvsm7nsnYAmbmJzcDvsupDsi5zrpbwmbmJzcDvtg4Dr
soTroKTshJwmbmJzcDvsl4XrjbDsnbTtirjqsIAmbmJzcDvrkJjsp4AmbmJzcDvslYrripQmbmJz
cDvqsr3smrDqsIAmbmJzcDvruYjrsojtlanri4jri6QuJm5ic3A77Ju5Jm5ic3A77ISc67KE7JmA
Jm5ic3A77Ju5Jm5ic3A77Ja07ZSM66as7LyA7J207IWY7J2YJm5ic3A767KE7KCE7J20Jm5ic3A7
66ee7KeAJm5ic3A77JWK7JWE7IScJm5ic3A77J207IOB7ZWY6rKMJm5ic3A764+Z7J6R64+EJm5i
c3A77ZWY6rOgLi4mbmJzcDvrjIDrnrXsoIHsnLzroZwmbmJzcDvrgpzqsJDtlZwmbmJzcDvqsr3s
mrDqsIAmbmJzcDvrsJzsg53tlbTshJwsJm5ic3A77LqQ7Iuc66W8Jm5ic3A77KeA7Jqw6rOgJm5i
c3A766as66Gc65OcJm5ic3A77ZWY64qUJm5ic3A77L2U65Oc66W8Jm5ic3A7Jm5ic3A76rCE64uo
7ZWY6rKMJm5ic3A766eM65Ok7Ja0Jm5ic3A767Sk7Iq164uI64ukLiA8YnI+PGJyPmBgYGphdmFz
Y3JpcHQgPGJyPmNhY2hlcyZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7LmtleXMo
KSZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7LnRoZW4oYyZuYnNwOz0mZ3Q7Jm5i
c3A7eyZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Zm9yJm5ic3A7KGNvbnN0Jm5i
c3A7aSZuYnNwO29mJm5ic3A7YykmbmJzcDt7Jm5ic3A7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJjYWNoZXMuZGVsZXRlKGkpOyIg
dGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNhY2hlcy5kZWxl
dGUoaSk7Ij5jYWNoZXMuZGVsZXRlKGkpOzwvYT4mbmJzcDsgPGJyPiZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwO30mbmJzcDsgPGJyPn0pLnRoZW4oKCkmbmJzcDs9Jmd0OyZuYnNwO3smbmJzcDsgPGJy
PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9ImxvY2F0aW9uLnJlbG9hZCh0cnVlKTsi
IHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJsb2NhdGlvbi5y
ZWxvYWQodHJ1ZSk7Ij5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7PC9hPiZuYnNwOyA8YnI+fSk7Jm5i
c3A7IDxicj5gYGAgPGJyPjxicj4mbmJzcDvqt7jrpqzqs6AmbmJzcDvslYTrnpjripQmbmJzcDth
eGlvc+ulvCZuYnNwO+ydtOyaqe2VtOyEnCZuYnNwO+uyhOyghOydhCZuYnNwO+2ZleyduO2VmOqz
oCZuYnNwO+yXheuNsOydtO2KuOulvCZuYnNwO+ynhO2Wie2VmOuKlCZuYnNwO+y9lOuTnCZuYnNw
O+yeheuLiOuLpC4gPGJyPjxicj5gYGBqYXZhc2NyaXB0IDxicj5pbXBvcnQmbmJzcDsqJm5ic3A7
YXMmbmJzcDtheGlvcyZuYnNwO2Zyb20mbmJzcDsnYXhpb3MnIDxicj48YnI+PGEgaHJlZj0iY29u
c29sZS5sb2coJ2N1cnJlbnQiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1j
ZS1ocmVmPSJjb25zb2xlLmxvZygnY3VycmVudCI+Y29uc29sZS5sb2coJ2N1cnJlbnQ8L2E+Jm5i
c3A7dmVyc2lvbiZuYnNwOzonLCZuYnNwO3ZlcnNpb24pOyZuYnNwOyA8YnI+Ly8mbmJzcDvrsoTs
oITsl4XsnbQmbmJzcDvrkJjsl4jsnLzrqbQmbmJzcDvrsoTsoITsnYQmbmJzcDvsmKzrpqzrj4Tr
oZ0mbmJzcDvsspjrpqwmbmJzcDsgPGJyPmlmJm5ic3A7KDxhIGhyZWY9InByb2Nlc3MuZW52Lk5P
REVfRU5WIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0icHJv
Y2Vzcy5lbnYuTk9ERV9FTlYiPnByb2Nlc3MuZW52Lk5PREVfRU5WPC9hPiZuYnNwOz09PSZuYnNw
Oydwcm9kdWN0aW9uJykmbmJzcDt7Jm5ic3A7IDxicj4mbmJzcDsmbmJzcDs8YSBocmVmPSJjb25z
b2xlLmxvZygndmVyc2lvbiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNl
LWhyZWY9ImNvbnNvbGUubG9nKCd2ZXJzaW9uIj5jb25zb2xlLmxvZygndmVyc2lvbjwvYT4mbmJz
cDt1cGRhdGUmbmJzcDtjaGVjay4uLicpOyZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0i
YXhpb3MuZ2V0KCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9
ImF4aW9zLmdldCgiPmF4aW9zLmdldCg8L2E+YC88YSBocmVmPSJ2ZXJzaW9uLmpzb24/dGltZXN0
YW1wPSQiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJ2ZXJz
aW9uLmpzb24/dGltZXN0YW1wPSQiPnZlcnNpb24uanNvbj90aW1lc3RhbXA9JDwvYT57bmV3Jm5i
c3A7RGF0ZSgpLmdldFRpbWUoKX1gKS50aGVuKChkYXRhOiZuYnNwO2FueSkmbmJzcDs9Jmd0OyZu
YnNwO3smbmJzcDsgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9ImNvbnNvbGUu
bG9nKCdzZXJ2ZXIiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVm
PSJjb25zb2xlLmxvZygnc2VydmVyIj5jb25zb2xlLmxvZygnc2VydmVyPC9hPiZuYnNwO3ZlcnNp
b24mbmJzcDs6JywmbmJzcDs8YSBocmVmPSJkYXRhLmRhdGEpOyIgdGFyZ2V0PSJfYmxhbmsiIHJl
bD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImRhdGEuZGF0YSk7Ij5kYXRhLmRhdGEpOzwvYT4m
bmJzcDsgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2lmJm5ic3A7KDxhIGhyZWY9ImRhdGEu
ZGF0YS5hcHAiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVmPSJk
YXRhLmRhdGEuYXBwIj5kYXRhLmRhdGEuYXBwPC9hPiZuYnNwOyZndDsmbmJzcDs8YSBocmVmPSJ2
ZXJzaW9uLmFwcCkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBkYXRhLW1jZS1ocmVm
PSJ2ZXJzaW9uLmFwcCkiPnZlcnNpb24uYXBwKTwvYT4mbmJzcDt7Jm5ic3A7IDxicj4mbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyZuYnNwO+y6kOyJrCZuYnNwO+yngOyasOq4
sCZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y2FjaGVzJm5i
c3A7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsu
a2V5cygpJm5ic3A7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsudGhlbihjJm5ic3A7PSZndDsmbmJzcDt7Jm5ic3A7IDxicj4mbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtmb3ImbmJzcDso
Y29uc3QmbmJzcDtpJm5ic3A7b2YmbmJzcDtjKSZuYnNwO3smbmJzcDsgPGJyPiZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOzxhIGhyZWY9ImNhY2hlcy5kZWxldGUoaSk7IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29w
ZW5lciIgZGF0YS1tY2UtaHJlZj0iY2FjaGVzLmRlbGV0ZShpKTsiPmNhY2hlcy5kZWxldGUoaSk7
PC9hPiZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7fSZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7fSkmbmJzcDsgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy50aGVuKCgpJm5ic3A7PSZndDsmbmJzcDt7Jm5ic3A7
IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDs8YSBocmVmPSJsb2NhdGlvbi5yZWxvYWQodHJ1ZSk7IiB0YXJnZXQ9Il9ibGFuayIg
cmVsPSJub29wZW5lciIgZGF0YS1tY2UtaHJlZj0ibG9jYXRpb24ucmVsb2FkKHRydWUpOyI+bG9j
YXRpb24ucmVsb2FkKHRydWUpOzwvYT4mbmJzcDsgPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO30pOyZuYnNwOyA8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iY29uc29sZS5sb2coJ3VwZGF0ZSIgdGFyZ2V0PSJf
YmxhbmsiIHJlbD0ibm9vcGVuZXIiIGRhdGEtbWNlLWhyZWY9ImNvbnNvbGUubG9nKCd1cGRhdGUi
PmNvbnNvbGUubG9nKCd1cGRhdGU8L2E+Jm5ic3A7YXBwLi4uJyk7Jm5ic3A7IDxicj4mbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDt9Jm5ic3A7IDxicj4mbmJzcDsmbmJzcDt9KTsmbmJzcDsgPGJyPn0g
PGJyPjxicj5gYGAgPGJyPjxicj48L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+PHA+
PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <category>cache</category>
      <category>http</category>
      <category>react</category>
      <category>reload</category>
      <category>spa</category>
      <category>VUE</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/526</guid>
      <comments>https://gyuha.tistory.com/526#entry526comment</comments>
      <pubDate>Fri, 24 May 2019 17:30:01 +0900</pubDate>
    </item>
    <item>
      <title>Git에서 branch를 master로 바꾸기..</title>
      <link>https://gyuha.tistory.com/525</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/?type=post&amp;amp;returnURL=%2Fmanage%2Fposts%2F&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;소스를 관리 하다가.. master가 branch와 간격이 많이 버러졌는데..&lt;br /&gt;branch를 master로 써야 할 경우 입니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;git checkout newFunction
git merge &lt;span&gt;-s&lt;/span&gt; ours master 
git checkout master 
git merge newFunction
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;방법은 새로운 브렌치에 master를 ours로 머지해 버리고 maser에 다시 머지하는 방법입니다.&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;-s ours 는 &amp;mdash;strategy=ours 의 단축 된 표현 입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+7IaM7Iqk66W8IOq0gOumrCDtlZjri6TqsIAuLiBtYXN0ZXLqsIAgYnJhbmNo7JmAIOqwhOqy
qeydtCDrp47snbQg67KE65+s7KGM64qU642wLi48YnI+YnJhbmNo66W8IG1hc3RlcuuhnCDsjajs
lbwg7ZWgIOqyveyasCDsnoXri4jri6QuPC9wPjxwPmBgYGJhc2g8YnI+Z2l0IGNoZWNrb3V0IG5l
d0Z1bmN0aW9uPGJyPmdpdCBtZXJnZSAtcyBvdXJzIG1hc3RlciA8YnI+Z2l0IGNoZWNrb3V0IG1h
c3RlciA8YnI+Z2l0IG1lcmdlJm5ic3A7PHNwYW4gc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyIgZGF0
YS1tY2Utc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyI+bmV3RnVuY3Rpb248L3NwYW4+PGJyPjxzcGFu
IHN0eWxlPSJsZXR0ZXItc3BhY2luZzogMHB4OyI+YGBgPGJyPjxicj48L3NwYW4+PHNwYW4gc3R5
bGU9ImxldHRlci1zcGFjaW5nOiAwcHg7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImxldHRlci1zcGFj
aW5nOiAwcHg7Ij7rsKnrspXsnYAg7IOI66Gc7Jq0IOu4jOugjOy5mOyXkCBtYXN0ZXLrpbwgb3Vy
c+uhnCDrqLjsp4DtlbQg67KE66as6rOgIG1hc2Vy7JeQIOuLpOyLnCDrqLjsp4DtlZjripQg67Cp
67KV7J6F64uI64ukLjwvc3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyIg
ZGF0YS1tY2Utc3R5bGU9ImNvbG9yOiAjMzMzMzMzOyI+Jmd0OyZuYnNwOzwvc3Bhbj48c3BhbiBz
dHlsZT0iY29sb3I6ICMzMzMzMzM7IiBkYXRhLW1jZS1zdHlsZT0iY29sb3I6ICMzMzMzMzM7Ij4t
cyZuYnNwO291cnMmbmJzcDvripQgLS1zdHJhdGVneT1vdXJzIOydmCDri6jstpUg65CcIO2RnO2Y
hCDsnoXri4jri6QuPC9zcGFuPjwvcD4=&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터/소프트웨어</category>
      <category>branch</category>
      <category>git</category>
      <category>MASTER</category>
      <category>Merge</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/525</guid>
      <comments>https://gyuha.tistory.com/525#entry525comment</comments>
      <pubDate>Thu, 18 Apr 2019 14:22:46 +0900</pubDate>
    </item>
    <item>
      <title>bash에서 git 업데이트 체크 하기..</title>
      <link>https://gyuha.tistory.com/524</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;https://gyuha.tistory.com/manage/newpost/524?type=post&amp;amp;returnURL=CLOSEME&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;git에서 업데이트 된 내용이 있으면 받는 bash 스크립트 입니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; line-height: 1.2em; margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace; margin: 0px 0.15em; color: #dddddd; padding: 0.5em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block; overflow: auto; overflow-x: auto; background: #272822; text-size-adjust: none;&quot;&gt;changed=&lt;span&gt;0&lt;/span&gt; 
git remote update &amp;amp;&amp;amp; git status -uno | grep -q &lt;span style=&quot;color: #a6e22e;&quot;&gt;'Your branch is behind'&lt;/span&gt; &amp;amp;&amp;amp; changed=&lt;span&gt;1&lt;/span&gt; 

&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;if&lt;/span&gt; [ &lt;span&gt;$changed&lt;/span&gt; = &lt;span&gt;0&lt;/span&gt; ]; &lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;then&lt;/span&gt; 
  &lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;exit&lt;/span&gt; &lt;span&gt;0&lt;/span&gt; 
&lt;span style=&quot;color: #f92672; font-weight: bold;&quot;&gt;fi&lt;/span&gt; 
git pull 
&lt;span style=&quot;color: #75715e;&quot;&gt;# 실행 할 코드 들...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;주기적으로 업데이트가 있으면 pull을 받았으면 해서 찾아 봤습니다.&lt;/p&gt;
&lt;div style=&quot;height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;&quot; title=&quot;MDH:PHA+Z2l07JeQ7IScJm5ic3A77JeF642w7J207Yq4Jm5ic3A765CcJm5ic3A764K07Jqp7J20Jm5i
c3A77J6I7Jy866m0Jm5ic3A767Cb64qUJm5ic3A7YmFzaCZuYnNwO+yKpO2BrOumve2KuCZuYnNw
O+yeheuLiOuLpC4gPGJyPjxicj5gYGBiYXNoIDxicj5jaGFuZ2VkPTAgPGJyPmdpdCZuYnNwO3Jl
bW90ZSZuYnNwO3VwZGF0ZSZuYnNwOyZhbXA7JmFtcDsmbmJzcDtnaXQmbmJzcDtzdGF0dXMmbmJz
cDstdW5vJm5ic3A7fCZuYnNwO2dyZXAmbmJzcDstcSZuYnNwOydZb3VyJm5ic3A7YnJhbmNoJm5i
c3A7aXMmbmJzcDtiZWhpbmQnJm5ic3A7JmFtcDsmYW1wOyZuYnNwO2NoYW5nZWQ9MSA8YnI+PGJy
PmlmJm5ic3A7WyZuYnNwOyRjaGFuZ2VkJm5ic3A7PSZuYnNwOzAmbmJzcDtdOyZuYnNwO3RoZW4g
PGJyPiZuYnNwOyZuYnNwO2V4aXQmbmJzcDswIDxicj5maSA8YnI+Z2l0Jm5ic3A7cHVsbCA8YnI+
IyZuYnNwO+yLpO2WiSZuYnNwO+2VoCZuYnNwO+y9lOuTnCZuYnNwO+uTpC4uLiA8YnI+YGBgIDxi
cj48YnI+7KO86riw7KCB7Jy866GcJm5ic3A77JeF642w7J207Yq46rCAJm5ic3A77J6I7Jy866m0
Jm5ic3A7cHVsbOydhCZuYnNwO+uwm+yVmOycvOuptCZuYnNwO+2VtOyEnCZuYnNwO+ywvuyVhCZu
YnNwO+u0pOyKteuLiOuLpC4gPGJyPjxicj48L3A+&quot;&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터/Linux</category>
      <category>bash</category>
      <category>git</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/524</guid>
      <comments>https://gyuha.tistory.com/524#entry524comment</comments>
      <pubDate>Wed, 10 Apr 2019 17:47:56 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 현재 Typescript 파일 디버깅...</title>
      <link>https://gyuha.tistory.com/523</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;http://gyuha.tistory.com/admin/entry/post/?type=post&amp;amp;returnURL=/manage/posts/&quot; style=&quot;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;먼저 node_modules에 ts-node와 typscript를 추가해 준다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; background: rgb(39, 40, 34); text-size-adjust: none;color: rgb(221, 221, 221);&quot;&gt;$ npm install --save-dev ts-node typescript
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;.vscode/launch.json&lt;/code&gt; 파일에 아래와 같이 추가..&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; background: rgb(39, 40, 34); text-size-adjust: none;color: rgb(221, 221, 221);&quot;&gt;{
  &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;version&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;0.2.0&quot;&lt;/span&gt;,
  &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;configurations&quot;&lt;/span&gt;: [
    {
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;Debug Current ts file&quot;&lt;/span&gt;,
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;type&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;node&quot;&lt;/span&gt;,
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;request&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;launch&quot;&lt;/span&gt;,
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;program&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;${workspaceRoot}/node_modules/ts-node/dist/bin.js&quot;&lt;/span&gt;,
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;args&quot;&lt;/span&gt;: [&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;${relativeFile}&quot;&lt;/span&gt;],
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;cwd&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;${workspaceRoot}&quot;&lt;/span&gt;,
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;protocol&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;inspector&quot;&lt;/span&gt;,
      &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;env&quot;&lt;/span&gt;: {
        &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;stage&quot;&lt;/span&gt;: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;&quot;debug&quot;&lt;/span&gt;
      }
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;div title=&quot;MDH:PHA+66i87KCAIG5vZGVfbW9kdWxlc+yXkCB0cy1ub2Rl7JmAIHR5cHNjcmlwdOulvCDstpTqsIDt
lbQg7KSA64ukLjwvcD48cD48YnI+PC9wPjxwPmBgYGJhc2gmbmJzcDs8L3A+PHA+JCBucG0gaW5z
dGFsbCAtLXNhdmUtZGV2IHRzLW5vZGUgdHlwZXNjcmlwdDwvcD48cD5gYGA8L3A+PHA+PGJyPjwv
cD48cD5gLnZzY29kZS9sYXVuY2guanNvbmAg7YyM7J287JeQIOyVhOuemOyZgCDqsJnsnbQg7LaU
6rCALi48L3A+PHA+PGJyPjwvcD48cD5gYGBqYXZhc2NyaXB0PC9wPjxwPns8L3A+PHA+Jm5ic3A7
ICJ2ZXJzaW9uIjogIjAuMi4wIiw8L3A+PHA+Jm5ic3A7ICJjb25maWd1cmF0aW9ucyI6IFs8L3A+
PHA+Jm5ic3A7ICZuYnNwOyB7PC9wPjxwPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICJuYW1lIjogIkRl
YnVnIEN1cnJlbnQgdHMgZmlsZSIsPC9wPjxwPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICJ0eXBlIjog
Im5vZGUiLDwvcD48cD4mbmJzcDsgJm5ic3A7ICZuYnNwOyAicmVxdWVzdCI6ICJsYXVuY2giLDwv
cD48cD4mbmJzcDsgJm5ic3A7ICZuYnNwOyAicHJvZ3JhbSI6ICIke3dvcmtzcGFjZVJvb3R9L25v
ZGVfbW9kdWxlcy90cy1ub2RlL2Rpc3QvYmluLmpzIiw8L3A+PHA+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgImFyZ3MiOiBbIiR7cmVsYXRpdmVGaWxlfSJdLDwvcD48cD4mbmJzcDsgJm5ic3A7ICZuYnNw
OyAiY3dkIjogIiR7d29ya3NwYWNlUm9vdH0iLDwvcD48cD4mbmJzcDsgJm5ic3A7ICZuYnNwOyAi
cHJvdG9jb2wiOiAiaW5zcGVjdG9yIiw8L3A+PHA+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgImVudiI6
IHs8L3A+PHA+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICJzdGFnZSI6ICJkZWJ1ZyI8L3A+
PHA+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfTwvcD48cD4mbmJzcDsgJm5ic3A7IH08L3A+PHA+Jm5i
c3A7IF08L3A+PHA+fTwvcD48ZGl2PmBgYDwvZGl2PjxwPjxicj48L3A+&quot; style=&quot;height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;&quot;&gt;​&lt;/div&gt;&lt;/div&gt;</description>
      <category>Programming/Node.js</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/523</guid>
      <comments>https://gyuha.tistory.com/523#entry523comment</comments>
      <pubDate>Tue, 12 Mar 2019 18:42:02 +0900</pubDate>
    </item>
    <item>
      <title>Node.js에서 euc-kr 인코딩 하기...</title>
      <link>https://gyuha.tistory.com/522</link>
      <description>&lt;div class=&quot;markdown-here-wrapper&quot; data-md-url=&quot;http://gyuha.tistory.com/admin/entry/post/?id=522&amp;amp;type=post&amp;amp;returnURL=https%3A%2F%2Fgyuha.tistory.com%2F522&quot; style=&quot;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;node에서 어쩌다 보니.. euc-kr을 인코딩 디코딩 할 일이 생겨서 해 보고 고생한 김에.. 메모를 남긴다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;우선 iconv-lite 패키지를 설치해야 한다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; background: rgb(39, 40, 34); text-size-adjust: none;color: rgb(221, 221, 221);&quot;&gt;$ npm install iconv-lite
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;아래는 euc-kr인 문서를 읽어서 utf-8로 바꾸고 euc-kr로 바꾸는 예제이다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-typescript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; background: rgb(39, 40, 34); text-size-adjust: none;color: rgb(221, 221, 221);&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;let&lt;/span&gt; iconv = &lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'iconv-lite'&lt;/span&gt;);
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;let&lt;/span&gt; fs = &lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'fs'&lt;/span&gt;);

&lt;span class=&quot;hljs-comment&quot; style=&quot;color: rgb(117, 113, 94);&quot;&gt;// 처음 로딩시 enc-kr 파일&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;let&lt;/span&gt; content = fs.readFileSync(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'content-kr.txt'&lt;/span&gt;);
&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;console&lt;/span&gt;.log(content.toString());

&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;let&lt;/span&gt; utf8Str = iconv.decode(content, &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'euc-kr'&lt;/span&gt;);
&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;console&lt;/span&gt;.log(utf8Str);
&lt;span class=&quot;hljs-comment&quot; style=&quot;color: rgb(117, 113, 94);&quot;&gt;// utf-8 text로 저장&lt;/span&gt;
fs.writeFileSync(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'content-utf-8.txt'&lt;/span&gt;, utf8Str, { encoding: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'utf8'&lt;/span&gt; });

&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;let&lt;/span&gt; euckrStr = iconv.encode(utf8Str, &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'euc-kr'&lt;/span&gt;);
&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;console&lt;/span&gt;.log(euckrStr.toString());
&lt;span class=&quot;hljs-comment&quot; style=&quot;color: rgb(117, 113, 94);&quot;&gt;// euc-kr text로 저장&lt;/span&gt;
fs.writeFileSync(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'content-euc-kr.txt'&lt;/span&gt;, content, {encoding: &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'binary'&lt;/span&gt;});
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;iconv-lite는 utf-8기준으로 인코딩/디코딩을 하는 라이브러리다.&lt;br /&gt;그래서 euc-kr문서를 utf-8로 바꿀려고 하면..&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;decode&lt;/code&gt; =&amp;gt; &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;euc-kr&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;utf-8을 euc-kr로 바꿀려고 하면,&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;encode&lt;/code&gt; =&amp;gt; &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;euc-kr&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;-_-;; 모두 euc-kr을 써서 혼동 스러웠는데… utf-8을 기준으로 동작하는 거니..&lt;br /&gt;어떻게 생각하면 편한거 같기도 하고..&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그럼 끝…&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;-&quot; style=&quot;margin: 1.3em 0px 1em; padding: 0px; font-weight: bold; font-family: NanumGothic, &amp;quot;Malgun Gothic&amp;quot;, Consolas, Inconsolata, Courier, monospace;font-size: 1.6em; border-bottom: 1px solid rgb(238, 238, 238);&quot;&gt;추가&lt;/h2&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;loverace&lt;/code&gt;님의 댓글을 보고 글을 수정하기 위해서 테스트를 진행해 봤습니다.&lt;br /&gt;먼저 iconv-lite로 디코딩된 문자열이 utf-16으로 저장이 되나 해서 저장을 해 봤습니다.&lt;/p&gt;
&lt;blockquote style=&quot;margin: 1.2em 0px;border-left: 4px solid rgb(221, 221, 221); padding: 0px 1em; color: rgb(119, 119, 119); quotes: none;&quot;&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;fs.writeFileSync(‘파일명.txt’, utf8Str, { encoding: ‘ucs2 });&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;그런데 알 수 없는 문자열로 저장이 되었습니다.&lt;br /&gt;그래서, 뭔가 잘 못 하나 싶어서.. 이것저것 확인을 진행 해 봤습니다.&lt;br /&gt;그러다 문자열이 인코딩된 형태를 확인하는 &lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;detect-character-encoding&lt;/code&gt; 패키지를 발견 했습니다.&lt;br /&gt;패키지를 설치하고 &lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-bash&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; background: rgb(39, 40, 34); text-size-adjust: none;color: rgb(221, 221, 221);&quot;&gt;$ npm install detect-character-encoding
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;테스트 코드를 아래와 같이 작성했습니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code class=&quot;hljs language-javascript&quot; style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;display: block; overflow-x: auto; padding: 0.5em; background: rgb(39, 40, 34); text-size-adjust: none;color: rgb(221, 221, 221);&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;const&lt;/span&gt; detectCharacterEncoding = &lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'detect-character-encoding'&lt;/span&gt;);
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;const&lt;/span&gt; fs = &lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'fs'&lt;/span&gt;);
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;const&lt;/span&gt; iconv = &lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'iconv-lite'&lt;/span&gt;);

&lt;span class=&quot;hljs-comment&quot; style=&quot;color: rgb(117, 113, 94);&quot;&gt;// 처음 로딩시 enc-kr 파일&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;const&lt;/span&gt; content = fs.readFileSync(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'content-kr.txt'&lt;/span&gt;);
&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;console&lt;/span&gt;.log(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'content'&lt;/span&gt;, detectCharacterEncoding(content));

&lt;span class=&quot;hljs-comment&quot; style=&quot;color: rgb(117, 113, 94);&quot;&gt;// euc-kr을 utf-8로 변환&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;const&lt;/span&gt; utf8 = iconv.decode(content, &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'euc-kr'&lt;/span&gt;);
&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;console&lt;/span&gt;.log(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'euc-kr =&amp;gt; utf8'&lt;/span&gt;, detectCharacterEncoding(Buffer.from(utf8)));

&lt;span class=&quot;hljs-comment&quot; style=&quot;color: rgb(117, 113, 94);&quot;&gt;// utf-8을 enc-kr로 변환&lt;/span&gt;
&lt;span class=&quot;hljs-keyword&quot; style=&quot;color: rgb(249, 38, 114);font-weight: bold;&quot;&gt;const&lt;/span&gt; euckr = iconv.encode(utf8, &lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'euc-kr'&lt;/span&gt;);
&lt;span class=&quot;hljs-built_in&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;console&lt;/span&gt;.log(&lt;span class=&quot;hljs-string&quot; style=&quot;color: rgb(166, 226, 46);&quot;&gt;'utf8 =&amp;gt; euckr'&lt;/span&gt;, detectCharacterEncoding(Buffer.from(euckr)));
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;나온 결과 같은 아래와 같았습니다.&lt;/p&gt;
&lt;pre style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;&quot;&gt;content { encoding: 'EUC-KR', confidence: 100 }
euc-kr =&amp;gt; utf8 { encoding: 'UTF-8', confidence: 100 }
utf8 =&amp;gt; euckr { encoding: 'EUC-KR', confidence: 100 }
&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;아무래도.. iconv-lite로 디코딩 한 문자열은 자바스크립트 문자열이 아닌 utf-8로 나오나 봅니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;&lt;code style=&quot;font-size: 1em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; color: rgb(34, 34, 34); padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;&quot;&gt;loverace&lt;/code&gt;님 소중한 댓글 감사드립니다.&lt;br /&gt;덕분에 iconv-lite를 좀 더 명확히 알 수 있었습니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 1.2em !important;&quot;&gt;추가로, detect-character-encoding 패키지는 리눅스 또는 MacOS에서만 실행이 가능 합니다. ^^*&lt;/p&gt;
&lt;div title=&quot;MDH:PHA+bm9kZeyXkOyEnCDslrTsqYzri6Qg67O064uILi4gZXVjLWty7J2EIOyduOy9lOuUqSDrlJTs
vZTrlKkg7ZWgIOydvOydtCDsg53qsqjshJwg7ZW0IOuztOqzoCDqs6Dsg53tlZwg6rmA7JeQLi4g
66mU66qo66W8IOuCqOq4tOuLpC48L3A+PHA+PGJyPjwvcD48cD7smrDshKAgaWNvbnYtbGl0ZSDt
jKjtgqTsp4Drpbwg7ISk7LmY7ZW07JW8IO2VnOuLpC48L3A+PHA+YGBgYmFzaDwvcD48cD4kIG5w
bSBpbnN0YWxsIGljb252LWxpdGU8L3A+PHA+YGBgPC9wPjxwPuyVhOuemOuKlCBldWMta3Lsnbgg
66y47ISc66W8IOydveyWtOyEnCB1dGYtOOuhnCDrsJTqvrjqs6AgZXVjLWty66GcIOuwlOq+uOuK
lCDsmIjsoJzsnbTri6QuPC9wPjxwPjxicj48L3A+PHA+YGBgdHlwZXNjcmlwdDwvcD48cD5sZXQg
aWNvbnYgPSByZXF1aXJlKCdpY29udi1saXRlJyk7PC9wPjxwPmxldCBmcyA9IHJlcXVpcmUoJ2Zz
Jyk7PC9wPjxwPjxicj48L3A+PHA+Ly8g7LKY7J2MIOuhnOuUqeyLnCBlbmMta3Ig7YyM7J28PC9w
PjxwPmxldCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKCdjb250ZW50LWtyLnR4dCcpOzwvcD48
cD5jb25zb2xlLmxvZyhjb250ZW50LnRvU3RyaW5nKCkpOzwvcD48cD48YnI+PC9wPjxwPmxldCB1
dGY4U3RyID0gaWNvbnYuZGVjb2RlKGNvbnRlbnQsICdldWMta3InKTs8L3A+PHA+Y29uc29sZS5s
b2codXRmOFN0cik7PC9wPjxwPi8vIHV0Zi04IHRleHTroZwg7KCA7J6lPC9wPjxwPmZzLndyaXRl
RmlsZVN5bmMoJ2NvbnRlbnQtdXRmLTgudHh0JywgdXRmOFN0ciwgeyBlbmNvZGluZzogJ3V0Zjgn
IH0pOzwvcD48cD48YnI+PC9wPjxwPmxldCBldWNrclN0ciA9IGljb252LmVuY29kZSh1dGY4U3Ry
LCAnZXVjLWtyJyk7PC9wPjxwPmNvbnNvbGUubG9nKGV1Y2tyU3RyLnRvU3RyaW5nKCkpOzwvcD48
cD4vLyBldWMta3IgdGV4dOuhnCDsoIDsnqU8L3A+PHA+ZnMud3JpdGVGaWxlU3luYygnY29udGVu
dC1ldWMta3IudHh0JywgY29udGVudCwge2VuY29kaW5nOiAnYmluYXJ5J30pOzwvcD48ZGl2PmBg
YDwvZGl2PjxwPmljb252LWxpdGXripQgdXRmLTjquLDspIDsnLzroZwg7J247L2U65SpL+uUlOy9
lOuUqeydhCDtlZjripQg65287J2067iM65+s66as64ukLjwvcD48cD7qt7jrnpjshJwgZXVjLWty
66y47ISc66W8IHV0Zi0466GcIOuwlOq/gOugpOqzoCDtlZjrqbQuLjwvcD48cD48YnI+PC9wPjxw
PmBkZWNvZGVgID0mZ3Q7IGBldWMta3JgPC9wPjxwPjxicj48L3A+PHA+dXRmLTjsnYQgZXVjLWty
66GcIOuwlOq/gOugpOqzoCDtlZjrqbQsPC9wPjxwPjxicj48L3A+PHA+YGVuY29kZWAgPSZndDsg
YGV1Yy1rcmA8L3A+PHA+PGJyPjwvcD48cD4tXy07OyDrqqjrkZAgZXVjLWty7J2EIOyNqOyEnCDt
mLzrj5kg7Iqk65+s7Jug64qU642wLi4uIHV0Zi047J2EIOq4sOykgOycvOuhnCDrj5nsnpHtlZjr
ipQg6rGw64uILi48L3A+PHA+7Ja065a76rKMIOyDneqwge2VmOuptCDtjrjtlZzqsbAg6rCZ6riw
64+EIO2VmOqzoC4uPC9wPjxwPjxicj48L3A+PHA+6re465+8IOuBnS4uLjwvcD48cD48YnI+PC9w
PjxwPi0tLS08L3A+PHA+IyMg7LaU6rCAJm5ic3A7PC9wPjxwPmBsb3ZlcmFjZWDri5jsnZgg64yT
6riA7J2EIOuztOqzoCDquIDsnYQg7IiY7KCV7ZWY6riwIOychO2VtOyEnCDthYzsiqTtirjrpbwg
7KeE7ZaJ7ZW0IOu0pOyKteuLiOuLpC48L3A+PHA+66i87KCAIGljb252LWxpdGXroZwg65SU7L2U
65Sp65CcIOusuOyekOyXtOydtCB1dGYtMTbsnLzroZwg7KCA7J6l7J20IOuQmOuCmCDtlbTshJwg
7KCA7J6l7J2EIO2VtCDrtKTsirXri4jri6QuPC9wPjxwPjxicj48L3A+PHA+Jmd0OyBmcy53cml0
ZUZpbGVTeW5jKCftjIzsnbzrqoUudHh0JywgdXRmOFN0ciwgeyBlbmNvZGluZzogJ3VjczIgfSk7
PC9wPjxwPjxicj48L3A+PHA+6re465+w642wIOyVjCDsiJgg7JeG64qUIOusuOyekOyXtOuhnCDs
oIDsnqXsnbQg65CY7JeI7Iq164uI64ukLjwvcD48cD7qt7jrnpjshJwsIOutlOqwgCDsnpgg66q7
IO2VmOuCmCDsi7bslrTshJwuLiDsnbTqsoPsoIDqsoMg7ZmV7J247J2EIOynhO2WiSDtlbQg67Sk
7Iq164uI64ukLjwvcD48cD7qt7jrn6zri6Qg66y47J6Q7Je07J20IOyduOy9lOuUqeuQnCDtmJXt
g5zrpbwg7ZmV7J247ZWY64qUIGA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0
NywgMjQ3LCAyNDcpOyBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IGZvbnQtc2l6
ZTogMTZweDsgd2hpdGUtc3BhY2U6IHByZTsiPmRldGVjdC1jaGFyYWN0ZXItZW5jb2RpbmdgIDwv
c3Bhbj7tjKjtgqTsp4Drpbwg67Cc6rKsIO2WiOyKteuLiOuLpC48L3A+PHA+7Yyo7YKk7KeA66W8
IOyEpOy5mO2VmOqzoCZuYnNwOzwvcD48cD5gYGBiYXNoPC9wPjxwPjxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTZweDsgd2hpdGUtc3Bh
Y2U6IHByZTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0NywgMjQ3LCAyNDcpOyI+JCBucG0gaW5z
dGFsbCBkZXRlY3QtY2hhcmFjdGVyLWVuY29kaW5nPC9zcGFuPjwvcD48cD48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyBmb250LXNpemU6IDE2cHg7IHdoaXRl
LXNwYWNlOiBwcmU7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcsIDI0NywgMjQ3KTsiPmBgYDwv
c3Bhbj48L3A+PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFj
ZTsgZm9udC1zaXplOiAxNnB4OyB3aGl0ZS1zcGFjZTogcHJlOyBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMjQ3LCAyNDcsIDI0Nyk7Ij48YnI+PC9zcGFuPjwvcD48cD48Zm9udCBmYWNlPSJtb25vc3Bh
Y2UsIG1vbm9zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgd2hpdGUtc3BhY2U6
IHByZTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0NywgMjQ3LCAyNDcpOyI+7YWM7Iqk7Yq4IOy9
lOuTnOulvCDslYTrnpjsmYAg6rCZ7J20IOyekeyEse2WiOyKteuLiOuLpC48L3NwYW4+PC9mb250
PjwvcD48cD5gYGBqYXZhc2NyaXB0PC9wPjxwPmNvbnN0IGRldGVjdENoYXJhY3RlckVuY29kaW5n
ID0gcmVxdWlyZSgnZGV0ZWN0LWNoYXJhY3Rlci1lbmNvZGluZycpOzwvcD48cD5jb25zdCBmcyA9
IHJlcXVpcmUoJ2ZzJyk7PC9wPjxwPmNvbnN0IGljb252ID0gcmVxdWlyZSgnaWNvbnYtbGl0ZScp
OzwvcD48cD48YnI+PC9wPjxwPi8vIOyymOydjCDroZzrlKnsi5wgZW5jLWtyIO2MjOydvDwvcD48
cD5jb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKCdjb250ZW50LWtyLnR4dCcpOzwvcD48
cD5jb25zb2xlLmxvZygnY29udGVudCcsIGRldGVjdENoYXJhY3RlckVuY29kaW5nKGNvbnRlbnQp
KTs8L3A+PHA+PGJyPjwvcD48cD4vLyBldWMta3LsnYQgdXRmLTjroZwg67OA7ZmYPC9wPjxwPmNv
bnN0IHV0ZjggPSBpY29udi5kZWNvZGUoY29udGVudCwgJ2V1Yy1rcicpOzwvcD48cD5jb25zb2xl
LmxvZygnZXVjLWtyID0mZ3Q7IHV0ZjgnLCBkZXRlY3RDaGFyYWN0ZXJFbmNvZGluZyhCdWZmZXIu
ZnJvbSh1dGY4KSkpOzwvcD48cD48YnI+PC9wPjxwPi8vIHV0Zi047J2EIHVjczIodXRmLTE2bGUp
66GcIOuzgO2ZmDwvcD48cD5jb25zdCB1Y3MyID0gaWNvbnYuZW5jb2RlKHV0ZjgsICd1Y3MyJyk7
PC9wPjxwPmNvbnNvbGUubG9nKCd1dGY4ID0mZ3Q7IHVjczInLCBkZXRlY3RDaGFyYWN0ZXJFbmNv
ZGluZyhCdWZmZXIuZnJvbSh1Y3MyKSkpOzwvcD48cD48YnI+PC9wPjxwPi8vIHV0Zi047J2EIGVu
Yy1rcuuhnCDrs4DtmZg8L3A+PHA+Y29uc3QgZXVja3IgPSBpY29udi5lbmNvZGUodXRmOCwgJ2V1
Yy1rcicpOzwvcD48cD5jb25zb2xlLmxvZygndXRmOCA9Jmd0OyBldWNrcicsIGRldGVjdENoYXJh
Y3RlckVuY29kaW5nKEJ1ZmZlci5mcm9tKGV1Y2tyKSkpOzwvcD48ZGl2PmBgYDwvZGl2PjxwPuuC
mOyYqCDqsrDqs7wg6rCZ7J2AIOyVhOuemOyZgCDqsJnslZjsirXri4jri6QuPC9wPjxwPjxicj48
L3A+PHA+YGBgPC9wPjxwPmNvbnRlbnQgeyBlbmNvZGluZzogJ0VVQy1LUicsIGNvbmZpZGVuY2U6
IDEwMCB9PC9wPjxwPmV1Yy1rciA9Jmd0OyB1dGY4IHsgZW5jb2Rpbmc6ICdVVEYtOCcsIGNvbmZp
ZGVuY2U6IDEwMCB9PC9wPjxwPnV0ZjggPSZndDsgdWNzMiB7IGVuY29kaW5nOiAnVVRGLTE2TEUn
LCBjb25maWRlbmNlOiAxMDAgfTwvcD48cD51dGY4ID0mZ3Q7IGV1Y2tyIHsgZW5jb2Rpbmc6ICdF
VUMtS1InLCBjb25maWRlbmNlOiAxMDAgfTwvcD48cD5gYGA8L3A+PHA+7JWE66y0656Y64+ELi4g
aWNvbnYtbGl0ZeuhnCDrlJTsvZTrlKkg7ZWcIOusuOyekOyXtOydgCDsnpDrsJTsiqTtgazrpr3t
irgg66y47J6Q7Je07J20IOyVhOuLjCZuYnNwO3V0Zi0466GcIOuCmOyYpOuCmCDrtIXri4jri6Qu
PC9wPjxwPjxicj48L3A+PHA+YGxvdmVyYWNlYOuLmCDshozspJHtlZwg64yT6riAIOqwkOyCrOuT
nOumveuLiOuLpC48L3A+PHA+642V67aE7JeQIGljb252LWxpdGXrpbwg7KKAIOuNlCDrqoXtmZXt
nogg7JWMIOyImCDsnojsl4jsirXri4jri6QuPC9wPjxwPjxicj48L3A+PHA+7LaU6rCA66GcLCZu
YnNwOzxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ3LCAyNDcsIDI0Nyk7IGZv
bnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxNnB4OyB3aGl0ZS1z
cGFjZTogcHJlOyI+ZGV0ZWN0LWNoYXJhY3Rlci1lbmNvZGluZyDtjKjtgqTsp4DripQg66as64iF
7IqkIOuYkOuKlCBNYWNPU+yXkOyEnOunjCDsi6TtlonsnbQg6rCA64qlIO2VqeuLiOuLpC4gXl4q
PC9zcGFuPjwvcD4=&quot; style=&quot;height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;&quot;&gt;​&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Programming/Node.js</category>
      <category>decode</category>
      <category>encode</category>
      <category>EUC-KR</category>
      <category>node</category>
      <category>Text</category>
      <category>TypeScript</category>
      <category>UTF8</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/522</guid>
      <comments>https://gyuha.tistory.com/522#entry522comment</comments>
      <pubDate>Thu, 7 Mar 2019 21:16:40 +0900</pubDate>
    </item>
    <item>
      <title>VSCode에서 Live2d 캐릭터 띄우기..</title>
      <link>https://gyuha.tistory.com/521</link>
      <description>&lt;h1 id=&quot;vscode에서-live2d-캐릭터-띄우기&quot; style=&quot;box-sizing: border-box; margin: 20px 0px 10px; font-size: 36px; font-family: &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; line-height: normal; color: rgb(64, 64, 64); padding-top: 40px;&quot;&gt;&lt;br /&gt;&lt;/h1&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 24px; margin-right: 0px; margin-bottom: 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;먼저 띄운 화면을 보고 가시죠~&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;캐릭터 얼굴이 마우스 움직이는 방향으로 움직입니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;너무 귀엽죠?&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;img src=&quot;https://github.com/summerscar/vscode-live2d/raw/master/screenshot/test.gif&quot; alt=&quot;sample&quot; style=&quot;box-sizing: border-box; border: 0px; vertical-align: middle; display: block; margin: auto; max-width: 100%;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;그러면, 설치를 해 볼까요?&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;먼저, 확장프로그램에서 live2d를 검색해서 설치해 줍니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;그리고 재실행을 해주시면, 아무것도 안 나옵니다. -_-;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;img src=&quot;https://gyuha.github.io/img/vscode-live2d-01.png&quot; alt=&quot;live2d&quot; style=&quot;box-sizing: border-box; border: 0px; vertical-align: middle; display: block; margin: auto; max-width: 100%;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;F1&lt;/code&gt;&amp;nbsp;또는&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;Ctrl+Shit+P&lt;/code&gt;을 누르고&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;live2d install&lt;/code&gt;을 해 줍니다. 그리고 다시 VSCode를 실행 해 줍니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;그러면, 고양이가 왼쪽 하단에 나옵니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;img src=&quot;https://gyuha.github.io/img/vscode-live2d-02.png&quot; alt=&quot;live2d-3&quot; style=&quot;box-sizing: border-box; border: 0px; vertical-align: middle; display: block; margin: auto; max-width: 100%;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;그리고, 나오는 경고… 살포시 무시하기 위해서 고양이를 살짝 옮기시고, 기어 버튼을 누릅니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;img src=&quot;https://gyuha.github.io/img/vscode-live2d-03.png&quot; alt=&quot;live-2d&quot; style=&quot;box-sizing: border-box; border: 0px; vertical-align: middle; display: block; margin: auto; max-width: 100%;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;그리고 그만볼래(&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;Don't Show Again&lt;/code&gt;)을 눌러 줍니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;우리는 고양이에 만족 할 순 없으니.. 다른 캐릭터를 찾아 봅니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;a href=&quot;https://github.com/summerscar/live2dDemo&quot; style=&quot;box-sizing: border-box; background-color: transparent; color: rgb(0, 138, 255);&quot;&gt;https://github.com/summerscar/live2dDemo&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;위 주소를 이동해서 쭈욱 보시면서 캐릭터를 선택 해 주시면 됩니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;그리고, 그 캐릭터는 아래 주소에서 테스트 해 보시면 됩니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;a href=&quot;http://summerscar.me/live2dDemo/&quot; style=&quot;box-sizing: border-box; background-color: transparent; color: rgb(0, 138, 255);&quot;&gt;http://summerscar.me/live2dDemo/&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;img src=&quot;https://github.com/summerscar/live2dDemo/blob/master/screenshot/42.jpg?raw=true&quot; alt=&quot;test&quot; style=&quot;box-sizing: border-box; border: 0px; vertical-align: middle; display: block; margin: auto; max-width: 100%;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;전 위에 캐릭터를 이용해서 표시를 했습니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;설정하는 방법은 약간 귀찮습니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;File &amp;gt; Preferences &amp;gt; Settings&lt;/code&gt;를 선택 하거나&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;Ctrl+,&lt;/code&gt;으로 설정 화면을 들어 갑니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;Live2d를 검색 하시거나 직접 입력을 하시거나, 좌측 상단에&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;{}&lt;/code&gt;버튼을 누르셔서 코드를 넣어 주시면 됩니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;저 같은 경우는 위 기본 값에서 사이즈를 반으로 줄여서 넣어 봤습니다.&lt;/p&gt;&lt;div class=&quot;highlight&quot; style=&quot;box-sizing: border-box; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;pre class=&quot;chroma&quot; style=&quot;box-sizing: border-box; overflow: hidden; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 13px; padding: 0px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; overflow-wrap: break-word; background-color: rgb(245, 245, 245); border: none; border-radius: unset;&quot;&gt;&lt;code class=&quot;language-json hljs&quot; data-lang=&quot;json&quot; style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; padding: 9.5px; background: rgb(248, 248, 248); border-radius: 0px; display: block; overflow-x: auto;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nt&quot; style=&quot;box-sizing: border-box;&quot;&gt;&quot;&lt;span class=&quot;hljs-attribute&quot; style=&quot;box-sizing: border-box; color: rgb(0, 0, 128);&quot;&gt;live2d.width&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-value&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;box-sizing: border-box; color: rgb(0, 128, 128);&quot;&gt;150&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nt&quot; style=&quot;box-sizing: border-box;&quot;&gt;&quot;&lt;span class=&quot;hljs-attribute&quot; style=&quot;box-sizing: border-box; color: rgb(0, 0, 128);&quot;&gt;live2d.height&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-value&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;box-sizing: border-box; color: rgb(0, 128, 128);&quot;&gt;200&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nt&quot; style=&quot;box-sizing: border-box;&quot;&gt;&quot;&lt;span class=&quot;hljs-attribute&quot; style=&quot;box-sizing: border-box; color: rgb(0, 0, 128);&quot;&gt;live2d.model&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-value&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; color: rgb(221, 17, 68);&quot;&gt;&quot;33.2017.newyear&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nt&quot; style=&quot;box-sizing: border-box;&quot;&gt;&quot;&lt;span class=&quot;hljs-attribute&quot; style=&quot;box-sizing: border-box; color: rgb(0, 0, 128);&quot;&gt;live2d.headPos&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-value&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;box-sizing: border-box; color: rgb(0, 128, 128);&quot;&gt;0.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nt&quot; style=&quot;box-sizing: border-box;&quot;&gt;&quot;&lt;span class=&quot;hljs-attribute&quot; style=&quot;box-sizing: border-box; color: rgb(0, 0, 128);&quot;&gt;live2d.scale&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-value&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span class=&quot;hljs-number&quot; style=&quot;box-sizing: border-box; color: rgb(0, 128, 128);&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hljs-value&quot; style=&quot;box-sizing: border-box;&quot;&gt;   
&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;box-sizing: border-box;&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p style=&quot;box-sizing: border-box; margin: 6px 0px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;하지만, 수정한다고 해서 바로 적용 되지 않습니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;F1&lt;/code&gt;&amp;nbsp;또는&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;Ctrl+Shit+P&lt;/code&gt;을 다시 누르고&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;live2d uninstall&lt;/code&gt;을 하고 다시&amp;nbsp;&lt;code style=&quot;box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16.2px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;&quot;&gt;live2d install&lt;/code&gt;을 해 줘야 합니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;꼭!!! 지웠다가 다시 설치를 해야 적용이 됩니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;결과는 아래와 같습니다.&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;&lt;img src=&quot;https://gyuha.github.io/img/vscode-live2d-04.png&quot; alt=&quot;적용 화면&quot; style=&quot;box-sizing: border-box; border: 0px; vertical-align: middle; display: block; margin: auto; max-width: 100%;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin: 24px 0px 6px; line-height: 1.5; color: rgb(64, 64, 64); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 18px;&quot;&gt;참.. 이쁘죠? ㅎㅎㅎ&lt;/p&gt;</description>
      <category>Live2D</category>
      <category>vscode</category>
      <author>신규하</author>
      <guid isPermaLink="true">https://gyuha.tistory.com/521</guid>
      <comments>https://gyuha.tistory.com/521#entry521comment</comments>
      <pubDate>Wed, 23 Jan 2019 00:25:18 +0900</pubDate>
    </item>
  </channel>
</rss>