<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>몽구의 우당탕탕 개발 공부</title>
    <link>https://mong9data.tistory.com/</link>
    <description>소망보단 목표를, 생각보단 실천을</description>
    <language>ko</language>
    <pubDate>Sun, 7 Jun 2026 17:17:01 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>몽-구</managingEditor>
    <image>
      <title>몽구의 우당탕탕 개발 공부</title>
      <url>https://tistory1.daumcdn.net/tistory/3633415/attach/61280b97c1aa4eb998b926819b946e95</url>
      <link>https://mong9data.tistory.com</link>
    </image>
    <item>
      <title>[Dart] Dynamic Type</title>
      <link>https://mong9data.tistory.com/152</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;dart 언어에서는 javascript처럼 타입을 쓰지 않아도 돌아가게끔 되어 있다. 이렇게 정적 검사를 실행하지 않도록 강제하는 것을 dynamic type이라고 불리는데, 아래처럼 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;기본 사용법&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1672615450590&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() {
    var name1;
    dynamic name2;
    
    name1 = 'monggu';
    name2 = 12;
    name2 = true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;name1처럼 변수 앞에 var를 붙여 쓸 수 있다. IDE에서 name1 위에 마우스를 올려 보면 아래 사진에서 볼 수 있듯이 dynamic이라는 타입으로 표시되고 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 08.31.45.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WrTre/btrU7IKoCPs/8agX9JhgegwuoVQkrNquk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WrTre/btrU7IKoCPs/8agX9JhgegwuoVQkrNquk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WrTre/btrU7IKoCPs/8agX9JhgegwuoVQkrNquk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWrTre%2FbtrU7IKoCPs%2F8agX9JhgegwuoVQkrNquk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;171&quot; data-filename=&quot;스크린샷 2023-01-02 08.31.45.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;name2처럼 변수 앞에 dynamic을 붙여 써도 된다. 이 경우에도 dynamic 타입으로 표시된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;name1이나 name2에 할당한 것처럼 아무 타입의 변수든 할당할 수 있고, name2처럼 재할당할 수도 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;if문을 통해 특정 타입임을 확인시켜 준다면&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;기본적으로 dynamic 타입의 변수에는 지원되는 메서드가 굉장히 적은데, if문을 통해 특정 타입임을 확인시켜 주면 해당 타입에서 지원되는 메서드를 활용할 수 있도록 바뀐다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 08.40.22.png&quot; data-origin-width=&quot;272&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNoxU6/btrU8FGJxCc/j2w8HGl4dWjixZtDuPLj9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNoxU6/btrU8FGJxCc/j2w8HGl4dWjixZtDuPLj9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNoxU6/btrU8FGJxCc/j2w8HGl4dWjixZtDuPLj9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNoxU6%2FbtrU8FGJxCc%2Fj2w8HGl4dWjixZtDuPLj9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;302&quot; height=&quot;190&quot; data-filename=&quot;스크린샷 2023-01-02 08.40.22.png&quot; data-origin-width=&quot;272&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위 사진에서는 dynamic 타입에서 지원되는 메서드 모두를 보여주는데 보다시피 되는 게 없다. 그러나 if문을 통해 특정 타입임을 확인시켜 준다면 해당 타입에서 지원해주는 메서드를 활용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 08.42.02.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gqrfe/btrU15fmy4z/7aTNqLcXntIe6RolhR2vdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gqrfe/btrU15fmy4z/7aTNqLcXntIe6RolhR2vdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gqrfe/btrU15fmy4z/7aTNqLcXntIe6RolhR2vdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGqrfe%2FbtrU15fmy4z%2F7aTNqLcXntIe6RolhR2vdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;719&quot; data-filename=&quot;스크린샷 2023-01-02 08.42.02.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;719&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 08.42.43.png&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj6wFs/btrVcMyt6L0/q544D4hFTdAzctKNaaCimK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj6wFs/btrVcMyt6L0/q544D4hFTdAzctKNaaCimK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj6wFs/btrVcMyt6L0/q544D4hFTdAzctKNaaCimK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj6wFs%2FbtrVcMyt6L0%2Fq544D4hFTdAzctKNaaCimK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;573&quot; height=&quot;753&quot; data-filename=&quot;스크린샷 2023-01-02 08.42.43.png&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;어떨 때 쓸까?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;실제 코드에서는 dynamic 타입은 없어야 한다고 본다. 애초에 null safefy를 지원하고 타입이 있는 언어인데 dynamic같은 건 있어서 안 된다. 다만 개발 과정 중 다른 서버로부터 어떤 데이터를 받아야 하는데 데이터 타입을 모른다면 dynamic을 활용하여 데이터 타입을 확인할 수 있도록 도와주기 때문에, 이런 경우에는 쓸만하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;하지만 공식 문서에서는 보통 dynamic 대신에 Object나 Object?를 쓰는 것을 권장하고 있으며 노마드코더 dart 강의에서도 되도록 지양하자고 말한다. 그러니 정말 필요할 때만 쓰고, 목적을 달성했으면 Object이나 Object?, 혹은 특정 타입으로 변경하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;i&gt;참고 자료&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. &lt;a title=&quot;노마드코더 강의 - Dart 시작하기&quot; href=&quot;https://nomadcoders.co/dart-for-beginners&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;노마드코더 강의 - Dart 시작하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. &lt;a title=&quot;dart docs - built-in types&quot; href=&quot;https://dart.dev/guides/language/language-tour#built-in-types&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dart docs 중 'Built-in types'&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Dev/Dart</category>
      <category>dart</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/152</guid>
      <comments>https://mong9data.tistory.com/152#entry152comment</comments>
      <pubDate>Mon, 2 Jan 2023 08:49:55 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] 특정 문자열 들어있는 파일 찾기 (파일 내 특정 문자열 찾기)</title>
      <link>https://mong9data.tistory.com/151</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;결론부터 말하면, 만약 &quot;example-string&quot;&amp;nbsp;라는 문자열이 들어있는 파일을 찾고 싶다면 아래 명령어로 찾을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664356345800&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;find . -type f -print | xargs grep -i &quot;example-string&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를 들어보자!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;만약 내가 위치해있는 디렉토리에 아래와 같이 test1, test2, test3, test4, test5 파일이 있고, 각 파일의 내용은 아래 캡처와 같다고 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-28 17.59.47.png&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n01af/btrNhDDBy5p/UZcIf3QZDLm1gNm7ipVXT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n01af/btrNhDDBy5p/UZcIf3QZDLm1gNm7ipVXT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n01af/btrNhDDBy5p/UZcIf3QZDLm1gNm7ipVXT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn01af%2FbtrNhDDBy5p%2FUZcIf3QZDLm1gNm7ipVXT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;387&quot; height=&quot;535&quot; data-filename=&quot;스크린샷 2022-09-28 17.59.47.png&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&quot;world&quot;라는 문자열이 있는 파일을 찾아내고 싶은데, 파일이 이것보다 훨씬 많으면 하나하나 들어가서 확인하기가 번거롭다. 그럴 때 위에서 말한 명령어를 사용하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-28 18.00.51.png&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCqGAT/btrNhdyv2br/7JBbnJyOE0fLRFrWArddN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCqGAT/btrNhdyv2br/7JBbnJyOE0fLRFrWArddN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCqGAT/btrNhdyv2br/7JBbnJyOE0fLRFrWArddN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCqGAT%2FbtrNhdyv2br%2F7JBbnJyOE0fLRFrWArddN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;392&quot; height=&quot;86&quot; data-filename=&quot;스크린샷 2022-09-28 18.00.51.png&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;여기서 불편한 점 하나는, 찾고자 하는 단어가 하나의 파일에 여러 번 들어있으면 아래처럼 동일한 파일명과 그 라인이 여러 번 출력된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-09-28 18.02.29.png&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V2758/btrNhgBUshJ/A0WoJw0XUMOgHaDq3M7SJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V2758/btrNhgBUshJ/A0WoJw0XUMOgHaDq3M7SJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V2758/btrNhgBUshJ/A0WoJw0XUMOgHaDq3M7SJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV2758%2FbtrNhgBUshJ%2FA0WoJw0XUMOgHaDq3M7SJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;603&quot; data-filename=&quot;스크린샷 2022-09-28 18.02.29.png&quot; data-origin-width=&quot;390&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;만약 해당 단어가 위치한 라인은 보고 싶지 않고 어떤 파일인지 파일명만 궁금하다면 아래의 명령어를 활용해보자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664356041491&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;find . -type f -print | xargs grep -i &quot;world&quot; | cut -d ':' -f1 | cut -c 3- | uniq&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;스크린샷 2022-09-28 18.07.51.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;85&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/np8FX/btrNhuz48bf/E0h3uIvpGRbuXrXx7fHJd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/np8FX/btrNhuz48bf/E0h3uIvpGRbuXrXx7fHJd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/np8FX/btrNhuz48bf/E0h3uIvpGRbuXrXx7fHJd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnp8FX%2FbtrNhuz48bf%2FE0h3uIvpGRbuXrXx7fHJd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;85&quot; data-filename=&quot;스크린샷 2022-09-28 18.07.51.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;85&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 find 명령어는 현재 위치의 하위 디렉토리에 있는 모든 파일을 검사한다. 현재 디렉토리만 검사하고 싶다면 아래처럼 find 명령어 부분에 -maxdepth 1 옵션을 걸어주자.&lt;/p&gt;
