<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>mocadev 개발 이야기</title>
    <link>https://mocadev.tistory.com/</link>
    <description>모카데브에서 일어나는 신나는 개발 이야기</description>
    <language>ko</language>
    <pubDate>Sat, 30 May 2026 18:18:30 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>모카데브</managingEditor>
    <image>
      <title>mocadev 개발 이야기</title>
      <url>https://tistory1.daumcdn.net/tistory/2917514/attach/b284d451e52c43b3a322e83a4ebb53ba</url>
      <link>https://mocadev.tistory.com</link>
    </image>
    <item>
      <title>[AWS] permissions for pem are too open windows 10 에러 해결</title>
      <link>https://mocadev.tistory.com/43</link>
      <description>&lt;p&gt;윈도우 10에서 AWS로 파일을 전송 시킬려고 하는데 'permissions for pem are too open' 에러가 발생 했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &lt;br /&gt;@&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WARNING:&amp;nbsp;UNPROTECTED&amp;nbsp;PRIVATE&amp;nbsp;KEY&amp;nbsp;FILE!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ &lt;br /&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &lt;br /&gt;Permissions&amp;nbsp;for&amp;nbsp;'&lt;a href=&quot;mocadev-srun75.pem'&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;***.pem'&lt;/a&gt;&amp;nbsp;are&amp;nbsp;too&amp;nbsp;open. &lt;br /&gt;It&amp;nbsp;is&amp;nbsp;required&amp;nbsp;that&amp;nbsp;your&amp;nbsp;private&amp;nbsp;key&amp;nbsp;files&amp;nbsp;are&amp;nbsp;NOT&amp;nbsp;accessible&amp;nbsp;by&amp;nbsp;others. &lt;br /&gt;This&amp;nbsp;private&amp;nbsp;key&amp;nbsp;will&amp;nbsp;be&amp;nbsp;ignored. &lt;br /&gt;Load&amp;nbsp;key&amp;nbsp;&quot;&lt;a href=&quot;mocadev-srun75.pem&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;***.pem&lt;/a&gt;&quot;:&amp;nbsp;bad&amp;nbsp;permissions &lt;br /&gt;ec2-user@***.***.***.***: Permission denied (publickey). &lt;br /&gt;lost&amp;nbsp;connection&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음과 같이 하면 에러 없이 파일 전송을 할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. ***.pem을 오른쪽 클릭하고 '보안' -&amp;gt; '고급' 탭을 연다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01.png&quot; data-origin-width=&quot;421&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpdHYk/btqCdhxAUPA/hkv9m9jBxCoRdGk84E2Tz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpdHYk/btqCdhxAUPA/hkv9m9jBxCoRdGk84E2Tz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpdHYk/btqCdhxAUPA/hkv9m9jBxCoRdGk84E2Tz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpdHYk%2FbtqCdhxAUPA%2Fhkv9m9jBxCoRdGk84E2Tz1%2Fimg.png&quot; data-filename=&quot;01.png&quot; data-origin-width=&quot;421&quot; data-origin-height=&quot;580&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;2. '상속사용 안 함'을 클릭해서 사용 권한 항목에 파일의 OWNER만 남긴다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;02.png&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GDAPL/btqCbTYL8nH/a8yN0oEFTmGKkbcUiix8I0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GDAPL/btqCbTYL8nH/a8yN0oEFTmGKkbcUiix8I0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GDAPL/btqCbTYL8nH/a8yN0oEFTmGKkbcUiix8I0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGDAPL%2FbtqCbTYL8nH%2Fa8yN0oEFTmGKkbcUiix8I0%2Fimg.png&quot; data-filename=&quot;02.png&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;563&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;03.png&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qvyLu/btqCafalAui/ki7tVitFpjxhKGrijL8FPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qvyLu/btqCafalAui/ki7tVitFpjxhKGrijL8FPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qvyLu/btqCafalAui/ki7tVitFpjxhKGrijL8FPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqvyLu%2FbtqCafalAui%2Fki7tVitFpjxhKGrijL8FPk%2Fimg.png&quot; data-filename=&quot;03.png&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;563&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;4. 파일 전송을 하면 정상적으로 업로드 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1582374238719&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;scp -i ***.pem test.zip ec2-user@***.***.***.***:/home/ec2-user/&lt;/code&gt;&lt;/pre&gt;</description>
      <category>linux</category>
      <category>aws</category>
      <category>PEM</category>
      <category>scp</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/43</guid>
      <comments>https://mocadev.tistory.com/43#entry43comment</comments>
      <pubDate>Sat, 22 Feb 2020 21:26:58 +0900</pubDate>
    </item>
    <item>
      <title>travis에서 slack 연동 암호화 하기</title>
      <link>https://mocadev.tistory.com/42</link>
      <description>&lt;p&gt;travis에서 빌드가 완료가 되면 슬랙으로 문자를 보내주는 기능이 있는데 .travis.yml에 마지막 부분에 다음과 같이 추가 하고 사용 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1580117836311&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;notifications:&amp;nbsp;&amp;nbsp;&amp;nbsp;
  slack: &amp;lt;슬랙도메인명&amp;gt;:&amp;lt;travis APP의 token&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;문제는 .travis.yml이 github등의 공개된 정보로 올라가면 악용될 소지가 있어서 암호화를 해서 사용 하도록 해보자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. 윈도우 기준으로 &lt;a href=&quot;https://rubyinstaller.org/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rubyinstaller&lt;/a&gt;를 설치하고 버전을 확인한다.&lt;/p&gt;
&lt;pre id=&quot;code_1580118109083&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ruby -v
ruby&amp;nbsp;2.7.0p0&amp;nbsp;(2019-12-25&amp;nbsp;revision&amp;nbsp;647ee6f091)&amp;nbsp;[x64-mingw32]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2. travis cli를 설치하고 버전을 확인한다.&lt;/p&gt;
&lt;pre id=&quot;code_1580118297600&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gem&amp;nbsp;install&amp;nbsp;travis&amp;nbsp;-v&amp;nbsp;1.8.10
travis version
1.8.10&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3. travis에 로그인을 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1580118860484&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;travis login
We&amp;nbsp;need&amp;nbsp;your&amp;nbsp;GitHub&amp;nbsp;login&amp;nbsp;to&amp;nbsp;identify&amp;nbsp;you.
This&amp;nbsp;information&amp;nbsp;will&amp;nbsp;not&amp;nbsp;be&amp;nbsp;sent&amp;nbsp;to&amp;nbsp;Travis&amp;nbsp;CI,&amp;nbsp;only&amp;nbsp;to&amp;nbsp;api.github.com.
The&amp;nbsp;password&amp;nbsp;will&amp;nbsp;not&amp;nbsp;be&amp;nbsp;displayed.
Try&amp;nbsp;running&amp;nbsp;with&amp;nbsp;--github-token&amp;nbsp;or&amp;nbsp;--auto&amp;nbsp;if&amp;nbsp;you&amp;nbsp;don't&amp;nbsp;want&amp;nbsp;to&amp;nbsp;enter&amp;nbsp;your&amp;nbsp;password&amp;nbsp;anyway.
Username: &amp;lt;gitHub 로그인 이메일&amp;gt;
Password&amp;nbsp;for &amp;lt;gitHub 로그인 이메일&amp;gt;:&amp;nbsp;************
Successfully logged in as &amp;lt;계정명&amp;gt;!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4. 로그인이 완료되면 &amp;lt;슬랙도메인명&amp;gt;:&amp;lt;travis APP의 token&amp;gt; 이 부분을 암호화 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1580119329510&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;touch .travis.yml
travis encrypt &quot;&amp;lt;슬랙도메인명&amp;gt;:&amp;lt;travis APP의 token&amp;gt;#&amp;lt;채널명&amp;gt;&quot; 
	--add notifications.slack 
    -r &amp;lt;gitHub 계정명&amp;gt;/&amp;lt;gitHub Repository&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5. .travis.yml 파일을 열어보면 다음과 같이 secure가 추가 되어 있는걸 확인 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1580123685412&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;notifications: &amp;nbsp;&amp;nbsp;
  slack: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    secure:&amp;nbsp;X2+7XxKznGmeXIaoeye&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>Slack</category>
      <category>Travis</category>
      <category>트래비스 슬랙 연동</category>
      <category>트래비스 암호화</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/42</guid>
      <comments>https://mocadev.tistory.com/42#entry42comment</comments>
      <pubDate>Mon, 27 Jan 2020 20:16:05 +0900</pubDate>
    </item>
    <item>
      <title>[mac] homebrew에서 permission denied 가 발생시 해결 방법</title>
      <link>https://mocadev.tistory.com/41</link>
      <description>&lt;p&gt;homebrew로 yarn을 upgrade하는데 다음과 같은 에럭다 발생했다.&lt;/p&gt;
&lt;pre id=&quot;code_1569749872497&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Possible&amp;nbsp;conflicting&amp;nbsp;files&amp;nbsp;are:
/usr/local/bin/yarn&amp;nbsp;-&amp;gt;&amp;nbsp;/usr/local/lib/node_modules/yarn/bin/yarn.js
/usr/local/bin/yarnpkg&amp;nbsp;-&amp;gt;&amp;nbsp;/usr/local/lib/node_modules/yarn/bin/yarn.js
==&amp;gt;&amp;nbsp;Summary
 /usr/local/Cellar/yarn/1.17.3: 14 files, 5MB, built in 5 seconds&amp;nbsp;&amp;nbsp;