&lt;pre id=&quot;code_1664356507837&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;find . -type f -print -maxdepth 1 | xargs grep -i &quot;world&quot; | cut -d ':' -f1 | cut -c 3- | uniq&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Dev/Linux</category>
      <category>find</category>
      <category>Linux</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/151</guid>
      <comments>https://mong9data.tistory.com/151#entry151comment</comments>
      <pubDate>Wed, 28 Sep 2022 18:11:47 +0900</pubDate>
    </item>
    <item>
      <title>[Vim] Vim 테마 적용하기 (feat. Vundle)</title>
      <link>https://mong9data.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Vim의 기본 테마는 여러모로 사용하기 불편한 점이 많습니다. 키워드 하이라이트도 안 되고, 라인 넘버도 보이지 않는 등 생산성을 저해하는 요소들이 너무 많죠. 본 글에서는 .vimrc를 통해 기본적으로 설정할 수 있는 옵션들을 적용해보고, 더 나아가 테마까지 적용하여 더욱 쓸만한 Vim 에디터를 만들어보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참고로, 본 글을 작성하며 이용한 개발 환경은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;macOS Monterey 12.4 (Apple M1 Pro)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;VIM&amp;nbsp;-&amp;nbsp;Vi&amp;nbsp;IMproved&amp;nbsp;8.2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;git 2.32.1&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. .vimrc를 통한 기본 옵션 설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Vim의 순정 상태는 검은 건 배경이요, 하얀 건 글자인 상태다. 아래 사진은 내 .zshrc 파일의 일부를 캡처한 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-19 07.37.23.png&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;973&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doAQ9y/btrHDb0ikp8/ppLczCG25HjtbTPvvYW9vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doAQ9y/btrHDb0ikp8/ppLczCG25HjtbTPvvYW9vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doAQ9y/btrHDb0ikp8/ppLczCG25HjtbTPvvYW9vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoAQ9y%2FbtrHDb0ikp8%2FppLczCG25HjtbTPvvYW9vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;924&quot; height=&quot;973&quot; data-filename=&quot;스크린샷 2022-07-19 07.37.23.png&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;973&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어느 것이 주석인지, 어떤 환경변수를 export하는지 눈에 잘 들어오지 않는다. 이 정도면 심미적인 이유를 떠나서 생산성이 너무 떨어진다. 하지만 다행히도 vim에서는 다양한 기본 옵션을 제공해주고 있어서 vim의 사용성을 높일 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;vim의 기본 옵션은 .vimrc 파일에서 조정할 수 있으며, 위치는 /Users/user에 있다. 아래 명령어를 통해 설정 파일을 열어보자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658269055505&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim ~/.vimrc&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아무런 설정을 하지 않았다면 파일 내용은 비어있는 게 정상이다. 나는 아래와 같은 설정을 주었다. 최대한 &lt;a title=&quot;vim document for vim options&quot; href=&quot;http://vimdoc.sourceforge.net/htmldoc/options.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;를 참고하여 옵션이 의미하는 바를 주석으로 적어냈는데, 아무래도 한 줄로 적다 보니 한계가 있다. 더 자세한 설명을 보고 싶다면 공식 문서를 참고하기를 바라며, 불필요한 설정들은 제거하고 적용하여도 무방하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://gist.github.com/Mong-Gu/d5d5e0c37666334fa5d8d404409e3308.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(티스토리에서 제공하는 코드블럭은 dot files에 대해 하이라이팅을 지원해주고 있지 않아서 가독성이 떨어진다. 그래서 gist를 만들고 삽입했다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위 기본 옵션을 적용한 후 .zshrc 파일을 다시 열어보면 아래처럼 나름대로 색깔도 구분되고, 여러모로 Vim 사용성도 더 증가하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-20 07.30.27.png&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;935&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbSYBQ/btrHHjkJdoe/MHoqZER6PibToKjerIPkw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbSYBQ/btrHHjkJdoe/MHoqZER6PibToKjerIPkw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbSYBQ/btrHHjkJdoe/MHoqZER6PibToKjerIPkw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbSYBQ%2FbtrHHjkJdoe%2FMHoqZER6PibToKjerIPkw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;818&quot; height=&quot;935&quot; data-filename=&quot;스크린샷 2022-07-20 07.30.27.png&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;935&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. Vundle을 활용한 테마 설치&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Vim은 기본 옵션을 주는 것 이외에도 &lt;a href=&quot;https://www.slant.co/topics/480/~best-vim-color-schemes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다양한 테마&lt;/a&gt;를 적용할 수 있다. 테마를 적용하는 방법은 여러 가지가 있겠지만, Vim의 플러그인 관리자 &lt;a title=&quot;github of vundle&quot; href=&quot;https://github.com/VundleVim/Vundle.vim&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vundle&lt;/a&gt;을 활용하는 방법에 대해 알아보자. 참고로 본 글에서는 Vundle에 대한 자세한 설명은 생략하고, 최소한의 필요한 사용법만 익히고 테마 설치에 집중할 예정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;우선 Vundle을 설치해보자. &lt;a href=&quot;https://github.com/VundleVim/Vundle.vim#quick-start&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vundle Quick Start&lt;/a&gt;를 참고하면 간단히 설치할 수 있다. 먼저, 아래 명령어를 통해 Vundle 레포지토리를 클론한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658270946417&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Vundle 설치 이후에는 Vundle을 활성화해줘야 한다. .vimrc 최상단에 아래 내용을 붙여 넣자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://gist.github.com/Mong-Gu/41c0985cd2fb826244177e42064d6a9e.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;여기까지 하면 Vundle 설치 및 세팅은 끝난 거다. 이제 테마를 설치해보자. 나는 무료 테마 중에 &lt;a title=&quot;github of gruvbox&quot; href=&quot;https://github.com/morhetz/gruvbox&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gruvbox&lt;/a&gt;를 적용했다. 위 .vimrc 파일에서 Plugin을 추가해주면 되는데 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Plugin 'VundleVim/Vundle.vim'&lt;/b&gt;&lt;/span&gt; 라는 내용 아래에, 아래 내용을 넣어주자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658273690628&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Plugin 'morhetz/gruvbox'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이후 Vim을 닫지 말고 명령모드에서 아래 문구를 입력하고, 엔터를 치자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658273730276&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;:PluginInstall&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;마지막으로, .vimrc 파일에 아래 문장을 삽입하자. 위치는 어디든 상관없지만, 나는 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;filetype plugin indent on&lt;/b&gt;&lt;/span&gt; 아래에 위치시켰다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658273911109&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;autocmd vimenter * ++nested colorscheme gruvbox&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그리고 Vim을 다시 실행시켜보자. 그러면 아래처럼 테마가 적용되어 있을 것이다!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;841&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qs0eU/btrHIIqSWqe/lztYi3P2sxkBrGowZU3GF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qs0eU/btrHIIqSWqe/lztYi3P2sxkBrGowZU3GF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qs0eU/btrHIIqSWqe/lztYi3P2sxkBrGowZU3GF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqs0eU%2FbtrHIIqSWqe%2FlztYi3P2sxkBrGowZU3GF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;731&quot; height=&quot;841&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;841&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 최종 .vimrc 내용&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;최종 .vimrc는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://gist.github.com/Mong-Gu/862f041dfa4e95499408d45f5f4f72d5.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. 마치며&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이 글에서는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Vim에서 제공하는 기본 옵션과 Vundle을 활용한 테마까지 적용해보며 Vim의 외관을 꾸며봤다. 특히 Vundle은 테마뿐만 아니고 다양한 플러그인을 지원해줘서 Vim 사용에 큰 도움을 주는데, 기회가 된다면 Vundle의 플러그인 추천글도 작성해볼까 한다. 이 글이 Vim을 커스터마이징하고자 했던 개발자들에게 도움이 되길 바라며 글을 마친다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Dev/환경 설정</category>
      <category>vim</category>
      <category>Vim 꾸미기</category>
      <category>Vim 커스터마이징</category>
      <category>Vim 테마</category>
      <category>vundle</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/150</guid>
      <comments>https://mong9data.tistory.com/150#entry150comment</comments>
      <pubDate>Thu, 21 Jul 2022 08:16:08 +0900</pubDate>
    </item>
    <item>
      <title>[MacOS] Macbook M1 터미널 세팅 및 커스터마이징</title>
      <link>https://mong9data.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 업무기기로 M1을 받았는데 터미널을 다시 세팅할 겸 본 글을 작성하게 되었습니다. 본 글에서는 아무것도 설치가 안 되어 있고, 아무것도 설정이 되어 있지 않은 순정의 맥북 상태에서부터 터미널을 세팅하고 커스터마이징할 수 있도록 필요한 정보를 설명합니다.&lt;br&gt;참고로, 본 글을 작성하며 이용한 개발 환경은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
 &lt;li&gt;macOS Monterey 12.4 (Apple M1 Pro)&lt;/li&gt;
 &lt;li&gt;iTerm2 3.4.16&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;터미널 세팅 및 커스터마이징&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본격적인 터미널 세팅에 앞서 먼저 iTerm2를 설치하자. 참고로 M1 대응은 알아서 되어 있어서 Apple Silicon용 버전같은 건 따로 선택할 필요가 없다. iTerm2 설치가 끝났다면 본격적으로 터미널을 세팅하고 커스터마이징해보자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. &lt;/b&gt;&lt;a href=&quot;https://ohmyz.sh/&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;&lt;b&gt;Oh My Zsh&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;b&gt; 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oh My Zsh는 심심한 zsh에 각종 테마를 설정할 수 있고, 생산성에 큰 도움을 주는 플러그인들을 제공한다. 설치 방법도 간단한데, 아래 명령어를 터미널에 붙여넣기만 하면 설치는 당연하고 새로운 테마 적용도 자동으로 된다.&lt;/p&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sh -c &quot;$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 위 명령어를 입력했는데 정상적으로 설치가 안 되면 공식 홈페이지의 &lt;a href=&quot;https://ohmyz.sh/#install&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;설치 페이지&lt;/span&gt;&lt;/a&gt;를 참고하자.&lt;br&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. &lt;/b&gt;&lt;a href=&quot;https://github.com/romkatv/powerlevel10k&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;&lt;b&gt;Powerlevel10k&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;b&gt; 테마 적용&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ohmyzsh/ohmyzsh/wiki/Themes&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Oh My Zsh의 공식 위키&lt;/span&gt;&lt;/a&gt;에서 다양한 테마를 만나볼 수 있는데, 나는 서드 파티 테마인 'Powerlevel10k'를 적용할 것이다. 맥북을 처음 쓸 때부터 써왔던 테마인데, 속도나 사용 편의성 측면에서 정말 훌륭한 테마라고 생각한다. 특히 GitHub의 브랜치나 Git status, 쿠버네티스의 context가 보이는 게 정말 편리하다. 그리고 무엇보다 이쁘다.&lt;br&gt;설치 방법은 다음과 같다.&lt;br&gt;(1) 터미널에 아래 명령어를 입력하자. 아무 디렉토리에서나 상관없다.&lt;/p&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; (2) 터미널에 아래 명령어를 입력하자. 이것 또한 아무 디렉토리에서나 상관없다.&lt;/p&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;exec zsh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3)&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sqwhh/btrHmfU7is5/7Kk6l13uYpQKXMFR7gKnWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sqwhh/btrHmfU7is5/7Kk6l13uYpQKXMFR7gKnWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sqwhh/btrHmfU7is5/7Kk6l13uYpQKXMFR7gKnWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSqwhh%2FbtrHmfU7is5%2F7Kk6l13uYpQKXMFR7gKnWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;692&quot; height=&quot;252&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;(여기까지 하면 위와 같이 configuration wizard가 실행되어야 정상이다. 혹, 설치에 어려움을 겪고 있다면 &lt;a href=&quot;https://github.com/romkatv/powerlevel10k#installation&quot; target=&quot;_self&quot;&gt;&lt;span&gt;공식 깃허브&lt;/span&gt;&lt;/a&gt;를 참고하여 설치하자)&lt;br&gt;작년까지만 해도 수동으로 Meslo 폰트를 설치하고 iTerm2에 폰트 적용하는 번거로움이 있었는데 그 불편함을 개선해줬다. 정말 좋은 것 같다. 아무튼, configuration wizard에서 해당 테마에 필요한 폰트를 깔아주고 iTerm2에 자동으로 적용해준다고 하니, &lt;b&gt;y를 눌러주자!&lt;/b&gt; 그 후에는 안내에 따라 iTerm2를 강제 종료하면 된다.&lt;br&gt;(4)&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HM1up/btrHiWJUCVP/OJErfiFFPvUdMohvwc3Km1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HM1up/btrHiWJUCVP/OJErfiFFPvUdMohvwc3Km1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HM1up/btrHiWJUCVP/OJErfiFFPvUdMohvwc3Km1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHM1up%2FbtrHiWJUCVP%2FOJErfiFFPvUdMohvwc3Km1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;282&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;iTerm2를 강제 종료 후 다시 실행시키면 또 configuration wizard가 보인다. 화면에 보이는 문자들이 어떻게 보이냐고 계속 묻는데, 보이는 대로 답해주면 된다. (유니코드 문자들이 깨지는지 확인하는 게 주목적이라고 생각하면 된다)&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQWK9M/btrHmgfqvTU/ENE3RYSvzqV5dGVQXK0kMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQWK9M/btrHmgfqvTU/ENE3RYSvzqV5dGVQXK0kMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQWK9M/btrHmgfqvTU/ENE3RYSvzqV5dGVQXK0kMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQWK9M%2FbtrHmgfqvTU%2FENE3RYSvzqV5dGVQXK0kMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;649&quot; height=&quot;370&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;계속해서, 디자인의 다양한 요소들의 style을 고르라고 하는데 본인이 마음에 드는 걸 선택해주면 된다. 참고로 나는 3-1-2-1-1-1-2-1-1-2-2-1-n-1-y 순서대로 입력했다.&lt;br&gt;(5) 정상적으로 테마 적용이 되었다면 아래와 같은 모습의 터미널이 보일 거다. 나와 다르게 설정했다면 설정한 옵션에 맞춰서 보일 거다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yMo3H/btrHulPJiyv/PjwHoQDjXVYtGUtOdfNUm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yMo3H/btrHulPJiyv/PjwHoQDjXVYtGUtOdfNUm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yMo3H/btrHulPJiyv/PjwHoQDjXVYtGUtOdfNUm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyMo3H%2FbtrHulPJiyv%2FPjwHoQDjXVYtGUtOdfNUm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;833&quot; height=&quot;183&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 data-ke-size=&quot;size23&quot;&gt; &lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. iTerm2 테마 적용&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;powerlevel10k 테마를 적용하면 너무 쨍한 원색이 눈에 거슬린다. iTerm2 테마를 적용하면 전체적으로 외관을 보기 좋게 해 주니 변경해보자. 설정 방법은 다음과 같다.&lt;br&gt;(1) &lt;a href=&quot;https://iterm2colorschemes.com/&quot; target=&quot;_blank&quot; title=&quot;iterm2 color theme&quot;&gt;&lt;span&gt;iterm2-color-schemes&lt;/span&gt;&lt;/a&gt; 사이트에 들어가서 마음에 드는 색상 조합을 선택한다. 참고로 나는 &lt;a href=&quot;https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/Wombat.itermcolors&quot; target=&quot;_blank&quot; title=&quot;Wombat's xml raw file&quot;&gt;&lt;span&gt;Wombat&lt;/span&gt;&lt;/a&gt;을 선택했다. 본인이 선택한 테마의 이름을 클릭하면 xml raw file이 열리는데, 해당 내용을 복사하여 로컬 환경의 적절한 곳에 파일로 저장하자.&lt;br&gt;(2) iTerm2를 실행시키고 Preferences - Profiles - Colors - Color Presets 순서대로 이동하자.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8HBC9/btrHtwqpnKC/EnwxobMuyHnbVJA3jYleBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8HBC9/btrHtwqpnKC/EnwxobMuyHnbVJA3jYleBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8HBC9/btrHtwqpnKC/EnwxobMuyHnbVJA3jYleBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8HBC9%2FbtrHtwqpnKC%2FEnwxobMuyHnbVJA3jYleBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;921&quot; height=&quot;479&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;(3) 그리고 Import를 눌러서 로컬 환경에 저장한 xml 파일을 불러오자. 아래 캡처는 이미 불러왔던 상태라 Wombat 테마가 존재하는데, Import 하여 xml 파일을 불러오면 아래 캡처처럼 불러온 테마가 생겨난다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj0USU/btrHqQwkRa4/wjjM1m6xFA41HJQE2XBs2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj0USU/btrHqQwkRa4/wjjM1m6xFA41HJQE2XBs2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj0USU/btrHqQwkRa4/wjjM1m6xFA41HJQE2XBs2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj0USU%2FbtrHqQwkRa4%2FwjjM1m6xFA41HJQE2XBs2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;927&quot; height=&quot;765&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;(4) 불러온 테마를 적용해보자! 쨍했던 원색보다는 훨씬 더 보기 좋은 것 같다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t4xV3/btrHAICSHbX/Rqg0Wy9VoOzapYRxVGBHHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t4xV3/btrHAICSHbX/Rqg0Wy9VoOzapYRxVGBHHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t4xV3/btrHAICSHbX/Rqg0Wy9VoOzapYRxVGBHHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft4xV3%2FbtrHAICSHbX%2FRqg0Wy9VoOzapYRxVGBHHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;824&quot; height=&quot;211&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 마치며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 글에서는 Macbook M1에서의 터미널 세팅 및 커스터마이징하는 방법에 대해 설명했다. 기능적인 부분보다는 외관에 초점을 두었는데, oh my zsh의 장점은 유용한 플러그인을 제공해준다는 점이다. 유용한 플러그인에 대한 정보 및 적용 방법은 추후 포스팅 예정이며, Macbook의 터미널을 커스터마이징하고자 했던 개발자들에게 본 글이 도움이 되었으면 좋겠다.&lt;/p&gt;</description>
      <category>Dev/MacOS</category>
      <category>macbook terminal</category>
      <category>terminal customizing</category>
      <category>맥북 터미널</category>
      <category>맥북 터미널 커스터마이징</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/149</guid>
      <comments>https://mong9data.tistory.com/149#entry149comment</comments>
      <pubDate>Tue, 19 Jul 2022 07:24:55 +0900</pubDate>
    </item>
    <item>
      <title>[iTerm2] iTerm2 한글 깨짐 현상 (자음/모음 분리 현상) 해결 방법</title>
      <link>https://mong9data.tistory.com/148</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;들어가며&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-15 07.19.14.png&quot; data-origin-width=&quot;273&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbmnUR/btrHiGHeLJ9/FNh0Mje4woX5EygvlEGdu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbmnUR/btrHiGHeLJ9/FNh0Mje4woX5EygvlEGdu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbmnUR/btrHiGHeLJ9/FNh0Mje4woX5EygvlEGdu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbmnUR%2FbtrHiGHeLJ9%2FFNh0Mje4woX5EygvlEGdu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;한글이 깨져서 나오는 터미널 화면&quot; loading=&quot;lazy&quot; width=&quot;437&quot; height=&quot;144&quot; data-filename=&quot;스크린샷 2022-07-15 07.19.14.png&quot; data-origin-width=&quot;273&quot; data-origin-height=&quot;90&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://iterm2.com/&quot;&gt;iTerm2&lt;/a&gt;를 처음 설치하고 사용해보면 위와 같이 한글의 자음과 모음이 분리되는 현상이 발생합니다. 본 글에서는 이러한 한글 깨짐 현상을 해결하는 방법에 대하여 설명합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참고로, 본 글을 작성하며 이용한 개발 환경은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;macOS Monterey 12.4 (Apple M1 Pro)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;iTerm2 3.4.16&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;본론&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. (iTerm2 실행 중인 상태에서 메뉴 막대에 있는) &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;iTerm2&lt;/b&gt;&lt;/span&gt;&amp;nbsp;클릭 - &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Preferences&lt;/b&gt;&lt;/span&gt;&amp;nbsp;클릭 (혹은 &lt;span style=&quot;color: #ef5369; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;⌘&lt;/b&gt;&lt;/span&gt; + &lt;span style=&quot;color: #ef5369; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-15 07.25.55.png&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9gJ8X/btrHlc5lIhj/FcqFAupSN12zELyZnhUn9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9gJ8X/btrHlc5lIhj/FcqFAupSN12zELyZnhUn9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9gJ8X/btrHlc5lIhj/FcqFAupSN12zELyZnhUn9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9gJ8X%2FbtrHlc5lIhj%2FFcqFAupSN12zELyZnhUn9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot; iterm2의 preferences를 클릭하는 모습&quot; loading=&quot;lazy&quot; width=&quot;290&quot; height=&quot;230&quot; data-filename=&quot;스크린샷 2022-07-15 07.25.55.png&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Profile&lt;/b&gt;&lt;/span&gt; 클릭 - &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Text&lt;/b&gt;&lt;/span&gt; 클릭 - &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Unicode normalization form&lt;/b&gt;&lt;/span&gt;을 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;NFC&lt;/b&gt;&lt;/span&gt;로 변경&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-07-15 07.39.37.png&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;481&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NtHYv/btrHiFn7ibv/63hAwJLPkJR38VPCPLTAo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NtHYv/btrHiFn7ibv/63hAwJLPkJR38VPCPLTAo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NtHYv/btrHiFn7ibv/63hAwJLPkJR38VPCPLTAo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNtHYv%2FbtrHiFn7ibv%2F63hAwJLPkJR38VPCPLTAo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot; iterm2의 unicode normalization form을 NFC로 변경한 모습&quot; loading=&quot;lazy&quot; width=&quot;942&quot; height=&quot;481&quot; data-filename=&quot;edited_스크린샷 2022-07-15 07.39.37.png&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;481&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. iTerm2에서 한글 깨짐 현상이 해결된 것을 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-15 07.43.00.png&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckyCgf/btrHiYnjrq3/EQ3HJ6jkEC6eZ8O7WEwkb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckyCgf/btrHiYnjrq3/EQ3HJ6jkEC6eZ8O7WEwkb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckyCgf/btrHiYnjrq3/EQ3HJ6jkEC6eZ8O7WEwkb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckyCgf%2FbtrHiYnjrq3%2FEQ3HJ6jkEC6eZ8O7WEwkb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;한글 깨짐 현상이 해결된 터미널 화면&quot; loading=&quot;lazy&quot; width=&quot;425&quot; height=&quot;160&quot; data-filename=&quot;스크린샷 2022-07-15 07.43.00.png&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev/기타</category>
      <category>iterm2</category>
      <category>iTerm2 한글 깨짐</category>
      <category>iTerm2 한글 자모 분리</category>
      <category>iTerm2 한글 자음 모음 분리</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/148</guid>
      <comments>https://mong9data.tistory.com/148#entry148comment</comments>
      <pubDate>Fri, 15 Jul 2022 07:44:40 +0900</pubDate>
    </item>
    <item>
      <title>[Nginx] Nginx 환경 설정 - (1) 배경 지식</title>
      <link>https://mong9data.tistory.com/147</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 환경 설정에 대한 기본 설명&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-mark=&quot;-&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Nginx 환경 설정 파일은 논리적으로 되어 있는 지시어(derectives) 목록&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;애플리케이션 전체가 지시어에서 부여하는 값에 의해 작동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Nginx는 모듈 구조로 작동하며, 각 모듈은 특정 지시어의 묶음 형태로 제공됨&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;가장 기본적인 지시어들은 Nginx 코어 모듈(Core module)에 포함되어 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 지시어 (directive)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2.1 simple directive&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;nbsp;worker_processes 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #ef5369; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;{이름} {값};&lt;/b&gt;&lt;/span&gt; 형식이며, 세미콜론으로 끝남&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2.2 block directive&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;nbsp;events {