==&amp;gt;&amp;nbsp;`brew&amp;nbsp;cleanup`&amp;nbsp;has&amp;nbsp;not&amp;nbsp;been&amp;nbsp;run&amp;nbsp;in&amp;nbsp;30&amp;nbsp;days,&amp;nbsp;running&amp;nbsp;now...
Error:&amp;nbsp;Permission&amp;nbsp;denied&amp;nbsp;@&amp;nbsp;unlink_internal&amp;nbsp;-&amp;nbsp;/usr/local/lib/node_modules/npm/node_modules/.bin/JSONStream&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이럴때 다음을 실행해주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1569749695003&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo&amp;nbsp;chown&amp;nbsp;-R&amp;nbsp;$(whoami)&amp;nbsp;$(brew&amp;nbsp;--prefix)/*&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발툴</category>
      <category>Homebrew</category>
      <category>Mac</category>
      <category>permission</category>
      <category>Yarn</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/41</guid>
      <comments>https://mocadev.tistory.com/41#entry41comment</comments>
      <pubDate>Sun, 29 Sep 2019 18:38:22 +0900</pubDate>
    </item>
    <item>
      <title>test 명령어 연산자</title>
      <link>https://mocadev.tistory.com/40</link>
      <description>&lt;p&gt;쉘스크립트에서 사용하는 test명령어 연산자 목록&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 68.9954%; height: 448px;&quot; border=&quot;1&quot; data-ke-style=&quot;style6&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 30px;&quot;&gt;
&lt;td style=&quot;width: 15%; height: 30px;&quot;&gt;-d&lt;/td&gt;
&lt;td style=&quot;width: 85%; height: 30px;&quot;&gt;파일이 존재하고 디렉터리라면 참&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 30px;&quot;&gt;
&lt;td style=&quot;height: 30px;&quot;&gt;-e&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 30px;&quot;&gt;파일이 존재하면 참&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 30px;&quot;&gt;
&lt;td style=&quot;height: 30px;&quot;&gt;-c&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 30px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 존재하고 캐릭터 스페셜 파일이면 참&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;height: 31px;&quot;&gt;-f&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 31px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 존재하고 일반 파일이면 참&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;height: 31px;&quot;&gt;-L&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 31px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 존재하고 심볼릭 링크면 참&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;height: 31px;&quot;&gt;-r&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 31px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 존재하고 읽기 가능하면 참&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;height: 31px;&quot;&gt;-w&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 31px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 존재하고 쓰기 가능하면 참&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;height: 31px;&quot;&gt;-x&lt;/td&gt;
&lt;td style=&quot;width: 65.9091%; height: 31px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 존재하고 실행 가능하면 참&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>linux</category>
      <category>shell script</category>
      <category>test 연산자</category>
      <category>쉘스크립트</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/40</guid>
      <comments>https://mocadev.tistory.com/40#entry40comment</comments>
      <pubDate>Wed, 18 Sep 2019 18:32:05 +0900</pubDate>
    </item>
    <item>
      <title>virtualbox에 설치한 ubuntu ssh로 접속하기</title>
      <link>https://mocadev.tistory.com/39</link>
      <description>&lt;p&gt;virtualbox에 ubuntu18.04 LTS를 설치하고 ssh로 접속을 해보자&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. ssh접속을 위해 openssh-server 설치&lt;/p&gt;
&lt;pre id=&quot;code_1566011195629&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tony@tony-VirtualBox:~$&amp;nbsp;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;openssh-server 

tony@tony-VirtualBox:~$&amp;nbsp;sudo&amp;nbsp;service&amp;nbsp;ssh&amp;nbsp;restart&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;virtualbox IP 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;00.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oE3lX/btqxx2rZXQz/L57motswwrDTMWPflVtVhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oE3lX/btqxx2rZXQz/L57motswwrDTMWPflVtVhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oE3lX/btqxx2rZXQz/L57motswwrDTMWPflVtVhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoE3lX%2Fbtqxx2rZXQz%2FL57motswwrDTMWPflVtVhk%2Fimg.png&quot; data-filename=&quot;00.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3.&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;virtualbox 네트웍설정&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCE4CA/btqxvoJN2lK/yc7i5CZYCkNf4nMolqkkB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCE4CA/btqxvoJN2lK/yc7i5CZYCkNf4nMolqkkB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCE4CA/btqxvoJN2lK/yc7i5CZYCkNf4nMolqkkB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCE4CA%2FbtqxvoJN2lK%2Fyc7i5CZYCkNf4nMolqkkB1%2Fimg.png&quot; data-filename=&quot;01.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01_1.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdlxQx/btqxvNbsZd6/5e1KY3JDDI9daTenUpWI80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdlxQx/btqxvNbsZd6/5e1KY3JDDI9daTenUpWI80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdlxQx/btqxvNbsZd6/5e1KY3JDDI9daTenUpWI80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdlxQx%2FbtqxvNbsZd6%2F5e1KY3JDDI9daTenUpWI80%2Fimg.png&quot; data-filename=&quot;01_1.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;포트 포워딩을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01_2.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DKfvv/btqxu45RI9Z/Z6Et6khYkkASNONDmfEMiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DKfvv/btqxu45RI9Z/Z6Et6khYkkASNONDmfEMiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DKfvv/btqxu45RI9Z/Z6Et6khYkkASNONDmfEMiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDKfvv%2Fbtqxu45RI9Z%2FZ6Et6khYkkASNONDmfEMiK%2Fimg.png&quot; data-filename=&quot;01_2.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;호스트 IP는 윈도우에서 확인한 IP를 게스트 IP는 ubuntu에서 확인한 IP를 입력한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01_3.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y8XZT/btqxvoXiQ8B/4yCkEt4HXEiyTdtYeOiX11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y8XZT/btqxvoXiQ8B/4yCkEt4HXEiyTdtYeOiX11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y8XZT/btqxvoXiQ8B/4yCkEt4HXEiyTdtYeOiX11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY8XZT%2FbtqxvoXiQ8B%2F4yCkEt4HXEiyTdtYeOiX11%2Fimg.png&quot; data-filename=&quot;01_3.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4. 호스트의 IP와 포트로 접속을 한다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ssh접속툴을 이용해서 접속 해보면 처음에 다음과 같이 나오고 키를 저장하고 나면 접속이 잘 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;02.jpg&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sgO8y/btqxx1zO1TJ/TSOsrJoz3dKaPnhDt2uAFK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sgO8y/btqxx1zO1TJ/TSOsrJoz3dKaPnhDt2uAFK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sgO8y/btqxx1zO1TJ/TSOsrJoz3dKaPnhDt2uAFK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsgO8y%2Fbtqxx1zO1TJ%2FTSOsrJoz3dKaPnhDt2uAFK%2Fimg.jpg&quot; data-filename=&quot;02.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>linux</category>
      <category>SSH</category>
      <category>ubuntu</category>
      <category>VirtualBox</category>
      <category>우분투</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/39</guid>
      <comments>https://mocadev.tistory.com/39#entry39comment</comments>
      <pubDate>Sat, 17 Aug 2019 12:07:57 +0900</pubDate>
    </item>
    <item>
      <title>docker로 설치한 jenkins 업데이트 하기</title>
      <link>https://mocadev.tistory.com/38</link>
      <description>&lt;p&gt;jenkins를 docker로 설치하면 jenkins 업데이트 하기가 좀 까다로운데 그 방법을 알아보자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. jenkins container에 root로 접속&lt;/p&gt;
&lt;pre id=&quot;code_1565877494061&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜&amp;nbsp;&amp;nbsp;~&amp;nbsp;docker&amp;nbsp;exec&amp;nbsp;-u&amp;nbsp;0&amp;nbsp;-it&amp;nbsp;mocadev_jenkins&amp;nbsp;/bin/bash 
root@50718e25af33:/#&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. 업데이트 할 jenkins를 wget을 이용하여 다운 받기&lt;/p&gt;
&lt;pre id=&quot;code_1565877506843&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@50718e25af33:/#&amp;nbsp;wget&amp;nbsp;http://updates.jenkins-ci.org/download/war/2.176.2/jenkins.war &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. 다운 받은 jenkins.war 파일 이동&lt;/p&gt;
&lt;pre id=&quot;code_1565877525074&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@50718e25af33:/#&amp;nbsp;mv&amp;nbsp;./jenkins.war&amp;nbsp;/usr/share/jenkins &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4. jenkins.war 파일 소유권 변경&lt;/p&gt;
&lt;pre id=&quot;code_1565877533380&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@50718e25af33:/#&amp;nbsp;chown&amp;nbsp;jenkins:jenkins&amp;nbsp;/usr/share/jenkins/jenkins.war&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;5. container나가고 jenkins container 재시작&lt;/p&gt;
&lt;pre id=&quot;code_1565877538954&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@50718e25af33:/#&amp;nbsp;exit 

➜&amp;nbsp;&amp;nbsp;~&amp;nbsp;docker&amp;nbsp;restart&amp;nbsp;mocadev_jenkins&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
mocadev_jenkins 
➜&amp;nbsp;&amp;nbsp;~&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;</description>
      <category>docker</category>
      <category>Docker</category>
      <category>Jenkins</category>
      <category>도커</category>
      <category>젠킨스</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/38</guid>
      <comments>https://mocadev.tistory.com/38#entry38comment</comments>
      <pubDate>Thu, 15 Aug 2019 22:59:35 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio 오프라인으로 설치하기</title>
      <link>https://mocadev.tistory.com/37</link>
      <description>&lt;p&gt;visual studio community를 설치하는데 기본이 네트웍 설치로 되어 있다.&lt;/p&gt;
&lt;p&gt;인터넷이 되지 않는 상황에서 visual studio를 설치 하고 싶을 때는 다음과 같이 이미지를 만들어서 설치 하면된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.NET 웹 및 .NET 데스크톱 개발 레이아웃 만들기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1565618367479&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vs_community.exe&amp;nbsp;--layout&amp;nbsp;c:\vslayout&amp;nbsp;
	--add&amp;nbsp;Microsoft.VisualStudio.Workload.ManagedDesktop&amp;nbsp;
	--add&amp;nbsp;Microsoft.VisualStudio.Workload.NetWeb&amp;nbsp;
    	--add&amp;nbsp;Component.GitHub.VisualStudio&amp;nbsp;
    	--includeOptional&amp;nbsp;
    	--lang&amp;nbsp;ko-KR&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;모든 기능이 포함된 레이아웃 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1565686909365&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vs_community.exe --layout c:\vslayout --lang ko-KR&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;vs_community.exe는 네트웍 설치를 위해 다운받은 설치 파일이다.&lt;/p&gt;
&lt;p&gt;visual studio는 &lt;a href=&quot;https://visualstudio.microsoft.com/ko/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기서&lt;/a&gt; 다운로드 받으면 된다.&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>offline</category>
      <category>visutal studio</category>
      <category>vs community</category>
      <category>비주얼스튜디오</category>
      <category>오프라인설치</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/37</guid>
      <comments>https://mocadev.tistory.com/37#entry37comment</comments>
      <pubDate>Mon, 12 Aug 2019 23:05:02 +0900</pubDate>
    </item>
    <item>
      <title>[쉘 스크립트] 스크립트 실행시 옵션 사용하기</title>
      <link>https://mocadev.tistory.com/36</link>
      <description>&lt;p&gt;쉘 스크립트 실행시 매개변수가 아닌 옵션을 이용해서 받고 싶을때가 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음과 같이 a, b, c, d 4개의 옵션을 받을 수 있는 스크립트를 작성 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1565530495537&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim opt_test.sh



#!/bin/bash&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;

while&amp;nbsp;getopts&amp;nbsp;a:b:c:d:&amp;nbsp;opt&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
do&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;${opt}&amp;nbsp;in&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &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;a)&amp;nbsp;a_option=&quot;$OPTARG&quot;&amp;nbsp;;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b)&amp;nbsp;b_option=&quot;$OPTARG&quot;&amp;nbsp;;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c)&amp;nbsp;c_option=&quot;$OPTARG&quot;&amp;nbsp;;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d)&amp;nbsp;d_option=&quot;$OPTARG&quot;&amp;nbsp;;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esac&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
done&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
echo&amp;nbsp;&quot;a_option:&amp;nbsp;${a_option}&quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
echo&amp;nbsp;&quot;b_option:&amp;nbsp;${b_option}&quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
echo&amp;nbsp;&quot;c_option:&amp;nbsp;${c_option}&quot;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
echo&amp;nbsp;&quot;d_option:&amp;nbsp;${d_option}&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행은 다음과 같이 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1565530481117&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜&amp;nbsp;&amp;nbsp;test&amp;nbsp;./opt_test.sh&amp;nbsp;-a&amp;nbsp;test1&amp;nbsp;-b&amp;nbsp;test2&amp;nbsp;-c&amp;nbsp;test3&amp;nbsp;-d&amp;nbsp;test4 
a_option:&amp;nbsp;test1 
b_option:&amp;nbsp;test2 
c_option:&amp;nbsp;test3 
d_option:&amp;nbsp;test4 &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;추가 할 것은 조건문으로 해당 옵션에 대해 명령문을 실행 하면 된다.&lt;/p&gt;</description>
      <category>linux</category>
      <category>Linux</category>
      <category>shellscript</category>
      <category>쉘스크립트</category>
      <category>쉘프로그래밍</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/36</guid>
      <comments>https://mocadev.tistory.com/36#entry36comment</comments>
      <pubDate>Sun, 11 Aug 2019 22:35:58 +0900</pubDate>
    </item>
    <item>
      <title>[쉘 스크립트] 변수에 공백문자 사용하기</title>
      <link>https://mocadev.tistory.com/35</link>
      <description>&lt;pre id=&quot;code_1565323123875&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash 

space=&quot;space&amp;nbsp;string&quot; 

if&amp;nbsp;[&amp;nbsp;${space} =&amp;nbsp;&quot;space&amp;nbsp;string&quot;&amp;nbsp;];&amp;nbsp;then 
&amp;nbsp; &amp;nbsp; echo&amp;nbsp;&quot;공백문자 인식:&amp;nbsp;$space&quot;&amp;nbsp;1&amp;gt;&amp;amp;2 
&amp;nbsp; &amp;nbsp; exit&amp;nbsp;1 
fi&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;상기와 같이 스크립트를 작성하고 실행하면 다음과 같은 에러가 발생한다.&lt;/p&gt;
&lt;pre id=&quot;code_1565323133671&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜&amp;nbsp;&amp;nbsp;test&amp;nbsp;./space_test.sh&amp;nbsp; 
./space_test.sh:&amp;nbsp;line&amp;nbsp;5:&amp;nbsp;[:&amp;nbsp;too&amp;nbsp;many&amp;nbsp;arguments&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;쉘 스크립트 작성시 변수에 공백 문자가 있으면 제대로 인식을 하지 못한다.&lt;/p&gt;
&lt;p&gt;기본적으로 공백을 기준으로 해석을 하기 때문이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1565323163634&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if&amp;nbsp;[&amp;nbsp;${space} =&amp;nbsp;&quot;space&amp;nbsp;string&quot;&amp;nbsp;];&amp;nbsp;then&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;를 다음과 같이 수정하고 실행한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1565323169291&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if&amp;nbsp;[ &quot;${space}&quot; =&amp;nbsp;&quot;space&amp;nbsp;string&quot;&amp;nbsp;];&amp;nbsp;then&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1565323145551&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;➜&amp;nbsp;&amp;nbsp;test&amp;nbsp;./space_test.sh&amp;nbsp;&amp;nbsp; 
공백문자&amp;nbsp;인식:&amp;nbsp;space&amp;nbsp;string&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;즉, 공백문자를 사용 하고 싶은 변수를 &quot;&quot;로 감싸주면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>linux</category>
      <category>Bash</category>
      <category>Linux</category>
      <category>Shell</category>
      <category>공백문자</category>
      <category>쉘프로그래밍</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/35</guid>
      <comments>https://mocadev.tistory.com/35#entry35comment</comments>
      <pubDate>Fri, 9 Aug 2019 13:00:34 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 bash에서 ll사용하기</title>
      <link>https://mocadev.tistory.com/34</link>
      <description>&lt;p&gt;커맨드라인에서 작업 할 경우가 많아서 cd를 하고 나서 예전에는 ls를 사용 했는데 요즘에는 무의적으로 대부분 ll을 치게 됐다.&lt;/p&gt;
&lt;p&gt;리눅스에서야 기본적으로 ll이 잘 되는데 윈도우 bash에서는 ll을 치면 다음과 같이 나온다.&lt;/p&gt;
&lt;pre id=&quot;code_1564149359170&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;admin@tony&amp;nbsp;&amp;nbsp;~ 
$&amp;nbsp;ll 
bash:&amp;nbsp;ll:&amp;nbsp;command&amp;nbsp;not&amp;nbsp;found &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이런 경우 다음과 같이 해주면 윈도우에서도 ll을 기분 좋게 사용 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1564149601646&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;admin@tony  ~
$ echo alias ll=\'ls -l\' &amp;gt;&amp;gt; .bashrc

admin@tony  ~
$ source .bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;적용후 ll 사용하기&lt;/p&gt;
&lt;pre id=&quot;code_1564150530268&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;admin@tony  ~
$ ll
total 8110
drwxr-xr-x 1 admin 197121       0 Jul 12 22:22 '3D Objects'
drwxr-xr-x 1 admin 197121       0 Apr  2 11:55  AppData
drwxr-xr-x 1 admin 197121       0 Jul 12 22:22  Contacts
drwxr-xr-x 1 admin 197121       0 Jul 22 21:47  Desktop
drwxr-xr-x 1 admin 197121       0 Jul 12 22:22  Documents
drwxr-xr-x 1 admin 197121       0 Jul 12 22:22  Downloads
drwxr-xr-x 1 admin 197121       0 Apr  7 15:50  Evernote
drwxr-xr-x 1 admin 197121       0 Jul 12 23:26  Favorites&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발툴</category>
      <category>Bash</category>
      <category>git</category>
      <category>ll</category>
      <category>LS</category>
      <category>windows</category>
      <category>윈도우</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/34</guid>
      <comments>https://mocadev.tistory.com/34#entry34comment</comments>
      <pubDate>Fri, 26 Jul 2019 23:32:00 +0900</pubDate>
    </item>
    <item>
      <title>[Notion] 구글 캘린더 연동</title>
      <link>https://mocadev.tistory.com/33</link>
      <description>&lt;p&gt;개인적인 일이나 회사일을 구글 캘린더를 이용해서 관리하고 있는데,&lt;/p&gt;
&lt;p&gt;노션을 본격적으로 사용하게 되면서 회사일정을 노션에서 볼 수 있도록 연동을 시켰다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. 구글 캘린더의 설정을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O0jwY/btqwr4Ev0HJ/umZ9xPUkG6zDYEE3hF1BkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O0jwY/btqwr4Ev0HJ/umZ9xPUkG6zDYEE3hF1BkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O0jwY/btqwr4Ev0HJ/umZ9xPUkG6zDYEE3hF1BkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO0jwY%2Fbtqwr4Ev0HJ%2FumZ9xPUkG6zDYEE3hF1BkK%2Fimg.png&quot; data-filename=&quot;01.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. 공개 URL을 복사한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;[꾸미기]02.jpg&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFgxuD/btqwsYDCUpT/VXCoolL5r5oaQmBL4QKKFk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFgxuD/btqwsYDCUpT/VXCoolL5r5oaQmBL4QKKFk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFgxuD/btqwsYDCUpT/VXCoolL5r5oaQmBL4QKKFk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFgxuD%2FbtqwsYDCUpT%2FVXCoolL5r5oaQmBL4QKKFk%2Fimg.jpg&quot; data-filename=&quot;[꾸미기]02.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. 새로운 페이지를 만든다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;03.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUILa8/btqwq5doM2R/L9saz7P0LMh76AMZ6R22xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUILa8/btqwq5doM2R/L9saz7P0LMh76AMZ6R22xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUILa8/btqwq5doM2R/L9saz7P0LMh76AMZ6R22xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUILa8%2Fbtqwq5doM2R%2FL9saz7P0LMh76AMZ6R22xK%2Fimg.png&quot; data-filename=&quot;03.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;04.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0QWAM/btqwrReo3Gm/ESYjeKS4knw8o5wFJ2lO0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0QWAM/btqwrReo3Gm/ESYjeKS4knw8o5wFJ2lO0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0QWAM/btqwrReo3Gm/ESYjeKS4knw8o5wFJ2lO0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0QWAM%2FbtqwrReo3Gm%2FESYjeKS4knw8o5wFJ2lO0K%2Fimg.png&quot; data-filename=&quot;04.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4. 페이지 제목을 입력하고 복사한 공유 캘린더 URL을 입력한다.&lt;/p&gt;
&lt;p&gt;그 다음 'Create Embed'를 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;05.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DL9rv/btqwr5wJxR9/1ZsQt9kGofLH0nmACEFsyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DL9rv/btqwr5wJxR9/1ZsQt9kGofLH0nmACEFsyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DL9rv/btqwr5wJxR9/1ZsQt9kGofLH0nmACEFsyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDL9rv%2Fbtqwr5wJxR9%2F1ZsQt9kGofLH0nmACEFsyK%2Fimg.png&quot; data-filename=&quot;05.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;[꾸미기]06.jpg&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IfHIK/btqwqkBxySQ/RYOrMCmJcCKDQoHJifXxX0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IfHIK/btqwqkBxySQ/RYOrMCmJcCKDQoHJifXxX0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IfHIK/btqwqkBxySQ/RYOrMCmJcCKDQoHJifXxX0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIfHIK%2FbtqwqkBxySQ%2FRYOrMCmJcCKDQoHJifXxX0%2Fimg.jpg&quot; data-filename=&quot;[꾸미기]06.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;5. 구글 캘린더 공유 완성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;07.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG4kaL/btqwqkWaaQ9/YA5gi3r3wRhBiRGKoWmSVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG4kaL/btqwqkWaaQ9/YA5gi3r3wRhBiRGKoWmSVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG4kaL/btqwqkWaaQ9/YA5gi3r3wRhBiRGKoWmSVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG4kaL%2FbtqwqkWaaQ9%2FYA5gi3r3wRhBiRGKoWmSVk%2Fimg.png&quot; data-filename=&quot;07.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>Notion</category>
      <category>구글캘린더</category>
      <category>구글캘린더공유</category>
      <category>노션</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/33</guid>
      <comments>https://mocadev.tistory.com/33#entry33comment</comments>
      <pubDate>Sun, 30 Jun 2019 21:21:10 +0900</pubDate>
    </item>
    <item>
      <title>[notion] 에버노트의 모든 노트를 노션으로 가져오기</title>
      <link>https://mocadev.tistory.com/32</link>
      <description>&lt;p&gt;3년 동안 에버노트 프리미엄을 사용하다가 프리미엄 기능의 10%도 안 쓰는것 같고해서 더이상 연장하지 말고 이전부터사용하던 노션으로 에버노트의 모든 노트들을 가져와서 사용 하기로 했다.&lt;/p&gt;
&lt;p&gt;노션에서 에버노트 사용자들을 흡수하기 위해서 아주 간단하게 Import 기능을 제공해주고 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;노션앱에서 셋팅을 클릭한다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;01.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pjNXp/btqwrqId9JW/VTXP8IUrWBlu0afwYCI7KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pjNXp/btqwrqId9JW/VTXP8IUrWBlu0afwYCI7KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pjNXp/btqwrqId9JW/VTXP8IUrWBlu0afwYCI7KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpjNXp%2FbtqwrqId9JW%2FVTXP8IUrWBlu0afwYCI7KK%2Fimg.png&quot; data-filename=&quot;01.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;2. Earn Credit를 클릭한다.&lt;/p&gt;
&lt;p&gt;3. 오른쪽 화면에 Import from Evernote를 클릭한다.&lt;/p&gt;
&lt;p&gt;이미 Import를 해버려서 5달러를 벌었다고 나오는데, 처음 클릭하면 에버노트 로그인 화면이 나오고&lt;/p&gt;
&lt;p&gt;로그인에 성공하면 Import할 노트북 목록이 나온다.&lt;/p&gt;
&lt;p&gt;Import하고 싶은 노트북을 체크하고 완료(?) 버튼을 클릭하면 Import 끝&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;02.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w2Lr8/btqwr4kd7C4/bHZE3geD3zhIlLPB18IOSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w2Lr8/btqwr4kd7C4/bHZE3geD3zhIlLPB18IOSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w2Lr8/btqwr4kd7C4/bHZE3geD3zhIlLPB18IOSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw2Lr8%2Fbtqwr4kd7C4%2FbHZE3geD3zhIlLPB18IOSk%2Fimg.png&quot; data-filename=&quot;02.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;4. Import가 완료되면 왼쪽 메뉴에 노트북들이 하나의 페이지들로 구성되서 나온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;03.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5tSB4/btqwsYwNmTK/p5rD1TJgLxYmyZvoPoFJt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5tSB4/btqwsYwNmTK/p5rD1TJgLxYmyZvoPoFJt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5tSB4/btqwsYwNmTK/p5rD1TJgLxYmyZvoPoFJt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5tSB4%2FbtqwsYwNmTK%2Fp5rD1TJgLxYmyZvoPoFJt1%2Fimg.png&quot; data-filename=&quot;03.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;5. 해당 페이지를 클릭하면 에버노트의 노트북에 등록된 노트들이 역시 페이지로 등록되어 있고 에버노트에서 등록된 태그들도 노션의 태그로 등록된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;04.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ride0/btqwsG4dmaU/3aM9EuAwrDKZkkbrhEzm50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ride0/btqwsG4dmaU/3aM9EuAwrDKZkkbrhEzm50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ride0/btqwsG4dmaU/3aM9EuAwrDKZkkbrhEzm50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRide0%2FbtqwsG4dmaU%2F3aM9EuAwrDKZkkbrhEzm50%2Fimg.png&quot; data-filename=&quot;04.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>evernote</category>
      <category>Import</category>
      <category>Notion</category>
      <category>노션</category>
      <category>에버노트</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/32</guid>
      <comments>https://mocadev.tistory.com/32#entry32comment</comments>
      <pubDate>Sun, 30 Jun 2019 16:57:59 +0900</pubDate>
    </item>
    <item>
      <title>IntelliJ 사용중 변수명에 밑줄이 생길때 해결법</title>
      <link>https://mocadev.tistory.com/31</link>
      <description>&lt;p&gt;오랜만에 java 개발을 하다 보니 IntelliJ를 적극 사용 하고 있다.&lt;/p&gt;
&lt;p&gt;IntelliJ를 다시 설치하고 &lt;span style=&quot;color: #333333;&quot;&gt;너무나도 당연하게 theme는 Material Dark를 &lt;/span&gt;설치 했더니&lt;/p&gt;
&lt;p&gt;어느 순간 부터 갑자기 로컬 변수에 밑줄이 생기는 거다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;02.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxeQh4/btqv7geJd12/E5J2rNOsGh4XQCywENKZg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxeQh4/btqv7geJd12/E5J2rNOsGh4XQCywENKZg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxeQh4/btqv7geJd12/E5J2rNOsGh4XQCywENKZg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxeQh4%2Fbtqv7geJd12%2FE5J2rNOsGh4XQCywENKZg1%2Fimg.png&quot; data-filename=&quot;02.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;밑줄 생기는게 보기 싫으면 다음과 같이 해주면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Settings -&amp;gt; Editor -&amp;gt; Color Scheme -&amp;gt; Language Defaults -&amp;gt; Identifiers -&amp;gt; Reassigned local variable&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Effects 해제&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;01.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R65dj/btqv8mY8KbH/DIwJExggKWrcJZXk7tbwR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R65dj/btqv8mY8KbH/DIwJExggKWrcJZXk7tbwR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R65dj/btqv8mY8KbH/DIwJExggKWrcJZXk7tbwR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR65dj%2Fbtqv8mY8KbH%2FDIwJExggKWrcJZXk7tbwR1%2Fimg.png&quot; data-filename=&quot;01.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설정을 적용하면 &lt;span style=&quot;color: #333333;&quot;&gt;재할당되는&amp;nbsp;&lt;/span&gt;로컬 변수도 밑줄이 생기지 않게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>IntelliJ</category>
      <category>material dark</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/31</guid>
      <comments>https://mocadev.tistory.com/31#entry31comment</comments>
      <pubDate>Sun, 16 Jun 2019 00:38:09 +0900</pubDate>
    </item>
    <item>
      <title>linux에 maven 설치 하기</title>
      <link>https://mocadev.tistory.com/30</link>
      <description>&lt;p&gt;1. maven 다운로드&lt;/p&gt;
&lt;pre id=&quot;code_1558852728549&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget&amp;nbsp;http://apache.mirror.cdnetworks.com/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
tar -zxvf apache-maven-3.6.1-bin.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. .zshrc 설정&lt;/p&gt;
&lt;pre id=&quot;code_1558853897333&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim ~/.zshrc

MAVEN_HOME=/home/ec2-user/util/apache-maven-3.6.1 
PATH=$PATH:$MAVEN_HOME/bin 
export&amp;nbsp;MAVEN_HOME &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. 설치 확인&lt;/p&gt;
&lt;pre id=&quot;code_1558853920950&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mvn&amp;nbsp;-version 
Apache&amp;nbsp;Maven&amp;nbsp;3.6.1&amp;nbsp;(d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555;&amp;nbsp;2019-04-05T04:00:29+09:00) 
Maven&amp;nbsp;home:&amp;nbsp;/home/ec2-user/util/apache-maven-3.6.1 
Java&amp;nbsp;version:&amp;nbsp;1.8.0_131,&amp;nbsp;vendor:&amp;nbsp;Oracle&amp;nbsp;Corporation,&amp;nbsp;runtime:&amp;nbsp;/opt/jdk1.8.0_131/jre 
Default&amp;nbsp;locale:&amp;nbsp;en_US,&amp;nbsp;platform&amp;nbsp;encoding:&amp;nbsp;UTF-8 
OS&amp;nbsp;name:&amp;nbsp;&quot;linux&quot;,&amp;nbsp;version:&amp;nbsp;&quot;4.14.114-83.126.amzn1.x86_64&quot;,&amp;nbsp;arch:&amp;nbsp;&quot;amd64&quot;,&amp;nbsp;family:&amp;nbsp;&quot;unix&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>java</category>
      <category>java</category>
      <category>Linux</category>
      <category>maven</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/30</guid>
      <comments>https://mocadev.tistory.com/30#entry30comment</comments>
      <pubDate>Sun, 26 May 2019 15:59:23 +0900</pubDate>
    </item>
    <item>
      <title>heroku에 도메인 연결하기</title>
      <link>https://mocadev.tistory.com/29</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최근에 node.js로 토이 프로젝트 사이트 하나를 만들고 heroku에 배포를 했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;heroku에 배포를 하면 &lt;b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;https://appname.herokuapp.com&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;&lt;/span&gt;의 기본 url로 설정되는데,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존에 사용 하고 있는 도메인과 연결을 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는&amp;nbsp;namecheap에서 연결하는 방법에 대해 알아보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. heroku 사이트의 도메인을 연결 하고자 하는 앱의 &lt;b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;Settings&lt;/span&gt;&lt;/b&gt;에서 &lt;b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;Add Domain&lt;/span&gt;&lt;/b&gt;을 클릭하고 사용할 도메인명을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;도메인1.png&quot; width=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4nCju/btqu0LtEs5k/H5pZV9T0CxXn9dOoyTh5K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4nCju/btqu0LtEs5k/H5pZV9T0CxXn9dOoyTh5K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4nCju/btqu0LtEs5k/H5pZV9T0CxXn9dOoyTh5K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4nCju%2Fbtqu0LtEs5k%2FH5pZV9T0CxXn9dOoyTh5K0%2Fimg.png&quot; data-filename=&quot;도메인1.png&quot; width=&quot;660&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 연결된 도메인의 DNS Target값을 복사 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;도메인2.jpg&quot; width=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3ihzl/btqu0K2CsYj/qkH3st40pXfkHRsPuH2c1K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3ihzl/btqu0K2CsYj/qkH3st40pXfkHRsPuH2c1K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3ihzl/btqu0K2CsYj/qkH3st40pXfkHRsPuH2c1K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3ihzl%2Fbtqu0K2CsYj%2FqkH3st40pXfkHRsPuH2c1K%2Fimg.jpg&quot; data-filename=&quot;도메인2.jpg&quot; width=&quot;660&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. 도메인 관리 사이트&amp;nbsp;&lt;a href=&quot;https://www.namecheap.com/&quot;&gt;https://www.namecheap.com/&lt;/a&gt;&amp;nbsp;의 &lt;b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;Advanced DNS&lt;/span&gt;&lt;/b&gt;에서 &lt;b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;ADD NEW RECORD&lt;/span&gt;&lt;/b&gt;를 클릭하고&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;TYPE은 &lt;b&gt;&lt;span style=&quot;background-color: #c1c1c1;&quot;&gt;CNAME Record&lt;/span&gt;&lt;/b&gt;를 선택하고 Value에 2번에서 복사한 값을 붙여 넣기 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;도메인3.jpg&quot; width=&quot;810&quot; height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZZtNN/btqu1CvyCgE/7XV5jDiGbKWXmYZVznYjQk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZZtNN/btqu1CvyCgE/7XV5jDiGbKWXmYZVznYjQk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZZtNN/btqu1CvyCgE/7XV5jDiGbKWXmYZVznYjQk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZZtNN%2Fbtqu1CvyCgE%2F7XV5jDiGbKWXmYZVznYjQk%2Fimg.jpg&quot; data-filename=&quot;도메인3.jpg&quot; width=&quot;810&quot; height=&quot;517&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위와 같이 설정하면 원하는 도메인으로 heroku에 배포된 앱을 연결할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존 heroku에 배포된 앱은 https를 기본으로 사용하는데 도메인에 연결된 앱은 https를 사용할 수가 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음에는 namecheap에서 https를 사용하는 법에 대해 알아보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>Heroku</category>
      <category>namecheap</category>
      <category>nodejs</category>
      <category>도메인연결</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/29</guid>
      <comments>https://mocadev.tistory.com/29#entry29comment</comments>
      <pubDate>Sun, 5 May 2019 01:22:23 +0900</pubDate>
    </item>
    <item>
      <title>heroku에서 timezone 설정하기</title>
      <link>https://mocadev.tistory.com/28</link>
      <description>&lt;p&gt;heroku cli에서 다음과 같이 입력한다.&lt;/p&gt;
&lt;pre id=&quot;code_1556196500050&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;heroku&amp;nbsp;config:add&amp;nbsp;TZ=&quot;Asia/Seoul&quot;&amp;nbsp;--app=APP_NAME&lt;/code&gt;&lt;/pre&gt;</description>
      <category>node.js</category>
      <category>Heroku</category>
      <category>timezone</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/28</guid>
      <comments>https://mocadev.tistory.com/28#entry28comment</comments>
      <pubDate>Thu, 25 Apr 2019 21:49:04 +0900</pubDate>
    </item>
    <item>
      <title>slack에 notion 연동하기</title>
      <link>https://mocadev.tistory.com/27</link>
      <description>&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;개인 프로젝트나 회사 프로젝트에서 notion을 사용하는데 notion에 변화가 있으면 이를 slack에 공유하는 방법을 알아 보자.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;1. slack의 해당 채널에서 app 추가를 클릭하고 notion app을 추가&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 391px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995627385C5ADD383C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995627385C5ADD383C&quot; width=&quot;391&quot; height=&quot;383&quot; filename=&quot;01.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 775px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9922BB385C5ADD380C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9922BB385C5ADD380C&quot; width=&quot;775&quot; height=&quot;408&quot; filename=&quot;02.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992181385C5ADD3815&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992181385C5ADD3815&quot; width=&quot;820&quot; height=&quot;466&quot; filename=&quot;03.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;2. notion의 메인 페이지에서 Updates를 클릭하고 Connect Slack Channel을 활성화&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 419px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998933385C5ADD3811&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998933385C5ADD3811&quot; width=&quot;419&quot; height=&quot;278&quot; filename=&quot;04.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 486px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B687385C5ADD3919&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B687385C5ADD3919&quot; width=&quot;486&quot; height=&quot;326&quot; filename=&quot;05.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;3. 포스팅할 slack 채널 선택&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 546px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997314385C5ADD3912&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997314385C5ADD3912&quot; width=&quot;546&quot; height=&quot;488&quot; filename=&quot;06.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;4. notion updates 페이지에서 활성화 상태와 slack 채널을 확인&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 453px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C661385C5ADD3A05&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C661385C5ADD3A05&quot; width=&quot;453&quot; height=&quot;306&quot; filename=&quot;07.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;5. slack에서 내용 확인&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994789385C5ADD3A0A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994789385C5ADD3A0A&quot; width=&quot;820&quot; height=&quot;98&quot; filename=&quot;08.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>Notion</category>
      <category>Slack</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/27</guid>
      <comments>https://mocadev.tistory.com/27#entry27comment</comments>
      <pubDate>Wed, 6 Feb 2019 22:29:20 +0900</pubDate>
    </item>
    <item>
      <title>javascript로 생성한 Timestamp in milliseconds mysql에서 변환하기</title>
      <link>https://mocadev.tistory.com/26</link>
      <description>&lt;p&gt;javascript에서 unix time형식의&amp;nbsp;milliseconds를 포함한 timestamp를 생성에서 mysql에 입력해서 사용하고 있는데,&lt;/p&gt;&lt;p&gt;mysql 쿼리로 Datetime으로 형변환해서 사용할려 단순히&amp;nbsp;FROM_UNIXTIME만 사용하면 NULL로 나온다.&lt;/p&gt;&lt;p&gt;milliseconds를 제거하기 위해서 1000으로 나누고 사용하면 원하는 Datetime으로 잘 표시된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;SELECT createAt, FROM_UNIXTIME(createAt/1000, '%Y-%c-%d %H:%i:%s') convert_date&lt;/p&gt;&lt;p&gt;FROM table_name&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;349&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 349px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:13px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 168px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;b&gt; createAt&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 180px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;convert_date&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 168px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&amp;nbsp;154440794980&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 180px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&amp;nbsp;2018-12-10 11:12:29&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 168px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&amp;nbsp;1544486426242&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 180px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&amp;nbsp;2018-12-11 09:00:26&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>mysql</category>
      <category>MySQL</category>
      <category>unix time</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/26</guid>
      <comments>https://mocadev.tistory.com/26#entry26comment</comments>
      <pubDate>Thu, 27 Dec 2018 12:22:05 +0900</pubDate>
    </item>
    <item>
      <title>request와 cheerio를 이용한 웹 크롤링</title>
      <link>https://mocadev.tistory.com/25</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;node.js에서 &lt;/span&gt;&lt;a href=&quot;https://www.npmjs.com/package/request&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;request&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;와 &lt;/span&gt;&lt;a href=&quot;https://www.npmjs.com/package/cheerio&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;cheerio&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;로 아주 간단하게 웹페이지를 크롤링해서 원하는 정보를 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;request 샘플 코드에서 내용만 살짝 바꿔서&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;네이버에서 실시간 검색어를 받아와서 출력해주는 프로그램을 만들어 보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;color: rgb(197, 200, 198); background-color: rgb(30, 30, 30); font-family: D2Coding, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 16px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'request'&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;cheerio&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'cheerio'&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;    url: &lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'https://www.naver.com'&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;    headers: {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'User-Agent'&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #9aa83a;&quot;&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'request&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;};&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;callback&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; ((&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;statusCode&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;cheerio&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;load&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(206, 103, 0); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;'.ah_roll_area  &amp;gt; .ah_l &amp;gt; .ah_item &amp;gt; a &amp;gt; .ah_k'&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(206, 103, 0); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: rgb(199, 68, 74); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(152, 114, 162); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: rgb(208, 132, 66); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(103, 104, 103); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: rgb(208, 132, 66); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt; - &lt;/span&gt;&lt;span style=&quot;color: rgb(208, 132, 66); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: rgb(206, 103, 0); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: rgb(206, 103, 0); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: rgb(208, 132, 66); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: rgb(154, 168, 58); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;        });&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;});&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(206, 103, 0); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: rgb(96, 137, 180); font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;callback&lt;/span&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, monospace;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;request로 네이버 메인 페이지 내용을 받아와서 cheerio로 그 내용을 읽은 후 selector를 이용해서 실시간 검색어 부분만 파싱을 한다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;실행 결과&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;$ node naver.js&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;1 - 크릴 오일&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;2 - 안드레아 보첼리&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;3 - 가려진 시간&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;4 - 말레피센트&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;5 - 고파도&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;6 - 월요일이 사라졌다&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;7 - 서수연&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;8 - 베트남 북한&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;9 - 이필모&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;10 - 전홍준박사&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;11 - 인턴&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;12 - 눈이 부시게&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;13 - 지금 만나러 갑니다&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;14 - 곽동연&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;15 - 범블비 쿠키영상&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;16 - 콩 스컬 아일랜드&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;17 - 라이브 에이드&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;18 - 이일재&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;19 - 북한 베트남&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;20 - 신과함께&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;다음에는 네이버 주식에서 내용을 크롤링해서 맞춤형 페이지를 만들어 봐야 겠다.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Menlo, Monaco, Consolas, monospace&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>node.js</category>
      <category>nodejs</category>
      <category>크</category>
      <category>크롤링</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/25</guid>
      <comments>https://mocadev.tistory.com/25#entry25comment</comments>
      <pubDate>Tue, 25 Dec 2018 21:43:06 +0900</pubDate>
    </item>
    <item>
      <title>vim-bootstrap 설치하기</title>
      <link>https://mocadev.tistory.com/24</link>
      <description>&lt;p&gt;다음을 실행한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(238, 238, 238); background-color: rgb(246, 248, 250); padding: 10px;&quot;&gt;&lt;p&gt;curl 'http://vim-bootstrap.com/generate.vim' --data 'langs=javascript&amp;amp;langs=python&amp;amp;langs=htmleditor=vim' &amp;gt; ~/.vimrc&lt;/p&gt;&lt;p&gt;vim ~/.vimrc&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;참고 사이트 :&amp;nbsp;&lt;a href=&quot;http://www.vim-bootstrap.com/&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; color: rgb(3, 102, 214); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px;&quot;&gt;http://www.vim-bootstrap.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>bootstrap</category>
      <category>vim</category>
      <category>vim-bootstrap</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/24</guid>
      <comments>https://mocadev.tistory.com/24#entry24comment</comments>
      <pubDate>Tue, 23 Oct 2018 14:31:49 +0900</pubDate>
    </item>
    <item>
      <title>터미널에서 커맨드 라인 명령어</title>
      <link>https://mocadev.tistory.com/23</link>
      <description>&lt;ol style=&quot;margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; box-sizing: inherit; color: rgb(36, 39, 41);&quot;&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;a&lt;/kbd&gt;&amp;nbsp;Move cursor to start of line&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;e&lt;/kbd&gt;&amp;nbsp;Move cursor to end of line&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;b&lt;/kbd&gt;&amp;nbsp;Move back one character&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Alt&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;b&lt;/kbd&gt;&amp;nbsp;Move back one word&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;f&lt;/kbd&gt;&amp;nbsp;Move forward one character&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Alt&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;f&lt;/kbd&gt;&amp;nbsp;Move forward one word&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;d&lt;/kbd&gt;&amp;nbsp;Delete current character&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;w&lt;/kbd&gt;&amp;nbsp;Cut the last word&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;k&lt;/kbd&gt;&amp;nbsp;Cut everything after the cursor&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Alt&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;d&lt;/kbd&gt;&amp;nbsp;Cut word after the cursor&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Alt&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;w&lt;/kbd&gt;&amp;nbsp;Cut word before the cursor&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;y&lt;/kbd&gt;&amp;nbsp;Paste the last deleted command&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;_&lt;/kbd&gt;&amp;nbsp;Undo&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;u&lt;/kbd&gt;&amp;nbsp;Cut everything before the cursor&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;x&lt;/kbd&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;x&lt;/kbd&gt;&amp;nbsp;Toggle between first and current position&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;l&lt;/kbd&gt;&amp;nbsp;Clear the terminal&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;c&lt;/kbd&gt;&amp;nbsp;Cancel the command&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;r&lt;/kbd&gt;&amp;nbsp;Search command in history - type the search term&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;j&lt;/kbd&gt;&amp;nbsp;End the search at current history entry&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;g&lt;/kbd&gt;&amp;nbsp;Cancel the search and restore original line&lt;/li&gt;&lt;li style=&quot;margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;n&lt;/kbd&gt;&amp;nbsp;Next command from the History&lt;/li&gt;&lt;li style=&quot;margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; overflow-wrap: break-word;&quot;&gt;&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd style=&quot;margin: 0px 0.1em; padding: 0.1em 0.6em; border: 1px solid rgb(173, 179, 185); font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.4; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; vertical-align: baseline; box-sizing: inherit; display: inline-block; text-shadow: rgb(255, 255, 255) 0px 1px 0px; background-color: rgb(225, 227, 229); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap;&quot;&gt;p&lt;/kbd&gt;&amp;nbsp;previous command from the History&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;출처 :&amp;nbsp;&lt;a href=&quot;https://stackoverflow.com/questions/9679776/how-do-i-clear-delete-the-current-line-in-terminal&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://stackoverflow.com/questions/9679776/how-do-i-clear-delete-the-current-line-in-terminal&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>Command Line</category>
      <category>terminal</category>
      <category>터미널</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/23</guid>
      <comments>https://mocadev.tistory.com/23#entry23comment</comments>
      <pubDate>Mon, 22 Oct 2018 11:21:54 +0900</pubDate>
    </item>
    <item>
      <title>sequelize에서 array rows update하기</title>
      <link>https://mocadev.tistory.com/22</link>
      <description>&lt;p style=&quot;line-height: 2;&quot; data-ke-size=&quot;size16&quot;&gt;nodejs에서 ORM으로 sequelize를 사용하고 있는데, 대량으로 update를 해야 되는데 bulkCreate는 있는데 bulkUpdate는 없다.&lt;/p&gt;
&lt;p style=&quot;line-height: 2;&quot; data-ke-size=&quot;size16&quot;&gt;그럼&amp;nbsp;이를 어찌 해결 할까 했는데 이것도 역시 bulkCreate를 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1679557237999&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;models.table.bulkCreate([
        array
    ], {updateOnDuplicate: true},
).then((result) =&amp;gt; {
    return res.json(result);
}).catch(err =&amp;gt; {
    console.error(err);
    res.status(500).json(err);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한건&amp;nbsp;updateOnDuplicate: true 이 설정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;덧붙임)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc;&quot;&gt;s0metimes님께서 댓글로 자세하게 설명을 해주셨습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc;&quot;&gt;해당 내용 참고하시면 문제 해결에 도움이 될 거 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679557128456&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;updateOnDuplicate 배열 안엔 primaryKey 가 아니라, 중복됐을 경우 업데이트 할 column 들을 넣어줘야 합니다.
실제로 이 코드는 SQL 문에서 'ON DUPLICATE KEY UPDATE' 로 실행이 되고,
이는 Primary Key 또는 Unique 제약이 걸렸을 경우 중복에 걸린 row 에 대해 업데이트 할 column 들을 지정해주는 SQL 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 81px; top: 135px;&quot;&gt;
&lt;div class=&quot;gtx-trans-icon&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>node.js</category>
      <category>nodejs</category>
      <category>orm</category>
      <category>sequelize</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/22</guid>
      <comments>https://mocadev.tistory.com/22#entry22comment</comments>
      <pubDate>Fri, 14 Sep 2018 13:21:51 +0900</pubDate>
    </item>
    <item>
      <title>docker로  mysql 설치하기</title>
      <link>https://mocadev.tistory.com/20</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;docker run -d -p 3306:3306 -e MYSQL-ROOT_PASSWORD=${MYSQL_ROOT_PASSROD}&amp;nbsp;--name mocadev_mysql -v ~/data/mysql:/var/lib/mysql mysql&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;-d Detached모드로 컨테이너를 백그라운드로 실행해준다.&lt;/p&gt;&lt;p&gt;-p &amp;lt;호스트 포트&amp;gt;:&amp;lt;컨테이너 포트&amp;gt;로 사용하며 컨테이너의 포트를 호스트 포트로 노출 시키는 옵션&lt;/p&gt;&lt;p&gt;-e 컨테이너 환경 변수 설정 위에서는 mysql의 root 패스워드를 설정해준다.&lt;/p&gt;&lt;p&gt;--name 실행시킬 컨테이너 이름 설정&lt;/p&gt;&lt;p&gt;-v &amp;lt;호스트 디렉토리&amp;gt;:&amp;lt;컨테이터 디렉토리&amp;gt;로 사용하며 컨테이너 디렉토리를 호스트와 공유해서 파일들을 호스트 디렉토리에 저장한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;docker-compose.yml&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;version: '3.1'&lt;/p&gt;&lt;p&gt;services:&lt;/p&gt;&lt;p&gt;&amp;nbsp; mysql:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; image: mysql:5.7&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; container_name: mocadev_mysql&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; ports:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - 3306:3306&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; restart: always&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; environment:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - MYSQL_ROOT_PASSWORD=root패스워드&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - MYSQL_USER=생성할 유저&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - MYSQL_PASSWORD=생성할 유저 패스워드&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - MYSQL_DATABASE=생성할 데이터베이스&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; volumes:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;nbsp; ~/data/mysql:/var/lib/mysql&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; command:&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - --character-set-server=utf8mb4&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - --collation-server=utf8mb4_unicode_ci&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mysql 최신 버전을 설치 했더니 connector문제인지 툴에서 접속을 못하는 문제가 발생해서 그냥 5.7버전을 설치했다.&lt;/p&gt;&lt;p&gt;역시 5.7버전은 아무 문제 없이 외부에서도 접속이 잘된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>docker</category>
      <category>Docker</category>
      <category>docker-compose</category>
      <category>MySQL</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/20</guid>
      <comments>https://mocadev.tistory.com/20#entry20comment</comments>
      <pubDate>Mon, 27 Aug 2018 22:32:21 +0900</pubDate>
    </item>
    <item>
      <title>[git] Another git process seems to be running in this repository 오류 해결</title>
      <link>https://mocadev.tistory.com/19</link>
      <description>&lt;p&gt;git으로 버전관리를 하고 있는데 어느 순간부터 브랜치 체크아웃도 안되고 push도 안되면서 시뻘건 색으로 다음과 같은 에러만 알려줬다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div style=&quot;caret-color: rgb(0, 0, 0); font-family: HelveticaNeue; font-size: 12px; text-size-adjust: auto; line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 11pt;&quot;&gt;Another git process seems to be running in this repository, e.g.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;caret-color: rgb(0, 0, 0); font-family: HelveticaNeue; font-size: 12px; text-size-adjust: auto; line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 11pt;&quot;&gt;an editor opened by 'git commit'. Please make sure all processes&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;caret-color: rgb(0, 0, 0); font-family: HelveticaNeue; font-size: 12px; text-size-adjust: auto; line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 11pt;&quot;&gt;are terminated then try again. If it still fails, a git process&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;caret-color: rgb(0, 0, 0); font-family: HelveticaNeue; font-size: 12px; text-size-adjust: auto; line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 11pt;&quot;&gt;may have crashed in this repository earlier:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;caret-color: rgb(0, 0, 0); font-family: HelveticaNeue; font-size: 12px; text-size-adjust: auto; line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 11pt;&quot;&gt;remove the file manually to continue.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;해결 방법은 .git폴더 안에 있는 index.lock파일을 지워주면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>git</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/19</guid>
      <comments>https://mocadev.tistory.com/19#entry19comment</comments>
      <pubDate>Wed, 22 Aug 2018 19:48:02 +0900</pubDate>
    </item>
    <item>
      <title>터미널 실행시 zsh오류 해결</title>
      <link>https://mocadev.tistory.com/18</link>
      <description>&lt;p&gt;뭘 이상한걸 설치해서 그런지 알 수 없는 이유로 맥에서 iterm을 실행하면 다음과 같은 에러가 발생했다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;dyld: Library not loaded: /usr/local/opt/gdbm/lib/libgdbm.4.dylib&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Referenced from: /usr/local/bin/zsh&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Reason: image not found&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;해당 오류를 해결하기 위해서 zsh를 다시 설치해주면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;brew reinstall zsh &amp;amp;&amp;amp; brew unlink zsh &amp;amp;&amp;amp; brew link zsh&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>zsh</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/18</guid>
      <comments>https://mocadev.tistory.com/18#entry18comment</comments>
      <pubDate>Fri, 27 Jul 2018 21:48:22 +0900</pubDate>
    </item>
    <item>
      <title>멕에서 sudo 없이 npm 패키지 설치하기</title>
      <link>https://mocadev.tistory.com/16</link>
      <description>&lt;p&gt;맥에서 npm으로 패키지를 설치하다 보면 권한이 없어서 다음과 같은 에러가 발생한다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9962FB395B587FA21B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9962FB395B587FA21B&quot; width=&quot;820&quot; height=&quot;217&quot; filename=&quot;스크린샷 2018-07-25 오후 10.03.36.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이런 경우 다음과 같이 하면 간단히 해결 할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. npm config get prefix를 실행하고 /usr/local이 나오는지 확인한다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 378px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CF8F355B58802E20&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CF8F355B58802E20&quot; width=&quot;378&quot; height=&quot;65&quot; filename=&quot;스크린샷 2018-07-25 오후 9.53.52.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}를 실행한다.&lt;/p&gt;&lt;p&gt;3. 끝~ npm을 sudo 없이 실행한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <category>Mac</category>
      <category>npm</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/16</guid>
      <comments>https://mocadev.tistory.com/16#entry16comment</comments>
      <pubDate>Wed, 25 Jul 2018 22:54:50 +0900</pubDate>
    </item>
    <item>
      <title>gitlab과 slack 연동 하기</title>
      <link>https://mocadev.tistory.com/15</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;1. 먼저 해당 슬랙에서 셋팅 -&amp;gt; Add an app or integration을 누르고 Incoming WebHooks으로 검색한다.&lt;br style=&quot;clear: both;&quot;&gt;Incommig WhbHooks가 나오면 왼쪽의 Add Configuration을 클릭한다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 740px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A5474E5B51631031&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A5474E5B51631031&quot; width=&quot;740&quot; height=&quot;403&quot; filename=&quot;01.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;2. 포스팅될 체널을 선택하고 Add Incoming WebHooks Integration버튼을 클릭한다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 740px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996C864F5B5163732F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996C864F5B5163732F&quot; width=&quot;740&quot; height=&quot;403&quot; filename=&quot;02.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;3. 화면에 보이는 Webhook URL을 복사한다. gitlab에 사용할 url이다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;Customize Name이 최초에는&amp;nbsp;incoming-webhook으로 되어 있는데 gitlab으로 바꿨다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;슬랙에서 보여지는 이름이다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;Customize Icon도 gitlab icon으로 바꿨다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;설정이 끝났으면 Save Settings버튼을 클릭한다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 740px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99465A4C5B5163AD33&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99465A4C5B5163AD33&quot; width=&quot;740&quot; height=&quot;513&quot; filename=&quot;03.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;4. 그 다음 연동해줄 gitlab 프로젝트의 셋팅 화면으로 넘어간다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;Integrations에서 Slack notifications를 찾아서 들어간다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;화면에 보이는 Webhook에 좀전에 복사했던 Webhook URL을 붙여넣기 한다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;Activie 체크박스에 체크를 하고 사용할 이벤트에도 체크를 하고 사용할 슬팩 채널 이름을 입력한다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;Save changes버튼을 클릭하면 gitlab과 slack연동 끝!!!&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br style=&quot;clear: both;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 740px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D7AF455B5163DB32&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D7AF455B5163DB32&quot; width=&quot;740&quot; height=&quot;430&quot; filename=&quot;04.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 740px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999E12455B5163DB07&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999E12455B5163DB07&quot; width=&quot;740&quot; height=&quot;563&quot; filename=&quot;05.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br style=&quot;clear: both;&quot;&gt;6. gitlab에 이벤트가 발생하면 다음과 같이 슬랙으로 기분 좋게 메시지를 보내준다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 652px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998753435B51640623&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998753435B51640623&quot; width=&quot;652&quot; height=&quot;119&quot; filename=&quot;06.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>개발툴</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/15</guid>
      <comments>https://mocadev.tistory.com/15#entry15comment</comments>
      <pubDate>Fri, 20 Jul 2018 13:25:27 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] insert key 동작 끄기</title>
      <link>https://mocadev.tistory.com/14</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;intellij를 실행키면 항상 자동으로 insert key가 켜져 있어 불편 했는데 이걸 끄는 방법이 있다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;ideaVim이 활성화 되서 그러니 plugin에서 ideaVim을 disable시키면 intellij를 실행 시켜도 insert key가 활성화 되지 않는다.&lt;/p&gt;</description>
      <category>개발툴</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/14</guid>
      <comments>https://mocadev.tistory.com/14#entry14comment</comments>
      <pubDate>Tue, 10 Jul 2018 15:00:36 +0900</pubDate>
    </item>
    <item>
      <title>aws에서 pem파일 없이 ssh 로그인 하는 법</title>
      <link>https://mocadev.tistory.com/13</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;aws에 서버를 구축할 일이 있는데 한대에서만 접속하면 상관 없지만 pem파일로 여러군데서 로그인 하는게 여간 귀찮은게 아니다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;그래서, pem파일 없이 로그인 해서 사용하는 법을 찾아 봤다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;일단 로그인할 유저를 만든다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo adduser mocadev&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo passwd mocadev&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;sudo 사용을 위해 sudoers에 mocadev 추가&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo vim /etc/sudoers&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;ssh &amp;nbsp;설정&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo vim /etc/ssh/sshd_config&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Port 22 주석을 풀고&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;PasswordAuthentication를 yes로 바꾼다&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;ssh 재시작&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo /etc/init.d/sshd restart&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; text-align: justify;&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px;&quot;&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px; padding: 0px; line-height: 1.5; color: rgb(0, 0, 0); font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;이후 pem파일 없이 로그인하면 된다.&lt;/p&gt;</description>
      <category>linux</category>
      <category>aws</category>
      <category>Linux</category>
      <category>SSH</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/13</guid>
      <comments>https://mocadev.tistory.com/13#entry13comment</comments>
      <pubDate>Tue, 19 Jun 2018 15:29:05 +0900</pubDate>
    </item>
    <item>
      <title>aws에서 KST로 시간설정 변경</title>
      <link>https://mocadev.tistory.com/12</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;aws에 서버를 설치하고 date로&amp;nbsp; 확인해보면&amp;nbsp;시간대가 기본인&amp;nbsp;UTC로 설치가 된다.&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;➜&amp;nbsp; ~ date&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;Thu Jun 14 17:12:51 UTC 2018&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;이걸 KST로 변경해보자.&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;일단 백업&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;sudo mv /etc/localtime /etc/localtime_bak&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;링크 변경&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;date로 확인&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; text-align: justify;&quot;&gt;&lt;font face=&quot;2820749_9&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;➜&amp;nbsp; ~ date&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; text-align: justify;&quot;&gt;&lt;font face=&quot;2820749_9&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;Fri Jun 15 02:14:13 KST 2018&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;변경 OK~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>linux</category>
      <category>aws</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/12</guid>
      <comments>https://mocadev.tistory.com/12#entry12comment</comments>
      <pubDate>Fri, 15 Jun 2018 02:19:18 +0900</pubDate>
    </item>
    <item>
      <title>docker로 nodejs 실행하기</title>
      <link>https://mocadev.tistory.com/11</link>
      <description>&lt;p&gt;요즘 docker를 많이 사용하디 보니 docker를 이용해서 nodejs를 실행해 봤다.&lt;/p&gt;&lt;p&gt;일단 Dockerfile을 만든다&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;FROM node:carbon&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MAINTAINER tony &amp;lt;chcjswo@gmail.com&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#Avoid ERROR: invoke-rc.d: policy-rc.d denied execution of start.&lt;/p&gt;&lt;p&gt;RUN sed -i &quot;s/^exit 101$/exit 0/&quot; /usr/sbin/policy-rc.d&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## Install packge&lt;/p&gt;&lt;p&gt;RUN apt-get update &amp;amp;&amp;amp; apt-get install git -y&lt;/p&gt;&lt;p&gt;RUN echo &quot;git install&quot;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;RUN npm install -g pm2&lt;/p&gt;&lt;p&gt;ENV NODE_ENV production&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;RUN mkdir -p /app&lt;/p&gt;&lt;p&gt;WORKDIR /app&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;RUN git clone https://github.com/chcjswo/mocadev-nodejs.git&lt;/p&gt;&lt;p&gt;WORKDIR /app/mocadev-nodejs&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;COPY ./processes.json /app/mocadev-nodejs&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## npm Install&lt;/p&gt;&lt;p&gt;RUN npm install&lt;/p&gt;&lt;p&gt;## Port&lt;/p&gt;&lt;p&gt;EXPOSE 3003&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;## Start the service&lt;/p&gt;&lt;p&gt;CMD [&quot;pm2-docker&quot;, &quot;processes.json&quot;]&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;1. node image를 다운 받는다.&lt;/div&gt;&lt;div&gt;2. apt-get을 update하고 git을 설치한다.&lt;/div&gt;&lt;div&gt;3. pm2를 설치한다.&lt;/div&gt;&lt;div&gt;4. github에서 clone을 한다.&lt;/div&gt;&lt;div&gt;5. processes.json을 복사한다.&lt;/div&gt;&lt;div&gt;6. pm2로 실행한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;processes.json&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &quot;apps&quot;: [&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot;: &quot;mocadev-node&quot;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;script&quot;: &quot;./bin/www&quot;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;merge_logs&quot;: true,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;max_restarts&quot;: 20,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;exec_mode&quot;: &quot;cluster&quot;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;instances&quot;: 0,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;max_memory_restart&quot;: &quot;200M&quot;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;env&quot;: {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;PORT&quot;: 3003,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;NODE_ENV&quot;: &quot;production&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;log_date_format&quot;: &quot;YY-MM-DD HH:mm:ss&quot;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;error_file&quot;: &quot;./logs/err.log&quot;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;out_file&quot;: &quot;./logs/out.log&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ]&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;image를 build한다.&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;docker build -t chcjswo/mocadev-web:0.1 ./&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-t 옵션으로 태그를 달아준다.&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;{docker hub id}/{이미지 이름}:{버전}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;중요한건 마지막에 .을 꼭 써줘야 된다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;빌드가 끝나고 나고 docker images로 확인하면 다음과 같이 image가 생긴다.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;REPOSITORY&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TAG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IMAGE ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATED&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SIZE&lt;/div&gt;&lt;div&gt;chcjswo/mocadev-web&amp;nbsp; &amp;nbsp;0.1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;eb30a51ab6d7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; About an hour ago&amp;nbsp; &amp;nbsp;746MB&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;생성된 image를 실행한다.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;docker run -d --name mocadev-nodejs -p 3003:3003 chcjswo/mocadev-web:0.1&lt;/div&gt;&lt;div&gt;&lt;div&gt;➜&amp;nbsp; mocadev docker ps&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;CONTAINER ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IMAGE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;COMMAND&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATED&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;STATUS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PORTS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NAMES&lt;/div&gt;&lt;div&gt;9d4dd6e32fa7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chcjswo/mocadev-web:0.1&amp;nbsp; &amp;nbsp;&quot;pm2-docker processe…&quot;&amp;nbsp; &amp;nbsp;About an hour ago&amp;nbsp; &amp;nbsp;Up About an hour&amp;nbsp; &amp;nbsp; 0.0.0.0:3003-&amp;gt;3003/tcp&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;mocadev-nodejs&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;➜&amp;nbsp; mocadev curl -i http://localhost:3003&lt;/div&gt;&lt;div&gt;HTTP/1.1 200 OK&lt;/div&gt;&lt;div&gt;X-DNS-Prefetch-Control: off&lt;/div&gt;&lt;div&gt;X-Frame-Options: SAMEORIGIN&lt;/div&gt;&lt;div&gt;Strict-Transport-Security: max-age=15552000; includeSubDomains&lt;/div&gt;&lt;div&gt;X-Download-Options: noopen&lt;/div&gt;&lt;div&gt;X-Content-Type-Options: nosniff&lt;/div&gt;&lt;div&gt;X-XSS-Protection: 1; mode=block&lt;/div&gt;&lt;div&gt;Content-Type: text/html; charset=utf-8&lt;/div&gt;&lt;div&gt;Content-Length: 8518&lt;/div&gt;&lt;div&gt;ETag: W/&quot;2146-3AF13RvIALis2ipr0QbuzT7xdhY&quot;&lt;/div&gt;&lt;div&gt;set-cookie: connect.sid=s%3AXVjVvxoupVrkvGAEPQlSJ98MYjLimxHG.ZZqe%2F6xSLFd76JG%2BgmTUrw7IqIJoDCCS8UwPZkMVERo; Path=/; HttpOnly&lt;/div&gt;&lt;div&gt;Date: Mon, 11 Jun 2018 08:00:33 GMT&lt;/div&gt;&lt;div&gt;Connection: keep-alive&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;정상적으로 동작한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;근데, 여기서 계속 실수를 했던게 습관처럼 -itd 옵션을 붙이고 마지막에 /bin/bash를 추가 했었다.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;docker run -itd --name mocadev-nodejs -p 3003:3003 chcjswo/mocadev-web:0.1 /bin/bash&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;그럼 Dockerfile의 CMD에 정의한 커맨드를 실행하지 않고 /bin/bash를 실행해서 노드서버가 실행되지 않는다.&lt;/div&gt;&lt;div&gt;이걸 몰라서 꼬박 이틀을&amp;nbsp;허비했다.&lt;/div&gt;&lt;div&gt;역시 아무것도 모르고 따라하기만 할려면 삽질은 너무나 당연하가 보다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;다음에는 ssh를 Dockerfile에 적용해보고 jenkins로 배포하나는 것까지 해봐야 겠다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>docker</category>
      <category>Docker</category>
      <category>node.js</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/11</guid>
      <comments>https://mocadev.tistory.com/11#entry11comment</comments>
      <pubDate>Mon, 11 Jun 2018 17:06:58 +0900</pubDate>
    </item>
    <item>
      <title>aws에서 mongodb 외부에서 접속하기</title>
      <link>https://mocadev.tistory.com/10</link>
      <description>&lt;p&gt;mongodb를 설치하면 기본적으로 로컬 접속만 허용되서 외부에서 접속하기 위해서는 설정 파일을 수정해줘야 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;먼저 설정 파일을 열어준다.&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;sudo vim /etc/mongod.conf&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이부분을 주석처리 하던지 0.0.0.0 으로 수정&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;bindIp: 127.0.0.1&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이후 aws는 security group에서 centos는 iptables에서 27017 port를 오픈해준다.&lt;/p&gt;&lt;p&gt;물론 mongodb에서 다른 포트를 사용한다면 해당 포트로 오픈한다&lt;/p&gt;</description>
      <category>linux</category>
      <category>aws</category>
      <category>MongoDB</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/10</guid>
      <comments>https://mocadev.tistory.com/10#entry10comment</comments>
      <pubDate>Sat, 9 Jun 2018 23:47:07 +0900</pubDate>
    </item>
    <item>
      <title>scp 사용법</title>
      <link>https://mocadev.tistory.com/9</link>
      <description>&lt;p&gt;scp를 이용해서 다운로드 하기&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;scp -r user@server:/path/to/foo /home/user/&lt;/p&gt;&lt;/div&gt;&lt;p&gt;-r 옵션은 폴더 복사&lt;/p&gt;&lt;p&gt;/path/to/foo 서버경로&amp;nbsp;&lt;/p&gt;&lt;p&gt;/home/user/ 로컬경로&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;scp를 이용해서 업로드 하기&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;scp test.txt user@server:/path/to/foo&lt;/p&gt;&lt;/div&gt;&lt;p&gt;/path/to/foo 서버경로&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>linux</category>
      <category>Linux</category>
      <category>scp</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/9</guid>
      <comments>https://mocadev.tistory.com/9#entry9comment</comments>
      <pubDate>Fri, 8 Jun 2018 16:44:25 +0900</pubDate>
    </item>
    <item>
      <title>ssh-copy-id 사용법</title>
      <link>https://mocadev.tistory.com/8</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;ssh키를 다른 서버에 등록을 해야 되는데 문자열이 길다보니 복사해서 붙여넣기가 좀 귀찮다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;이럴때 ssh-copy-id를 사용하면 손쉽게 등록을 할 수가 있다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;ssh-copy-id -i ~/.ssh/id_rsa.pub user@111.222.333.444&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;-i 다음에는 등록할 공개키경로&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;그 다음에는 접속할 아이디@서버 아이피&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;이후 ssh user@111.222.333.444로 접속하면 된다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;접속할 서버가 많아지면 아이피를 다 외울수도 없고 그때마다 아이피를 찾아봐야 되는데 config파일을 이용하면 손쉽게 접속을 할 수가 있다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;vim ~/.ssh./config&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;Host cloudAtCost&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HostName 111.222.333.444&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User user&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IdentityFile ~/.ssh/id_rsa&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;Host oceans&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HostName 222.333.444.555&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User user&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IdentityFile ~/.ssh/id_rsa&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;Host aws1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HostName 333.444.555.666&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User user&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IdentityFile ~/.ssh/id_rsa&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;Host - 식별이름&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;HostName - 접속할 서버 아이피&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;User - 접속할 유저명&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;IdentityFile - 공개키 경로&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;접속 할때는 간단하게 다음과 같다.&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;ssh cloudAtCost&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;b&gt;ssh 식별이름(Host)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;귀찮아서 id_rsa파일 하나로 거의 대부분 접속을 하지만,&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;서버별로 파일을 만들어서 접속하는게 보안상 더 좋다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;ssh 키 만드는 법은&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;ssh-keygen -t rsa -C &quot;test@test.com&quot;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px; padding: 0px; line-height: 1.5; color: rgb(0, 0, 0); font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>linux</category>
      <category>Linux</category>
      <category>SSH</category>
      <category>ssh-copy-id</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/8</guid>
      <comments>https://mocadev.tistory.com/8#entry8comment</comments>
      <pubDate>Fri, 8 Jun 2018 15:07:05 +0900</pubDate>
    </item>
    <item>
      <title>github에 ssh key  등록하기</title>
      <link>https://mocadev.tistory.com/7</link>
      <description>&lt;p&gt;github에 ssh key를 등록하기 위해서 ssh key를 만든다.&lt;/p&gt;&lt;p&gt;대부분 엔터를 치면 된다.&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;cd ~/.ssh&lt;/p&gt;&lt;p&gt;ssh-keygen -t RSA&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;키를 복사한다.&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;cat id_rsa.pub&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Settings -&amp;gt; SSH and GPG keys 페이지로 들어간다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 230px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991148445B18DD380F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991148445B18DD380F&quot; width=&quot;230&quot; height=&quot;307&quot; filename=&quot;settings.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 257px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E4E3445B18DD3825&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E4E3445B18DD3825&quot; width=&quot;257&quot; height=&quot;510&quot; filename=&quot;sshkey.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;New SSH key 클릭&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 764px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A0E1445B18DD3803&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A0E1445B18DD3803&quot; width=&quot;764&quot; height=&quot;70&quot; filename=&quot;newkey.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;타이틀을 적고 복사한 키를 붙여넣기 한다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 777px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E6A8445B18DD3813&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E6A8445B18DD3813&quot; width=&quot;777&quot; height=&quot;427&quot; filename=&quot;key.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이후에는 git clone을 할 때 https://github.com가 아닌 git@github.com으로 시작하는 ssh도&amp;nbsp;사용할 수 있다.&lt;/p&gt;&lt;p&gt;ssh를 사용하는게 여러모로 편해서 좋다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>linux</category>
      <category>github</category>
      <category>SSH</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/7</guid>
      <comments>https://mocadev.tistory.com/7#entry7comment</comments>
      <pubDate>Thu, 7 Jun 2018 16:28:36 +0900</pubDate>
    </item>
    <item>
      <title>docker-compose 설치</title>
      <link>https://mocadev.tistory.com/6</link>
      <description>&lt;p&gt;docker-compose를 사용하기 위해서 다음과 같이 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 설치&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;sudo curl -L &quot;https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 권한 부여&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;sudo chmod +x /usr/local/bin/docker-compose&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 버전 확인&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;docker-compose version&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;docker-compose version 1.21.2, build a133471&lt;/p&gt;&lt;p&gt;docker-py version: 3.3.0&lt;/p&gt;&lt;p&gt;CPython version: 3.6.5&lt;/p&gt;&lt;p&gt;OpenSSL version: OpenSSL 1.0.1t&amp;nbsp; 3 May 2016&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>docker</category>
      <category>Docker</category>
      <category>docker-compose</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/6</guid>
      <comments>https://mocadev.tistory.com/6#entry6comment</comments>
      <pubDate>Wed, 6 Jun 2018 01:56:31 +0900</pubDate>
    </item>
    <item>
      <title>docker로 jenkins 설치하기</title>
      <link>https://mocadev.tistory.com/4</link>
      <description>&lt;p&gt;그동안 서버에 직접 jenkins를 설치해서 사용 했었는데,&lt;/p&gt;&lt;p&gt;이번에 또 설치 할 일이 있었는데 docker도 공부할겸 해서 docker로 설치를 해봤다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;먼저, 도커를 설치한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;sudo yum install docker&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;매번 sudo를 사용하지 않기 위해서 사용자를 docker그룹에 포함시켜 준다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;sudo usermod -a -G docker $USER&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;터미널을 나갔다 와야 적용된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;도커 서비스를 시작하고 버전을 확인한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;sudo service docker start&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;docker version&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Client:&lt;/p&gt;&lt;p&gt;&amp;nbsp;Version:&amp;nbsp; &amp;nbsp; &amp;nbsp; 18.03.1-ce&lt;/p&gt;&lt;p&gt;&amp;nbsp;API version:&amp;nbsp; 1.37&lt;/p&gt;&lt;p&gt;&amp;nbsp;Go version:&amp;nbsp; &amp;nbsp;go1.9.4&lt;/p&gt;&lt;p&gt;&amp;nbsp;Git commit:&amp;nbsp; &amp;nbsp;3dfb8343b139d6342acfd9975d7f1068b5b1c3d3&lt;/p&gt;&lt;p&gt;&amp;nbsp;Built:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thu May 24 22:21:27 2018&lt;/p&gt;&lt;p&gt;&amp;nbsp;OS/Arch:&amp;nbsp; &amp;nbsp; &amp;nbsp; linux/amd64&lt;/p&gt;&lt;p&gt;&amp;nbsp;Experimental: false&lt;/p&gt;&lt;p&gt;&amp;nbsp;Orchestrator: swarm&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Server:&lt;/p&gt;&lt;p&gt;&amp;nbsp;Engine:&lt;/p&gt;&lt;p&gt;&amp;nbsp; Version:&amp;nbsp; &amp;nbsp; &amp;nbsp; 18.03.1-ce&lt;/p&gt;&lt;p&gt;&amp;nbsp; API version:&amp;nbsp; 1.37 (minimum version 1.12)&lt;/p&gt;&lt;p&gt;&amp;nbsp; Go version:&amp;nbsp; &amp;nbsp;go1.9.4&lt;/p&gt;&lt;p&gt;&amp;nbsp; Git commit:&amp;nbsp; &amp;nbsp;7390fc6/18.03.1-ce&lt;/p&gt;&lt;p&gt;&amp;nbsp; Built:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thu May 24 22:22:43 2018&lt;/p&gt;&lt;p&gt;&amp;nbsp; OS/Arch:&amp;nbsp; &amp;nbsp; &amp;nbsp; linux/amd64&lt;/p&gt;&lt;p&gt;&amp;nbsp; Experimental: false&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;컨테이너가 삭제되도 jenkins 데이터를 보관할 jenkins home 폴더를 만들고 jenkins 컨테이너가 home폴더를 사용 가능하게 소유권을 바꿔주고 jenkins 최신 버전을 다운 받고 실행 시킨다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: double; border-width: 3px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;mkdir jenkins_home&lt;/div&gt;&lt;div&gt;sudo chown -R 1000:1000 ./jenkins_home&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;docker run -d --name mocadev_jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins:latest&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;➜&amp;nbsp; ~ docker ps&amp;nbsp;&lt;/div&gt;&lt;div&gt;CONTAINER ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IMAGE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;COMMAND&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATED&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;STATUS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PORTS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NAMES&lt;/div&gt;&lt;div&gt;28a775b10c34&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jenkins:latest&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;/bin/tini -- /usr/l…&quot;&amp;nbsp; &amp;nbsp;24 hours ago&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Up 23 hours&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0.0.0.0:8080-&amp;gt;8080/tcp, 0.0.0.0:50000-&amp;gt;50000/tcp&amp;nbsp; &amp;nbsp;mocadev_jenkins&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;docker 명령어에서 -v는 컨테이너의 폴더를 공유해서 호스트와 연결시켜준다.&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;-v 호스트폴더:컨테이너 폴더&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-p는 컨테이너의 포트를 노출해서 호스트 포트와 매핑시켜 준다.&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div&gt;-p 호스트 포트:컨테이터 포트&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이제 docker로 jenkins를 설치 했으니 브라우저에서 http://서버IP:8080으로 접속을 하면 jenkins화면이 보인다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>docker</category>
      <category>Docker</category>
      <category>Jenkins</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/4</guid>
      <comments>https://mocadev.tistory.com/4#entry4comment</comments>
      <pubDate>Tue, 5 Jun 2018 01:14:53 +0900</pubDate>
    </item>
    <item>
      <title>System.Net.Http.HttpRequestException: An error occurred while sending the request.</title>
      <link>https://mocadev.tistory.com/3</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;외부 API콜을 자주 해야 되는 상황인데 갑자기 다음과 같은&amp;nbsp;오류로그가 쌓이기 시작했다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;System.Net.Http.HttpRequestException: An error occurred while sending the request. ---&amp;gt; System.Net.WebException: 기본 연결이 닫혔습니다. 받기에서 예기치 않은 오류가 발생했습니다. ---&amp;gt; System.IO.IOException: 전송 연결 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다에서 데이터를 읽을 수 없습니다. ---&amp;gt; System.Net.Sockets.SocketException: 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;일단 다음과 같이 web.config에 추가를 했다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&amp;nbsp; &amp;lt;system.net&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;connectionManagement&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add address=&quot;*&quot; maxconnection=&quot;100&quot; /&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/connectionManagement&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&amp;nbsp; &amp;lt;/system.net&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;저번보다 오류건수는 줄었지만 그래도 종종 오류가 발생해서 더 찾아보니 다음과 같은게&amp;nbsp;있었다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;lang-cs prettyprint prettyprinted&quot; style=&quot;text-align: justify; margin-top: 0px; padding: 5px; border: 0px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; color: rgb(57, 51, 24); word-wrap: normal;&quot;&gt;&lt;code style=&quot;margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; white-space: inherit;&quot;&gt;&lt;span class=&quot;typ&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(43, 145, 175);&quot;&gt;HttpClient&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt; client &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 139);&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(43, 145, 175);&quot;&gt;HttpClient&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;
client&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(43, 145, 175);&quot;&gt;DefaultRequestHeaders&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(43, 145, 175);&quot;&gt;ExpectContinue&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 139);&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: rgb(0, 0, 0);&quot;&gt; &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;저렇게 하니 더이상 오류가 발생하지 않았다.&lt;/p&gt;</description>
      <category>.net</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/3</guid>
      <comments>https://mocadev.tistory.com/3#entry3comment</comments>
      <pubDate>Sun, 3 Jun 2018 17:19:51 +0900</pubDate>
    </item>
    <item>
      <title>zsh 설치하기</title>
      <link>https://mocadev.tistory.com/2</link>
      <description>&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;zsh에 익숙해지다 보니 계속 이것만 사용하게 된다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;centos를 설치하면 무조건 이것부터 설치하고 본다.&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;일단 설치 고고고~~&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo yum install -y zsh&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;설치후 기본셸을 zsh로 변경&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;which zsh&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;-&amp;gt; /bin/zsh&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;chsh -s /bin/zsh&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;oh my zsh 설치&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;curl -L&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh&quot; target=&quot;_blank&quot; class=&quot;con_link&quot; style=&quot;word-wrap: break-word;&quot;&gt;https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh&lt;/a&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;| sh&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;테마 수정&lt;/p&gt;&lt;blockquote class=&quot;se2_quote5&quot; style=&quot;font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify; background: url(&amp;quot;https://ssl.pstatic.net/static.se2/static/img/bg_b1.png&amp;quot;) repeat; margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border: 1px dashed rgb(204, 204, 204); color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;vi ~/.zshrc&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;ZSH_THEME=&quot;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;robbyrussell&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&quot;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5; font-family: &amp;quot;2820749_9&amp;quot;; font-size: 12px; text-align: justify;&quot;&gt;보통 agnoster를 많이 사용했는데 요즘에는 기본인&amp;nbsp;robbyrussell를 사용한다&lt;/p&gt;</description>
      <category>linux</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/2</guid>
      <comments>https://mocadev.tistory.com/2#entry2comment</comments>
      <pubDate>Fri, 1 Jun 2018 02:24:39 +0900</pubDate>
    </item>
    <item>
      <title>java8 설치</title>
      <link>https://mocadev.tistory.com/1</link>
      <description>&lt;table id=&quot;printPost1&quot; class=&quot;post-body&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; role=&quot;presentation&quot; style=&quot;border-collapse: collapse; table-layout: fixed; width: 773px; color: rgb(0, 0, 0); font-family: &amp;quot;Malgun Gothic&amp;quot;;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;bcc&quot; style=&quot;background: transparent;&quot;&gt;&lt;div id=&quot;postViewArea&quot;&gt;&lt;div id=&quot;post-view221060303435&quot; class=&quot;post-view pcol2 _param(1) _postViewArea221060303435&quot; style=&quot;font-family: 돋움; font-size: 12px; overflow-x: auto; overflow-y: hidden; width: 743px; position: relative; padding: 15px 0px; margin: 0px 0px 15px; clear: both; text-align: justify; line-height: 1.5; word-wrap: break-word;&quot;&gt;&lt;div class=&quot;view&quot; style=&quot;line-height: 1.5; font-size: 9pt; font-family: &amp;quot;2820749_9&amp;quot;;&quot;&gt;&lt;blockquote class=&quot;se2_quote10&quot; style=&quot;margin: 0px 0px 30px; padding-right: 10px; padding-left: 10px; border-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-color: rgb(229, 229, 229); border-image: initial; background: url(&amp;quot;http://static.se2.naver.com/static/img/bg_b1.png&amp;quot;) repeat; color: rgb(136, 136, 136);&quot;&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;mkdir /opt&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;cd /opt&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo wget --no-cookies --no-check-certificate --header &quot;Cookie: gpw_e24=http%3A%2F%2F&lt;a href=&quot;http://www.oracle.com%2F%3B/&quot; target=&quot;_blank&quot; class=&quot;con_link&quot; style=&quot;word-wrap: break-word;&quot;&gt;www.oracle.com%2F;&lt;/a&gt;oraclelicense=accept-securebackup-cookie&quot; &quot;&lt;a href=&quot;http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz&quot; target=&quot;_blank&quot; class=&quot;con_link&quot; style=&quot;word-wrap: break-word;&quot;&gt;http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz&lt;/a&gt;&quot;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo tar xzf jdk-8u131-linux-x64.tar.gz&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;cd jdk1.8.0_131&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo alternatives --install /usr/bin/java java /opt/jdk1.8.0_131/bin/java 2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;sudo alternatives --config java&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;export JAVA_HOME=/opt/jdk1.8.0_131&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;export PATH=$PATH:/opt/jdk1.8.0_131/bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;java -version&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 459px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B0BA3E5B101D1418&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B0BA3E5B101D1418&quot; width=&quot;459&quot; height=&quot;47&quot; filename=&quot;java.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;post_footer_contents&quot; style=&quot;position: relative; min-height: 16px; font-size: 12px; font-family: dotum;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;post-btn post_btn2&quot; style=&quot;position: relative; height: 25px; padding-top: 15px; font-family: 돋움, Dotum; font-size: 12px; line-height: 17px; clear: both; z-index: 30; margin-bottom: 10px;&quot;&gt;&lt;div class=&quot;postedit&quot; style=&quot;float: right; position: relative; margin-top: 2px; padding-left: 4px; text-align: right;&quot;&gt;&lt;img src=&quot;http://blogimgs.naver.net/imgs/nblog/spc.gif&quot; alt=&quot;&quot; class=&quot;fil3 pcol2b&quot; width=&quot;1&quot; height=&quot;13&quot; style=&quot;border: none; opacity: 0.3; background: rgb(0, 0, 0); margin: 0px 2px; vertical-align: -2px;&quot;&gt;&amp;nbsp;&lt;span id=&quot;post-update-text_221060303435&quot; class=&quot;edit&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;pcol2 _modifyPost _returnFalse _param(1|true) _activeId&quot;&gt;수정&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;img src=&quot;http://blogimgs.naver.net/imgs/nblog/spc.gif&quot; alt=&quot;&quot; class=&quot;fil3 pcol2b&quot; width=&quot;1&quot; height=&quot;13&quot; style=&quot;border: none; opacity: 0.3; background: rgb(0, 0, 0); margin: 0px 2px; vertical-align: -2px;&quot;&gt;&amp;nbsp;&lt;span id=&quot;post-delete-text_221060303435&quot; class=&quot;del&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;pcol2 _deletePost _returnFalse _param(1|false)&quot;&gt;삭제&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;img src=&quot;http://blogimgs.naver.net/imgs/nblog/spc.gif&quot; alt=&quot;&quot; class=&quot;fil3 pcol2b&quot; width=&quot;1&quot; height=&quot;13&quot; style=&quot;border: none; opacity: 0.3; background: rgb(0, 0, 0); margin: 0px 2px; vertical-align: -2px;&quot;&gt;&amp;nbsp;&lt;span id=&quot;post-config-text_221060303435&quot; class=&quot;move&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;pcol2 _configPost _returnFalse _param(1|221060303435)&quot; style=&quot;background-position: 100% 1px;&quot;&gt;설정&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id=&quot;spiLayer1&quot; class=&quot;naver-splugin posts2plug&quot; data-style=&quot;standard-v1-community&quot; data-url=&quot;http://blog.naver.com/chcjswoda/221060303435&quot; data-oninitialize=&quot;splugin_oninitialize(1);&quot; data-me-display=&quot;off&quot; data-likeserviceid=&quot;blog&quot; data-likecontentsid=&quot;chcjswoda_221060303435&quot; data-canonical-url=&quot;http://blog.naver.com/chcjswoda/221060303435&quot; splugin-id=&quot;1450811399&quot; style=&quot;float: right; position: relative; margin-top: 1px;&quot;&gt;&lt;div class=&quot;_ly_spi spi_default&quot; style=&quot;margin: 0px -6px; padding: 0px; font-family: 나눔고딕, NamumGothic, &amp;quot;Apple SD Gothic Neo&amp;quot;, 돋움, dotum, sans-serif; line-height: 16px; color: rgb(64, 64, 64); position: relative; z-index: 1000; float: left;&quot;&gt;&lt;ul class=&quot;_spi_lst spi_lst&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; padding: 0px; display: inline-block; zoom: 1; line-height: 16px; list-style-position: initial; list-style-image: initial; z-index: 1000; margin-left: 0px !important;&quot;&gt;&lt;li class=&quot;_spi_cafe spi_btn_cafe&quot; style=&quot;margin: 0px 0px 0px 5px; padding: 0px; line-height: 16px; list-style: none; float: left; position: relative;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; title=&quot;카페 보내기&quot; class=&quot;_spi_cafe&quot; target=&quot;_blank&quot; style=&quot;color: rgb(34, 34, 34); background: url(&amp;quot;http://static.naver.net/common/spi/2018/0306/sp_spi_pc.png&amp;quot;) -31px -161px no-repeat; float: left; overflow: hidden; width: 16px; height: 16px; margin: 0px; text-indent: -999px; cursor: pointer; padding: 0px !important;&quot;&gt;카페&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;_spi_bookmark spi_btn_bookmark&quot; style=&quot;margin: 0px 0px 0px 5px; padding: 0px; line-height: 16px; list-style: none; float: left; position: relative;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; title=&quot;북마크 보내기&quot; class=&quot;_spi_bookmark&quot; target=&quot;_blank&quot; style=&quot;color: rgb(34, 34, 34); background: url(&amp;quot;http://static.naver.net/common/spi/2018/0306/sp_spi_pc.png&amp;quot;) -72px -161px no-repeat; float: left; overflow: hidden; width: 16px; height: 16px; margin: 0px; text-indent: -999px; cursor: pointer; padding: 0px !important;&quot;&gt;북마크&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;_spi_memo spi_btn_memo&quot; style=&quot;margin: 0px 0px 0px 5px; padding: 0px; line-height: 16px; list-style: none; float: left; position: relative;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; title=&quot;메모 보내기&quot; class=&quot;_spi_memo&quot; target=&quot;_blank&quot; style=&quot;color: rgb(34, 34, 34); background: url(&amp;quot;http://static.naver.net/common/spi/2018/0306/sp_spi_pc.png&amp;quot;) -216px -127px no-repeat; float: left; overflow: hidden; width: 16px; height: 16px; margin: 0px; text-indent: -999px; cursor: pointer; padding: 0px !important;&quot;&gt;메모&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;_spi_release_cont _spi_release_btn spi_btn_release&quot; style=&quot;position: relative; margin: 0px 0px 0px 5px; padding: 0px 0px 0px 12px; line-height: 16px; list-style: none; float: left;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;_spi_release &quot; title=&quot;기타 보내기 펼치기&quot; style=&quot;color: rgb(34, 34, 34); background: none; float: left; overflow: hidden; width: 16px; height: 16px; margin: 0px; text-indent: -999px; cursor: pointer; padding: 0px !important;&quot;&gt;&lt;span class=&quot;_spi_release spi_bg_release&quot; style=&quot;background: url(&amp;quot;http://static.naver.net/common/spi/2018/0306/sp_spi_pc.png&amp;quot;) -114px -161px no-repeat; display: block; width: 16px; height: 16px;&quot;&gt;&lt;/span&gt;보내기&lt;span class=&quot;_spi_release &quot; style=&quot;background: url(&amp;quot;http://static.naver.net/common/spi/2018/0306/sp_spi_pc.png&amp;quot;) -160px -161px no-repeat; position: absolute; top: 1px; left: 3px; width: 1px; height: 14px; display: block;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;post_commentview_btn&quot; style=&quot;float: left;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;btn_commentview pcol2 _cmtList _param(1|1|221060303435|0|true) _returnFalse&quot; id=&quot;Comi221060303435&quot; style=&quot;display: inline-block; line-height: 22px; font-family: 나눔고딕, NanumGothic, NanumGothicWebFont, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, Helvetica, &amp;quot;Apple SD Gothic Neo&amp;quot;, sans-serif;&quot;&gt;댓글쓰기&amp;nbsp;&lt;span id=&quot;NaverCommentIcon221060303435&quot; class=&quot;icon icon_navigation_b&quot; style=&quot;display: inline-block; margin: 1px 6px 0px 4px; vertical-align: top; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span class=&quot;bar pcol2b&quot; style=&quot;background: rgb(0, 0, 0); display: inline-block; width: 1px; height: 14px; margin: 4px 7px 0px 3px; vertical-align: top; opacity: 0.15;&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;a id=&quot;Sympathy221060303435&quot; href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;btn_sympathyview pcol2 _symList _param(3|1|221060303435|0) _returnFalse&quot; style=&quot;display: inline-block; line-height: 22px; font-family: 나눔고딕, NanumGothic, NanumGothicWebFont, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, Helvetica, &amp;quot;Apple SD Gothic Neo&amp;quot;, sans-serif;&quot;&gt;공감&amp;nbsp;&lt;span id=&quot;SympathyIcon221060303435&quot; class=&quot;icon icon_navigation_b&quot; style=&quot;display: inline-block; margin: 1px 6px 0px; vertical-align: top; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;postre&quot; style=&quot;margin-top: 0px; float: left;&quot;&gt;&lt;div class=&quot;btn_like pcol2&quot; style=&quot;cursor: pointer; display: inline-block; position: relative; height: 25px; margin: -1px 0px 0px 11px; background: none no-repeat; vertical-align: middle;&quot;&gt;&lt;div class=&quot;u_likeit_list_module&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=chcjswoda&amp;amp;logNo=221060303435&amp;amp;categoryNo=56&amp;amp;parentCategoryNo=0&amp;amp;viewDate=&amp;amp;currentPage=4&amp;amp;postListTopCurrentPage=1&amp;amp;from=postList&amp;amp;userTopListOpen=true&amp;amp;userTopListCount=5&amp;amp;userTopListManageOpen=false&amp;amp;userTopListCurrentPage=4#&quot; class=&quot;u_likeit_list_btn u_type_img u_none_txt pcol2&quot; data-sid=&quot;BLOG&quot; data-did=&quot;BLOG&quot; data-cid=&quot;chcjswoda_221060303435&quot; data-likeit=&quot;1&quot; style=&quot;float: none; position: static; margin: 0px; padding: 0px 8px; border: 0px; background: transparent; letter-spacing: 0px; line-height: 25px; vertical-align: top; list-style: none; font-family: normal; display: inline-block; overflow: hidden; cursor: pointer; height: 25px;&quot;&gt;&lt;span class=&quot;u_ico&quot; style=&quot;float: none; position: static; margin: 6px 0px 0px; padding: 0px 0px 0px 1px; border: 0px; background: none transparent; letter-spacing: 0px; line-height: 14px; vertical-align: top; list-style: none; font-family: normal; display: inline-block; overflow: hidden; cursor: pointer; height: 14px; font-weight: bold; width: 16px; font-size: 14px;&quot;&gt;&lt;/span&gt;&lt;font face=&quot;normal&quot;&gt;&lt;span style=&quot;padding-right: 8px; padding-left: 8px; border-style: initial; border-color: initial; border-image: initial; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; letter-spacing: 0px; line-height: 25px; vertical-align: top; list-style: none; display: inline-block; overflow: hidden; cursor: pointer; height: 25px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;u_cnt _cnt&quot; style=&quot;float: none; position: static; margin: 0px; padding-top: 4px !important; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border: 0px; background: transparent; letter-spacing: 0px; line-height: 20px; vertical-align: top; list-style: none; font-family: 돋움, Dotum; display: inline-block; overflow: hidden; cursor: pointer; height: 25px; font-weight: bold;&quot;&gt;0&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span id=&quot;adPostInjectArea_221060303435&quot;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>linux</category>
      <category>aws</category>
      <category>java</category>
      <author>모카데브</author>
      <guid isPermaLink="true">https://mocadev.tistory.com/1</guid>
      <comments>https://mocadev.tistory.com/1#entry1comment</comments>
      <pubDate>Fri, 1 Jun 2018 01:05:22 +0900</pubDate>
    </item>
  </channel>
</rss>