&amp;nbsp; &amp;nbsp;worker_connections 1024;
&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;nbsp;http {
&amp;nbsp; &amp;nbsp;server {
&amp;nbsp; &amp;nbsp; &amp;nbsp;listen      80;
&amp;nbsp; &amp;nbsp; &amp;nbsp;server_name localhost;
&amp;nbsp;  }
&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-mark=&quot;-&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;simple directive를 블록(&lt;span style=&quot;color: #ef5369; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;{ }&lt;/b&gt;&lt;/span&gt;)으로 감싼 형태의 지시어&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;block directive 안에 다른 block directive를 포함할 수도 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2.3 include&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;nbsp;# mime.types 파일을 읽어들인다. (단일 파일을 include)
&amp;nbsp;include /etc/nginx/mime.types;
&amp;nbsp;​
&amp;nbsp;# /etc/nginx/conf.d 디렉토리 아래 있는 .conf 파일을 모두 읽어 들임 (특정 디렉토리의 모든 파일을 include)
&amp;nbsp;include /etc/nginx/conf.d/*.conf;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-mark=&quot;-&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;include 지시어는 특정 파일을 포함하는 기능을 수행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;단일 파일을 include 할 수도 있고, 정규표현식처럼 애스터리스크를 활용하여 특정 확장자를 가진 파일을 모두 include 할 수도 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참고 자료&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-mark=&quot;-&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://12bme.tistory.com/366&quot;&gt;[Nginx] 엔진엑스 기본 환경 설정&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://icarus8050.tistory.com/57&quot;&gt;[Nginx] Nginx 이해하기&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://gonna-be.tistory.com/20&quot;&gt;[NGINX] 꼭 알아야 할 configuration 기초 개념!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Dev/기타</category>
      <category>nginx</category>
      <category>Nginx 환경설정</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/147</guid>
      <comments>https://mong9data.tistory.com/147#entry147comment</comments>
      <pubDate>Sun, 3 Jul 2022 15:11:17 +0900</pubDate>
    </item>
    <item>
      <title>[Vim] 최소한의 Vim 단축키 cheatsheet</title>
      <link>https://mong9data.tistory.com/146</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;저는 주로 IntelliJ나 VS Code 등의 에디터를 사용하여 문서 편집을 하지만, 리눅스 서버에 직접 붙어서 Vim으로 문서를 편집할 일도 상당히 많습니다. 매일 같이 쓰는 Vim 단축키는 외우게 되었지만, 유용하지만 가끔씩 쓰는 단축키들은 자꾸만 잊게 되더라고요. 그래서 Vim 단축키 cheatsheet를 만들기로 결심했습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;물론 구글링해보면 이미 Vim 단축키 모음에 대한 글이 수도 없이 많은데, 대부분 제게는 너무 과한 정보를 전달해주고 있습니다. 가령 입력 가능한 상태로 변경하는 단축키만 해도 i, a, o, I, A, O 가 있는데 사실 저는 매번 a만 씁니다. 개인적으로 모든 걸 기억하고 매번 필요한 단축키를 쓰는 것보다, 무지성으로(?) a 쳐서 입력 가능한 상태로 바꾸고 수정해야 할 위치까지 방향키로 움직이는 게 편합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;본 글에서는 제가 필요한 수준으로만 정리를 해보려고 합니다. 너무 과한 수준으로 정보를 정리하면, 그건 정리하지 않은 것과 같다고 생각하거든요. 최대한 IntelliJ나 VS Code에서 많이 쓰는 기능들, 모르면 불편할 기능들 위주로 정리해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;글 읽으실 때 참고할 만한 부분은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아래 정리한 단축키들은 모두 일반모드(=명령모드)에서부터 시작하면 됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아울러 중괄호로 감싼 것들은 사용자가 가변적으로 조정할 수 있는 값입니다. 가령, 이동 기능에서 '해당 라인으로 이동'하는 단축키에서 중괄호가 등장하는데, 56번째 라인으로 이동하고자 한다면 표준모드에서 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;:56&lt;/b&gt;&lt;/span&gt; 이라고 입력하고 엔터치면 된다는 말입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;편집 기능&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;입력 모드로 변경&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;a&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 문자의 뒤에서 입력 모드로 변경&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;취소하기/되돌리기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;u&lt;/b&gt;&lt;/span&gt; : 이전 명령 취소 (undo)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt; : 취소한 것을 다시 되돌리기 (redo)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;들여쓰기/내어쓰기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;shift + &amp;gt;&amp;gt;&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 문장 들여쓰기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;{숫자} + shift + &amp;gt;&amp;gt;&lt;/b&gt;&lt;/span&gt; : 현재 커서 기준으로 {숫자}개의 행만큼 들여쓰기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;shift + &amp;gt;}&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 문장을 포함한 문단 전체 들여쓰기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;shift + &amp;lt;&amp;lt;&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 문장 내어쓰기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;{숫자} + shift + &amp;lt;&amp;lt;&lt;/b&gt;&lt;/span&gt; : 현재 커서 기준으로 {숫자}개의 행만큼 내어쓰기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;shift + &amp;lt;}&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 문장을 포함한 문단 전체 내어쓰기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;삭제/잘라내기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;dd&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 줄 잘라내기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;{숫자} + dd&lt;/b&gt;&lt;/span&gt; : 현재 커서 기준으로 {숫자}개의 행만큼 줄 잘라내기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;복사/붙여넣기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;yy&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 줄 복사하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;{숫자} + yy&lt;/b&gt;&lt;/span&gt; : 현재 커서 기준으로 {숫자}개의 행만큼 줄 복사하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;p&lt;/b&gt;&lt;/span&gt; : 현재 커서가 위치한 줄 바로 아랫줄에 복사하거나 잘라낸 문장 붙여넣기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;검색/대체 기능&lt;/span&gt;&lt;/b&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;/{검색할 문자열}&lt;/b&gt;&lt;/span&gt; : 문서에서 찾고자 하는 문자열을 오른쪽 아래 방향으로 검색&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;n&lt;/b&gt;&lt;/span&gt; : 다음 찾기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;N&lt;/b&gt;&lt;/span&gt; : 이전 찾기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;:%/{기존 문자열}/{대체할 문자열}/g&lt;/b&gt;&lt;/span&gt; : 문서 전체에서 기존 문자열을 대체할 문자열로 전부 대체&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;이동 기능&lt;/b&gt;&lt;/span&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;^ &lt;/b&gt;&lt;/span&gt;: 현재 커서가 위치한 문장에서 맨&amp;nbsp;앞으로&amp;nbsp;커서&amp;nbsp;이동&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;$ &lt;/b&gt;&lt;/span&gt;: 현재 커서가 위치한 문장에서 맨 뒤로 커서 이동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;:{이동하고자 하는 라인 번호}&lt;/b&gt;&lt;/span&gt;&amp;nbsp;: 문서 내 해당 라인으로 이동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;gg&lt;/b&gt;&lt;/span&gt; : 문서 최상단으로 이동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;G&lt;/b&gt;&lt;/span&gt; : 문서 최하단으로 이동&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;기타&lt;/b&gt;&lt;/span&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;:set nu&lt;/b&gt;&lt;/span&gt; : 라인 번호 표시 (라인 번호 표시 해제는 &lt;b&gt;:set nonu&lt;/b&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;gg=G&lt;/b&gt;&lt;/span&gt; : 문서 전체 자동 정렬&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;:vs&lt;/b&gt;&lt;/span&gt; : 현재 문서를 세로로 분할하여 탭 하나 더 열기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;ctrl+w 2번&lt;/b&gt;&lt;/span&gt; : 탭 간 이동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;v&lt;/b&gt;를 눌러 visual 모드로 전환 -&amp;gt; 방향키나 hjkl을 이용하여 블록 설정 후 &lt;b&gt;:&lt;/b&gt; 입력 -&amp;gt; &lt;b&gt;norm i#&lt;/b&gt;&lt;/span&gt; : 해당 블록 주석 처리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;v&lt;/b&gt;를 눌러 visual 모드로 전환 -&amp;gt; 방향키나 hjkl을 이용하여 블록 설정 후 &lt;b&gt;:&lt;/b&gt; 입력 -&amp;gt; &lt;b&gt;norm 1x&lt;/b&gt; &lt;/span&gt;: 해당 블록 주석 해제&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- &lt;a title=&quot;[Vim, Vi] 여러줄 주석 처리하기&quot; href=&quot;https://ddiri01.tistory.com/206&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Vim, Vi] 여러줄 주석 처리하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- &lt;a title=&quot;vi/vim 편집기 명령어 정리 (단축키 모음 / 목록)&quot; href=&quot;https://iamfreeman.tistory.com/entry/vi-vim-%ED%8E%B8%EC%A7%91%EA%B8%B0-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-%EB%8B%A8%EC%B6%95%ED%82%A4-%EB%AA%A8%EC%9D%8C-%EB%AA%A9%EB%A1%9D&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;vi/vim 편집기 명령어 정리 (단축키 모음 / 목록)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- &lt;a title=&quot;[VIM] vim 유용한 단축키 정리&quot; href=&quot;https://gmlwjd9405.github.io/2019/05/14/vim-shortkey.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[VIM]&amp;nbsp;vim&amp;nbsp;유용한&amp;nbsp;단축키&amp;nbsp;정리&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Dev/기타</category>
      <category>vim</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/146</guid>
      <comments>https://mong9data.tistory.com/146#entry146comment</comments>
      <pubDate>Sat, 4 Jun 2022 18:06:06 +0900</pubDate>
    </item>
    <item>
      <title>ngrok을 활용한 손쉬운 개발 공유</title>
      <link>https://mong9data.tistory.com/145</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;ngrok은 NAT 및 방화벽 뒤에 있는 로컬 서버를 보안 터널을 통해 외부로 공유하는 도구입니다. 쉽게 말해, 외부에서도 localhost에서 실행되고 있는 애플리케이션에 접근할 수 있게 하는 터널 프로그램이라고 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이 글에서는 ngrok의 사용법과 사용 시 유의 사항, 사용 예시에 대해 설명합니다. 자세한 내용은 &lt;a title=&quot;ngrok 공식 문서&quot; href=&quot;https://ngrok.com/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ngrok 공식 문서&lt;/a&gt;를 참고해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 로컬 환경에서 개발한 것을 외부로 공유하는 방법 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;대부분의 개발자는 로컬 환경에서 개발한 것을 외부로 공유해야 할 순간을 맞는다. 이렇게 외부로 공개하는 것을 '호스팅한다'라고 표현하는데, 호스팅하는 방법을 알아보자. &lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1.1 배포를 통한 외부 공유&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;일반적인&amp;nbsp;경우,&amp;nbsp;배포를&amp;nbsp;통해&amp;nbsp;호스팅을&amp;nbsp;한다.&amp;nbsp;Amazon의&amp;nbsp;&lt;a title=&quot;aws&quot; href=&quot;https://aws.amazon.com/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS&lt;/a&gt;,&amp;nbsp;Google의&amp;nbsp;&lt;a title=&quot;gcp&quot; href=&quot;https://cloud.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GCP&lt;/a&gt;,&amp;nbsp;Microsoft의&amp;nbsp;&lt;a title=&quot;azure&quot; href=&quot;https://azure.microsoft.com/ko-kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Azure&lt;/a&gt;,&amp;nbsp;Naver의&amp;nbsp;&lt;a title=&quot;ncloud&quot; href=&quot;https://www.ncloud.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NCP&lt;/a&gt;&amp;nbsp;등의&amp;nbsp;클라우드&amp;nbsp;컴퓨팅&amp;nbsp;서비스를&amp;nbsp;활용하는&amp;nbsp;경우가&amp;nbsp;대부분이고,&amp;nbsp;최소한의&amp;nbsp;성능으로&amp;nbsp;과금&amp;nbsp;없이&amp;nbsp;배포하고&amp;nbsp;싶은&amp;nbsp;경우&amp;nbsp;&lt;a title=&quot;heroku&quot; href=&quot;https://www.heroku.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Heroku&lt;/a&gt;,&amp;nbsp;&lt;a title=&quot;netlify&quot; href=&quot;https://www.netlify.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Netlify&lt;/a&gt;&amp;nbsp;등을&amp;nbsp;활용하기도&amp;nbsp;한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.2 ngrok을 활용한 외부 공유 &lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;배포를 통해 외부로 공유하는 방법은 비용이 발생할 수도 있고, 배포 과정이 익숙하지 않은 개발자들에게는 그 과정 자체에 어려움을 느낄 수 있다. 만약 프로토타입을 잠시 공유해야 하는 상황이거나, 로컬 환경에서 테스트하기 힘든 애플리케이션을 테스트해야 하는 상황이라면 배포를 통해 외부로 공유하는 방법은 과할 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;필요한 시간 동안 잠시 외부로 공유하는 상황이라면 ngrok을 활용하는 것을 고려해 보자.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. ngrok 사용법&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;ngrok 설치에 대한 설명은 &lt;a title=&quot;ngrok 공식 홈페이지&quot; href=&quot;https://ngrok.com/download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ngrok 공식 홈페이지&lt;/a&gt;에서 운영체제별로 안내하는 것으로 갈음한다. 설치 가이드에서 authtoken을 추가하는 과정이 포함되어 있는데, ngrok을 불편함 없이 사용하기 위해서 회원가입 후 authtoken을 추가하기를 권장한다. 여기서 authtoken이란, 회원가입 후 계정마다 발급된 '계정을 식별할 수 있는 코드'라고 생각하면 편하다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2.1 실행 방법&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;ngrok은 아래 명령어로 간단하게 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1651309448962&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ngrok http &amp;lt;외부로 호스팅하고 싶은 port 번호&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;가령, 로컬 환경에서 애플리케이션이 포트 번호 8080에서 구동되고 있다면, 터미널에 아래의 명령어로 ngrok을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1651309491668&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ngrok http 8080&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;ngrok이 정상적으로 시작되면 console UI로 아래와 같은 정보들이 대시보드 형태로 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;윤현우-ngrok_사용법-1.png&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q95tj/btrARMs3u6T/BXyoX5n1kRlKNeLhohPAX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q95tj/btrARMs3u6T/BXyoX5n1kRlKNeLhohPAX0/img.png&quot; data-alt=&quot;console UI 기반의 대시보드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q95tj/btrARMs3u6T/BXyoX5n1kRlKNeLhohPAX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq95tj%2FbtrARMs3u6T%2FBXyoX5n1kRlKNeLhohPAX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1011&quot; height=&quot;293&quot; data-filename=&quot;윤현우-ngrok_사용법-1.png&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;console UI 기반의 대시보드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위 대시보드에 대한 설명은 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-mark=&quot;-&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Session Status: 세션의 활성 상태를 보여준다. 값이 online일 경우 세션이 정상적으로 살아 있음을 의미한다. 즉, ngrok에서 제공하는 URL을 통해 로컬 환경으로 접근할 수 있다는 것을 의미한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Session Expires: 세션이 만료되기까지의 시간을 보여준다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Version: ngrok의 버전을 의미한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Region: ngrok agent가 터널을 호스팅하기 위한 region을 의미한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Web Interface: ngrok 대시보드를 UI로 제공하는 URL이다. Web UI 대시보드에서는 request에 대한 분석은 물론이고, connection이나 세부 옵션 등에 대한 상태도 제공한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Forwarding: ngrok에서 제공하는 터널 URL로, 이 URL을 통해 외부에서도 로컬 환경에 접근할 수 있게 된다. URL은 http URL과 https URL 모두 제공된다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Connections: ngrok에서 제공하는 터널에 대한 connections 관련 정보다. 더욱 정확한 정보를 참고하려면 Web Interface로 확인하자. 공식 문서에도 rt1, rt5 등의 용어에 대한 자세한 설명이 기재되어 있지 않고, &lt;a href=&quot;https://serverfault.com/questions/1011759/ngrok-connections-line-meaning&quot;&gt;문의해도 정확한 답변을 받지 못했다는 말&lt;/a&gt;도 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2.2 ngrok 계정 연결과 authtoken&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;본 장의 서두에서 언급했다시피 ngrok 계정을 연결하지 않고 ngrok을 사용할 경우 불편한 점이 많아서, ngrok 회원가입 및 계정 연결 후 사용하기를 권장한다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2.2.1 ngrok 계정 연결을 하지 않았을 때 발생할 수 있는 불편함&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;단순히 API를 제공하는 용도로는 ngrok 계정을 연결하지 않아도 큰 불편함 없이 이용할 수 있다. 하지만 웹 애플리케이션의 Frontend 서버 용도로 호스팅하는 거라면 ngrok 계정을 필수적으로 연결해 줘야 한다. ngrok 계정을 연결하지 않고 ngrok에서 제공하는 URL로 접근을 시도할 경우, 아래처럼 ERR_NGROK_6022 에러 정보가 기재되어 있는 에러 페이지가 반환된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;윤현우-ngrok_사용법-2.png&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xgbmk/btrASwb8jlI/cfgFHq9UofWQ8A0bCtM4hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xgbmk/btrASwb8jlI/cfgFHq9UofWQ8A0bCtM4hK/img.png&quot; data-alt=&quot;ERR_NGROK_6022 에러 정보가 기재되어 있는 에러 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xgbmk/btrASwb8jlI/cfgFHq9UofWQ8A0bCtM4hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxgbmk%2FbtrASwb8jlI%2FcfgFHq9UofWQ8A0bCtM4hK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1025&quot; height=&quot;455&quot; data-filename=&quot;윤현우-ngrok_사용법-2.png&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ERR_NGROK_6022 에러 정보가 기재되어 있는 에러 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;또, ngrok 계정을 연결하지 않으면 기본적으로 Session Expires가 2시간으로 설정되어 있는데 2시간보다 더 오랫동안 세션을 유지해야 하는 경우 ngrok 계정을 연결해야 한다. 세션이 만료될 때마다 다시 ngrok을 실행하는 방법도 있겠지만 매번 다시 시작하는 것도 번거롭고, 세션 만료 후 다시 ngrok을 실행하면 이전의 URL과 다른 URL이 제공되어 불편하다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2.2.2 authtoken을 활용한 ngrok 계정 연결 방법&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;ngrok 계정은 authtoken 정보를 입력하여 연결할 수 있다. 구체적인 방법은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://dashboard.ngrok.com/get-started/setup&quot;&gt;ngrok dashboard&lt;/a&gt;에서 본인의 authtoken을 확인한다. 만약 ngrok 계정을 만들지 않았다면 &lt;a href=&quot;https://dashboard.ngrok.com/signup&quot;&gt;회원가입&lt;/a&gt;을 먼저 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 아래의 명령어를 터미널에 입력하여 ngrok 계정을 연결한다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1651310131662&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ngrok authtoken &amp;lt;token&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;정상적으로 명령어가 수행될 경우, '&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Authtoken saved to configuration file: &amp;lt;ngrok.yml이 저장된 path&amp;gt;&lt;/b&gt;&lt;/span&gt;' 라는 문구가 출력된다. 아래의 그림을 참고하자.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;윤현우-ngrok_사용법-3.png&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;53&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eFk9ed/btrAR7bWiml/qtA9ZpYNoCnyzC7ZXcPGK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eFk9ed/btrAR7bWiml/qtA9ZpYNoCnyzC7ZXcPGK0/img.png&quot; data-alt=&quot;authtoken이 정상적으로 추가되었을 때 출력되는 문구&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eFk9ed/btrAR7bWiml/qtA9ZpYNoCnyzC7ZXcPGK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeFk9ed%2FbtrAR7bWiml%2FqtA9ZpYNoCnyzC7ZXcPGK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;758&quot; height=&quot;53&quot; data-filename=&quot;윤현우-ngrok_사용법-3.png&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;53&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;authtoken이 정상적으로 추가되었을 때 출력되는 문구&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. ngrok 계정이 정상적으로 연결된 후, ngrok을 다시 실행하면 아래의 그림과 같이 console UI에서 Account 정보가 연동된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;윤현우-ngrok_사용법-4.png&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bERAvA/btrASwb8Dsi/S2ebMdtTmQmbGn1WHG1PzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bERAvA/btrASwb8Dsi/S2ebMdtTmQmbGn1WHG1PzK/img.png&quot; data-alt=&quot;계정 정보가 연동된&amp;amp;nbsp;console UI 기반의 대시보드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bERAvA/btrASwb8Dsi/S2ebMdtTmQmbGn1WHG1PzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbERAvA%2FbtrASwb8Dsi%2FS2ebMdtTmQmbGn1WHG1PzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1013&quot; height=&quot;291&quot; data-filename=&quot;윤현우-ngrok_사용법-4.png&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;계정 정보가 연동된&amp;nbsp;console UI 기반의 대시보드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. ngrok 활용 예시&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;지금까지는 ngrok 사용법에 대해 살펴봤다. 그렇다면 ngrok은 어떤 때에 활용할 수 있을까? 실사용 사례를 통해 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3.1 Frontend 프로토타입 공유&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;본인이 제작한 Frontend 프로토타입 프로젝트를 외부에 잠깐 공유해야 할 때 ngrok을 활용할 수 있다. 일회성으로 일시적인 공유를 할 때 사용하는 것이 좋고, 며칠 혹은 그보다 더 장기간 무중단으로 외부에 공유해야 할 때는 배포하는 것이 좋다. 또한, 무료 버전의 ngrok을 활용할 경우 허용 가능한 connection 개수가 제한적이라 불특정 다수에게 공유해야 하는 해커톤, 박람회 등은 ngrok 사용을 지양하는 것이 좋고 ngrok을 굳이 사용하겠다면 무료 버전은 피하자.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3.2 Slack App 개발 시 테스트&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;협업 도구 &lt;a href=&quot;https://slack.com/intl/ko-kr/&quot;&gt;Slack&lt;/a&gt;에서 사용자들이 사용할 수 있는 App 개발 시, Slack 내에서 이벤트가 발생할 때 알림을 받을 수 있는 &lt;a href=&quot;https://api.slack.com/apis/connections/events-api&quot;&gt;Event Subscriptions 기능&lt;/a&gt;이 있다. 해당 기능을 사용하려면 event subscriber 역할을 할 API의 URL이 필요한데, slack에서 보내오는 event notification을 받기 위해서는 로컬 환경에서 한계가 있다. 배포를 통해 Public IP를 확보할 수 있지만, 기능을 한참 개발하는 도중에 테스트할 때마다 배포하는 건 번거롭다. 그래서 이때 ngrok을 활용하면 편하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;가령 본인이 제작한 애플리케이션에서 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;/slack/event&lt;/b&gt;&lt;/span&gt; 라는 path의 API로 이벤트를 구독할 경우, ngrok을 활용하면 다음과 같이 Request URL을 등록할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;윤현우-ngrok_사용법-5.png&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1vudV/btrAQ6S24pH/sh5cDOVdetO9Lkrn2kVeXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1vudV/btrAQ6S24pH/sh5cDOVdetO9Lkrn2kVeXK/img.png&quot; data-alt=&quot;ngrok을 통해 생성된 URL로 event subscriptions URL을 등록한 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1vudV/btrAQ6S24pH/sh5cDOVdetO9Lkrn2kVeXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1vudV%2FbtrAQ6S24pH%2Fsh5cDOVdetO9Lkrn2kVeXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;641&quot; height=&quot;693&quot; data-filename=&quot;윤현우-ngrok_사용법-5.png&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;693&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ngrok을 통해 생성된 URL로 event subscriptions URL을 등록한 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4. 마치며&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이 글에서는 ngrok에 대한 간단한 설명과 사용법, 사용 예시 등을 설명했다. 설명한 것 이외에도 유료 버전의 ngrok을 사용한다면 고정적인 도메인 주소를 사용할 수 있다거나 로드밸런싱이 가능해지는 등 다양한 기능을 활용할 수 있다. 다만 이 글은 로컬 환경을 간단하게 호스팅하는 것에 초점을 두었기에 최소한의 내용만을 다루었다. 이 글이 잠시 동안 간편하게 호스팅하고자 했던 개발자들에게 도움이 되길 바라며 글을 마친다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Dev</category>
      <category>ngrok</category>
      <category>배포</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/145</guid>
      <comments>https://mong9data.tistory.com/145#entry145comment</comments>
      <pubDate>Sat, 30 Apr 2022 18:20:20 +0900</pubDate>
    </item>
    <item>
      <title>완벽주의를 버리자</title>
      <link>https://mong9data.tistory.com/143</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어느덧 새해라는 말이 어색할 정도로 2022년 1분기가 끝나가고 있습니다. 시간 참 빠르네요. '올해는 이런 것들을 해야지' 다짐을 하면서 2021년 회고를 쓰고 만다르트를 작성하며 설날 연휴를 보냈었는데, 정말 슬프게도 아직 포스팅을 하지 못했어요. 완벽주의 성향이 심해서 글을 하나 쓰려고 해도 제 마음에 들지 않으면 세상에 공개하지 못하고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-10 오후 5.24.53.png&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YKQsA/btrtIT0PeFm/fHof527HRrOBJ51fQcw3kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YKQsA/btrtIT0PeFm/fHof527HRrOBJ51fQcw3kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YKQsA/btrtIT0PeFm/fHof527HRrOBJ51fQcw3kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYKQsA%2FbtrtIT0PeFm%2FfHof527HRrOBJ51fQcw3kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;424&quot; data-filename=&quot;스크린샷 2022-02-10 오후 5.24.53.png&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위는 제 MBTI인데요. J 100%라는 광기를 느낄 수 있는 ESTJ입니다. 솔직히 이런 제 성향이 싫지만은 않고, 인생에서 많은 도움이 되었다고 생각합니다. 특히 계획적인 성향과 완벽주의적인 성향이 큰 보탬이 되었습니다. 물론 학창 시절 때는 말도 안 되는 계획을 잡아놓고 매일매일 스터디 플래너에 X표 치며 고통받는 하루하루를 살았지만, 이제는 하도 계획하고 실패한 적이 많다 보니까 어느 정도 수준까지 계획하면 달성할 만한 계획인 건지 감도 잡았습니다. 또, 주변 사람들이 혀를 내두르며 손절할까봐 겉으로는 심각하게 티는 안 내서, 사회생활도 아마(?) 무난하게 하고 있습니다. &lt;s&gt;아마 그럴걸요?&lt;/s&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;근데 이제 완벽주의 성향은 좀 버려보고자 합니다. 다양한 방면에서 제 스스로가 지쳐가고 있음을 느끼고 있어요. 제 성장의 동력이 '완벽주의'였다고 생각했는데, 사실은 완벽주의 성향으로 인한 '자책감'과 '자괴감'이었던 것 같아요. 주변에 공부 잘하는 학우를 볼 때, 일 잘하는 동료를 볼 때, 그 외 각종 능력치가 뛰어난 사람들을 볼 때, 진심으로 그들이 대단하다고 생각하면서 '나는 왜 아직도 이 모양 이 꼴이지?' 라고 스스로를 채찍질하며 달려 나갔습니다. 사실 그 채찍질은 적어도 중고등학교, 대학교, 그리고 취준 생활할 때까지는 큰 도움이 되었습니다. 한정된 시간 내에 남들보다 더 좋은 성과를 내야 하는 싸움이었기 때문입니다. 근데 취직한 이후엔 이러한 성향이 오히려 독이 될 것 같다는 생각이 들었습니다. 입사 후 초반엔 1부터 100까지 다 모르는 것 투성이라 새벽까지 모르는 것들, 부족한 것들 공부해나가다 보니 몇 달이 지난 후엔 체력적으로 많이 지친 상태였고, 그렇게 공부를 좀 한다고 한들 주변 동료분들이 다 뛰어나시다 보니 여전히 부족함을 많이 느껴서 좌절스럽기도 했습니다. 주변 지인들에게 하소연을 하면 '1년 미만 주니어에게 뭘 크게 바라는 사람은 없다. 장애만 안 내도 1인분 하는 거다'라는 식으로 말씀해주셨는데, 뭐 사실... 위로가 되긴 했지만 그때 잠시 뿐이었습니다. 솔직히 말하면 '내가 저분들만큼 연차가 쌓인다고 해도 저만큼 해낼 수 있을까?'라는 불안함이 컸거든요. 여기서 다 풀어내기는 너무 길어질 것 같아서 결론만 말씀드리면, 이제는 그 조바심을 많이 버렸고 하루하루 딱 한 걸음만이라도 나아가도 충분하다고 생각하게 되었습니다. 그만큼의 과정이 없었는데 결과만 있길 바라는 건 양심이 없는 거죠! 이제는 학창 시절 때만큼 한정된 시간에 압박을 느낄 것도 없으니, 하루하루 천천하지만 꾸준히 정진할 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그리고 너무 완벽한 결과물이 나와야 된다고 생각하니까 제가 만든 창작물이 세상에 공개되지 못하고 있습니다. 사실 창작물이라고 하니까 거창해 보이긴 한데, 블로그 글이 대부분입니다. 임시저장된 글만 열 개가 넘고, 비공개 글로 돌리거나 애초부터 비공개 글로 포스팅한 것들도 여럿 됩니다. 근데 이제 그것들을 다시 이어 쓰려고 하니 그때의 제가 아니라서 그런가? 쉽게 이어 쓰지도 못하겠어요. 그렇다고 그 글감으로 다시 글을 쓰자니 '이만큼이나 써놓은 것들이 있는데 굳이?' 라는 생각에 다시 쓰지도 않고 있어요. 이렇게 그 아이디어들은 버려지게 되었습니다. 그렇게 버려진 글들을 보니 참 아깝더라고요. 열심히 공부한 거였고, 세상에 내보이기 위해 다방면으로 확실한지 검증도 해봤던 것들인데 말이죠. 그래서 이제는 완벽하든 말든 최소한 세상에 내보일 만한다고 생각하면 일단 게시하기로 결심했습니다. 당분간은 방대하고 거창한 글도 최대한 지양하고, 간결한 글들 위주로 작성해 볼 심산입니다. 그러다가 습관이 되면 예전처럼 긴 호흡의 글들을 써보기도 하고요. 일단 2021년 회고를 어서 마무리지어야겠습니다. 정말 시간이 더 지났다가는... 봄날에 작년 회고를 쓰게 생겼습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>일상/목표 및 계획</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/143</guid>
      <comments>https://mong9data.tistory.com/143#entry143comment</comments>
      <pubDate>Sun, 20 Feb 2022 21:02:22 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬/Python] 정규표현식 - 리스트 내 원소들 중 숫자만 필터링하기</title>
      <link>https://mong9data.tistory.com/142</link>
      <description>&lt;pre id=&quot;code_1644508973202&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import re

page = ['처음', '5개 앞', '이전', '6', '7', '8', '9', '10', '다음', '5개 뒤', '마지막']
p = re.compile(&quot;^[0-9]+$&quot;)
page_only_digit = list(filter(p.match, page))

print(page_only_digit)
# ['6', '7', '8', '9', '10']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;원래는 p.match 부분에 isdigit 내장 함수를 사용하려고 했는데, &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;'5개 앞'&lt;/b&gt;&lt;/span&gt; 같이 원소 내 공백이 존재하면 내부적으로 구현되어 있는 ord 메서드를 적용할 수가 없어서 먹히질 않았습니다. 그래서 어쩔 수 없이 정규표현식으로 걸러줬습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Dev/Python</category>
      <category>Python</category>
      <category>정규표현식</category>
      <category>파이썬</category>
      <author>몽-구</author>
      <guid isPermaLink="true">https://mong9data.tistory.com/142</guid>
      <comments>https://mong9data.tistory.com/142#entry142comment</comments>
      <pubDate>Sun, 20 Feb 2022 20:09:14 +0900</pubDate>
    </item>
  </channel>
</rss>