<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>노는게 제일 좋습니다.</title>
    <link>https://studioplug.tistory.com/</link>
    <description>노는게 제일 좋습니다</description>
    <language>ko</language>
    <pubDate>Thu, 16 Apr 2026 09:49:38 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>노는게 제일 좋습니다.</managingEditor>
    <item>
      <title>Error: Minified React error #321</title>
      <link>https://studioplug.tistory.com/383</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상황&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useEffect부분에서 제목의 에러가 발생&lt;/p&gt;
&lt;pre id=&quot;code_1627810082302&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React from 'react';
import { useEffect } from 'react/cjs/react.production.min';

const Component = ({ userObj }) =&amp;gt; {
    useEffect( () =&amp;gt; { }, []);
    return ( &amp;lt;&amp;gt; &amp;lt;/&amp;gt; )
}

export default Component;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;157&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgT0og/btra4W0komy/tlCBsJ8XVZtCYF8sb7buX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgT0og/btra4W0komy/tlCBsJ8XVZtCYF8sb7buX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgT0og/btra4W0komy/tlCBsJ8XVZtCYF8sb7buX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgT0og%2Fbtra4W0komy%2FtlCBsJ8XVZtCYF8sb7buX0%2Fimg.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;157&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.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 data-ke-size=&quot;size16&quot;&gt;CRA환경에서 useEffect를 입력하면 자동완성되는 항목을 골랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연히 import도 똑바로 된 줄 알았는데, 이상한게 들어가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 쓰던대로 잘 import해주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1627810144014&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React, { useEffect } from 'react';&lt;/code&gt;&lt;/pre&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/383</guid>
      <comments>https://studioplug.tistory.com/383#entry383comment</comments>
      <pubDate>Sun, 1 Aug 2021 18:29:12 +0900</pubDate>
    </item>
    <item>
      <title>스크럼 요약</title>
      <link>https://studioplug.tistory.com/382</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;1. 정의&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;bull; 스크럼은 Ken Schwaber와 Jeff Sutherland가 1990년 고안하였음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;bull; 경험주의와 린 씽킹을 기초로 하는 &lt;/span&gt;&lt;span&gt;애자일의 실천 도구&lt;/span&gt;&lt;span&gt; 중 하나임.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;bull; 개인과 조직이 복잡한 문제를 쪼개어 반복적&amp;middot;점증적인 해법을 활용하고 가치를 창출하도록 돕는 경량 프레임워크라 할 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2. 구성요소&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; 스크럼은 아래와 같은 요소가 합쳐져 동작함.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; 1) 이벤트&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;bull; 스프린트&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - 스크럼의 핵심인 동시에 모든 이벤트의 컨테이너.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - &lt;/span&gt;&lt;span&gt;변경이 허용되지 않는 기간&lt;/span&gt;&lt;span&gt;이며, 출시 가능한 &lt;/span&gt;&lt;span&gt;증분을 산출&lt;/span&gt;&lt;span&gt;함.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트 계획 : 스프린트 &lt;/span&gt;&lt;span&gt;시작 전&lt;/span&gt;&lt;span&gt; 수행할 작업과 목표달성의 방법 선택.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 일일 스크럼 회의 : &lt;/span&gt;&lt;span&gt;작업 진척도를 점검&lt;/span&gt;&lt;span&gt;하고 스프린트 백로그를 조정.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트 리뷰 : 스프린트 &lt;/span&gt;&lt;span&gt;결과물(증분)을 검토&lt;/span&gt;&lt;span&gt;하고 프로덕트 목표대비 진척을 확인.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트 회고 : &lt;/span&gt;&lt;span&gt;다음 스프린트 진행&lt;/span&gt;&lt;span&gt;을 위해 기존의 문제점과 개선점을 논의.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; 2) 팀&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스크럼 마스터&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- &lt;span&gt;스크럼이 매끄럽게 실행&lt;/span&gt;&lt;span&gt;되는데 필요한 프로세스 관리를 담당.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 직접적으로 제품의 가치를 높이거나 제품을 구현하는 것 보다는, &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;스크럼이 정상적으로 작동할 수 있도록 &lt;/span&gt;&lt;span&gt;이해관계자들을 중재하고 지원&lt;/span&gt;&lt;span&gt;하는 역할이 큰 구성원임.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 이벤트를 관리하고 팀원들이 업무내용을 충분히 이해할 수 있도록 돕고 문제없이 증분이 산출되도록 함.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 효과적인 프로덕트 목표 정의와 계획을 수립하는 일을 지원함.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 프로덕트 오너&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스크럼의 결과로 산출되는 &lt;/span&gt;&lt;span&gt;프로덕트의 가치&lt;/span&gt;&lt;span&gt;를 높이는 일을 담당.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 프로덕트 백로그 이해관계자의 대표와 같음. 프로덕트 백로그를 명확하게 설정하고 우선순위를 정함. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 개발자&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- &lt;/span&gt;&lt;span&gt;직접적으로 구현&lt;/span&gt;&lt;span&gt;을 담당.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스프린트마다 &lt;/span&gt;&lt;span&gt;출시가능한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;증분&lt;/span&gt;&lt;span&gt;을 산출&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스프린트 백로그를 계획하고 자신이 할 일을 관리할 능력이 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; 3) 산출물&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 프로덕트 백로그&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- &lt;/span&gt;&lt;span&gt;프로덕트 요구사항을 우선순위에 따라 정렬&lt;/span&gt;&lt;span&gt;한 목록&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 프로덕트의 목표를 보여줌.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스크럼팀이 프로덕트 향상을 위해 해야 할 업무를 제공하는 유일한 출처&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트 백로그&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스프린트 목표, 선택된 프로덕트 백로그 아이템 목록, 증분을 산출하기 위한 계획으로 구성된 스프린트의 계획.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스프린트의 목표를 보여줌.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 개발자들이 &lt;/span&gt;&lt;span&gt;스프린트 목표달성을 위해 계획한 업무&lt;/span&gt;&lt;span&gt;를 가시적으로 표현함.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 증분&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- 스프린트의 산출물. 새로 완료되어 생겨난 증분은 기존의 증분에 더해짐.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;- &lt;/span&gt;&lt;span&gt;완료&lt;/span&gt;&lt;span&gt;의 의미 : &lt;/span&gt;&lt;span&gt;스프린트 결과물&lt;/span&gt;&lt;span&gt;이 프로덕트에서 요구하는 &lt;/span&gt;&lt;span&gt;품질기준을 충족&lt;/span&gt;&lt;span&gt;했을 때,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;프로덕트 백로그 아이템이 완료되었다고 표현. 그 동시에 &lt;/span&gt;&lt;span&gt;새로운 증분이 탄생.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3. 스크럼의 실행&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스크럼 구성요소의 실제 동작은 아래 그림처럼 반복적인 모형으로 그릴 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트 결과로 산출된 증분은 스프린트 리뷰 전후로 선보이게 됨.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트 도중에 업무의 가치가 없다고 판단되면 프로젝트 오너의 결정으로 스프린트를 중단 할 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스프린트의 결과를 통해서 프로덕트 백로그에 변화가 가해질 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;선택 영역_999(1383).png&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;373&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQgKAT/btq2MP4Djmn/abHG0zCTYqWIgE7Am6xVb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQgKAT/btq2MP4Djmn/abHG0zCTYqWIgE7Am6xVb1/img.png&quot; data-alt=&quot;사진1 : 스크럼 과정&amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQgKAT/btq2MP4Djmn/abHG0zCTYqWIgE7Am6xVb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQgKAT%2Fbtq2MP4Djmn%2FabHG0zCTYqWIgE7Am6xVb1%2Fimg.png&quot; data-filename=&quot;선택 영역_999(1383).png&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;373&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진1 : 스크럼 과정&amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;4. 이점&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 주기적인 스크럼 이벤트 진행 &amp;rarr; 업무의 투명성&amp;middot;가시성 증가&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 잘게 나뉘어진 업무형태와 피드백 &amp;rarr; 손쉬운 변경사항 대응, 경제성 증가&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;5. 문제와 한계&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 스크럼의 가치를 지켜 개발과정을 관리하기 위해서는 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;구성원 모두가 자신의 역할을 충실히 수행함과 동시에 적절한 능력&amp;middot;권한을 갖고 있어야 함.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;bull; 그러나 개발자들에게 적절한 권한이 주어지지 못하여 진정한 스크럼 구성원으로서 일할 기회를 박탈할 우려가 있음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;bull; 개발관리방식의 근본적 변화 없는 스크럼 도입은 오히려 제품결함을 야기할 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;6. 출처&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;1) 참고 문헌&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;bull; 김희천,『소프트웨어공학』(한국방송통신대학교 출판문화원, 2020), p. 51-55.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;bull; &quot;The 2020 Scrum Guide&quot;, Scrum&amp;nbsp; Guides, 2020년 11월 18일 작성, 2021년 4월 18일 열람, &lt;a href=&quot;https://scrumguides.org/scrum-guide.html&quot;&gt;https://scrumguides.org/scrum-guide.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;bull; &quot;2020 Scrum Guite Korean&quot;, Scrum Guides , 게시일 표시없음, 2021년 4월 18일 열람, &lt;a href=&quot;https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Korean.pdf&quot;&gt;https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Korean.pdf&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;bull; &quot;THE SCRUM PAPERS: NUT, BOLTS, AND ORIGINS OF AN AGILE FRAMEWORK&quot;, scruminc, 2021년 3월 30일 작성, 2021년 4월 18일 열람, &lt;a href=&quot;https://www.scruminc.com/scrumpapers.pdf&quot;&gt;https://www.scruminc.com/scrumpapers.pdf&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; 2) 사진&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;bull; &lt;/span&gt;&lt;span&gt;[사진1:스크럼 과정]&lt;/span&gt;&lt;span&gt; 참고문헌 中 &quot;THE SCRUM PAPERS: NUT, BOLTS, AND ORIGINS OF AN AGILE FRAMEWORK&quot;&lt;/span&gt;&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/382</guid>
      <comments>https://studioplug.tistory.com/382#entry382comment</comments>
      <pubDate>Sun, 18 Apr 2021 20:54:34 +0900</pubDate>
    </item>
    <item>
      <title>Google Apps Script : CORS 및 '현재 파일을 열 수 없습니다'</title>
      <link>https://studioplug.tistory.com/381</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;2021. 4. 25&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;post요청을 넣을 때 data가 stringify되지 않은 쌩 json인 케이스를 추가하였다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제상황&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbXANd/btq2MAsrmOn/swbfwzB0XRt3oTMfX8SMlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbXANd/btq2MAsrmOn/swbfwzB0XRt3oTMfX8SMlK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 43.9229%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbXANd/btq2MAsrmOn/swbfwzB0XRt3oTMfX8SMlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbXANd%2Fbtq2MAsrmOn%2FswbfwzB0XRt3oTMfX8SMlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B7IAY/btq2MkcvYBy/Mo3zeHYUNAs4HmmxAweKKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B7IAY/btq2MkcvYBy/Mo3zeHYUNAs4HmmxAweKKk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 54.9143%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B7IAY/btq2MkcvYBy/Mo3zeHYUNAs4HmmxAweKKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB7IAY%2Fbtq2MkcvYBy%2FMo3zeHYUNAs4HmmxAweKKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1618663263695&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Access to XMLHttpRequest at 'https://script.google.com/macros/s/AKfycbxpWbwsIH8_(중략)_xv3uK3v/dev' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

xhr.js:177 GET https://script.google.com/macros/s/AKfycbxpWbwsIH8_(중략)_xv3uK3v/deV net::ERR_FAILED

createError.js:16 Uncaught (in promise) Error: Network Error
    at createError (createError.js:16)
    at XMLHttpRequest.handleError (xhr.js:84)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Google Apps Script(이하 GAS)를 웹 앱으로 배포했다.&lt;/p&gt;
&lt;p&gt;Spread Sheet를 컨테이너로 갖는 프로젝트도 있고, Script 그 자체로만 존재하는 프로젝트도 있다. 둘 모두 동일한 증상이 나타났다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 때 권한은 아래와 같이 설정했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;실행 인증 : 나(소유자 본인)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;액세스 권한 : 모든 사용자(익명 포함)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이렇게 권한을 부여한 경우 누가 어떤 계정으로 로그인했든, 심지어는 로그인하지 않았어도 get/post 요청이 정상적으로 가능해야한다. 근데 잘 되던게 갑자기 안되기 시작했다.&lt;/p&gt;
&lt;p&gt;웹앱 url을 웹브라우저에 직접 입력했을 때는 '현재 파일을 열 수 없습니다'라는 화면이 출력되고, js로 get/post 요청을 넣었을 때는 CORS+네트워크 오류가 뜬다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;1. 구글 로그인 꼬임문제&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;GCP에서 버켓 CORS를 설정하니, 요청 헤더값에 무언가 동봉해주니 하는 문제가 아니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;로그인되어있는 구글 계정이 여러개이면 이런 문제가 발생한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 요청데이터 타입 문제&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;데이터를 문자열이 아닌 {a:11}와 같은 js데이터 타입을 보내는 경우에도 CORS에러가 발생한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;1. 구글 로그인 꼬임문제&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1). 계정 전부 로그아웃&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2-1). 모두 로그아웃된 그 상태로 스크립트 요청&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2-2). 또는, 어느 계정이든지 좋으니 '하나의 계정'만 로그인후 스크립트 요청&lt;/p&gt;
&lt;p&gt;즉, 소유자를 포함한 여러 계정이 동시에 로그인 되어있지 않으면 해결.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 요청데이터 타입 문제&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619324701730&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;axios.post('https://wonj.in/', {a:11, b:22});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위와 같은 코드는 작동하지 않는다.&lt;/p&gt;
&lt;pre id=&quot;code_1619324701730&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;axios.post('https://wonj.in/', JSON.stringify({a:11, b:22}));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;stringify하든 ' ' 따옴표를 붙이든 해서 데이터부분을 문자열로 만들어주어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. 결과&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRId4W/btq2MjYYNFq/7Q01LjGH5bivKuwMwy7k6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRId4W/btq2MjYYNFq/7Q01LjGH5bivKuwMwy7k6K/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 43.8341%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRId4W/btq2MjYYNFq/7Q01LjGH5bivKuwMwy7k6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRId4W%2Fbtq2MjYYNFq%2F7Q01LjGH5bivKuwMwy7k6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtVpcI/btq2SLeINlJ/sphECMRggKEOQzMT3zJtp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtVpcI/btq2SLeINlJ/sphECMRggKEOQzMT3zJtp0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 55.0031%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtVpcI/btq2SLeINlJ/sphECMRggKEOQzMT3zJtp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtVpcI%2Fbtq2SLeINlJ%2FsphECMRggKEOQzMT3zJtp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;상당히 어이없게 잘 되는 것을 확인할 수 있다.&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/381</guid>
      <comments>https://studioplug.tistory.com/381#entry381comment</comments>
      <pubDate>Sat, 17 Apr 2021 21:45:42 +0900</pubDate>
    </item>
    <item>
      <title>npm 6.x.x -&amp;gt; 7.x.x 업데이트 이후 node 실행시 chokidar dependency 오류</title>
      <link>https://studioplug.tistory.com/380</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;상황&lt;/h2&gt;
&lt;pre id=&quot;code_1618134168152&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/chokidar.js:17
throw new Error(
^

Error: No version of chokidar is available. Tried chokidar@2 and chokidar@3.
You could try to manually install any chokidar version.
chokidar@3: Error: Cannot find module 'chokidar'
Require stack:
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/chokidar.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/DirectoryWatcher.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/watcherManager.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/watchpack.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/webpack/lib/node/NodeWatchFileSystem.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/webpack/lib/node/NodeEnvironmentPlugin.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/webpack/lib/webpack.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/react-scripts/scripts/start.js
chokidar@2: Error: Cannot find module 'watchpack-chokidar2'
Require stack:
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/chokidar.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/DirectoryWatcher.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/watcherManager.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/watchpack.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/webpack/lib/node/NodeWatchFileSystem.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/webpack/lib/node/NodeEnvironmentPlugin.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/webpack/lib/webpack.js
- /home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/react-scripts/scripts/start.js

    at Object.&amp;lt;anonymous&amp;gt; (/home/wonjinyi/Desktop/NyamNyamLab/test/node_modules/watchpack/lib/chokidar.js:17:7)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;레포지토리를 클론떠서 새로 패키지를 설치하는김에 npm도 업데이트 해주었다&lt;/p&gt;
&lt;p&gt;기존의 npm 버전은 6.x.x 이고, 업데이트 이후 npm 버전은 7.9.0이다.&lt;/p&gt;
&lt;p&gt;문제가 생긴 프로젝트는 npx crate-react-app [xx]로 생성한 CRA템플릿이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원인&lt;/h2&gt;
&lt;p&gt;chokidar는 &lt;span&gt;watchpack안쪽에 있는 모듈로, 핫 리로딩에 관련되어있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;기존에 설치되어 있던 chokidar 2에 문제가 있어 개발자측에서 chokidar 3으로 버전을 올려놓았었다.&lt;/p&gt;
&lt;p&gt;그냥 chokidar 깔아주면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;pre id=&quot;code_1618134511583&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm i -g npm
npm update
npm cache verify
npm i -D chokidar
npm i&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;같은걸 두 번씩 하는 과도한 명령이긴 한데, 아무튼 된다.&lt;/p&gt;
&lt;p&gt;cache verify는 아무런 피드백도 없이 시간이 많이 소요된다. 본인의 경우 7분 걸렸다.&lt;/p&gt;
&lt;p&gt;이유는 모르겠지만 chokidar 2가 있는 디렉토리 안에서 chokidar를 설치하면 에러가 난다. 디렉토리 바깥해서 해주면 잘 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/380</guid>
      <comments>https://studioplug.tistory.com/380#entry380comment</comments>
      <pubDate>Sun, 11 Apr 2021 18:50:19 +0900</pubDate>
    </item>
    <item>
      <title>QGIS 벡터레이어 : 도형 생성/병합/분리</title>
      <link>https://studioplug.tistory.com/378</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;참고 : &lt;a href=&quot;https://www.biz-gis.com/index.php?mid=QGIS_INTRO&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bis-gis라는 사이트의 QGIS게시판&lt;/a&gt;이 거의 유일한 한국 커뮤니티인 것 같다. 우선 QGIS에서 제공하는 문서를 모두 살펴보고, 해결이 안되거나 짬바가 필요한 경우는 bis-gis를 살펴보자. 여기서 해결이 안되면 스택익스체인지 같은 곳을 찾아나서자.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;pyqgis 개발자 쿡북 &lt;a href=&quot;https://docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/intro.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/intro.html&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;pyqgis API &lt;a href=&quot;https://qgis.org/pyqgis/3.0/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;qgis.org/pyqgis/3.0/index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: right;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: right;&quot; data-ke-size=&quot;size26&quot;&gt;목차&lt;/h2&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;목적과 개요&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;레이어 편집과 도형그리기&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;도형 병합&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;멀티파트를 싱글파트로&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;멀티파트 스플릿 플러그인&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;목적과 개요&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;이미 도형/레이어 병합을 거쳐 완성되어있는 shp확장자의 벡터레이어가 있다. &lt;b&gt;QGIS상에서 병합을 모두 풀어 실제 '도형'의 숫자를 세고 싶다.&lt;/b&gt; QGIS GUI로 먼저 해결하며 과정을 살펴보고, 이를 pyqgis 스크립트로&amp;nbsp; 간단하게 레이어 내 도형의 숫자를 세어보고자 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;QGIS 백터 레이어 위에 도형(Geometry)을 그릴 수 있다. 이 때,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;기본적으로 한 개 도형은 한 개의 객체(Object)로 세어진다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;여러 도형들을 '도형 병합(merge)'기능을 사용해 하나의 객체로 묶어낼 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;도형 병합되어 상황에 따라 여러 레이어로 나뉠 수도 있는데, 이 레이어들을 병합할 수도 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;반대 과정의 작업도 QGIS툴을 이용하면 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coygOX/btq1D1xqijh/MJRN03dO4kJ1VFFZx8WnKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coygOX/btq1D1xqijh/MJRN03dO4kJ1VFFZx8WnKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coygOX/btq1D1xqijh/MJRN03dO4kJ1VFFZx8WnKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoygOX%2Fbtq1D1xqijh%2FMJRN03dO4kJ1VFFZx8WnKk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;레이어 편집과 도형그리기&lt;/span&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diLwIC/btq1D06k9uc/KnkfKVzPaLbadNaakWEciK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diLwIC/btq1D06k9uc/KnkfKVzPaLbadNaakWEciK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 41.8731%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diLwIC/btq1D06k9uc/KnkfKVzPaLbadNaakWEciK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiLwIC%2Fbtq1D06k9uc%2FKnkfKVzPaLbadNaakWEciK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCaN00/btq1ztIHkFZ/F8aEJLhEELmEBeBS7CWjS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCaN00/btq1ztIHkFZ/F8aEJLhEELmEBeBS7CWjS0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 56.9641%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCaN00/btq1ztIHkFZ/F8aEJLhEELmEBeBS7CWjS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCaN00%2Fbtq1ztIHkFZ%2FF8aEJLhEELmEBeBS7CWjS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) 편집모드 전환 과정 / (우) 편집모드가 적용된 레이어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;레이어에 무언가 변화를 가하려면 현재 그 레이어가 '편집 모드'여야 한다. 편집모드로 진입하려면 아래 과정을 따른다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617287097196&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;해당 레이어 [우클릭] - [편집 모드 전환]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;전환된 뒤에는 레이어 이름 왼쪽에 연필같은 그림이 나타난다. 뷰어로 돌아가려면 같은 방법으로 토글할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uigJb/btq1E8ixwXn/cV6JawtYkhyMYpdzlKHpv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uigJb/btq1E8ixwXn/cV6JawtYkhyMYpdzlKHpv1/img.png&quot; data-origin-width=&quot;416&quot; data-origin-height=&quot;376&quot; data-filename=&quot;blob&quot; style=&quot;width: 39.2425%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uigJb/btq1E8ixwXn/cV6JawtYkhyMYpdzlKHpv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuigJb%2Fbtq1E8ixwXn%2FcV6JawtYkhyMYpdzlKHpv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBsfti/btq1AGAOK7s/YxOK7aO7BO2n8MhoFPNgL0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBsfti/btq1AGAOK7s/YxOK7aO7BO2n8MhoFPNgL0/img.gif&quot; data-filename=&quot;212121.gif&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;666&quot; style=&quot;width: 59.5947%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBsfti/btq1AGAOK7s/YxOK7aO7BO2n8MhoFPNgL0/img.gif&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBsfti%2Fbtq1AGAOK7s%2FYxOK7aO7BO2n8MhoFPNgL0%2Fimg.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1119&quot; height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그 다음 상단 메뉴의 &lt;b&gt;[편집]&lt;/b&gt;을 펼쳐보면 폴리곤/원/직사각형/정다각형/타원 항목이 활성화되어있음을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;폴리곤이든 원이든 원하는 영역이 잘 지정되었으면, &lt;b&gt;[마우스 우클릭]-[엔터]&lt;/b&gt;를 통해서 도형을 레이어에 얹을 수 있다.&lt;/p&gt;
&lt;p&gt;도형 그리기를 취소하고자 할 때에는,&lt;b&gt; [편집]-[선택]-[객체(들) 선택]&lt;/b&gt;을 하면 선택모드로 전환되며 문제가 해결된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;도형 병합&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qpSJL/btq1EoePrth/IBMHaWcDK5WK4LelFu12W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qpSJL/btq1EoePrth/IBMHaWcDK5WK4LelFu12W0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 40.6036%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qpSJL/btq1EoePrth/IBMHaWcDK5WK4LelFu12W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqpSJL%2Fbtq1EoePrth%2FIBMHaWcDK5WK4LelFu12W0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCAzKw/btq1C2QTkvo/8pgeh8cqcAxO9ehckahz10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCAzKw/btq1C2QTkvo/8pgeh8cqcAxO9ehckahz10/img.png&quot; data-filename=&quot;선택 영역_999(1347).png&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;427&quot; style=&quot;width: 58.2336%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCAzKw/btq1C2QTkvo/8pgeh8cqcAxO9ehckahz10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCAzKw%2Fbtq1C2QTkvo%2F8pgeh8cqcAxO9ehckahz10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;병합 과정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;선택 영역_999(1348).png&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/npw99/btq1E8bKQa3/N2AxY0evs2PIyQfRT2FUfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/npw99/btq1E8bKQa3/N2AxY0evs2PIyQfRT2FUfK/img.png&quot; data-alt=&quot;병합이 완료된 도형. 영역이 겹친다면 서로를 구분짓던 선이 사라진다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/npw99/btq1E8bKQa3/N2AxY0evs2PIyQfRT2FUfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnpw99%2Fbtq1E8bKQa3%2FN2AxY0evs2PIyQfRT2FUfK%2Fimg.png&quot; data-filename=&quot;선택 영역_999(1348).png&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;병합이 완료된 도형. 영역이 겹친다면 서로를 구분짓던 선이 사라진다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 병합할 도형을 선택하고 [편집]=[선택한 객체 병합]으로 병합할 수 있다. 이제 사진에서 선택된 4개의 원은 마치 하나의 도형처럼 동작한다. 객체로는 1개로 센다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 현재 상태의 도형을 'multipart 도형'이라고 한다. 원래 따로따로 존재하던 도형은 'single part 도형'이라고 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;멀티파트 스플릿&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvKTrT/btq1D15ggH4/zSqFtwWZBBtQaGARQok1o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvKTrT/btq1D15ggH4/zSqFtwWZBBtQaGARQok1o1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 45.7508%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvKTrT/btq1D15ggH4/zSqFtwWZBBtQaGARQok1o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvKTrT%2Fbtq1D15ggH4%2FzSqFtwWZBBtQaGARQok1o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5ZuFo/btq1GeJlHdc/qq1XJNb5VN1Dzujes7z25k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5ZuFo/btq1GeJlHdc/qq1XJNb5VN1Dzujes7z25k/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 53.0864%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5ZuFo/btq1GeJlHdc/qq1XJNb5VN1Dzujes7z25k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5ZuFo%2Fbtq1GeJlHdc%2Fqq1XJNb5VN1Dzujes7z25k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;4개의 원이 하나의 객체로 묶였고, 이 중에서 오른쪽 2개의 원은 아예 하나의 싱글파트가 되어버렸다. 이 상황에서 3개의 싱글파트로 분리하고자 한다.&lt;/p&gt;
&lt;p&gt;상단의 &lt;b&gt;[툴박스]-[벡터도형]-[다중부분을 단일부분으로]&lt;/b&gt;를 통해 3개의 싱글파트로 분리해낼 수 있다. 조랭이떡처럼 붙어버린 저건.. 이 방법으로는 답이없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;멀티파트 스플릿 플러그인&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAdAPt/btq1EosmS8X/RjjuBJmxCkoKS8wPo5p750/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAdAPt/btq1EosmS8X/RjjuBJmxCkoKS8wPo5p750/img.png&quot; data-filename=&quot;선택 영역_999(1352).png&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;304&quot; style=&quot;width: 58.5636%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAdAPt/btq1EosmS8X/RjjuBJmxCkoKS8wPo5p750/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAdAPt%2Fbtq1EosmS8X%2FRjjuBJmxCkoKS8wPo5p750%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNCpCg/btq1C1EtfCw/qU2mVrfoXad8dWRF6zH261/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNCpCg/btq1C1EtfCw/qU2mVrfoXad8dWRF6zH261/img.png&quot; data-filename=&quot;선택 영역_999(1353).png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;495&quot; style=&quot;width: 40.2736%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNCpCg/btq1C1EtfCw/qU2mVrfoXad8dWRF6zH261/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNCpCg%2Fbtq1C1EtfCw%2FqU2mVrfoXad8dWRF6zH261%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;495&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;위와 같은 과정을 통해 multipart split 플러그인을 설치한다. 설치하고 나면 상단의 [편집] 메뉴 아래에 'Split Feature(s) Parts'가 추가된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bivR30/btq1AFomcCw/vKkpdiq9xVpcpzhpug3AA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bivR30/btq1AFomcCw/vKkpdiq9xVpcpzhpug3AA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bivR30/btq1AFomcCw/vKkpdiq9xVpcpzhpug3AA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbivR30%2Fbtq1AFomcCw%2FvKkpdiq9xVpcpzhpug3AA0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;스플릿하고자 하는 multi part 도형을 선택하고, 해당 플러그인을 동작시키면 해당 레이어에 직접 single part 도형들을 그린다. 기존의 multi part 도형은 사라진다.&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/378</guid>
      <comments>https://studioplug.tistory.com/378#entry378comment</comments>
      <pubDate>Fri, 2 Apr 2021 00:34:31 +0900</pubDate>
    </item>
    <item>
      <title>배열 state가 업데이트 되었음에도 re-rendering되지 않는 경우</title>
      <link>https://studioplug.tistory.com/377</link>
      <description>&lt;pre id=&quot;code_1615483243321&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default App() {
    const [arr, setArr] = useState([1,2,3]);
    const deleteSam = (e) =&amp;gt; {
        const temp = arr;
        temp.splice(2,1);
        setArr(temp);
    };

    return (
        &amp;lt;div&amp;gt;
            &amp;lt;ul&amp;gt;
            { arr.map( (item, index) =&amp;gt; &amp;lt;li key={index}&amp;gt;{item}&amp;lt;/li&amp;gt; ) }
            &amp;lt;/ul&amp;gt;

            &amp;lt;button onClick={ deleteSam }&amp;gt;버튼버튼&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;함수 deleteSam에서 arr의 값을 새로운 변수에 담고, 배열을 가공하고, 가공된 결과를 arr state에 업데이트 시켜주고 있는 것같다. 그러나 리렌더링이 되지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이유는 별다른것이 아니라, 실제로 set__ 구문으로 state가 바뀌지 않았으므로 렌더링되지 않는 것이다. 배열은 얕은 복사가 되므로, temp에 실제로 들어가있는 값은 [1,2,3]이 아니라 참조값이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1615483573322&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;temp.splice(2,1); &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;부분에서 이미 arr는 리렌더링 없이 값이 업데이트 되었고, setArr(temp)는 setArr(arr)과 별반 차이없는 구문이다. 값이 바뀌지 않았으니 리렌더링도 없다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;해결&lt;/b&gt;은 스프레드 연산자 내지는 filter함수로 다소 답답하게 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://velopert.com/3638&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;velopert.com/3638&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1615483825892&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;누구든지 하는 리액트 8편: 배열 다루기 (2) 제거와 수정 | VELOPERT.LOG&quot; data-og-description=&quot;이 튜토리얼은 10편으로 이뤄진 시리즈입니다. 이전 / 다음 편을 확인하시려면&amp;nbsp;목차를 확인하세요. 우리는 지난 섹션에서 배열에 데이터를 추가하는 방법과 배열 내부의 내용들을 화면에 보여&quot; data-og-host=&quot;velopert.com&quot; data-og-source-url=&quot;https://velopert.com/3638&quot; data-og-url=&quot;https://velopert.com/3638&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yIKdu/hyJw3L3M8r/PQdawJjFcVD625xBKjZTEK/img.png?width=576&amp;amp;height=654&amp;amp;face=0_0_576_654,https://scrap.kakaocdn.net/dn/bQKDD0/hyJw6PwrR8/iMK2fnX710iXDeKxLikVc1/img.png?width=576&amp;amp;height=654&amp;amp;face=0_0_576_654,https://scrap.kakaocdn.net/dn/l8EUF/hyJw8fwkKa/bXTQ8ubm7g9mxsXBKaCBMk/img.png?width=753&amp;amp;height=587&amp;amp;face=0_0_753_587&quot;&gt;&lt;a href=&quot;https://velopert.com/3638&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velopert.com/3638&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yIKdu/hyJw3L3M8r/PQdawJjFcVD625xBKjZTEK/img.png?width=576&amp;amp;height=654&amp;amp;face=0_0_576_654,https://scrap.kakaocdn.net/dn/bQKDD0/hyJw6PwrR8/iMK2fnX710iXDeKxLikVc1/img.png?width=576&amp;amp;height=654&amp;amp;face=0_0_576_654,https://scrap.kakaocdn.net/dn/l8EUF/hyJw8fwkKa/bXTQ8ubm7g9mxsXBKaCBMk/img.png?width=753&amp;amp;height=587&amp;amp;face=0_0_753_587');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;누구든지 하는 리액트 8편: 배열 다루기 (2) 제거와 수정 | VELOPERT.LOG&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;이 튜토리얼은 10편으로 이뤄진 시리즈입니다. 이전 / 다음 편을 확인하시려면&amp;nbsp;목차를 확인하세요. 우리는 지난 섹션에서 배열에 데이터를 추가하는 방법과 배열 내부의 내용들을 화면에 보여&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;velopert.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;이게 싫다면 갖은 더러운방법으로 강제 리렌더링을 하든지, 깊은복사를 무겁게 돌리든지 하여 해결하면 되겠다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/377</guid>
      <comments>https://studioplug.tistory.com/377#entry377comment</comments>
      <pubDate>Fri, 12 Mar 2021 02:27:12 +0900</pubDate>
    </item>
    <item>
      <title>react.js로 ant-design 시작하기</title>
      <link>https://studioplug.tistory.com/375</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;설치&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1614520596076&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install antd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;antd 하나만 깔면 자잘한 패키지들까지 모두 설치해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;컴포넌트에서 사용&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1614520779019&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { React } from &quot;react&quot;;
import { Button, Tooltip } from &quot;antd&quot;;
import { FilterOutlined } from &quot;@ant-design/icons&quot;

export default function Menu () {
    return (
        &amp;lt;div className=&quot;Menu&quot;&amp;gt;
            &amp;lt;Tooltip title=&quot;버튼&quot;&amp;gt;
                &amp;lt;Button shape=&quot;circle&quot; icon={&amp;lt;FilterOutlined /&amp;gt;} /&amp;gt;
            &amp;lt;/Tooltip&amp;gt;
        &amp;lt;/div&amp;gt;
    );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;다른 UI 컴포넌트와 비슷한 방식으로 사용할 수 있다. 아이콘버튼에 마우스를 올리면 툴팁이 나타나는 예제이다.&lt;/p&gt;
&lt;pre id=&quot;code_1614520868295&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'antd/dist/antd.css';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;하다보면 뭔가 똑바로 안나오는 경우가 있는데 (예시 : Spin), 그럴 때는 antd의 css파일을 하나 불러오면 된다. 여기까지 왔으면 다른거 다 필요없고 컴포넌트 목록보고 쏙쏙 뽑아먹으면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ant.design/components/button/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ant.design/components/button/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1614522951240&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Button - Ant Design&quot; data-og-description=&quot;If you need several buttons, we recommend that you use 1 primary button + n secondary buttons, and if there are more than three operations, you can group some of them into Dropdown.Button.&quot; data-og-host=&quot;ant.design&quot; data-og-source-url=&quot;https://ant.design/components/button/&quot; data-og-url=&quot;https://ant.design/components/button/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bnDC1n/hyJpHpbkav/mKJ4412hnYogsqKkFOPkGK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://ant.design/components/button/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ant.design/components/button/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bnDC1n/hyJpHpbkav/mKJ4412hnYogsqKkFOPkGK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Button - Ant Design&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;If you need several buttons, we recommend that you use 1 primary button + n secondary buttons, and if there are more than three operations, you can group some of them into Dropdown.Button.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ant.design&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;커스텀 스타일링 : Less&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;본래 ant design 문서의 'customize Theme'부분에서는 Less로 정의된 테마를 어찌어찌 잘 작업해주는걸 설명해주고 있다. 첫 번째 링크는 설명 문서이고, 두 번째 링크는 default값으로 정의된 모든 값을 보여주는 파일이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ant.design/docs/react/customize-theme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ant.design/docs/react/customize-theme&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1614522379975&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Customize Theme - Ant Design&quot; data-og-description=&quot;Ant Design allows you to customize our design tokens to satisfy UI diversity from business or brand requirements, including primary color, border radius, border color, etc. We are using Less as the development language for styling. A set of less variables &quot; data-og-host=&quot;ant.design&quot; data-og-source-url=&quot;https://ant.design/docs/react/customize-theme&quot; data-og-url=&quot;https://ant.design/docs/react/customize-theme&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvCmtq/hyJpMKKR0E/KkZLwZ5yZIAA3P0d68eeU1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/dYH2bN/hyJpDG3ief/cD8XcvPkJjfD7KzlYNFnQ1/img.png?width=2880&amp;amp;height=2526&amp;amp;face=0_0_2880_2526,https://scrap.kakaocdn.net/dn/cnXzre/hyJpzLoo2e/8AnIu9MPu8M7R2TddXAEA1/img.png?width=2396&amp;amp;height=796&amp;amp;face=0_0_2396_796&quot;&gt;&lt;a href=&quot;https://ant.design/docs/react/customize-theme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ant.design/docs/react/customize-theme&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvCmtq/hyJpMKKR0E/KkZLwZ5yZIAA3P0d68eeU1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/dYH2bN/hyJpDG3ief/cD8XcvPkJjfD7KzlYNFnQ1/img.png?width=2880&amp;amp;height=2526&amp;amp;face=0_0_2880_2526,https://scrap.kakaocdn.net/dn/cnXzre/hyJpzLoo2e/8AnIu9MPu8M7R2TddXAEA1/img.png?width=2396&amp;amp;height=796&amp;amp;face=0_0_2396_796');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Customize Theme - Ant Design&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Ant Design allows you to customize our design tokens to satisfy UI diversity from business or brand requirements, including primary color, border radius, border color, etc. We are using Less as the development language for styling. A set of less variables&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ant.design&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/ant-design/ant-design/blob/master/components/style/themes/default.less&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1614522371101&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;ant-design/ant-design&quot; data-og-description=&quot;  A UI Design Language and React UI library. Contribute to ant-design/ant-design development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less&quot; data-og-url=&quot;https://github.com/ant-design/ant-design&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A3hYk/hyJq5vaVMq/pb5vCxwtoaGtzXXEikTI70/img.png?width=1280&amp;amp;height=628&amp;amp;face=0_0_1280_628&quot;&gt;&lt;a href=&quot;https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A3hYk/hyJq5vaVMq/pb5vCxwtoaGtzXXEikTI70/img.png?width=1280&amp;amp;height=628&amp;amp;face=0_0_1280_628');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;ant-design/ant-design&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;  A UI Design Language and React UI library. Contribute to ant-design/ant-design development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;커스텀 스타일링 : styled-components로 스타일 덮어쓰기&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;공식문서에서 설명해준게 하기 싫어서 다른 방법을 가져왔다. 다른 문서들을 잘 살펴보니, 'styled-components'를 이용하여 Ant design에서 제공하는 스타일을 덮어쓸 수도 있었다. 그냥 styled-components 쓸 때 하던일 그대로 하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1614522643593&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install styled-components&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;먼저 npm으로 내려받아주고&lt;/p&gt;
&lt;pre id=&quot;code_1614522771307&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { React } from &quot;react&quot;;
import styled from &quot;styled-components&quot;;

import { Button, Tooltip } from &quot;antd&quot;;
import { FilterOutlined } from &quot;@ant-design/icons&quot;

export default function Menu () {
    return (
        &amp;lt;div className=&quot;Menu&quot;&amp;gt;
            &amp;lt;Tooltip title=&quot;버튼&quot;&amp;gt;
                &amp;lt;MenuButton shape=&quot;circle&quot; icon={&amp;lt;FilterOutlined /&amp;gt;} /&amp;gt;
            &amp;lt;/Tooltip&amp;gt;   
        &amp;lt;/div&amp;gt;
    );
}

const MenuButton = styled(Button)`
    background-color : red;
    `;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위와 같이 스타일을 스타일을 먹여줄 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1614522887258&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import styled from &quot;styled-components&quot;

import { 뭐시기 } from &quot;antd&quot;;

export default function App() {
	return (
    	&amp;lt;스타일먹인 뭐시기 /&amp;gt;
    );
}

const 스타일먹인 뭐시기 = styled(뭐시기)`
color : 빨강빨강;
    background-color : 초록초록;
	`;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 내용이 핵심이다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/375</guid>
      <comments>https://studioplug.tistory.com/375#entry375comment</comments>
      <pubDate>Sun, 28 Feb 2021 23:36:05 +0900</pubDate>
    </item>
    <item>
      <title>React setState와 후속 코드의 실행순서 뒤바뀜 해결</title>
      <link>https://studioplug.tistory.com/374</link>
      <description>&lt;p&gt;state를 변화시킨 뒤에 실행되어야 하는 코드가 있을 때, 단순히 위-아래의 순서로 나열해서는 의도대로 동작하지 않을 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613154679935&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Class component
export default class App extends React.Component {
  state = {
  	a : true,
  };

  setState( { a : false } );
  goHome();

  render () {
  	return ( &amp;lt; &amp;gt; ~-~-~-~- &amp;lt;/ &amp;gt; );
  }
}

function goHome () {
	// 퇴근시켜주세요!! 퇴근시켜주세요!!
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1613154754074&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//function component
export default function App() {
    const [a, setA] = useState(true);

    setA(false);
    goHome();

    return ( &amp;lt; &amp;gt; ~-~-~-~- &amp;lt;/ &amp;gt; );
}

function goHome () {
	// 퇴근시켜주세요!! 퇴근시켜주세요!!
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 코드의 원래 의도는 state값 a를 변화시키고 &amp;gt; 렌더링하고 &amp;gt; goHome을 실행하는 것이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613155254708&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Class component : SOLVED
export default class App extends React.Component {
  state = {
  	a : true,
  };

  setState( { a : false }, goHome );
  

  render () {
  	return ( &amp;lt; &amp;gt; ~-~-~-~- &amp;lt;/ &amp;gt; );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;클래스 컴포넌트의 setState의 경우 콜백으로 goHome을 넣어주면 해결된다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613155368051&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//function component : SOLVED
export default function App() {
    const [a, setA] = useState(true);
    useEffect( 
    	() =&amp;gt; { goHome(); }
    	, [a]
    );
    
    setA(false);
   
    return ( &amp;lt; &amp;gt; ~-~-~-~- &amp;lt;/ &amp;gt; );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수 컴포넌트에서 훅을 사용한다면 useEffect를 사용하면 해결된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/374</guid>
      <comments>https://studioplug.tistory.com/374#entry374comment</comments>
      <pubDate>Sat, 13 Feb 2021 03:45:22 +0900</pubDate>
    </item>
    <item>
      <title>react + express 세션이 제대로 박히지 않는 경우</title>
      <link>https://studioplug.tistory.com/373</link>
      <description>&lt;p&gt;react, axios, express, express-session, cors 를 사용하고 있다.&lt;/p&gt;
&lt;p&gt;클라이언트에 세션이 제대로 박히지 않는 경우가 있었다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경우1 : 애초에 세션자체가 프론트로 넘어가지 못하는 경우&lt;/li&gt;
&lt;li&gt;경우2 : 세션이 프론트로 넘어왔으나, 이후 재요청시 백엔으로 세션을 넘기지 못하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모든내용을 기억하지는 못하지만, 가장 중요한 것은 두 가지였다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프론트에서 백으로 요청할때 헤더 항목을 뭔가 빼먹지 않았는가&lt;/li&gt;
&lt;li&gt;백에서 세션을 생성할 때 프로퍼티를 뭔가 빼먹지 않았는가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613073982249&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;await axios.post(
  &quot;https://jindoback.wonj.in/sessiontest&quot;,
  {'a':'test'},
  { withCredentials: true }
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp; axios로 프론트-&amp;gt;백 요청을 한다면 withCredentials : true를 빼먹지 말아야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613073988103&quot; class=&quot;javascript&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const corsOptions = {
    origin : true,
    credentials : true
};

app.use(cors(corsOptions));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp; 한편, 백엔드에서는 credential을 true값으로 설정하고, 필요에 따라 origin 허용을 설정한다. 참고로 credential이 true라면, origin은 오직 하나의 값만 가질 수 있다. 프론트 개발서버/실서버 origin값을 바꿔가며 테스트하기 너무 힘들어서 그냥 들어오는건 싹다 허용해주기로 했다. ( cors미들웨어의 'origin:true'는 ORIGIN 헤더값에 *를 넣는 것과는 전혀 다른 것이다. )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613073993116&quot; class=&quot;javascript&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;app.use(session({
    secret:process.env.COOKIE_SECRET,
    resave:false,
    saveUninitialize:true,
    cookie : {
        httpOnly : true,
        sameSite : 'none',
        maxAge : 5300000,
        secure : true,
    },
}));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp; 백에서 세션을 만들때는 특히 samesite와 secure프로퍼티를 잘 살펴야한다. 브라우저 개발자 도구의 Network탭에서 해당요청의 Response 항목을 보면 노란색의 warning이모지 '&lt;span style=&quot;color: #000000;&quot;&gt;⚠️' &lt;/span&gt;가 떠있을 수 있다. 이 내용은 보통 위 속성값의 변경/추가로 해결할 수 있었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpT8HB/btqWX6iCnlN/mihnqD8zSTtaA9mWoCqMzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpT8HB/btqWX6iCnlN/mihnqD8zSTtaA9mWoCqMzk/img.png&quot; data-alt=&quot;세션이 유지되자 기쁨의 눈물을 흘리던 상황&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpT8HB/btqWX6iCnlN/mihnqD8zSTtaA9mWoCqMzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpT8HB%2FbtqWX6iCnlN%2FmihnqD8zSTtaA9mWoCqMzk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;세션이 유지되자 기쁨의 눈물을 흘리던 상황&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;답은 생각보다 가까이에 있었다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/373</guid>
      <comments>https://studioplug.tistory.com/373#entry373comment</comments>
      <pubDate>Fri, 12 Feb 2021 05:07:00 +0900</pubDate>
    </item>
    <item>
      <title>Nomad Coders : 바닐라JS로 그림판 만들기 수강</title>
      <link>https://studioplug.tistory.com/371</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Py4My/btqVIbfKEN5/pwMNYiKUggQD01SvB4T5Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Py4My/btqVIbfKEN5/pwMNYiKUggQD01SvB4T5Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Py4My/btqVIbfKEN5/pwMNYiKUggQD01SvB4T5Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPy4My%2FbtqVIbfKEN5%2FpwMNYiKUggQD01SvB4T5Yk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nomadcoders.co/javascript-for-beginners-2&quot;&gt;https://nomadcoders.co/javascript-for-beginners-2&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612450904297&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;바닐라 JS로 그림판 만들기 - 노마드 코더 Nomad Coders&quot; data-og-description=&quot;Build a Painting App&quot; data-og-host=&quot;nomadcoders.co&quot; data-og-source-url=&quot;https://nomadcoders.co/javascript-for-beginners-2&quot; data-og-url=&quot;https://nomadcoders.co/javascript-for-beginners-2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Csf2q/hyJbmqfsVT/O50FZgwWKkLdy5kOkJzo6K/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://nomadcoders.co/javascript-for-beginners-2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nomadcoders.co/javascript-for-beginners-2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Csf2q/hyJbmqfsVT/O50FZgwWKkLdy5kOkJzo6K/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;바닐라 JS로 그림판 만들기 - 노마드 코더 Nomad Coders&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Build a Painting App&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;nomadcoders.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 데이터 라벨링툴과 같이 그리기 입력이 동반되는 프로그램에서 캔버스가 쓰일 것 같아, 미리미리 가볍게 들었다. &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;내용이 깊지 않고 MDN문서를 참조하여 기능을 그대로 사용하는 수준이어서, 하루 2시간씩 이틀동안 모두 볼 수 있었다. &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Canvas API, 2D context에 대해 다루고, 그 외 내용은 일절 없어서 좋았다. 다른 지식을 더 찾아보기 위한 개념은 충분히 주입해준다.&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;내용 요약&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;재래식 HTML, CSS, JS를 이용한 레이아웃, 스크립트 구성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;reset CSS로 브라우저 기본 스타일 밀어버리고, 새로운 스타일 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Canvas Path생성, Stroke/Fill style 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[Paint/Fill] 토글 버튼으로 Stroke, Rect각각 그리기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;더미 a 요소와 canvas.toDataURL을 이용한 이미지 다운로드&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bclwXE/btqVK7RhLiJ/yWznZ24b2dST230FD7IpI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bclwXE/btqVK7RhLiJ/yWznZ24b2dST230FD7IpI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bclwXE/btqVK7RhLiJ/yWznZ24b2dST230FD7IpI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbclwXE%2FbtqVK7RhLiJ%2FyWznZ24b2dST230FD7IpI0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/371</guid>
      <comments>https://studioplug.tistory.com/371#entry371comment</comments>
      <pubDate>Fri, 5 Feb 2021 00:12:47 +0900</pubDate>
    </item>
    <item>
      <title>웹뷰만 달랑 있는 안드로이드 앱 만들기 : 설치부터 배포까지</title>
      <link>https://studioplug.tistory.com/370</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;b&gt;배경&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;겪었던 주요 문제점&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;유사 앱 만들기 과정 : 준비 Section&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 안드로이드 스튜디오 설치 및 실행&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 안드로이드 스튜디오 환경변수 설정&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 웹뷰 템플릿 받기&lt;/p&gt;
&lt;p&gt;&lt;b&gt;유사 앱 만들기 과정 : 작업 Section&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 템플릿 설정하기 (패키지명, 앱 네임, 웹서비스 URL)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 템플릿 아이콘 설정&lt;/p&gt;
&lt;p&gt;&lt;b&gt;유사 앱 만들기 과정 : 배포 Section&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 서명키 만들기&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ 서명된 Apk 만들기&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ㄴ SDK를 설치하지 않아 일어나는 에러&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;이 글은 안드로이드 스튜디오를 &lt;b&gt;처음 깔아보는 사람을 위한 팁&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;한 번이라도 사용해보셨다면, 이 글이 그닥 쓸모가 없을 가능성이 높습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배경&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;1. 장난으로 도배하는데만 사용하는 &lt;a href=&quot;https://wonjinyi.github.io/RepeJin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;프로그램&lt;/a&gt;을 만들었다. 여기에 이것저것 쓸모없이 재미있는 것들을 싹다 붙여보고 있다. 안드로이드 앱이 눈에 들어왔다. &lt;a href=&quot;https://wonjinyi.github.io/RepeJin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 웹서비스&lt;/a&gt;를 안드로이드 어플리케이션으로 만들어 보여주고 싶다.&lt;/p&gt;
&lt;p&gt;2. React Native같은 다른 방식으로 재구성하기는 귀찮고, 그냥 웹뷰만 띄워주는 유사(?) 안드로이드 앱으로 만들고 싶다.&lt;/p&gt;
&lt;p&gt;3. 그런데 나는 안드로이드 스튜디오를 켜본적도 없다. 설치부터 새로 배워야한다.&lt;/p&gt;
&lt;p&gt;4. 사용하는 OS는 하모니카3.0이다. 다른 배포판과 상황이 미묘하게 다를 가능성이 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;유사 앱 만들기 과정 : 준비 Section&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;안드로이드 스튜디오 설치 및 실행&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.android.com/studio/install?hl=ko#linux&quot;&gt;https://developer.android.com/studio/install?hl=ko#linux&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612179915282&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Android 스튜디오 설치 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;Windows, macOS 또는 Linux에서 Android 스튜디오를 설정 및 설치합니다.&quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/studio/install?hl=ko#linux&quot; data-og-url=&quot;https://developer.android.com/studio/install?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dsV5cs/hyI8Uukz74/GzBiO1QcYaLaKl7ELOK1yK/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676,https://scrap.kakaocdn.net/dn/btq0h7/hyI8TPI627/KNDwc9mqxvZc9IXkmOVhyK/img.png?width=1603&amp;amp;height=1014&amp;amp;face=0_0_1603_1014&quot;&gt;&lt;a href=&quot;https://developer.android.com/studio/install?hl=ko#linux&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/studio/install?hl=ko#linux&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dsV5cs/hyI8Uukz74/GzBiO1QcYaLaKl7ELOK1yK/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676,https://scrap.kakaocdn.net/dn/btq0h7/hyI8TPI627/KNDwc9mqxvZc9IXkmOVhyK/img.png?width=1603&amp;amp;height=1014&amp;amp;face=0_0_1603_1014');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Android 스튜디오 설치 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Windows, macOS 또는 Linux에서 Android 스튜디오를 설정 및 설치합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp; 공식 문서에 적혀있는 과정만 따라하면 된다. 2번에서 'studio.sh를 실행합니다'라고 하는데, 터미널에 'studio.sh'를 그대로 치면 안된다. &lt;b&gt;'./studio.sh'&lt;/b&gt;로 실행할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 설치가 끝난 뒤에는 마찬가지로 studio.sh를 실행하면 안드로이드 스튜디오를 켤 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;환경변수에 &lt;/span&gt;안드로이드 스튜디오 &lt;span style=&quot;color: #333333;&quot;&gt;추가&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RcDCm/btqVh7j8G3Z/mhI2wvVFYz8KKI45p0yoM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RcDCm/btqVh7j8G3Z/mhI2wvVFYz8KKI45p0yoM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RcDCm/btqVh7j8G3Z/mhI2wvVFYz8KKI45p0yoM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRcDCm%2FbtqVh7j8G3Z%2FmhI2wvVFYz8KKI45p0yoM0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 매번 android-studio/bin으로 들어가서 studio.sh를 켜기는 너무 귀찮다. 어느 경로에서나 'studio.sh'를 입력하여 실행할 수 있도록 환경변수를 등록하자. 먼저 &lt;b&gt;[파일시스템]-[etc]&lt;/b&gt;에 &lt;b&gt;[우클릭]-[관리자 권한으로 열기]&lt;/b&gt;로 진입한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pe4rq/btqVdMAMa38/ZXdfWpyKWoCk2oIKKC3QJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pe4rq/btqVdMAMa38/ZXdfWpyKWoCk2oIKKC3QJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pe4rq/btqVdMAMa38/ZXdfWpyKWoCk2oIKKC3QJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPe4rq%2FbtqVdMAMa38%2FZXdfWpyKWoCk2oIKKC3QJk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; [environment]를 켜고, bin의 경로를 PATH문자열의 맨 끝에 추가해준다. 추가하는 내용의 앞에 :를 붙여 앞내용과 구분해줘야한다. 글쓰는 본인의 설치경로는 /home/wonjinyi/android-studio/bin이다. 이후 터미널을 재실행하면 어디에서나 &lt;b&gt;studio.sh&lt;/b&gt; 만 입력하여 안드로이드 스튜디오를 실행할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;템플릿 받기&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/slymax/webview&quot;&gt;https://github.com/slymax/webview&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612179909296&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;slymax/webview&quot; data-og-description=&quot;a template project for android studio. Contribute to slymax/webview development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/slymax/webview&quot; data-og-url=&quot;https://github.com/slymax/webview&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/heqfR/hyI8XEAUVl/KtSnSoxhWye9Wmb8DFOidK/img.png?width=400&amp;amp;height=400&amp;amp;face=103_116_244_270&quot;&gt;&lt;a href=&quot;https://github.com/slymax/webview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/slymax/webview&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/heqfR/hyI8XEAUVl/KtSnSoxhWye9Wmb8DFOidK/img.png?width=400&amp;amp;height=400&amp;amp;face=103_116_244_270');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;slymax/webview&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;a template project for android studio. Contribute to slymax/webview development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;클론을 따거나 ZIP파일을 받아 적당한 위치에 두고, 안드로이드 스튜디오에서 불러온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsVW6q/btqVh8wvFvw/6edGKgwkOOjgvTx6B1NPZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsVW6q/btqVh8wvFvw/6edGKgwkOOjgvTx6B1NPZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsVW6q/btqVh8wvFvw/6edGKgwkOOjgvTx6B1NPZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsVW6q%2FbtqVh8wvFvw%2F6edGKgwkOOjgvTx6B1NPZk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;템플릿을 불러오면 이런 식의 화면이 나와있을것이다. 템플릿 수정 작업에서는 크게 네 가지를 알면 된다.&lt;/p&gt;
&lt;p&gt;1. 노랑 : 빌드 메뉴 : 설정을 마치고 APK파일을 뽑아낼 때 사용&lt;/p&gt;
&lt;p&gt;2. 빨강 : 프로젝트 파일 목록 : 이 포스트에서 가리키는 파일들은 모두 여기서 선택할 수 있다.&lt;/p&gt;
&lt;p&gt;3. 초록 : 코드가 보여지는 공간 : 2번(빨강) 공간에서 더블클릭하면 이 공간에 열린다.&lt;/p&gt;
&lt;p&gt;4. 보라 : 뭐 많이 표시해주는 공간 : 안드로이드에 빌드 시켜놓으면, 지금 뭐하고있는지 여기서 보여준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;유사 앱 만들기 과정 : 작업 Section&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;템플릿 내용 수정하기&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;패키지 이름, 앱 이름, 그리고 내가 보여주고픈 웹서비스URL. 세 가지를 차례로 수정하자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;각각의 항목에 대해 &lt;b&gt; &lt;span style=&quot;color: #8a3db6;&quot;&gt;시작&lt;/span&gt;, &lt;span style=&quot;color: #333333;&quot;&gt;✔️&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;끝&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;으로 표시해두었다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;  &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;'[app]아래의&amp;nbsp;&lt;/b&gt;패키지 이름' 설정시작...&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EBr1z/btqVe7R9ojv/eKY2WMzf5iIgQayVK1wGck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EBr1z/btqVe7R9ojv/eKY2WMzf5iIgQayVK1wGck/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 54.6834%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EBr1z/btqVe7R9ojv/eKY2WMzf5iIgQayVK1wGck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEBr1z%2FbtqVe7R9ojv%2FeKY2WMzf5iIgQayVK1wGck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K6DtJ/btqVdNGs4xl/GZb12Yd5kxFdx1KcE7t5kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K6DtJ/btqVdNGs4xl/GZb12Yd5kxFdx1KcE7t5kK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 44.1538%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K6DtJ/btqVdNGs4xl/GZb12Yd5kxFdx1KcE7t5kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK6DtJ%2FbtqVdNGs4xl%2FGZb12Yd5kxFdx1KcE7t5kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) 체크상태 / (우) 체크 해제상태&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 먼저 &lt;b&gt;[app]아래의 패키지 이름&lt;/b&gt;을 원하는 대로 바꾸어주자. &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;왼쪽 사진의 좌측 초록박스에 보이는 'com.example.app'이 현재 패키지 이름이다. 중간의 example을 다른 이름으로 바꾸어줄 것이다. &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이 패키지 이름은 프로젝트의 여러군데서 쓰이고있다. 무식하게 우클릭-이름바꾸기를 하면 기나긴 고통의 길을 걷게 될 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 왼쪽 사진의 [톱니바퀴]-[Compact Middle Packages 체크 해제] 과정을 수행한다. 그러면 묶여있던 com.example.app이 오른쪽 사진처럼 3단계의 디렉토리로 풀려보이게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb6Zqy/btqVkK90bwC/6X7sK997vCRmzKPZr2Q3l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb6Zqy/btqVkK90bwC/6X7sK997vCRmzKPZr2Q3l0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 51.0232%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb6Zqy/btqVkK90bwC/6X7sK997vCRmzKPZr2Q3l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb6Zqy%2FbtqVkK90bwC%2F6X7sK997vCRmzKPZr2Q3l0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0hZnr/btqVtazOQ6F/L9kJSqEvU2CYI3KYsslI80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0hZnr/btqVtazOQ6F/L9kJSqEvU2CYI3KYsslI80/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 47.814%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0hZnr/btqVtazOQ6F/L9kJSqEvU2CYI3KYsslI80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0hZnr%2FbtqVtazOQ6F%2FL9kJSqEvU2CYI3KYsslI80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) Rename선택 방법 / (우) Rename 창&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 왼쪽 사진처럼 &lt;b&gt;[example 우클릭] - [Refactor] - [Rename]&lt;/b&gt;으로 창을 띄운다. 그 창에서 오른쪽사진처럼 example을 대체할 이름을 적어넣고,&lt;b&gt; [Refactor]&lt;/b&gt;를 클릭하면 안드로이드 스튜디오가 열심히 패키지이름을 전부 바꿔준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6MxK/btqVdNzHg92/LhD8ElQKa0Z2OZ511LXWL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6MxK/btqVdNzHg92/LhD8ElQKa0Z2OZ511LXWL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6MxK/btqVdNzHg92/LhD8ElQKa0Z2OZ511LXWL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6MxK%2FbtqVdNzHg92%2FLhD8ElQKa0Z2OZ511LXWL1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;잠시 후 [app]아래의 모든 com.example.app이 com.beermaster.app으로 바뀐 것을 확인할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;✔️&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;'[app]아래의&amp;nbsp;&lt;/b&gt;&lt;b&gt;패키지 이름' 설정 끝!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;'[gradle]아래의 &lt;/b&gt;패키지 이름' 설정시작...&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q5kLb/btqVvObZc7X/ZfvEtpYO5kBlUd2kg51OF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q5kLb/btqVvObZc7X/ZfvEtpYO5kBlUd2kg51OF1/img.png&quot; data-alt=&quot;build.gradle(Module: Webview-master.app)이다. 그 위에있는 파일이 아니다!!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q5kLb/btqVvObZc7X/ZfvEtpYO5kBlUd2kg51OF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ5kLb%2FbtqVvObZc7X%2FZfvEtpYO5kBlUd2kg51OF1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;build.gradle(Module: Webview-master.app)이다. 그 위에있는 파일이 아니다!!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;패키지 이름 설정의 마지막이다. [Gradle Scripts]아래에 있는 &lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;★&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323; font-family: GungSeo, serif;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;app레벨★&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;의 build.gradle&lt;/b&gt;을 열고, defaultConfig.applicationId를 변경해준다. 이미 했던 것처럼, example부분을 원하는 이름으로 바꾸어준다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;✔️&lt;span style=&quot;color: #009a87;&quot;&gt; &lt;b&gt;'[gradle]아래의 &lt;/b&gt;&lt;b&gt;패키지 이름' 설정 끝!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;'앱 이름&lt;/b&gt;' 설정시작...&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceE71j/btqVsxaZiDv/IdkrFFHKi1BrekyrfvkOm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceE71j/btqVsxaZiDv/IdkrFFHKi1BrekyrfvkOm1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 66.5589%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceE71j/btqVsxaZiDv/IdkrFFHKi1BrekyrfvkOm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceE71j%2FbtqVsxaZiDv%2FIdkrFFHKi1BrekyrfvkOm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9aQZ/btqVnYtqA8P/KZNR93LpHIRG5TrdsX07n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9aQZ/btqVnYtqA8P/KZNR93LpHIRG5TrdsX07n0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.2783%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9aQZ/btqVnYtqA8P/KZNR93LpHIRG5TrdsX07n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9aQZ%2FbtqVnYtqA8P%2FKZNR93LpHIRG5TrdsX07n0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) 앱 설치화면 / (우) 설치된 앱들&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;설치할 때와 설치 후 표시되는 '앱 이름'을 수정하자. 템플릿의 기본값은 Webview App이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbU5MT/btqVdNfnNTt/R3HNKFyh4YxO6POqpLCOAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbU5MT/btqVdNfnNTt/R3HNKFyh4YxO6POqpLCOAK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 52.329%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbU5MT/btqVdNfnNTt/R3HNKFyh4YxO6POqpLCOAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbU5MT%2FbtqVdNfnNTt%2FR3HNKFyh4YxO6POqpLCOAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dknXbE/btqVsxB3jWS/hqJZCkIpLU2N5XHXgxn53k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dknXbE/btqVsxB3jWS/hqJZCkIpLU2N5XHXgxn53k/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 46.5082%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dknXbE/btqVsxB3jWS/hqJZCkIpLU2N5XHXgxn53k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdknXbE%2FbtqVsxB3jWS%2FhqJZCkIpLU2N5XHXgxn53k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) strings.xml / (우) AndroidManifest.xml&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[app]-[res]-[values]-[strings.xml] 파일 안에서 WebView App부분을 원하는 이름으로 바꾸어주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;참고로, 이 내용은 [app]-[manifests]-[AndroidManifest.xml]의 application, activity에 각각 적용된다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;✔️&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;'&lt;/b&gt;&lt;b&gt;앱 이름' 설정 끝!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;'앱 이름&lt;/b&gt;' 설정시작...&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6DuFq/btqVe7xX4xG/1aFqTZ6sQaLnnGsBZ7Muy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6DuFq/btqVe7xX4xG/1aFqTZ6sQaLnnGsBZ7Muy1/img.png&quot; data-alt=&quot;앱에 웹서비스를 연결하는 두근대는 순간&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6DuFq/btqVe7xX4xG/1aFqTZ6sQaLnnGsBZ7Muy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6DuFq%2FbtqVe7xX4xG%2F1aFqTZ6sQaLnnGsBZ7Muy1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;앱에 웹서비스를 연결하는 두근대는 순간&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 우리가 이미 서비스하고있는 웹프로그램의 url을 넣어주면, 아이콘을 제외하고는 모든 작업이 끝난다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;[app]-[java]-[com]-[우리가 지은 이름]-[app]-[MainActivity.java]&lt;/b&gt;로 들어가, &lt;b&gt;24번째 줄 주석&lt;/b&gt;을 풀어준다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그 다음, 인수로 웹서비스의 url을 넣어준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;✔️&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;'&lt;/b&gt;&lt;b&gt;앱 이름' 설정 끝&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;템플릿 아이콘 설정하기&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI6hFC/btqVugNm0LF/xGgjN9ZWbUbQVqYZBkCH5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI6hFC/btqVugNm0LF/xGgjN9ZWbUbQVqYZBkCH5K/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;424&quot; height=&quot;NaN&quot; style=&quot;width: 60.8271%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI6hFC/btqVugNm0LF/xGgjN9ZWbUbQVqYZBkCH5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI6hFC%2FbtqVugNm0LF%2FxGgjN9ZWbUbQVqYZBkCH5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YXVmu/btqVh7RZEkd/OuJTUklUUbQ1IZDCbKZ5Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YXVmu/btqVh7RZEkd/OuJTUklUUbQ1IZDCbKZ5Q1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 38.0102%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YXVmu/btqVh7RZEkd/OuJTUklUUbQ1IZDCbKZ5Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYXVmu%2FbtqVh7RZEkd%2FOuJTUklUUbQ1IZDCbKZ5Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) 사용할 이미지 / (우) 아이콘을 넣어줄 디렉토리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 우선 512x512px의 이미지 파일이 있어야 한다. 그림판이든 일러스트든 잘 그려서 가져오자. 원래같으면 모든 크기와 모양의 아이콘에 대응해서 열심히 작업해야하겠지만, 안드로이드 스튜디오는 512x512px이미지만 냅다 박으면 알아서 다 만드는 기능을 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 오른쪽 사진에 보이는 &lt;b&gt;[app]-[res]-[mipmap]-[ic_launcher]&lt;/b&gt;안에 아이콘을 집어넣어줄 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X4hxo/btqVqG66nJR/unae7eDcXePJTEzDBbBHw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X4hxo/btqVqG66nJR/unae7eDcXePJTEzDBbBHw0/img.png&quot; data-alt=&quot;(좌) Image Asset 찾아가기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X4hxo/btqVqG66nJR/unae7eDcXePJTEzDBbBHw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX4hxo%2FbtqVqG66nJR%2Funae7eDcXePJTEzDBbBHw0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;(좌) Image Asset 찾아가기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[ic_launcher 우클릭] - [New] - [Image Asset]을 눌러 설정창을 띄운다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgu5uT/btqVdNzJ5gK/tGjeQkIva7oQkPt40wqLT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgu5uT/btqVdNzJ5gK/tGjeQkIva7oQkPt40wqLT1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 49.3273%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgu5uT/btqVdNzJ5gK/tGjeQkIva7oQkPt40wqLT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgu5uT%2FbtqVdNzJ5gK%2FtGjeQkIva7oQkPt40wqLT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vdA2j/btqVh7dnygw/WsRkkgctX5CPn1wOtWb8K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vdA2j/btqVh7dnygw/WsRkkgctX5CPn1wOtWb8K0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 49.5099%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vdA2j/btqVh7dnygw/WsRkkgctX5CPn1wOtWb8K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvdA2j%2FbtqVh7dnygw%2FWsRkkgctX5CPn1wOtWb8K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌)Configure / (우)Confirm&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;다른 것은 건들필요 없고, [Path]에서 준비해둔 512x512px 이미지를 불러온뒤 [Next]-[Finish]로 설정창을 닫는다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pI67N/btqVvPaUCMD/JQmcfBKWbfC3AVMSrMQ4p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pI67N/btqVvPaUCMD/JQmcfBKWbfC3AVMSrMQ4p0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 38.5956%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pI67N/btqVvPaUCMD/JQmcfBKWbfC3AVMSrMQ4p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpI67N%2FbtqVvPaUCMD%2FJQmcfBKWbfC3AVMSrMQ4p0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOxy1r/btqVdOejljP/XyQV0XMWUxng1oKUKKqkxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOxy1r/btqVdOejljP/XyQV0XMWUxng1oKUKKqkxk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 60.2416%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOxy1r/btqVdOejljP/XyQV0XMWUxng1oKUKKqkxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOxy1r%2FbtqVdOejljP%2FXyQV0XMWUxng1oKUKKqkxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;만든것들 깃에 추가할지 말지 물어보는 내용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;방금 니가 던진 이미지로 이거저거 많이 만들어놨는데, Git에 추가할까?&quot; 하고 물어보는 내용이다. 추가하기를 원하면 [Add]만 계속 누르면 된다. 적당한 순간에 언젠간 닫힌다. 원하지 않으면 그냥 캔슬 눌러버리면 된다. 여기까지 왔다면, 이제는 빌드과정중 에러와의 싸움만 남았다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;유사 앱 만들기 과정 : 배포 Section&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;서명키 만들기&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 실제로 APK파일을 뽑아볼 순간이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCJT0I/btqVta7GTaQ/BxNawdIgAamJMlVSEAg1nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCJT0I/btqVta7GTaQ/BxNawdIgAamJMlVSEAg1nK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 43.4517%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCJT0I/btqVta7GTaQ/BxNawdIgAamJMlVSEAg1nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCJT0I%2FbtqVta7GTaQ%2FBxNawdIgAamJMlVSEAg1nK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6hFNT/btqVvO39PO5/XHxWgZIRphvVDiVaq1AcU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6hFNT/btqVvO39PO5/XHxWgZIRphvVDiVaq1AcU1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 55.3856%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6hFNT/btqVvO39PO5/XHxWgZIRphvVDiVaq1AcU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6hFNT%2FbtqVvO39PO5%2FXHxWgZIRphvVDiVaq1AcU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; [Build]-[Generate Signed Bundle / APK]로 창을 열어준다. 이 포스트에서는 APK를 기준으로 설명할 것이므로, 아래의 APK에 체크하고 넘어간다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CpMQI/btqVugs44g3/Z7YId1lTtaMCmBrZPjIzFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CpMQI/btqVugs44g3/Z7YId1lTtaMCmBrZPjIzFk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 43.0072%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CpMQI/btqVugs44g3/Z7YId1lTtaMCmBrZPjIzFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCpMQI%2FbtqVugs44g3%2FZ7YId1lTtaMCmBrZPjIzFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMGIEW/btqVuhr1k25/dj7UOoxGk5rUFcI9BCy12k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMGIEW/btqVuhr1k25/dj7UOoxGk5rUFcI9BCy12k/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 55.83%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMGIEW/btqVuhr1k25/dj7UOoxGk5rUFcI9BCy12k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMGIEW%2FbtqVuhr1k25%2Fdj7UOoxGk5rUFcI9BCy12k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌)에서 Create New를 누르면 / (우)가 나타난다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 넘어왔다면, 일단 앱에 사용되는 Key를 새로 만들면 된다. [Create new]를 눌러 오른쪽사진처럼 물흐르듯 빈칸을 채워주면 된다. 오른쪽 사진에서 이유는 잘 모르겠지만, 클릭과 키보드입력이 전부 안먹힐 때가 자주 있다. 그럴땐 다 끄고 [Build]-[Generate Signed Bundle/APK]부터 시작하는게 빠르다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; New Key Store 창에서 설정한 Key store Password, Alias, Key Password 세 가지를 잘 기억해두어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;서명된 APK 만들기&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DAX49/btqVnY74gwv/X3jPxPtTbG6RfwXfXB3rek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DAX49/btqVnY74gwv/X3jPxPtTbG6RfwXfXB3rek/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 49.1843%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DAX49/btqVnY74gwv/X3jPxPtTbG6RfwXfXB3rek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDAX49%2FbtqVnY74gwv%2FX3jPxPtTbG6RfwXfXB3rek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG5A0I/btqVkLOIhfO/s6aAo8ORDHwqCY3tTkvlp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG5A0I/btqVkLOIhfO/s6aAo8ORDHwqCY3tTkvlp0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 49.6529%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG5A0I/btqVkLOIhfO/s6aAo8ORDHwqCY3tTkvlp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG5A0I%2FbtqVkLOIhfO%2Fs6aAo8ORDHwqCY3tTkvlp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Key를 잘 만들었다면, 비밀번호와 Key alias를 입력하고 다음으로 넘어간다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Build Variants는 release&lt;/b&gt;를 선택하고, &lt;b&gt;Signature Versions은 V1, V2&lt;/b&gt; 둘 다 체크한다. &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;개발과정에서 V2만 체크를 한 적이 있는데, 구글플레이에 올라가지 않는 현상을 겪었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[Finish]를 누르면 프로젝트로부터 Apk를 추출하기 시작한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnRmpu/btqVugfymSO/0nXNVgmLTc8qUBUNnGwriK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnRmpu/btqVugfymSO/0nXNVgmLTc8qUBUNnGwriK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 62.122%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnRmpu/btqVugfymSO/0nXNVgmLTc8qUBUNnGwriK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnRmpu%2FbtqVugfymSO%2F0nXNVgmLTc8qUBUNnGwriK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DFSfv/btqVh75CItz/PDJccMQe2qucj4FnnLuJKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DFSfv/btqVh75CItz/PDJccMQe2qucj4FnnLuJKk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 36.7152%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DFSfv/btqVh75CItz/PDJccMQe2qucj4FnnLuJKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDFSfv%2FbtqVh75CItz%2FPDJccMQe2qucj4FnnLuJKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) Apk가 잘 뽑힌 로그 / (우) 잘 뽑힌 Apk 실물 영접&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 왼쪽에는 Build로그, 오른쪽에는 Event Log를 띄워두고 보면 에러잡기에 도움이 된다. 이 화면과 같이 나오면 별문제없이 잘 완료된 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; 뽑힌 Apk가 있는 위치는 프로젝트 폴더 아래의 app/release에 'app-release.apk'라는 이름으로 있다. 이게 이걸 핸드폰에 옮겨서 설치해보면 된다. 에뮬레이터로 돌릴 수도 있지만, 여기에 대한 설명은 굳이 여기에 적지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SDK를 설치하지 않아 일어나는 에러&lt;/h3&gt;
&lt;pre id=&quot;code_1612192841938&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Gradle sync failed: 
com.android.tools.idea.gradle.project.sync.idea.issues.SdkPlatformNotFoundException: 
Module: 'app' platform 'android-29' not found&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r5JYz/btqVnX9ampV/VmHNxCdm5Ku3dS7NEOOqq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r5JYz/btqVnX9ampV/VmHNxCdm5Ku3dS7NEOOqq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r5JYz/btqVnX9ampV/VmHNxCdm5Ku3dS7NEOOqq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr5JYz%2FbtqVnX9ampV%2FVmHNxCdm5Ku3dS7NEOOqq0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이건 그냥 필요한 버전의 SDK를 깔아주면 된다. 저 오류의 경우 'android-29'를 못찾는다고 했으니, 사진에서 API Level이 29인 'Android 10.0 (Q)'를 깔면 된다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/370</guid>
      <comments>https://studioplug.tistory.com/370#entry370comment</comments>
      <pubDate>Tue, 2 Feb 2021 00:41:44 +0900</pubDate>
    </item>
    <item>
      <title>react.js 빌드된 프로젝트 gh-pages로 배포할 때 custom domain이 초기화되는 현상</title>
      <link>https://studioplug.tistory.com/366</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제상황&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA8Hau/btqKEzdGLWT/2NbE9aopKNHSu5bFDTiWS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA8Hau/btqKEzdGLWT/2NbE9aopKNHSu5bFDTiWS1/img.png&quot; data-alt=&quot;뭐야 내 도메인 돌려줘요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA8Hau/btqKEzdGLWT/2NbE9aopKNHSu5bFDTiWS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA8Hau%2FbtqKEzdGLWT%2F2NbE9aopKNHSu5bFDTiWS1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뭐야 내 도메인 돌려줘요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;react로 만든 프로젝트를 빌드한다음, gh-pages모듈로 배포하였다&lt;/p&gt;
&lt;p&gt;그랬더니 미리 깃헙레포에 설정해둔 custom domain이 빈칸으로 바뀌어버린다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EQvrr/btqKxChBofg/kdi6QAvRmo7G3qQB2uCEYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EQvrr/btqKxChBofg/kdi6QAvRmo7G3qQB2uCEYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EQvrr/btqKxChBofg/kdi6QAvRmo7G3qQB2uCEYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEQvrr%2FbtqKxChBofg%2Fkdi6QAvRmo7G3qQB2uCEYk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;우선, 깃헙에서 custom domain을 본래대로 잘 써넣는다.&lt;/p&gt;
&lt;p&gt;그 다음에 리액트 프로젝트 안에서 CNAME 파일을 만들고 custom domain에 해당하는 내용을 써넣는다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ejQl7q/btqKNn3Qkds/xkKwXRkiQ0rgfSu0ub6l4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ejQl7q/btqKNn3Qkds/xkKwXRkiQ0rgfSu0ub6l4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ejQl7q/btqKNn3Qkds/xkKwXRkiQ0rgfSu0ub6l4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FejQl7q%2FbtqKNn3Qkds%2FxkKwXRkiQ0rgfSu0ub6l4k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;위치는 루트가 아닌 public폴더 아래로 한다. npm run build할 때 public 아래의 CNAME파일을 복사하여 빌드한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b116Q9/btqKxAjLKfJ/RpLb3Ndg3JJEplErNou2vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b116Q9/btqKxAjLKfJ/RpLb3Ndg3JJEplErNou2vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b116Q9/btqKxAjLKfJ/RpLb3Ndg3JJEplErNou2vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb116Q9%2FbtqKxAjLKfJ%2FRpLb3Ndg3JJEplErNou2vK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;public아래에 CNAME파일을 만든 다음 빌드하면, 깃헙페이지의 custom domain이 그대로 잘 남아있는 것을 확인할 수 있다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/366</guid>
      <comments>https://studioplug.tistory.com/366#entry366comment</comments>
      <pubDate>Mon, 12 Oct 2020 19:13:38 +0900</pubDate>
    </item>
    <item>
      <title>Github Page에 Build된 react프로젝트 배포 : manifest.json 404 에러</title>
      <link>https://studioplug.tistory.com/365</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;제목을 보고 정말 답이없다고 느꼈는데, 또 달리 쓸 방법이 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;문제상황&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1602340073922&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sunda.wonj.in/:1 GET https://sunda.wonj.in/sunda_front/static/css/main.5f361e03.chunk.css net::ERR_ABORTED 404

manifest.json:1 GET https://sunda.wonj.in/sunda_front/manifest.json 404

manifest.json:1 Manifest: Line: 1, column: 1, Syntax error.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1. React.js를 이용하여 프로젝트를 만들었다.&lt;/p&gt;
&lt;p&gt;2. npm run build로 빌드파일을 뽑아내고, 그 다음 gh-pages 의 gh-pages -d build로 업로드했다&lt;/p&gt;
&lt;p&gt;3. package.json의 homepage 값은 깃헙페이지의 기본값인 wonjinyi.github.io/sunda_front&lt;/p&gt;
&lt;p&gt;깃헙페이지 설정에서는 커스텀도메인을 먹였고, 그 값은 sunda.wonj.in&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;깃헙페이지에 커스텀도메인이 적용되어있다면, package.json의 homepage항목의 값도 기본제공 주소가 아닌 커스텀도메인으로 넣어주어야 한다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/365</guid>
      <comments>https://studioplug.tistory.com/365#entry365comment</comments>
      <pubDate>Sun, 11 Oct 2020 00:25:17 +0900</pubDate>
    </item>
    <item>
      <title>Nomad Coders : React Native로 날씨앱 만들기 완강</title>
      <link>https://studioplug.tistory.com/363</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 696.125px;&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brYma8/btqKmoI51bW/iNkvEr5t3QtP56nnETxko0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brYma8/btqKmoI51bW/iNkvEr5t3QtP56nnETxko0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brYma8/btqKmoI51bW/iNkvEr5t3QtP56nnETxko0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrYma8%2FbtqKmoI51bW%2FiNkvEr5t3QtP56nnETxko0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 696.125px;&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;원래 React로 영화만들기를 완강한 날 모두 봤어야했는데, 프로젝트를 여러가지 굴리고 있고 출근도 하다보니 좀 늦어졌다. 일,월,화 저녁을 이용하여 수강했다. 무료강의이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;React Native라고 하지만 사실은 Expo를 사용한다. 나는 네이티브가 필요하지 않고 단순 흥미로 강의를 보게되었기에 더 좋았다. 아주 간단하게 강력한 기능들을 사용할 수 있는 기회였다. 주요 내용은 아래와 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;React Native의 내장기능 : View, Text컴포넌트와 StyleSheet&lt;/li&gt;
&lt;li&gt;Axios로 API 요청하기 : Open Weather Map의 Current Weather API이용&lt;/li&gt;
&lt;li&gt;Expo Dev tool 사용하기, 에뮬레이팅하기&lt;/li&gt;
&lt;li&gt;Expo 기본제공 아이콘 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;좋은 내용들을 쉽고 빠르게 알려주는 점도 마음에 들었지만, 처음에 보기 어려울 공식 문서들을 펼쳐주며 친절히 설명해주는 방식이 나는 너무도 고맙게 느껴졌다. 이제 Expo와 React Native의 공식문서를 어떻게 봐야할지 알고 있는 상태이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전문적으로 네이티브를 파지는 않겠지만, 꼭 어플리케이션을 개발해야 할때면 오늘의 경험을 꺼내어 쉽게 문제를 해결할 수 있을 것이다. 재미있는 강의였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/seIrd/btqKfqhBXzQ/Z3IhudnugeozNKkSOaAnbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/seIrd/btqKfqhBXzQ/Z3IhudnugeozNKkSOaAnbk/img.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/seIrd/btqKfqhBXzQ/Z3IhudnugeozNKkSOaAnbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FseIrd%2FbtqKfqhBXzQ%2FZ3IhudnugeozNKkSOaAnbk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qqRk7/btqKnpAYudg/TWC1sKRoY5LXuEcLvFRiI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qqRk7/btqKnpAYudg/TWC1sKRoY5LXuEcLvFRiI1/img.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qqRk7/btqKnpAYudg/TWC1sKRoY5LXuEcLvFRiI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqqRk7%2FbtqKnpAYudg%2FTWC1sKRoY5LXuEcLvFRiI1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHZU5d/btqKnqNreMW/7dLt90CJSJu3JzaIKbSP8K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHZU5d/btqKnqNreMW/7dLt90CJSJu3JzaIKbSP8K/img.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.5581%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHZU5d/btqKnqNreMW/7dLt90CJSJu3JzaIKbSP8K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHZU5d%2FbtqKnqNreMW%2F7dLt90CJSJu3JzaIKbSP8K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Fj1i/btqKgEtbM3S/mC3zWjGxcMOWY7yV6daONK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Fj1i/btqKgEtbM3S/mC3zWjGxcMOWY7yV6daONK/img.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Fj1i/btqKgEtbM3S/mC3zWjGxcMOWY7yV6daONK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Fj1i%2FbtqKgEtbM3S%2FmC3zWjGxcMOWY7yV6daONK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pIbXw/btqKmp2j6X6/T1wdV094MyOa6rZZWlnuK1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pIbXw/btqKmp2j6X6/T1wdV094MyOa6rZZWlnuK1/img.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pIbXw/btqKmp2j6X6/T1wdV094MyOa6rZZWlnuK1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpIbXw%2FbtqKmp2j6X6%2FT1wdV094MyOa6rZZWlnuK1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U9kvv/btqKjbwYdKO/V7D5BLvkBNv1Oo0Kz7jkZk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U9kvv/btqKjbwYdKO/V7D5BLvkBNv1Oo0Kz7jkZk/img.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U9kvv/btqKjbwYdKO/V7D5BLvkBNv1Oo0Kz7jkZk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU9kvv%2FbtqKjbwYdKO%2FV7D5BLvkBNv1Oo0Kz7jkZk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/363</guid>
      <comments>https://studioplug.tistory.com/363#entry363comment</comments>
      <pubDate>Tue, 6 Oct 2020 22:28:39 +0900</pubDate>
    </item>
    <item>
      <title>React Native도구 'Expo'와 실제 Android기기 연결이 안될 때</title>
      <link>https://studioplug.tistory.com/362</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제상황&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lkpsj/btqJZmGkyT7/rKyqNBqH30U3QnxuzbujN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lkpsj/btqJZmGkyT7/rKyqNBqH30U3QnxuzbujN1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 76.6812%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lkpsj/btqJZmGkyT7/rKyqNBqH30U3QnxuzbujN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLkpsj%2FbtqJZmGkyT7%2FrKyqNBqH30U3QnxuzbujN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rnkel/btqKbXdtJCJ/m5ZobNmCZpnG2uyvbZqy51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rnkel/btqKbXdtJCJ/m5ZobNmCZpnG2uyvbZqy51/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 22.1561%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rnkel/btqKbXdtJCJ/m5ZobNmCZpnG2uyvbZqy51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frnkel%2FbtqKbXdtJCJ%2Fm5ZobNmCZpnG2uyvbZqy51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌) 개발PC 에뮬레이팅 환경 / (우) 휴대폰&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;b&gt;Something&amp;nbsp;went&amp;nbsp;wrong&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;개발 컴퓨터에 필요한 모듈은 모두 설치하였고, expo init - npm start 로 정상적으로 에뮬레이팅 환경을 띄워놓았다.&lt;/p&gt;
&lt;p&gt;이 상태에서 안드로이드 기기 ( 갤S8 ) Expo 앱에서 QR코드로 연결하고자 하였다. 그 때, 위와 같은 화면이 떴다. 에뮬레이팅 환경 터미널에는 아무 에러도 뜨지 않는다.&lt;/p&gt;
&lt;p&gt;개발PC와 안드로이드 기기는 공유기 와이파이로 연결되어있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;271&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vwuG8/btqJ6cP3gtQ/fGrQZzXxd9Q8tsWsbvQQFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vwuG8/btqJ6cP3gtQ/fGrQZzXxd9Q8tsWsbvQQFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vwuG8/btqJ6cP3gtQ/fGrQZzXxd9Q8tsWsbvQQFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvwuG8%2FbtqJ6cP3gtQ%2FfGrQZzXxd9Q8tsWsbvQQFK%2Fimg.png&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;271&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;와이파이로 연결되어있을 때, 에뮬레이팅 환경에서 LAN으로 연결하려고 하면 문제가 많이 생긴다.&lt;/p&gt;
&lt;p&gt;가장 많은 경우가 서로 다른 네트워크에 연결된 경우 ( 개발 pc와 안드로이드 기기가 다른 와이파이를 잡은 경우 )&lt;/p&gt;
&lt;p&gt;그 다음이 네트워크 어댑터 우선순위에 문제가 있는 경우이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://snowdeer.github.io/linux/2018/10/13/ubuntu-change-network-priority/&quot;&gt;http://snowdeer.github.io/linux/2018/10/13/ubuntu-change-network-priority/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1601802677742&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Network Interface 우선 순위 변경하기 &amp;middot; snowdeer's Code Holic&quot; data-og-description=&quot;Network Interface 우선 순위 변경하기 13 Oct 2018 | 리눅스 Network Interface 우선 순위 변경하기 Ubuntu에서 랜카드를 여러 개 꽂아서 네트워크 인터페이스(Network Interface)가 여러 개 존재할 경우 우선 순위를&quot; data-og-host=&quot;snowdeer.github.io&quot; data-og-source-url=&quot;http://snowdeer.github.io/linux/2018/10/13/ubuntu-change-network-priority/&quot; data-og-url=&quot;http://snowdeer.github.io/linux/2018/10/13/ubuntu-change-network-priority/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://snowdeer.github.io/linux/2018/10/13/ubuntu-change-network-priority/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://snowdeer.github.io/linux/2018/10/13/ubuntu-change-network-priority/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Network Interface 우선 순위 변경하기 &amp;middot; snowdeer's Code Holic&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Network Interface 우선 순위 변경하기 13 Oct 2018 | 리눅스 Network Interface 우선 순위 변경하기 Ubuntu에서 랜카드를 여러 개 꽂아서 네트워크 인터페이스(Network Interface)가 여러 개 존재할 경우 우선 순위를&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;snowdeer.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;꼭 LAN환경으로 해야만 한다면 순위를 잘 변경해주면 되는데, 우분투환경에서는 ifmetric을 사용하여 간단하게 설정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEfCsM/btqJ1MqZOsH/HamLRFRAamHdKKZkw5gYVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEfCsM/btqJ1MqZOsH/HamLRFRAamHdKKZkw5gYVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEfCsM/btqJ1MqZOsH/HamLRFRAamHdKKZkw5gYVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEfCsM%2FbtqJ1MqZOsH%2FHamLRFRAamHdKKZkw5gYVk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설정하기 귀찮으면 &lt;b&gt;Tunnel 모드&lt;/b&gt;로 전환하여 테스팅하면된다. CONNECTION에서 Tunnel을 선택하면, 터미널에 'Tunnel ready'가 출력된다. 이 때 안드로이드 기기에서 QR코드로 연결하면 정상적으로 에뮬레이팅된다.&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/362</guid>
      <comments>https://studioplug.tistory.com/362#entry362comment</comments>
      <pubDate>Sun, 4 Oct 2020 18:14:51 +0900</pubDate>
    </item>
    <item>
      <title>Nomad Coder : ReactJS로 영화 웹 서비스 만들기 수강</title>
      <link>https://studioplug.tistory.com/361</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;선택 영역_999(101).png&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;642&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO9rrZ/btqJ0oKDbUU/ctLzKMcNU9gxIS2Sb2Og00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO9rrZ/btqJ0oKDbUU/ctLzKMcNU9gxIS2Sb2Og00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO9rrZ/btqJ0oKDbUU/ctLzKMcNU9gxIS2Sb2Og00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO9rrZ%2FbtqJ0oKDbUU%2FctLzKMcNU9gxIS2Sb2Og00%2Fimg.png&quot; data-filename=&quot;선택 영역_999(101).png&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;642&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nomadcoders.co/react-fundamentals/lobby&quot;&gt;https://nomadcoders.co/react-fundamentals/lobby&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 노마드코더 라는 동영상 강의사이트는 이전부터 광고로 참 익숙했지만, 강의 이름부터가 무시무시해서 손이 안갔던 사이트이다. 내가 손도 못대본 기술 이름이 쓰여있어서, 내가 들어서 쓸모가 있을까에 대한 생각이 있었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;순수한 HTML+CSS+JS로만 공부하다가, 어느순간 백엔드에 대한 교양을 갖출 필요성이 느껴져 Node.js를 공부했다. 프론트엔드도 내가 사용해보지 못한 기술에 대한 욕심이 생겼다.어느정도 인지도있는 프레임워크/라이브러리를 공부하고자 했고, React.js를 택했다. 러닝커브가 비교적 사악한 라이브러리라고 했다. 그래서 클론코딩으로 가르쳐준다는 노마드코더 강의를 들어봤다. 강의 내용은 아래와 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;function component와 props&lt;/li&gt;
&lt;li&gt;class component와 state + component lifecycle&lt;/li&gt;
&lt;li&gt;propTypes로 타입체킹하기&lt;/li&gt;
&lt;li&gt;React-router-dom&lt;/li&gt;
&lt;li&gt;github-pages 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; 교수자 이름이 니콜라스 라고 하는데, 굉장히 속도감있고 위트있는 진행이 특징이다. 당장 필요없고 자연스레 알게될 것들은 빼고, 익힐 수 있는 것부터 알려준다. 생활코딩과 어느정도 유사하다. 보통 강의를 하게 되면 열정에 가득차서 여러 내용을 알려주려고 하지만, 나는 그걸 다 받아들이기가 버겁다. 빠르고 작은 노마드코더 강의가 내 성향에 꼭 맞았다. 특히, 가르쳐주지 않는 내용은 왜 지금 가르치지 않는지, 지금 배우는 내용과는 어떤 관계가 있는지를 명확히 설명해주어 신뢰가 더 간다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 유료강의들은 10만원대가 넘어가기도 하지만, 무료강의 퀄리티를 봤을 때 질은 보장되지 않을까 싶다. 무료강의도 허접한 강의들이 있는게 아니고, 상당히 친절하고도 확실한 내용을 알려주는 좋은 내용들로 채워져있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 이제 Node.js와 React.js의 아주아주 기초적인 부분들을 구경했으니, 내 간단한 서비스를 구현하면서 삽질을 반복할 일만 남았다. 어느정도 삽질에 익숙해지면 다시 강의를 들으러 돌아가야겠다는 생각을 했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 다만, 인강을 보다보니 옆에있는 React Native도 너무 탐이난다. 딱 이것까지만 듣고 내 서비스 SUNDA를 만들러 가야겠다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/361</guid>
      <comments>https://studioplug.tistory.com/361#entry361comment</comments>
      <pubDate>Sun, 4 Oct 2020 17:01:27 +0900</pubDate>
    </item>
    <item>
      <title>VS code에서 React.js 개발서버 시작시 Error: ENOSPC 에러</title>
      <link>https://studioplug.tistory.com/360</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제상황&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;OS는 하모니카를 사용중이며, 오래된 노트북으로 작업한다. (2012년도 삼성 노트북)&lt;/p&gt;
&lt;p&gt;React.js를 이용하여 프론트엔드 개발 공부를 하고 있고, 에디터는 VS code를 사용하고 있다.&lt;/p&gt;
&lt;p&gt;npx Create-react-app을 이용하여 초기 프로젝트를 세팅하였고, package.json에 기본적으로 &quot;npm start&quot;라는 개발서버 실행 스크립트가 포함되어있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1601693042049&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Starting the development server...

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/wonjinyi/Desktop/LearnReact/movie/public'
    at FSWatcher.start (internal/fs/watchers.js:169:26)
    at Object.watch (fs.js:1422:11)
    at createFsWatchInstance (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:38:15)
    at setFsWatchListener (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:81:15)
    at FSWatcher.NodeFsHandler._watchWithNodeFs (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:233:14)
    at FSWatcher.NodeFsHandler._handleDir (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:429:19)
    at FSWatcher.&amp;lt;anonymous&amp;gt; (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:477:19)
    at FSWatcher.&amp;lt;anonymous&amp;gt; (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:482:16)
    at FSReqCallback.oncomplete (fs.js:169:5)
Emitted 'error' event on FSWatcher instance at:
    at FSWatcher._handleError (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/index.js:260:10)
    at createFsWatchInstance (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:40:5)
    at setFsWatchListener (/home/wonjinyi/Desktop/LearnReact/movie/node_modules/chokidar/lib/nodefs-handler.js:81:15)
    [... lines matching original stack trace ...]
    at FSReqCallback.oncomplete (fs.js:169:5) {
  errno: -28,
  syscall: 'watch',
  code: 'ENOSPC',
  path: '/home/wonjinyi/Desktop/LearnReact/movie/public',
  filename: '/home/wonjinyi/Desktop/LearnReact/movie/public'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! movie@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the movie@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/wonjinyi/.npm/_logs/2020-10-03T02_36_24_937Z-debug.log
(base) wonjinyi@wonjinYi:~/Desktop/LearnReact/movie$ &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Error:&amp;nbsp;ENOSPC:&amp;nbsp;System&amp;nbsp;limit&amp;nbsp;for&amp;nbsp;number&amp;nbsp;of&amp;nbsp;file&amp;nbsp;watchers&amp;nbsp;reached,&amp;nbsp;watch&amp;nbsp;'/home/wonjinyi/Desktop/LearnReact/movie/public'&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;정상적으로 모든 코드를 작성한 뒤 &quot;npm start&quot;로 개발서버를 실행하고자 하였으나, 위와 같은 오류가 발생하며 실행되지않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위와 같은 현상이 언제 나타나는지는 아직도 확신이 없다. 진짜 아무때나 나타나기 때문이다. 겪어보면 정말 어이가없다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;어제&lt;/b&gt; : 개발서버 잘 굴리다가 잠시 서버 종료. 필요없는 파일 하나 삭제하고나서 개발서버 재구동 -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;에러발생&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;-----&amp;gt; 작업하던 프로젝트 싹 다 지워버리고, CRA로 아예 새로운 프로젝트를 생성.&lt;/p&gt;
&lt;p&gt;-&amp;gt;&amp;nbsp; 에러발생했을 당시와 똑같이 모든 파일작업함&lt;/p&gt;
&lt;p&gt;-&amp;gt; 정상구동 확인 후 컴퓨터 종료&lt;/p&gt;
&lt;p&gt;&lt;b&gt;오늘&lt;/b&gt; : 컴퓨터 켠 다음 아무런 작업을 하지 않고, 개발서버 실행 -&amp;gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; 에러발생&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결의 실마리&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;깃헙 개츠비 레포의 &lt;a href=&quot;https://github.com/gatsbyjs/gatsby/issues/11406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;질의응답글&lt;/a&gt;을 통해 &lt;a href=&quot;https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VS Code 공식문서&lt;/a&gt;를 찾았다. 똑같은지는 모르겠지만 관련있어 보이는 내용을 찾을 수 있었다. 그 내용을 정리해둔다. VS code는 파일변화 체크를 무턱대고 전부 다 하지 않는다. 어느정도까지 체크해줄지 프로젝트 규모의 한계를 둔다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;i&gt;When you see this notification, it indicates that the VS Code file watcher is running out of handles because the workspace is large and contains many files.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;너무크면 VS code가 보다가 파업을 해버린다는거다. 이 괘씸한 콤-퓨타에게 더 많은 일을 시킬 수 있는 방법이 필요하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결하기&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1601693717973&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(base) wonjinyi@wonjinYi:~$ cat /proc/sys/fs/inotify/max_user_watches
8192
(base) wonjinyi@wonjinYi:~$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 명령어를 쉘에 치면, 현재 어느정도의 규모까지 vs code file watcher가 파일변화를 체크할 수 있는지 알 수 있다. 본인은 8192라는 값이 나왔다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;i&gt;The limit can be increased to its maximum by editing&amp;nbsp;/etc/sysctl.conf&amp;nbsp;and adding this line to the end of the file:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;i&gt;&lt;b&gt;fs.inotify.max_user_watches=524288&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;i&gt;The new value can then be loaded in by running&amp;nbsp;&lt;b&gt;sudo sysctl -p.&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;위와 같은 방법으로 file watcher가 감당할 수 있는 한계를 늘일 수 있다고 한다. 하나하나 따라가보자&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1601694355009&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(base) wonjinyi@wonjinYi:/$ sudo vi /etc/sysctl.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;먼저 쉘에서 /etc/sysctl.conf파일을 vim으로 실행하자. vim조작이 어렵다면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://opentutorials.org/course/730/4561&quot;&gt;생활코딩 강의&lt;/a&gt;를 참고하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lRuPr/btqJ0poF1qN/0sUaFwHzvj076BD2vxcbGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lRuPr/btqJ0poF1qN/0sUaFwHzvj076BD2vxcbGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lRuPr/btqJ0poF1qN/0sUaFwHzvj076BD2vxcbGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlRuPr%2FbtqJ0poF1qN%2F0sUaFwHzvj076BD2vxcbGk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1601695034146&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fs.inotify.max_user_watches=524288&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;파일이 열렸다면, 원하는 곳 아무데나 위 내용을 추가해준다.&lt;/p&gt;
&lt;p&gt;추가했다면, [esc] - [ :wq! ] - [ ENTER ] 를 눌러 '저장하고 닫기'를 하자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1601695226605&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(base) wonjinyi@wonjinYi:/$ sudo sysctl -p
fs.inotify.max_user_watches = 524288&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;마지막으로, 위 명령어를 입력하여 변경내용을 시스템에 반영한다. 어떤내용이 반영되었는지 출력될 것이다. 같은내용이 나오면 성공한 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1601695293129&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Compiled successfully!

You can now view movie in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://172.30.1.51:3000

Note that the development build is not optimized.
To create a production build, use yarn build.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;원래 작업하던 프로젝트로 돌아가 &quot;npm start&quot;로 개발서버를 구동해보았다. 정상적으로 잘 되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;남아있는 문제아닌 문제&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;file watcher limit값을 더 높이게 되면 그만큼 서버실행에 걸리는 시간이 길어진다. 당연한 이야기이다.&lt;/p&gt;
&lt;p&gt;8,000대에서 500,000으로 올렸는데, 당연하게도 상당한 체감이 되었다. 하지만 에러 신경쓰면서 하는 것보단 마음이 편하다.&lt;/p&gt;
&lt;p&gt;속도가 중요하다면 다른 방법을 더 찾아보아야 할 것이다.&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/360</guid>
      <comments>https://studioplug.tistory.com/360#entry360comment</comments>
      <pubDate>Sat, 3 Oct 2020 12:21:57 +0900</pubDate>
    </item>
    <item>
      <title>github 저장소를 VScode + git 로컬저장소로 clone</title>
      <link>https://studioplug.tistory.com/359</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배경&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;github에 새로운 저장소를 생성했다. 이 저장소를 로컬의 git저장소로 클론을 뜨고싶은데, 에디터는 vs code를 사용하고 싶다.&lt;br /&gt;또, 로컬에서 깃헙으로 push할 때 계정정보를 입력하는 과정이 생략되었으면 좋겠다.&lt;/p&gt;
&lt;p&gt;목차&lt;/p&gt;
&lt;p&gt;ㄴ clone 뜨기&lt;/p&gt;
&lt;p&gt;ㄴ credential store 설정하기&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결-1 : clone뜨기&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r0Vuc/btqJZnjWvIA/N1B0emLEZSA73QGuCKFXpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r0Vuc/btqJZnjWvIA/N1B0emLEZSA73QGuCKFXpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r0Vuc/btqJZnjWvIA/N1B0emLEZSA73QGuCKFXpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr0Vuc%2FbtqJZnjWvIA%2FN1B0emLEZSA73QGuCKFXpK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;먼저, 깃헙 저장소에서 저장소 주소를 복사한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVO0qo/btqJ3hDjMUI/uspXsnqLLHlPpzk8IpaxUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVO0qo/btqJ3hDjMUI/uspXsnqLLHlPpzk8IpaxUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVO0qo/btqJ3hDjMUI/uspXsnqLLHlPpzk8IpaxUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVO0qo%2FbtqJ3hDjMUI%2FuspXsnqLLHlPpzk8IpaxUK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그 다음, VS code에서 버전관리 - CLone Repository 를 누르면 나오는 입력창에 복사한 저장소 주소를 입력하고 엔터를 누른다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzdeRE/btqJV6wJcfP/vz6xknj5Cy7CT2w69IT7Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzdeRE/btqJV6wJcfP/vz6xknj5Cy7CT2w69IT7Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzdeRE/btqJV6wJcfP/vz6xknj5Cy7CT2w69IT7Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzdeRE%2FbtqJV6wJcfP%2Fvz6xknj5Cy7CT2w69IT7Q0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;파일 탐색기가 뜨는데, 깃헙에서 클론된 파일로 로컬저장소를 구성할 경로를 잘 선택하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm8exO/btqJZnjWITx/Xi22jZ4VggQRYtS0s4ewFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm8exO/btqJZnjWITx/Xi22jZ4VggQRYtS0s4ewFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm8exO/btqJZnjWITx/Xi22jZ4VggQRYtS0s4ewFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm8exO%2FbtqJZnjWITx%2FXi22jZ4VggQRYtS0s4ewFk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;vs code 위쪽 중간을 보면 username과 password를 차례로 입력하도록 한다. 잘 입력해주자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnYJgz/btqJVNYvGPh/GGMP6DQnhwMI7jG0TvIGRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnYJgz/btqJVNYvGPh/GGMP6DQnhwMI7jG0TvIGRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnYJgz/btqJVNYvGPh/GGMP6DQnhwMI7jG0TvIGRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnYJgz%2FbtqJVNYvGPh%2FGGMP6DQnhwMI7jG0TvIGRK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;문제가 없었다면 vs code에서 '니 저장소 잘 클론됐는데, 함 열어줄까?' 하고 물어본다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK1wLq/btqJ4HIv9CX/KKQXMlxCfsrbRU9OoMFKlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK1wLq/btqJ4HIv9CX/KKQXMlxCfsrbRU9OoMFKlK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 52.032%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK1wLq/btqJ4HIv9CX/KKQXMlxCfsrbRU9OoMFKlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK1wLq%2FbtqJ4HIv9CX%2FKKQXMlxCfsrbRU9OoMFKlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nZ2r3/btqJXVut5X3/hLXSsITbEwCAVhRbjB6Bi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nZ2r3/btqJXVut5X3/hLXSsITbEwCAVhRbjB6Bi1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 46.8052%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nZ2r3/btqJXVut5X3/hLXSsITbEwCAVhRbjB6Bi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnZ2r3%2FbtqJXVut5X3%2FhLXSsITbEwCAVhRbjB6Bi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;열어보면 잘 클론된 것을 확인할 수 있고, 내용을 수정하면 버전관리 탭에 내역이 뜨는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결-2 : &lt;span style=&quot;color: #333333;&quot;&gt;credential store 설정하기&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MEnsU/btqJV5R7Phw/qDR2bO55s3xug88MQnCHuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MEnsU/btqJV5R7Phw/qDR2bO55s3xug88MQnCHuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MEnsU/btqJV5R7Phw/qDR2bO55s3xug88MQnCHuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMEnsU%2FbtqJV5R7Phw%2FqDR2bO55s3xug88MQnCHuk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;클론이 정상적으로 잘 되었고, git설정도 잘 떠왔다. 그런데 push하려면 깃헙의 username과 password를 받으려고 한다. 받지 않도록 하는 방법이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1601624787287&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git config credential.helper store&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;요약하자면, 위 커맨드를 입력하고 최초 한 번만 username과 password를 입력해주면 된다. 그 뒤에는 입력했던 정보를 이용해 자동으로 인증절차를 진행한다. 자세한 내용은 &lt;a href=&quot;https://git-scm.com/docs/gitcredentials&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;git 공식 사이트&lt;/a&gt;와 더 자세하게 설명해준 &lt;a href=&quot;https://www.hahwul.com/2018/08/22/git-credential-helper/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다른 포스트&lt;/a&gt;를 참고하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clwYgX/btqJWSx2Mi8/2ySz5GaGIrQnP7W1JGFtSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clwYgX/btqJWSx2Mi8/2ySz5GaGIrQnP7W1JGFtSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clwYgX/btqJWSx2Mi8/2ySz5GaGIrQnP7W1JGFtSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclwYgX%2FbtqJWSx2Mi8%2F2ySz5GaGIrQnP7W1JGFtSk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;본인의 경우는 최초입력조차 받지 않았는데, 컴퓨터 어딘가에 있는 기존의 인증정보를 가져오지 않았나 싶다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cupnsd/btqJ0o30SyZ/NA1slIS8DenFBscG7luwc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cupnsd/btqJ0o30SyZ/NA1slIS8DenFBscG7luwc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cupnsd/btqJ0o30SyZ/NA1slIS8DenFBscG7luwc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcupnsd%2FbtqJ0o30SyZ%2FNA1slIS8DenFBscG7luwc0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;깃헙에서 커밋내역을 확인해보니, 정상적으로 반영되어있었다.&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/359</guid>
      <comments>https://studioplug.tistory.com/359#entry359comment</comments>
      <pubDate>Fri, 2 Oct 2020 16:50:31 +0900</pubDate>
    </item>
    <item>
      <title>Mysql 이름 맨뒤에 특수문자가 들어간 테이블 선택하기</title>
      <link>https://studioplug.tistory.com/358</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제상황&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1601538647649&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mysql&amp;gt; show tables;
+--------------------+
| Tables_in_nodebird |
+--------------------+
| Follow             |
| PostHashtag        |
| hashtags           |
| posts              |              |
| users,             |
+--------------------+
5 rows in set (0.00 sec)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실수로 테이블 이름에 ,(콤마)를 붙여서 생성해버렸다&lt;/p&gt;
&lt;pre id=&quot;code_1601538745976&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;선택도 안되고
mysql&amp;gt; SELECT * FROM users,;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

드랍도 안되고
mysql&amp;gt; DROP TABLE users,
    -&amp;gt; ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

mysql&amp;gt; DROP TABLE users,;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

나보고 어쩌라고&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;users, 를 지우고 users를 새로 만들거나&lt;/p&gt;
&lt;p&gt;또는 users,의 이름을 users로 바꾸고 싶은데, 둘 다 안해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;테이블 이름을 ` ` 백쿼트로 감싸면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1601538914633&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mysql&amp;gt; ALTER TABLE `users,` RENAME users;
Query OK, 0 rows affected (0.40 sec)

mysql&amp;gt; show tables;
+--------------------+
| Tables_in_nodebird |
+--------------------+
| Follow             |
| PostHashtag        |
| hashtags           |
| posts              |
| users              |
+--------------------+
5 rows in set (0.00 sec)
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/358</guid>
      <comments>https://studioplug.tistory.com/358#entry358comment</comments>
      <pubDate>Thu, 1 Oct 2020 16:55:33 +0900</pubDate>
    </item>
    <item>
      <title>(Ubuntu) js Sequelize : mysql의 root계정에 access denied될 때</title>
      <link>https://studioplug.tistory.com/357</link>
      <description>&lt;pre id=&quot;code_1601054484573&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;AccessDeniedError [SequelizeAccessDeniedError]: Access denied for user 'root'@'localhost' (using password: YES)
    at ConnectionManager.connect (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:118:17)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  parent: Error: Access denied for user 'root'@'localhost' (using password: YES)
      at Packet.asError (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/packets/packet.js:712:17)
      at ClientHandshake.execute (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/commands/command.js:28:26)
      at Connection.handlePacket (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/connection.js:425:32)
      at PacketParser.onPacket (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/connection.js:75:12)
      at PacketParser.executeStart (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/packet_parser.js:75:16)
      at Socket.&amp;lt;anonymous&amp;gt; (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/connection.js:82:25)
      at Socket.emit (events.js:315:20)
      at addChunk (_stream_readable.js:295:12)
      at readableAddChunk (_stream_readable.js:271:9)
      at Socket.Readable.push (_stream_readable.js:212:10) {
    code: 'ER_ACCESS_DENIED_ERROR',
    errno: 1045,
    sqlState: '28000',
    sqlMessage: &quot;Access denied for user 'root'@'localhost' (using password: YES)&quot;
  },
  original: Error: Access denied for user 'root'@'localhost' (using password: YES)
      at Packet.asError (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/packets/packet.js:712:17)
      at ClientHandshake.execute (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/commands/command.js:28:26)
      at Connection.handlePacket (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/connection.js:425:32)
      at PacketParser.onPacket (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/connection.js:75:12)
      at PacketParser.executeStart (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/packet_parser.js:75:16)
      at Socket.&amp;lt;anonymous&amp;gt; (/home/wonjinyi/Desktop/LearnNode/200925/node_modules/mysql2/lib/connection.js:82:25)
      at Socket.emit (events.js:315:20)
      at addChunk (_stream_readable.js:295:12)
      at readableAddChunk (_stream_readable.js:271:9)
      at Socket.Readable.push (_stream_readable.js:212:10) {
    code: 'ER_ACCESS_DENIED_ERROR',
    errno: 1045,
    sqlState: '28000',
    sqlMessage: &quot;Access denied for user 'root'@'localhost' (using password: YES)&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위와같은 모양새의 오류를 만나 어쩔 줄 몰라 온갖 자료를 다 뒤집어봤다. 영어와 중국어를 보다가 해결이 안돼서 한숨을 쉬고있었는데, 해답은 의외로 한국어자료에 있었다.&lt;/p&gt;
&lt;p&gt;Mysql 에러코드 1698과 1045 두 가지에 대해서 확실하게 해결 본 자료를 소개한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. &lt;span&gt;ERROR 1698 (28000): Access denied for user 'root'@'localhost&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;mysql -h localhost -u root -p 로 접속 시 위와 같은 오류가 뜨는 경우가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이는 `mysql` schema의 user 테이블에는 root계정에 대한 plugin이라는 것이 저장되어있는데, 이 타입이 잘못 지정되어서 그렇다.&lt;/p&gt;
&lt;p&gt;아래 링크를 참고하여 root의 plugin을 &lt;span&gt;auth_socket 에서 mysql_native_password로 변경하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bscnote.tistory.com/77&quot;&gt;https://bscnote.tistory.com/77&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1601054791796&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;ubuntu에서 mysql의 root계정이 로그인 안될때.&quot; data-og-description=&quot;참고:&amp;nbsp;https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost ubuntu같은 일부 리눅스 시스템에서 mysql을 설치하고 $ mysql -u root -p 으로 로그인 시도를하면..&quot; data-og-host=&quot;bscnote.tistory.com&quot; data-og-source-url=&quot;https://bscnote.tistory.com/77&quot; data-og-url=&quot;https://bscnote.tistory.com/77&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUYoFz/hyHDtLRzaD/G0MKsRhnxKKwBY3YllORu0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bqUUvo/hyHDviBWt8/s7nqd8hX5eJdRVeVhWbMBK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/z5zhB/hyHDnx6yRR/0IEWaSVaE5KCvh8hErAlR0/img.jpg?width=2000&amp;amp;height=1723&amp;amp;face=0_0_2000_1723&quot;&gt;&lt;a href=&quot;https://bscnote.tistory.com/77&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bscnote.tistory.com/77&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUYoFz/hyHDtLRzaD/G0MKsRhnxKKwBY3YllORu0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bqUUvo/hyHDviBWt8/s7nqd8hX5eJdRVeVhWbMBK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/z5zhB/hyHDnx6yRR/0IEWaSVaE5KCvh8hErAlR0/img.jpg?width=2000&amp;amp;height=1723&amp;amp;face=0_0_2000_1723');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;ubuntu에서 mysql의 root계정이 로그인 안될때.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;참고:&amp;nbsp;https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost ubuntu같은 일부 리눅스 시스템에서 mysql을 설치하고 $ mysql -u root -p 으로 로그인 시도를하면..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;bscnote.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. ERROR 1045 (28000) : Access denied for user 'root'@'localhost' (using password: YES)&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;아마 위 1698에러를 해결했다면, 새로운에러 1045가 나타날 것이다. 이 문제는 두 가지 원인을 생각해볼 수 있다.&lt;/p&gt;
&lt;p&gt;첫 번째로, 그냥 비밀번호를 틀렸거나 (오타가 났거나, 까먹었거나)&lt;/p&gt;
&lt;p&gt;두 번째로, 암호화된 비밀번호값이 비어있거나&lt;/p&gt;
&lt;p&gt;이 글까지 왔다면 각각 확인해볼 기력도 없이 이미 지쳐있을 것이다. 그냥 둘 다 해결해보자.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://velog.io/@codemcd/MySQL-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%9E%AC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-zxk1qm3y6c&quot;&gt;https://velog.io/@codemcd/MySQL-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%9E%AC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-zxk1qm3y6c&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1601055107610&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;MySQL 비밀번호 재설정하기&quot; data-og-description=&quot;팀 프로젝트에서 MySQL을 사용할 때 평소에 사용하지 않는 비밀번호를 사용해서 이를 변경하려 했다. 간단히 구글에 검색해서 변경하려고 했는데 생각지도 못한 오류들이 너무 많았다. 버전도 경&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@codemcd/MySQL-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%9E%AC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-zxk1qm3y6c&quot; data-og-url=&quot;https://velog.io/@codemcd/MySQL-비밀번호-재설정하기-zxk1qm3y6c&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bYxZPp/hyHDlfZijv/QZeU2jF5gp8N75siowZUV0/img.png?width=950&amp;amp;height=500&amp;amp;face=0_0_950_500,https://scrap.kakaocdn.net/dn/FHMRm/hyHBfmgI2w/cIXPPqtKgkHfqDB8heJsjk/img.png?width=1400&amp;amp;height=697&amp;amp;face=0_0_1400_697,https://scrap.kakaocdn.net/dn/oh7ns/hyHDk2saQk/gChYjEm0od0kddlYs0kp60/img.png?width=1294&amp;amp;height=548&amp;amp;face=0_0_1294_548&quot;&gt;&lt;a href=&quot;https://velog.io/@codemcd/MySQL-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%9E%AC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-zxk1qm3y6c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@codemcd/MySQL-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%9E%AC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-zxk1qm3y6c&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bYxZPp/hyHDlfZijv/QZeU2jF5gp8N75siowZUV0/img.png?width=950&amp;amp;height=500&amp;amp;face=0_0_950_500,https://scrap.kakaocdn.net/dn/FHMRm/hyHBfmgI2w/cIXPPqtKgkHfqDB8heJsjk/img.png?width=1400&amp;amp;height=697&amp;amp;face=0_0_1400_697,https://scrap.kakaocdn.net/dn/oh7ns/hyHDk2saQk/gChYjEm0od0kddlYs0kp60/img.png?width=1294&amp;amp;height=548&amp;amp;face=0_0_1294_548');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;MySQL 비밀번호 재설정하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;팀 프로젝트에서 MySQL을 사용할 때 평소에 사용하지 않는 비밀번호를 사용해서 이를 변경하려 했다. 간단히 구글에 검색해서 변경하려고 했는데 생각지도 못한 오류들이 너무 많았다. 버전도 경&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://seyul.tistory.com/82&quot;&gt;https://seyul.tistory.com/82&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1601055108209&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;MySQL root 비밀번호 재설정하기&quot; data-og-description=&quot;이 글에서는 MySQL root 비밀번호 잊었을 때 root 비번을 재설정하는 해결법 알아보자. MySQL 프로세스 죽이기 mysqld_safe를 사용하면 비밀번호 없이 MySQL root 계정으로 접속 가능하다. mysqld_safe를 사용하&quot; data-og-host=&quot;seyul.tistory.com&quot; data-og-source-url=&quot;https://seyul.tistory.com/82&quot; data-og-url=&quot;https://seyul.tistory.com/82&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9uRZE/hyHDr1zE2G/vp7LoqzsyRx4m07zcHgB31/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/7OviZ/hyHDjoWyjV/bUSCZmq7pfUWKX8kfIxR2k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/brSAKl/hyHDssD9rA/UPA0bVfXJgH2ZX0n4beJLK/img.png?width=264&amp;amp;height=200&amp;amp;face=0_0_264_200&quot;&gt;&lt;a href=&quot;https://seyul.tistory.com/82&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://seyul.tistory.com/82&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9uRZE/hyHDr1zE2G/vp7LoqzsyRx4m07zcHgB31/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/7OviZ/hyHDjoWyjV/bUSCZmq7pfUWKX8kfIxR2k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/brSAKl/hyHDssD9rA/UPA0bVfXJgH2ZX0n4beJLK/img.png?width=264&amp;amp;height=200&amp;amp;face=0_0_264_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;MySQL root 비밀번호 재설정하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;이 글에서는 MySQL root 비밀번호 잊었을 때 root 비번을 재설정하는 해결법 알아보자. MySQL 프로세스 죽이기 mysqld_safe를 사용하면 비밀번호 없이 MySQL root 계정으로 접속 가능하다. mysqld_safe를 사용하&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;seyul.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/357</guid>
      <comments>https://studioplug.tistory.com/357#entry357comment</comments>
      <pubDate>Sat, 26 Sep 2020 02:32:48 +0900</pubDate>
    </item>
    <item>
      <title>외부에서 홈서버에 접속할 수 있게 설정하기</title>
      <link>https://studioplug.tistory.com/355</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배경과 문제&lt;/li&gt;
&lt;li&gt;포트 개방&lt;/li&gt;
&lt;li&gt;서버 기기 ip 고정할당&lt;/li&gt;
&lt;li&gt;포트 포워딩&lt;/li&gt;
&lt;li&gt;접속 테스트&lt;/li&gt;
&lt;li&gt;DDNS설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&lt;i&gt;&lt;b&gt;이 포스트 내용은 서버로 사용할 PC로 접속 하였을 때를 기준으로 작성되었습니다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배경과 문제&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;공유기를 사용하는 컴퓨터에서 서버를 돌리고자 한다.&lt;/p&gt;
&lt;p&gt;외부에서는 8080번 포트로 접속하도록 하고, 내부 서버의 80번포트로 연결되도록 하고싶다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 서버에 접근하기 위해서는&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. 포트포워딩 혹은 DMZ설정이 필요하며&lt;/p&gt;
&lt;p&gt;2. 외부에서 접근하도록 하려는 포트가 개방되어있어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또, 다양한 변수가 있을 수 있는데 대표적으로는 두 가지이다.&lt;/p&gt;
&lt;p&gt;1. 특정 인터넷 제공사는 특정 포트를 사용자가 쓸 수 없게 하기도 한다&lt;/p&gt;
&lt;p&gt;2. 특정 인터넷의 기본 공유기(혹은 모뎀 겸용)는 포트포워딩이 안되거나, 아주 까다로운 설정이 필요한 경우도 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn2QHU/btqG6IFsnyh/KSnqGLjzC1CKkhCsscK2g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn2QHU/btqG6IFsnyh/KSnqGLjzC1CKkhCsscK2g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn2QHU/btqG6IFsnyh/KSnqGLjzC1CKkhCsscK2g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn2QHU%2FbtqG6IFsnyh%2FKSnqGLjzC1CKkhCsscK2g0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;일반적인 경우 인터넷회선 - 인터넷 모뎀 - 공유기 로 연결되어 있을 것이고, 개인 공유기에는 여러가지 기기가 물려있을 것이다.&lt;/p&gt;
&lt;p&gt;외부 망과 공유기 안의 사설망을 1:1로 대응시켜주는 과정이 필요하다. 위 그림과 같은 과정을 어떻게 설정하는지 간단하게 정리했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;포트 개방&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L1BP8/btqG6g3z01q/hektj5uEuCQBu89qBtzrbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L1BP8/btqG6g3z01q/hektj5uEuCQBu89qBtzrbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L1BP8/btqG6g3z01q/hektj5uEuCQBu89qBtzrbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL1BP8%2FbtqG6g3z01q%2Fhektj5uEuCQBu89qBtzrbk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;가장 먼저, 사용하고자 하는 포트가 개방되어있는지 확인한다. &lt;a href=&quot;https://www.yougetsignal.com/tools/open-ports/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;yougetsignal&lt;/a&gt;에서 간단하게 확인할 수 있다. 사진에서는 닫혀있다(closed)고 표시되고 있다. 이 경우 간단하게 포트를 개방할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1598279378614&quot; class=&quot;css&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;iptables -I INPUT &amp;lt;규칙번호&amp;gt; -p tcp --dport &amp;lt;개방할 외부 포트번호&amp;gt; -j ACCEPT
(예시) iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위와 같은 커맨드를 터미널에 입력하면 되는데, &lt;b&gt;&amp;lt;규칙번호&amp;gt;&lt;/b&gt;는 기존에 등록되지 않은 아무 숫자나 쓰면 된다. &lt;b&gt;&amp;lt;개방할 외부 포트번호&amp;gt;&lt;/b&gt;는 말 그대로 외부에서 접속할 때 사용하고자 하는 포트번호를 입력하면 된다. 이 외의 자세한 내용은 &lt;a href=&quot;https://bottlecok.tistory.com/16&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를 참고하면 된다.&lt;/p&gt;
&lt;p&gt;해당 커맨드로 포트를 개방한 뒤, 다시 &lt;a href=&quot;https://www.yougetsignal.com/tools/open-ports/&quot;&gt;yougetsignal&lt;/a&gt;에서 포트가 open되어있다고 나오는지 확인한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;내부 기기 IP 고정할당&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfXOI/btqHjq3P7ea/ROduMRpZiiO9mZHZakIOdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfXOI/btqHjq3P7ea/ROduMRpZiiO9mZHZakIOdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfXOI/btqHjq3P7ea/ROduMRpZiiO9mZHZakIOdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlfXOI%2FbtqHjq3P7ea%2FROduMRpZiiO9mZHZakIOdk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;일반적으로 &lt;b&gt;192.168.0.1&lt;/b&gt;로 접속하면 공유기 관리페이지를 이용할 수 있다. 이 관리페이지에서 왼쪽에 빨갛게 표시된&lt;b&gt; '내부 네트워크 설정'&lt;/b&gt;과 &lt;b&gt;'포트포워드 설정'&lt;/b&gt; 두 가지에서 간단한 설정만 해주면 모든 과정이 끝이 난다. 먼저, '내부 네트워크 설정'을 살펴보자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwX4HE/btqG6841QXg/jpEI9LMWgdOFVJEfew9gK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwX4HE/btqG6841QXg/jpEI9LMWgdOFVJEfew9gK1/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 53.9604%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwX4HE/btqG6841QXg/jpEI9LMWgdOFVJEfew9gK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwX4HE%2FbtqG6841QXg%2FjpEI9LMWgdOFVJEfew9gK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU0HzK/btqHjX1Aivh/OckTi9rUvREeRUgpzHMeI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU0HzK/btqHjX1Aivh/OckTi9rUvREeRUgpzHMeI0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 44.8769%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU0HzK/btqHjX1Aivh/OckTi9rUvREeRUgpzHMeI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU0HzK%2FbtqHjX1Aivh%2FOckTi9rUvREeRUgpzHMeI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 서버가 돌아가는 기기에 할당될 내부IP를 고정시켜주도록 하자. 기본적으로는 동적으로 남는 IP를 아무거나 주는데, 이 과정에서 서버 컴퓨터의 IP가 바뀌어 접속이 안될 우려가 있다. 그래서 예를 들자면 192.168.0.2 라는 IP는 오직 서버컴퓨터만 할당받을 수 있도록 하는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; iptime기준 가장 아래 [수동 ip 할당 설정]에서 왼쪽 사진과 같은 절차를 거치면, 오른쪽 사진처럼 '설정된 IP/MAC 주소'에 서버컴퓨터의 IP와 MAC이 나타날 것이다. 여기까지 왔다면 서버컴퓨터에 특정 IP가 고정적으로 할당되도록 설정을 마쳤다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;포트 포워딩&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3C6Ym/btqHb0d2pqr/GSxLfupEyuznlaBQBuWuNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3C6Ym/btqHb0d2pqr/GSxLfupEyuznlaBQBuWuNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3C6Ym/btqHb0d2pqr/GSxLfupEyuznlaBQBuWuNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3C6Ym%2FbtqHb0d2pqr%2FGSxLfupEyuznlaBQBuWuNk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이제 외부ip의 포트와, 서버ip 포트를 임의로 1:1매칭 시켜주는 '포트 포워딩'만 남았다. 그냥 사진에서 나오듯 '규칙이름', '외부포트', '내부포트'(=서버 포트) 를 입력한 뒤, '현재 접속된 ip주소'에 체크해준뒤 '수정'을 누르면 목록에 추가된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;접속 테스트&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;이제 외부에서 우리 서버로 정상적으로 접속 가능한지 보면 된다.&lt;/p&gt;
&lt;p&gt;예시로 든 경우에는 &lt;b&gt;12.12.12.12:8080&lt;/b&gt; 으로 접속했을 때, &lt;b&gt;192.168.0.2:80&lt;/b&gt; 에 접속이 성공해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;공유기 자체 DDNS&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&amp;nbsp; 한 가지 문제가 있다. ISP에서는 우리에게 항상 동일한 IP주소를 할당해주지 않는다. 공유기 내부망 기본 설정이 그랬듯, 남는 IP중에서 아무거나 할당해준다. 즉, &lt;i&gt;&lt;b&gt;외부IP가 변할 가능성&lt;/b&gt;&lt;/i&gt;이 있다는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 원래대로라면 ISP에 연락해서 고급진 가격의 고정IP를 받아야겠지만, 공유기에서는 보통 DDNS라는 것을 제공한다. 외부IP가 12.12.12.12에서 갑자기 13.13.13.13으로 바뀌었다고 해보자. DDNS를 사용하지 않으면 서버관리자가 직접 사용자에게 연락을 돌려야 할 것이다. &quot;그... 주소가 바뀌었습니다.. ㅠㅠ.. 바뀐 주소로 접속해주세요..&quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 하지만 DDNS를 사용한다면, 사용자는 오직 wonjinyi.iptime.org와 같은 도메인만 알면 된다. ip가 바뀌면 공유기가 알아서 저 도메인에 바뀐 ip를 연결해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxBdyT/btqG7St6Uoz/MruXU5vZ1sTAmMDm8EyTPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxBdyT/btqG7St6Uoz/MruXU5vZ1sTAmMDm8EyTPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxBdyT/btqG7St6Uoz/MruXU5vZ1sTAmMDm8EyTPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxBdyT%2FbtqG7St6Uoz%2FMruXU5vZ1sTAmMDm8EyTPk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;iptime공유기의 DDNS설정은 '특수기능'에 들어있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZDyRU/btqHcfJbTGj/ROG2IGQ7BEBn2SM4kl1umK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZDyRU/btqHcfJbTGj/ROG2IGQ7BEBn2SM4kl1umK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZDyRU/btqHcfJbTGj/ROG2IGQ7BEBn2SM4kl1umK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZDyRU%2FbtqHcfJbTGj%2FROG2IGQ7BEBn2SM4kl1umK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;각각 '&amp;lt;원하는글자&amp;gt;.iptime.org', '이메일', '아무 비밀번호'를 입력하고 &lt;b&gt;[추가]&lt;/b&gt;버튼을 누른다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ReraO/btqG68KIPRM/iyx0eTPjZbYYF0kMAQaWTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ReraO/btqG68KIPRM/iyx0eTPjZbYYF0kMAQaWTk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 41.4405%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ReraO/btqG68KIPRM/iyx0eTPjZbYYF0kMAQaWTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FReraO%2FbtqG68KIPRM%2Fiyx0eTPjZbYYF0kMAQaWTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbLe3g/btqG9CdtxDV/MmomYNGu6uLELAUhsBNsl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbLe3g/btqG9CdtxDV/MmomYNGu6uLELAUhsBNsl0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 57.3967%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbLe3g/btqG9CdtxDV/MmomYNGu6uLELAUhsBNsl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbLe3g%2FbtqG9CdtxDV%2FMmomYNGu6uLELAUhsBNsl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그러면 위와 같이 접속상태가 바뀌다가, 정상등록으로 표시된다. 예시의 경우 &lt;b&gt;wonjinyi.iptime.org:8080&lt;/b&gt;으로 접속하면 12.12.12.12:8080 으로 접속한 것과 같다. ip가 99.99.99.99:8080 으로 바뀌더라도 등록한 도메인인만 알고있다면 아무 문제 없다.&lt;/p&gt;
&lt;p&gt;여기까지 왔다면 홈서버 접근을 위한 기본적인 설정은 모두 마쳤다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;끝&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;서버는 돈주고 사서 쓰는게 좋을 것 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/355</guid>
      <comments>https://studioplug.tistory.com/355#entry355comment</comments>
      <pubDate>Tue, 25 Aug 2020 00:28:04 +0900</pubDate>
    </item>
    <item>
      <title>구글시트 내용을 가져와 웹에서 보여주는 방법</title>
      <link>https://studioplug.tistory.com/354</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;441&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crhWKX/btqG4Cd9Qn5/kGRXzNfmnSwKJXukKeCSlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crhWKX/btqG4Cd9Qn5/kGRXzNfmnSwKJXukKeCSlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crhWKX/btqG4Cd9Qn5/kGRXzNfmnSwKJXukKeCSlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrhWKX%2FbtqG4Cd9Qn5%2FkGRXzNfmnSwKJXukKeCSlK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;441&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: right;&quot; data-ke-size=&quot;size26&quot;&gt;링크 모음&lt;/h2&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1R5i8g6SfcDbvuEQ8v_zkAQFfCAVZjmr8ajTlDJB_mmQ/edit?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;예제 시트 뷰어&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vTbl6_Rqe_FQOmPGBmVFssZaZcpC0zhbGVnxzaQJivlFX3CBep5AfBgJu_ciB0kNBJcgbPqdZEGZzGn/pubhtml?gid=0&amp;amp;single=true&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;웹페이지 게시된 예제시트&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;https://spreadsheets.google.com/feeds/list/1R5i8g6SfcDbvuEQ8v_zkAQFfCAVZjmr8ajTlDJB_mmQ/1/public/full?alt=json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;예제시트 JSON페이지&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;https://lab.wonj.in/GshReader/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;실제로 구성한 웹페이지&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;https://github.com/wonjinYi/wonjinLab/tree/master/GshReader&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;깃허브 레포&lt;/a&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;DBMS를 사용할 줄 모르지만, 어딘가에 축적된 데이터를 가져와서 웹 화면에 뿌려주고 싶을 때가 있다. 본인은 정말로 HTML조차 모른채로 &lt;a href=&quot;https://leesiguk.wonj.in/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;'이시국 보건증'&lt;/a&gt;을 구성하면서 DB의 필요성을 느꼈지만, 길고 긴 고난의 삽질을 할 시간이 없었다. 당시에는 코로나가 여름즈음 되면 종식될 줄 알았기에, 하루빨리 내 데이터를 보여주는 일이 가장 중요했기 때문이다.&lt;/p&gt;
&lt;p&gt;쉽고 빠른 길을 찾던 중 &lt;a href=&quot;https://docs.google.com/spreadsheets/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 스프레드시트&lt;/a&gt;를 구글API와 앱스를 통해 사용할 수 있다는 사실을 우연히 접했다. 그 날부터 익숙한 도구인 구글시트에 대해 파고들기 시작했다. 여러가지 초보자의 삽질을 하며 알아낸, 가장 최근에 사용하는 확실+간단한 방법을 공유하고자 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSInz6/btqG6HS7udh/M5bRxQMpEKJijwxkcvqru1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSInz6/btqG6HS7udh/M5bRxQMpEKJijwxkcvqru1/img.png&quot; data-alt=&quot;이 많은걸 대체 어떻게 모았을까&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSInz6/btqG6HS7udh/M5bRxQMpEKJijwxkcvqru1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSInz6%2FbtqG6HS7udh%2FM5bRxQMpEKJijwxkcvqru1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 많은걸 대체 어떻게 모았을까&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;1) 구글시트에서 해야하는 작업&lt;/p&gt;
&lt;pre id=&quot;code_1598114157870&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;내용 작성하기 &amp;rarr; 웹으로 배포하고 열람권한 설정하기&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2) 웹프로그램에서 해야하는 작업&lt;/p&gt;
&lt;pre id=&quot;code_1598114163246&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;웹으로 배포된 내용을 json으로 파싱해 가져오기 &amp;rarr; 이용하기 편리한 형태로 저장 &amp;rarr; 보여주기 &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;구글시트 작업하기&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WEJL4/btqG6d52ESo/9o1mcJRvFTA40wd36fU0x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WEJL4/btqG6d52ESo/9o1mcJRvFTA40wd36fU0x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WEJL4/btqG6d52ESo/9o1mcJRvFTA40wd36fU0x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWEJL4%2FbtqG6d52ESo%2F9o1mcJRvFTA40wd36fU0x0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;먼저 구글시트에 위와 같이 데이터를 입력한다. 프로그램에서 이용하기 쉬우려면 1행은 일종의 &lt;b&gt;'대표하는 이름'&lt;/b&gt;이 되어야 한다.&lt;/p&gt;
&lt;p&gt;예를들어, &lt;b&gt;A열&lt;/b&gt;을 보면 &lt;b&gt;1행&lt;/b&gt;은 '지역'으로서&lt;b&gt; 2~5행&lt;/b&gt;의 내용들을 &lt;b&gt;'대표하는 이름'&lt;/b&gt;이라고 할 수 있다. 이걸 뭐라고 부르는지는 잘 모르겠고, 비슷한 모양새를 가진 Dataframe에서는 Column(열) 이라고 부르는걸 봤다. 그래서 나도 저걸 column 이라고 부를 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pohHs/btqG7oZ3yOR/onsjKopQMx9o1zlWqsQNzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pohHs/btqG7oZ3yOR/onsjKopQMx9o1zlWqsQNzk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 41.2854%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pohHs/btqG7oZ3yOR/onsjKopQMx9o1zlWqsQNzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpohHs%2FbtqG7oZ3yOR%2FonsjKopQMx9o1zlWqsQNzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csP84A/btqG3DRTUWk/KoVEjjkcs50eKINHJAR6zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csP84A/btqG3DRTUWk/KoVEjjkcs50eKINHJAR6zK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 57.5518%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csP84A/btqG3DRTUWk/KoVEjjkcs50eKINHJAR6zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsP84A%2FbtqG3DRTUWk%2FKoVEjjkcs50eKINHJAR6zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;내용을 모두 작성했다면 &lt;b&gt;[파일] - [웹에 게시]&lt;/b&gt;를 누른다. 그러면 팝업창이 뜨게되는데, 사용하고자 하는&lt;b&gt; [시트]&lt;/b&gt;를 선택하고 &lt;b&gt;[웹페이지]&lt;/b&gt;로 게시한다. 마지막으로 &lt;b&gt;[게시] - [확인]&lt;/b&gt; 버튼을 누르면 최종적으로 게시가 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yJpc4/btqG9AyYyLB/JUKM6B4xNkJbUJSvE1WCL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yJpc4/btqG9AyYyLB/JUKM6B4xNkJbUJSvE1WCL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yJpc4/btqG9AyYyLB/JUKM6B4xNkJbUJSvE1WCL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyJpc4%2FbtqG9AyYyLB%2FJUKM6B4xNkJbUJSvE1WCL0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vTbl6_Rqe_FQOmPGBmVFssZaZcpC0zhbGVnxzaQJivlFX3CBep5AfBgJu_ciB0kNBJcgbPqdZEGZzGn/pubhtml?gid=0&amp;amp;single=true&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;게시된 링크&lt;/a&gt;로 들어가보면 구글시트에 작성한 내용이 잘 나오는 것을 확인할 수 있다. 하지만 우린 저 링크를 사용하지 않는다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsJCiZ/btqG67RAipP/OaKPXFZgoFlb4IsKISFlO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsJCiZ/btqG67RAipP/OaKPXFZgoFlb4IsKISFlO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsJCiZ/btqG67RAipP/OaKPXFZgoFlb4IsKISFlO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsJCiZ%2FbtqG67RAipP%2FOaKPXFZgoFlb4IsKISFlO1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;구글시트 편집창의 주소를 보면 빨간색박스와 같이 유난히 긴 조합의 글자가 있다. 이 시트를 가리키는 일종의 KEY이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1598115862039&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;https://spreadsheets.google.com/feeds/list/여기에 KEY를 넣어주세요/1/public/full?alt=json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;저 KEY를 위 URL중간에 넣고 접속해보자. 그러면 우리가 작성한 내용이 JSON이라는 무시무시한 형태로 나타나게 된다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;혹시 본인이 게시한 시트가 기본으로 만들어져있는 1번시트가 아니면, KEY값 뒤에 있는 1의 값을 잘 바꿔주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1598115834051&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;https://spreadsheets.google.com/feeds/list/1R5i8g6SfcDbvuEQ8v_zkAQFfCAVZjmr8ajTlDJB_mmQ/1/public/full?alt=json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;지금 본인이 작성하고 있는 시트에 대한 JSON을 보여주는 URL은 위와 같다. &lt;a href=&quot;https://spreadsheets.google.com/feeds/list/1R5i8g6SfcDbvuEQ8v_zkAQFfCAVZjmr8ajTlDJB_mmQ/1/public/full?alt=json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;로 접속할 수 있다. 이 URL을 잘 적어두자. 프로그램에서 사용할 것이다. json내용이 너무 어지러워서 정렬해 보고싶다면, &lt;a href=&quot;https://jsonlint.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JSON lint&lt;/a&gt;에서 할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;프로그램 작성하기&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PUqnQ/btqG7SGDXvv/QolLkA4JqXnw5shKheFwRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PUqnQ/btqG7SGDXvv/QolLkA4JqXnw5shKheFwRK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 48.1821%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PUqnQ/btqG7SGDXvv/QolLkA4JqXnw5shKheFwRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPUqnQ%2FbtqG7SGDXvv%2FQolLkA4JqXnw5shKheFwRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tagbo/btqG3k5BApW/PFyIlhuiNzcDl59zs5qstk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tagbo/btqG3k5BApW/PFyIlhuiNzcDl59zs5qstk/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 50.6551%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tagbo/btqG3k5BApW/PFyIlhuiNzcDl59zs5qstk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftagbo%2FbtqG3k5BApW%2FPFyIlhuiNzcDl59zs5qstk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://lab.wonj.in/GshReader/&quot;&gt;실제 돌아가는 웹페이지&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/wonjinYi/wonjinLab/tree/master/GshReader&quot;&gt;깃허브 저장소&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;를 먼저 공개한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1598118380021&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;body&amp;gt;
  &amp;lt;article&amp;gt;
    &amp;lt;hr&amp;gt;

    &amp;lt;h1 class=&quot;name&quot;&amp;gt;이름이 표시될 곳&amp;lt;/h1&amp;gt;
    &amp;lt;p class=&quot;region&quot;&amp;gt;지역이 표시될 곳&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;phone&quot;&amp;gt;전화번호가 표시될 곳&amp;lt;/p&amp;gt;

    &amp;lt;hr&amp;gt;

    &amp;lt;h1 class=&quot;name&quot;&amp;gt;이름이 표시될 곳&amp;lt;/h1&amp;gt;
    &amp;lt;p class=&quot;region&quot;&amp;gt;지역이 표시될 곳&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;phone&quot;&amp;gt;전화번호가 표시될 곳&amp;lt;/p&amp;gt;

    &amp;lt;hr&amp;gt;

    &amp;lt;h1 class=&quot;name&quot;&amp;gt;이름이 표시될 곳&amp;lt;/h1&amp;gt;
    &amp;lt;p class=&quot;region&quot;&amp;gt;지역이 표시될 곳&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;phone&quot;&amp;gt;전화번호가 표시될 곳&amp;lt;/p&amp;gt;

    &amp;lt;hr&amp;gt;

    &amp;lt;h1 class=&quot;name&quot;&amp;gt;이름이 표시될 곳&amp;lt;/h1&amp;gt;
    &amp;lt;p class=&quot;region&quot;&amp;gt;지역이 표시될 곳&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;phone&quot;&amp;gt;전화번호가 표시될 곳&amp;lt;/p&amp;gt;

    &amp;lt;hr&amp;gt;
  &amp;lt;/article&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;먼저 HTML문서는 간단하게 작성하였다. 각 row의 이름, 지역, 전화번호를 표시한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1598117943725&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;window.addEventListener('DOMContentLoaded', main);

async function main(){
	const TARGET={
		name : document.getElementsByClassName('name'),
		region : document.getElementsByClassName('region'),
		phone : document.getElementsByClassName('phone')
	};
	const SOURCE = 'https://spreadsheets.google.com/feeds/list/1R5i8g6SfcDbvuEQ8v_zkAQFfCAVZjmr8ajTlDJB_mmQ/1/public/full?alt=json';
	const COLUMNS = ['이름', '지역', '전화번호'];
	
	const DATA = await separateRowFromJson(SOURCE, COLUMNS);

	for(let i=0; i&amp;lt;DATA.length; i++){
		TARGET['name'][i].textContent = DATA[i]['이름'];
		TARGET['region'][i].textContent = DATA[i]['지역'];
		TARGET['phone'][i].textContent = DATA[i]['전화번호'];
	}
}

async function separateRowFromJson(SOURCE, COLUMNS){
	const FETCHED_SOURCE = await fetch(SOURCE);
  	let temp = await FETCHED_SOURCE.json();
 	temp = temp['feed']['entry'];

	let _DATA = [];
	for(var i=0; i&amp;lt;Object.keys(temp).length; i++){
		_DATA[i]={};
		for(var k=0; k&amp;lt;Object.keys(COLUMNS).length; k++){;
			_DATA[i][COLUMNS[k]] = temp[i]['gsx$'+COLUMNS[k]]['$t'];
		}
	}
	
	return _DATA;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;코드도 상당히 간단하다. json형태의 내용을 불러와서 객체의 배열로 저장하고, 이걸 화면에 띄워주는게 전부이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;720&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4tmkT/btqG4a2LPqr/x9pEnqoB10fJuvpGqFeGdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4tmkT/btqG4a2LPqr/x9pEnqoB10fJuvpGqFeGdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4tmkT/btqG4a2LPqr/x9pEnqoB10fJuvpGqFeGdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4tmkT%2FbtqG4a2LPqr%2Fx9pEnqoB10fJuvpGqFeGdK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;720&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;main함수의 상수 &lt;b&gt;SOURCE&lt;/b&gt;는 json내용이 있는 url,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;COLUMNS&lt;/b&gt;는 우리가 작성한 시트의 1행 내용들이다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;이 두 가지를&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;separateRowFromJson&lt;/b&gt;이라는 함수를 통해서 위와 같이 가공한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;729&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vMCbO/btqHb0D9esq/KZelkGohXWdWwlyiUzpI81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vMCbO/btqHb0D9esq/KZelkGohXWdWwlyiUzpI81/img.png&quot; data-alt=&quot;대충 구글시트가 뱉는 json 생김새&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vMCbO/btqHb0D9esq/KZelkGohXWdWwlyiUzpI81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvMCbO%2FbtqHb0D9esq%2FKZelkGohXWdWwlyiUzpI81%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;729&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대충 구글시트가 뱉는 json 생김새&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1598119298939&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;_DATA[i][COLUMNS[k]] = temp[i]['gsx$'+COLUMNS[k]]['$t'];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;separateRowFromJson내용중 위 부분이 대체 뭔지 궁금할 수 있는데, 그냥 구글시트가 뱉는 json에서 우리가 필요한 정보가 저 부분에 저런 형태로 있다. 그에 맞춰 저렇게 써놓은 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;끝&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;기본적으로 구글시트가 웹에 게시되어 있기 때문에, 외부에 노출하면 큰일나는 정보는 다른 방법으로 처리해야 한다. 또, 한가지 용도로 사용하는게 아니라 여러곳에서 복잡하게 내용을 참조하여 사용하는 경우, 구글 시트로 처리하면 매우 고통받을 수 있다. 여러가지 뷰를 함수를 사용해서 시트로 미리 만들어놓아야 할텐데, 잠깐 해보니 사람 할 일이 아닌 것 같았다.&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/354</guid>
      <comments>https://studioplug.tistory.com/354#entry354comment</comments>
      <pubDate>Sun, 23 Aug 2020 03:15:57 +0900</pubDate>
    </item>
    <item>
      <title>포트가 사용중이어서 서버프로그램을 실행 할 수 없을 때</title>
      <link>https://studioplug.tistory.com/353</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;돌아가고 있던 서버의 프로세스가 문제가 생겼는데, 포트가 사용중이어서 프로그램을 재실행 할 수 없는 경우가 있다.&lt;/p&gt;
&lt;p&gt;이 경우 사용중인 포트에서 어떤 프로세스가 돌아가고있는지, 해당 프로세스를 어떻게 죽일 수 있는지 알면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1598110420851&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::8080
    at Server.setupListenHandle [as _listen2] (net.js:1313:16)
    at listenInCluster (net.js:1361:12)
    at Server.listen (net.js:1447:7)
    at Object.&amp;lt;anonymous&amp;gt; (/home/wonjinyi/Desktop/LearnNode/200823.js:9:6)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1340:8)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 8080
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pzWNM/btqG2Htf98U/RIA8cdXBYMb8KT6xzTLjB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pzWNM/btqG2Htf98U/RIA8cdXBYMb8KT6xzTLjB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pzWNM/btqG2Htf98U/RIA8cdXBYMb8KT6xzTLjB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpzWNM%2FbtqG2Htf98U%2FRIA8cdXBYMb8KT6xzTLjB0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;p&gt;1. lsof로 사용중인 포트에서 죽이고자 하는 프로세스ID를 알아낸다. 아래 내용에서는 node의 PID인 22731이다.&lt;/p&gt;
&lt;pre id=&quot;code_1598111435462&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(base) wonjinyi@wonjinYi:~/Desktop/LearnNode$ lsof -i tcp:8080
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chrome   2189 wonjinyi   64u  IPv6 396182      0t0  TCP ip6-localhost:54042-&amp;gt;ip6-localhost:http-alt (ESTABLISHED)
node    22731 wonjinyi   28u  IPv6 396158      0t0  TCP *:http-alt (LISTEN)
node    22731 wonjinyi   36u  IPv6 396183      0t0  TCP ip6-localhost:http-alt-&amp;gt;ip6-localhost:54042 (ESTABLISHED)
node    22731 wonjinyi   37u  IPv6 396994      0t0  TCP ip6-localhost:http-alt-&amp;gt;ip6-localhost:54044 (CLOSE_WAIT)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. kill -9 &amp;lt;프로세스ID&amp;gt; 로 프로세스를 죽인다.&lt;/p&gt;
&lt;pre id=&quot;code_1598111564497&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(base) wonjinyi@wonjinYi:~/Desktop/LearnNode$ kill -9 22731
[1]+  죽었음               node 200823&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. 이후 다시 프로그램을 실행하면 해당 포트에서 정상적으로 실행된다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/353</guid>
      <comments>https://studioplug.tistory.com/353#entry353comment</comments>
      <pubDate>Sun, 23 Aug 2020 00:53:00 +0900</pubDate>
    </item>
    <item>
      <title>fade-in/out 적용된 modal</title>
      <link>https://studioplug.tistory.com/352</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lR45x/btqGrjrAbj7/S7UCi9MkTNY4797Gf5MJt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lR45x/btqGrjrAbj7/S7UCi9MkTNY4797Gf5MJt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lR45x/btqGrjrAbj7/S7UCi9MkTNY4797Gf5MJt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlR45x%2FbtqGrjrAbj7%2FS7UCi9MkTNY4797Gf5MJt1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;요약&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;코드보러가기 &lt;a href=&quot;https://codepen.io/wonjinYi/pen/abNOpJR&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#01&quot;&gt;배경&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#02&quot;&gt;문제&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#03&quot;&gt;해결&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배경&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;이전에 모달창을 다음과 같이 구현했었다.&lt;/p&gt;
&lt;p&gt;메인 컨테이너가 숨겨져있을 때는 modal, hidden 두 개의 클래스를 가지고 있다가, 나타날 때는 hidden을 빼는 방식이었다.&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;265&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;css,result&quot; data-user=&quot;wonjinYi&quot; data-slug-hash=&quot;VwaLPeN&quot; data-pen-title=&quot;modal - legacy&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/wonjinYi/pen/VwaLPeN&quot;&gt; modal - legacy&lt;/a&gt; by wonjinyi (&lt;a href=&quot;https://codepen.io/wonjinYi&quot;&gt;@wonjinYi&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;script src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&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;h2 id=&quot;02&quot; style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;기존 코드의 hidden 클래스는 display:none 을 적용하는데, 이 때문에 페이드 인아웃(opacity에 대한 transition)을 적용하는데는 적절하지 않았다. display:none이 있는 경우는 정상적으로 transition을 적용할 수 없다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;내가 원하는 모달창을 만들기 위한 요건은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모달창은 비활성화 되어있을 때에는 아예 없는 것처럼 동작해야한다. (투명도만 0인상태로 다른 요소를 가리면 안된다)&lt;/li&gt;
&lt;li&gt;모달창은 활성화 될 때 페이드인, 비활성화 될 때 페이드아웃 애니메이션을 표시해야 한다.&lt;/li&gt;
&lt;li&gt;페이드인/아웃(transition : opacity __; )효과의 적용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;display:none -&amp;gt; display:flex&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;만으로는 안된다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;특히 3번에 대한 고민과 실험에 상당히 많은 시간을 들였는데, 그나마 간단한 방법으로 해결하기로 했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;03&quot; style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;modal의 모양을 정하는 클래스 외에, 투명도와 실제 스테이지위치 상태를 결정하는 클래스를 정의한다. (각각 opaque, unstaged)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;fade-in&lt;/b&gt;의 경우는 opacity와 unstaged를 각각 토글한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fade-ou&lt;/b&gt;t의 경우는 opaque를 토글 한 뒤, 적절한 때에 transitionend 이벤트를 사용하여 unstaged를 토글한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;자세한 설명은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모달창이 가지는 클래스 상태는 세 가지이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;modal unstaged : 화면에 존재하지 않음 + 투명함 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;[초기상태]&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;modal opaque : 화면에 존재하며 눈에 보임&lt;/li&gt;
&lt;li&gt;modal : 화면에 존재하며 눈에 보이지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;unstaged는 컨테이너를 사용자가 보지 못하는 영역으로 치워버리고, opaque는 컨테이너의 opacity를 1로 설정한다.&lt;/p&gt;
&lt;p&gt;이 모달 코드는 다음과 같은 순서에 따라 작동한다&lt;/p&gt;
&lt;pre id=&quot;code_1596981265481&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(초기상태)

&amp;rarr; (열기 버튼 클릭) &amp;rarr; unstaged 제거 &amp;amp; opaque 추가 &amp;rarr; opacity transition진행 &amp;rarr; modal열림

&amp;rarr; (닫기버튼 클릭) &amp;rarr;opaque 제거 &amp;rarr; opacity transition 진행 &amp;rarr; [transition종료 이벤트] &amp;rarr; unstaged추가

&amp;rarr; (초기상태)&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;265&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;css,result&quot; data-user=&quot;wonjinYi&quot; data-slug-hash=&quot;abNOpJR&quot; data-pen-title=&quot;modal - opacity transition&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/wonjinYi/pen/abNOpJR&quot;&gt; modal - opacity transition&lt;/a&gt; by wonjinyi (&lt;a href=&quot;https://codepen.io/wonjinYi&quot;&gt;@wonjinYi&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;script src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1596982860090&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- HTML --&amp;gt;

&amp;lt;body&amp;gt;
  &amp;lt;a id=&quot;modal-open&quot;&amp;gt;click me&amp;lt;/a&amp;gt;	

  &amp;lt;div id=&quot;modal-container&quot; class=&quot;modal unstaged&quot;&amp;gt;
    &amp;lt;div class=&quot;modal-overlay&quot;&amp;gt;

    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;modal-contents&quot;&amp;gt;
      &amp;lt;div class=&quot;modal-text&quot;&amp;gt;
        this is text
      &amp;lt;/div&amp;gt;
      &amp;lt;a id=&quot;modal-close&quot; class=&quot;modal-close&quot;&amp;gt;X&amp;lt;/a&amp;gt;		
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1596982924429&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.modal{
	opacity : 0;
	
	position: fixed;
	top: 0px; left: 0;
	width: 100%; height: 100%;
	
	max-width : 100%;
	max-height : 100%;

	display: flex;
	justify-content: center;
	align-items : center;
	
	transition : opacity 0.5s;
}
.modal.opaque{
	opacity : 1;
	transition : opacity 0.5s;
}
.modal.unstaged {
	top:-100px;
	height : 0;
}

.modal-overlay{
	position : absolute;
	
	width : 100%;
	height : 100%;
	background-color : RGBA(0, 0, 0, 0.6);
}

.modal-contents{
	display:flex;
	flex-direction : column;
	align-items : center;
	position: relative;
	
	padding: 50px 100px;
	width: auto;
	max-width : 80%;
	max-height : 80%;

	text-align: center;
	background-color: rgb(255,255,255);
	border-radius: 6px;
}

.modal-text{
	text-align:left;
	overflow: auto;
}

.modal-close{
	margin-top : 20px;
	padding : 5px 20px;
	
	color : #FFFFFF;
	font-weight : bolder;
	font-size : 30px;
	background-color : #ffaa00;
	border-radius : 7px;
	cursor : pointer;
	
	transition : all 0.5s;
}
.modal-close:hover{
	background-color : #ffd500;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1596982891805&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//javascript

  //open modal
  document.getElementById('modal-open').addEventListener(&quot;click&quot;, function(e){
    document.getElementById('modal-container').classList.toggle('opaque');
      document.getElementById('modal-container').classList.toggle('unstaged');
  });

  //close modal
  document.getElementById('modal-close').addEventListener(&quot;click&quot;, function(e){
    document.getElementById('modal-container').classList.toggle('opaque');

    document.getElementById('modal-container').addEventListener('transitionend', function(e){
      this.classList.toggle('unstaged');
      this.removeEventListener('transitionend',arguments.callee);
      });
    });&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/352</guid>
      <comments>https://studioplug.tistory.com/352#entry352comment</comments>
      <pubDate>Mon, 10 Aug 2020 00:55:09 +0900</pubDate>
    </item>
    <item>
      <title>웹프로그래밍을 위한 간단한 Web IDE들</title>
      <link>https://studioplug.tistory.com/351</link>
      <description>&lt;p&gt;&amp;nbsp; 기존에는 VS code로 로컬에서 다소 전통적으로(?) 작업했지만, 최근에는 웹 ide를 주로 사용 하고 있다. 웹상의 개발환경은 무엇보다도 디바이스에 구애받지 않고 어디에서나 인터넷만 연결되어있다면 내 프로젝트를 꺼내와 작업 할 수 있다는 장점이 크다. 그 다음으로는 로컬에 무언가 깔고 설정할 필요가 없는 점, 내가 직접 파일들을 백업하는 등 관리할 필요가 없는 점이 뒤를 따른다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 특히나, 6월들어 웹프로그래밍에 관심을 갖고 공부하게 되면서 바로바로 저장소에 push하여 웹서버에 올라간 모습을 볼 필요가 있엇다. 로컬에서 작업하고, FTP로 내 웹서버로 올리는 과정이 너무 귀찮았다. 사실 이 점은 웹IDE의 특징이 아니고, 리모트 저장소이면서 웹서버로 기능하는 서비스의 특징이겠다. 이 서비스들을 쓰기 위해 GIT에 관심을 가졌고, 내가 직접 복잡한 설정을 할 필요 없는 것도 웹 IDE를 쓰기 시작한 이유중 하나이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 간단한 프로젝트를 작성하면서 사용한 IDE들과, 남들에게 특정기능을 보여주기위한 간단한 서비스들을 소개하고자 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;실제 작업을 하는데 특화된 웹 IDE&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;구름IDE&amp;nbsp; Repl.it&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;구름IDE&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;u&gt;&lt;a href=&quot;https://ide.goorm.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; &amp;nbsp;구름IDE&lt;/a&gt;&lt;/u&gt;는 내가 군입대를 하기 전부터 갑자기 혜성처럼 떨어지더니, 공부하는 학생들을 수없이 빨아들여버렸다.&amp;nbsp;현재는 모르는 사람 없는 제품중 하나가 아닐까 생각한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 컨테이너 단위로 다양한 스택을 지원하는데, '아니 이런 것도 지원을 한다고?'싶은 생각도 든다. 사용해본 것 중에는 지원하는 기능이 가장 많고, 그러면서도 필요한 것만 딱 집어 제공해주는 느낌을 준다. &lt;span style=&quot;color: #333333;&quot;&gt;버전관리도 되고, 터미널도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 웹프로그래밍에서의 장점은, 구름자체적으로 Preview페이지를 제공한다는 점이다. 컨테이너가 돌아가면 실제로 서비스가 동작한다. 컨테이너를 실행해놓은 상태라면, preview페이지 링크를 공유하여 누구나 접속할 수 있다. 워크스페이스도 링크 공유가 되는 것으로 알고있는데, 사용해보지는 않았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 무료 계정은 최대 5개의 컨테이너, 1개의 동시실행권한이 주어지고, 사양이 낮다고는 하는데.. 아직까진 전혀 불편함 없이 사용하고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NRlZZ/btqGqQpub5f/CMwwKPknzADO2EEYUf4y6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NRlZZ/btqGqQpub5f/CMwwKPknzADO2EEYUf4y6k/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 60.8609%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NRlZZ/btqGqQpub5f/CMwwKPknzADO2EEYUf4y6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNRlZZ%2FbtqGqQpub5f%2FCMwwKPknzADO2EEYUf4y6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yH4fz/btqGtnNzjxx/nBFzjtDITP6GCUL6T7PFg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yH4fz/btqGtnNzjxx/nBFzjtDITP6GCUL6T7PFg0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 37.9763%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yH4fz/btqGtnNzjxx/nBFzjtDITP6GCUL6T7PFg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyH4fz%2FbtqGtnNzjxx%2FnBFzjtDITP6GCUL6T7PFg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Repl.it&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://repl.it/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;nbsp; &lt;/a&gt;&lt;u&gt;&lt;a href=&quot;https://repl.it/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;repl it&lt;/a&gt;은&lt;/u&gt; 구름만큼은 아니지만, 필수적으로 있으면 좋을 기능들만을 담아 제공하는 간단한 IDE이다. '공유에 특화된 IDE'에 넣을까 말까 고민했는데, 비교적 기능이 많은편이라서 구름IDE와 같이 묶어 적는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 가장 큰 특징은 화면에서 보이듯이, &lt;a href=&quot;https://ko.wikipedia.org/wiki/REPL&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Repl&lt;/a&gt;이라는 닉값을 아주 잘 하고 있다. 코드를 적고 상단의 'Run'버튼을 누르거나, Ctrl+F5 단축키로 바로 실행결과를 볼 수 있다. 파이썬 IDLE를 사용하듯이 바로바로 식을 입력할 수도 있다. 커맨드라인에서 동작하는 프로그램을 짜는데에 유용한 서비스이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 버전관리, 패키지 기능이 있다. 버전관리가 있어서 당연히 깃허브에서 클론뜨기, 깃허브에 레포 만들기 등을 할 수 있다. commit과 push를 한 동작으로 묶어서 하는 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNgKNI/btqGqQbVcxc/MEXjtnKAl5D4qAq8zatkKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNgKNI/btqGqQbVcxc/MEXjtnKAl5D4qAq8zatkKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNgKNI/btqGqQbVcxc/MEXjtnKAl5D4qAq8zatkKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNgKNI%2FbtqGqQbVcxc%2FMEXjtnKAl5D4qAq8zatkKk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 아래에 보이는 것처럼,실제 편집도 가능한 창을 공유할 수 있고, 페이지 링크 자체를 공유할 수도 있다. 구름에 비교하기에는 약간 부족하지만, 뭔가 결여되어있지는 않다 싶을만큼 괜찮은 기능을 제공하면서 공유에도 강점을 가진다 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://repl.it/@wonjinYi/LearnNode?lite=true&quot; width=&quot;100%&quot; height=&quot;400px&quot; frameborder=&quot;no&quot; scrolling=&quot;no&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;일부 기능의 공유에 특화된 웹 IDE&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Codepen&amp;nbsp; Jsfiddle&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CodePen&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp; &lt;a href=&quot;https://codepen.io/wonjinYi/pen/QWNbEvv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;codePen&lt;/a&gt;은 정말로 간단한 웹 기능을 구상하고, 공유하고자 하는 경우에 특화된 서비스이다. 다양한 뷰를 제공하고, css와 js를 별도로 html안에 임베드할 필요도 없고, 딱 보여주고자 하는 그대로만 작성하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 공유는 편집페이지 링크 자체를 공유할 수도 있고(수정은 안되고, 링크에 접속한 사람이 본인 계정으로 클론을 뜨게 된다.), 저기 아래처럼 임베드할 수도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VLRVL/btqGp2D5sQ1/iLT44TLlK04dKTAO6IQoq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VLRVL/btqGp2D5sQ1/iLT44TLlK04dKTAO6IQoq0/img.png&quot; data-alt=&quot;https://codepen.io/wonjinYi/pen/QWNbEvv&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VLRVL/btqGp2D5sQ1/iLT44TLlK04dKTAO6IQoq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVLRVL%2FbtqGp2D5sQ1%2FiLT44TLlK04dKTAO6IQoq0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://codepen.io/wonjinYi/pen/QWNbEvv&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;265&quot; data-theme-id=&quot;dark&quot; data-default-tab=&quot;html,result&quot; data-user=&quot;wonjinYi&quot; data-slug-hash=&quot;QWNbEvv&quot; data-pen-title=&quot;blog example&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/wonjinYi/pen/QWNbEvv&quot;&gt; blog example&lt;/a&gt; by wonjinyi (&lt;a href=&quot;https://codepen.io/wonjinYi&quot;&gt;@wonjinYi&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://static.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;JS FIDDLE&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp; &lt;a href=&quot;http://https://jsfiddle.net/mdn52yo4/4/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JSfiddle&lt;/a&gt;은 codePen과 비슷하면서도 다른 강점들을 갖고 있다. 우선 구글콜랩같은 동시 작업 기능을 제공하고, 외부 파일을 가져와 사용할 수 있는 메뉴를 제공한다. 또, 각 문서들의 오른쪽상단 'Tidy'버튼을 눌러 자동 정렬을 할 수도 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 레이아웃 면에서는 좀 더 자유분방한 모습이다. 굳이 비교하자면 codePen보다는 구름ide에 가깝다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxalud/btqGp2c2QAH/lGrRdbzMGuWhwoZ2GlLsSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxalud/btqGp2c2QAH/lGrRdbzMGuWhwoZ2GlLsSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxalud/btqGp2c2QAH/lGrRdbzMGuWhwoZ2GlLsSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcxalud%2FbtqGp2c2QAH%2FlGrRdbzMGuWhwoZ2GlLsSk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;script src=&quot;//jsfiddle.net/mdn52yo4/4/embed/js,html,css,result/dark/&quot;&gt;&lt;/script&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p&gt;&amp;nbsp; 웹이 비약적인 발전을 이루면서, &lt;a href=&quot;https://ideone.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ideOne&lt;/a&gt;같은 단순한 컴파일러 뿐만 아니라 IDE의 자리까지 꿰차기 시작했다. 구름, repl.it을 보면 간단한 프로젝트에는 충분하다는 느낌을 받는다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 공유에 특화된 웹 IDE들은 작업할 때에도 물론 유용하지만, 무언가 질문할 일이 있을 때도 잘 사용할 수 있다. 동시에 문서를 편집하는 기능, 깃헙과 연동하는 기능들을 잘 사용하면 로컬환경보다도 더 강력한 효과를 볼 수 있을 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/351</guid>
      <comments>https://studioplug.tistory.com/351#entry351comment</comments>
      <pubDate>Sun, 9 Aug 2020 15:37:22 +0900</pubDate>
    </item>
    <item>
      <title>티스토리 블로그 코드 하이라이팅 플러그인</title>
      <link>https://studioplug.tistory.com/350</link>
      <description>&lt;p&gt;그동안 &lt;a href=&quot;https://colorscripter.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;컬러스크립터&lt;/a&gt;를 이용하여 코드를 하이라이팅하고, 티스토리 글쓰기에서 html에 일일히 붙여넣었었다.&lt;/p&gt;
&lt;p&gt;번거로워서 알아보니 티스토리에서 애초에 코드블록을 제공하고, 하이라이팅 플러그인도 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;블로그관리-플러그인 에서 Syntax Highlight를 활성화하면 된다.&lt;/p&gt;
&lt;p&gt;그 뒤 &lt;span style=&quot;color: #333333;&quot;&gt;마크다운이나 티스토리에디터로 코드블록을 작성하면 자동으로 하이라이팅된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://studioplug.tistory.com/349&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;적용된 포스트 예시&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSPSv9/btqFAOF6Y0v/89MuGmdFzab7weqpqoHah0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSPSv9/btqFAOF6Y0v/89MuGmdFzab7weqpqoHah0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSPSv9/btqFAOF6Y0v/89MuGmdFzab7weqpqoHah0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSPSv9%2FbtqFAOF6Y0v%2F89MuGmdFzab7weqpqoHah0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/350</guid>
      <comments>https://studioplug.tistory.com/350#entry350comment</comments>
      <pubDate>Sun, 12 Jul 2020 16:36:08 +0900</pubDate>
    </item>
    <item>
      <title>JS eventlistener로 호출된 객체의 메소드에서 멤버변수에 접근하기</title>
      <link>https://studioplug.tistory.com/349</link>
      <description>&lt;h1&gt;배경&lt;/h1&gt;
&lt;p&gt;아래 코드와 같이, 이벤트리스너로 어떤 객체의 메소드를 호출하여 멤버변수에 변화를 주고자 한다.&lt;br&gt;그런데 assign에서 호출하는 this.num이 undefined이다. 즉, 자기 객체의 멤버를 못읽어오고 있는 것이다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let obj = {
  num : 0,

  assign : function (e){
    num = 20;
    console.log(&amp;#39;assign : &amp;#39;+this.num);
  }

};

document.addEventListener(&amp;#39;keydown&amp;#39;,obj.assign);&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;문제&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/1081499/accessing-an-objects-property-from-an-event-listener-call-in-javascript&quot;&gt;여기 이 글&lt;/a&gt;이 오래된 글이긴 하지만, 명확한 답을 제시하고 있다.&lt;/p&gt;
&lt;p&gt;아래 코드의 마지막줄에서 리스너로서 호출된 ojb.assign_two에서 접근하는 this.num은 obj.num이 아니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let obj = {
  num : 0,

  assign_one : function (){
    num = 10;
    console.log(&amp;#39;assign_one : &amp;#39;+this.num);
  },
  assign_two : function (e){
    num = 20;
    console.log(&amp;#39;assign_two : &amp;#39;+this.num);
  }
};
// 초기값인 0 출력
console.log(obj.num);
// 10출력
obj.assign_one();
// undefined 출력
document.addEventListener(&amp;#39;keydown&amp;#39;,obj.assign_two);&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;해결&lt;/h1&gt;
&lt;p&gt;본인은 단순히 한 단계를 더 걸쳐 호출하는 방법으로 해결했다.&lt;br&gt;다른 이름없는함수로 이벤트를 받고, 이 이름없는 함수에서 본래 호출하고자 하는 assign_two를 호출한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let obj = {

  ...

  assign_two : function (){
    num = 20;
    console.log(&amp;#39;assign_two : &amp;#39;+this.num);
  }
};

document.addEventListener(&amp;#39;keydown&amp;#39;,function (e){
    obj.assign_two();
});&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;위에 링크걸어놓은 stackoverflow에서는 다른 방법을 써놓았다.&lt;br&gt;&amp;#39;문제&amp;#39;단락의 코드를 그대로 두고, assign_two함수 내부에서 self.num 로 접근하거나 (this.num 대신),&lt;br&gt;addEventListener구문에서 리스너에 대해 bind를 사용하라고 한다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/349</guid>
      <comments>https://studioplug.tistory.com/349#entry349comment</comments>
      <pubDate>Sun, 12 Jul 2020 16:24:55 +0900</pubDate>
    </item>
    <item>
      <title>GIT&amp;rarr;GITHUB PUSH는 정상적으로 되지만, contribution칸이 채워지지 않는 경우</title>
      <link>https://studioplug.tistory.com/347</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;도움주신 분&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;김선호&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;201&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NXnY5/btqEPU1u8wO/QE5X5pVaSny9E2PQNEj1z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NXnY5/btqEPU1u8wO/QE5X5pVaSny9E2PQNEj1z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NXnY5/btqEPU1u8wO/QE5X5pVaSny9E2PQNEj1z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNXnY5%2FbtqEPU1u8wO%2FQE5X5pVaSny9E2PQNEj1z1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;201&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcvwEP/btqEP3RrcEp/ysKmZkmtmUbIhqSVn7zAQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcvwEP/btqEP3RrcEp/ysKmZkmtmUbIhqSVn7zAQ0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 25.194%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcvwEP/btqEP3RrcEp/ysKmZkmtmUbIhqSVn7zAQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcvwEP%2FbtqEP3RrcEp%2FysKmZkmtmUbIhqSVn7zAQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blbpot/btqEO0VTbQv/WBiEf8Y1NYJQk3gab8UeXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blbpot/btqEO0VTbQv/WBiEf8Y1NYJQk3gab8UeXK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 73.6432%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blbpot/btqEO0VTbQv/WBiEf8Y1NYJQk3gab8UeXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblbpot%2FbtqEO0VTbQv%2FWBiEf8Y1NYJQk3gab8UeXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;왼쪽 사진과 같이 GIT -&amp;gt; GITHUB로 PUSH는 정상적으로 되지만&lt;/p&gt;
&lt;p&gt;오른쪽 사진처럼 contribution횟수를 나타내는 초록색은 정상적으로 표시가 되지 않는다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvzMlQ/btqEP34YEqA/SuMWF8I3Jo5ZoZOMKoLLo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvzMlQ/btqEP34YEqA/SuMWF8I3Jo5ZoZOMKoLLo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvzMlQ/btqEP34YEqA/SuMWF8I3Jo5ZoZOMKoLLo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvzMlQ%2FbtqEP34YEqA%2FSuMWF8I3Jo5ZoZOMKoLLo0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;GIT의 계정설정에서 email을 깃허브와 동일하게 맞춰주면 된다. 해당 설정내용은 [.git]-[refs]-[config]파일에 저장된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IbM9c/btqEOZQfkT9/Y8ccZHXKPCNv24PukKUTp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IbM9c/btqEOZQfkT9/Y8ccZHXKPCNv24PukKUTp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IbM9c/btqEOZQfkT9/Y8ccZHXKPCNv24PukKUTp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIbM9c%2FbtqEOZQfkT9%2FY8ccZHXKPCNv24PukKUTp1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설정 후 새로 PUSH해보니, 깃허브에 정상적으로 초록색이 표시된 것을 확인할 수 있다.&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/347</guid>
      <comments>https://studioplug.tistory.com/347#entry347comment</comments>
      <pubDate>Sun, 14 Jun 2020 19:14:24 +0900</pubDate>
    </item>
    <item>
      <title>Naver Maps API v3 지도 가변크기적용</title>
      <link>https://studioplug.tistory.com/343</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;네이버지도API를 사용하고 있다. 지도객체(naver.maps.Map)를 웹브라우저창의 크기에 따라 늘였다 줄였다(가변크기) 하려고 한다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그러나 일반적인 접근으로는 크기가 바뀌지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실마리&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;1. 네이버 지도객체(naver.maps.Map)는 크기를 나타내는 별도의 자료형, 크기를 변경하는 메소드가 존재한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;크기를 나타내는 자료형 : naver.maps.Size( &amp;lt;너비&amp;gt; , &amp;lt;높이&amp;gt; )&lt;/p&gt;
&lt;p&gt;크기를 변경하는 메소드 : (naver.maps.Map).setSize( naver.maps.Size )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 크기가 브라우저창에 따라 변화하도록 하려면 js의 resize이벤트를 사용한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;addEventListener('resize', function(){ .... }); 하거나 window.onresize=function(){...}; 하거나&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결 - 화면전체를 채우도록 하는 예제&lt;/h2&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;네이버&amp;nbsp;맵&amp;nbsp;생성&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;mapOptions&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;center:&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;new&lt;/span&gt;&amp;nbsp;naver.maps.LatLng(&lt;span style=&quot;color: #c10aff;&quot;&gt;37.&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;550179&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;127.&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;073627&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;zoom:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;};&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;let&amp;nbsp;map&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;new&lt;/span&gt;&amp;nbsp;naver.maps.Map(&lt;span style=&quot;color: #ffd500;&quot;&gt;'map'&lt;/span&gt;,&amp;nbsp;mapOptions);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;네이버&amp;nbsp;맵&amp;nbsp;크기조정&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.&lt;span style=&quot;color: #4be6fa;&quot;&gt;addEventListener&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;'DOMContentLoaded'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resize();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.&lt;span style=&quot;color: #4be6fa;&quot;&gt;addEventListener&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;'resize'&lt;/span&gt;,&amp;nbsp;resize);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;});&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;function&lt;/span&gt;&amp;nbsp;resize(){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;Size&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;new&lt;/span&gt;&amp;nbsp;naver.maps.Size(&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.innerWidth,&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.innerHeight);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;map.setSize(Size);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결 - header영역, footer영역을 제외한 영역을 채우도록 하는 예제&lt;/h2&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #272727; border-radius: 4px; height: 372px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 372px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; height: 372px; width: 19px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; height: 372px; width: 841px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;네이버&amp;nbsp;맵&amp;nbsp;생성&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;mapOptions&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;center:&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;new&lt;/span&gt;&amp;nbsp;naver.maps.LatLng(&lt;span style=&quot;color: #c10aff;&quot;&gt;37.&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;550179&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;127.&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;073627&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;zoom:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;};&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;let&amp;nbsp;map&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;new&lt;/span&gt;&amp;nbsp;naver.maps.Map(&lt;span style=&quot;color: #ffd500;&quot;&gt;'map'&lt;/span&gt;,&amp;nbsp;mapOptions);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;네이버&amp;nbsp;맵&amp;nbsp;크기조정&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.&lt;span style=&quot;color: #4be6fa;&quot;&gt;addEventListener&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;'DOMContentLoaded'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resize();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.&lt;span style=&quot;color: #4be6fa;&quot;&gt;addEventListener&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;'resize'&lt;/span&gt;,&amp;nbsp;resize);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;});&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;function&lt;/span&gt;&amp;nbsp;resize(){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;mapWidth&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.innerWidth;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;mapHeight&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;window&lt;/span&gt;.innerHeight&amp;nbsp; &lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;document&lt;/span&gt;.&lt;span style=&quot;color: #4be6fa;&quot;&gt;getElementById&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;'appHead'&lt;/span&gt;).offsetHeight&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;document&lt;/span&gt;.&lt;span style=&quot;color: #4be6fa;&quot;&gt;getElementById&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;'appFooter'&lt;/span&gt;).offsetHeight;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;Size&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;new&lt;/span&gt;&amp;nbsp;naver.maps.Size(mapWidth,&amp;nbsp;mapHeight);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;map.setSize(Size);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 372px; width: 12px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elPIuR/btqEnI1CKWe/0ObyRgATq6RAcw8bKXlpoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elPIuR/btqEnI1CKWe/0ObyRgATq6RAcw8bKXlpoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elPIuR/btqEnI1CKWe/0ObyRgATq6RAcw8bKXlpoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelPIuR%2FbtqEnI1CKWe%2F0ObyRgATq6RAcw8bKXlpoK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/343</guid>
      <comments>https://studioplug.tistory.com/343#entry343comment</comments>
      <pubDate>Mon, 25 May 2020 08:08:35 +0900</pubDate>
    </item>
    <item>
      <title>구름IDE와 Github연동 초심자 가이드</title>
      <link>https://studioplug.tistory.com/342</link>
      <description>&lt;p&gt;&lt;b&gt;2021. 03. 14 덧붙이는 글&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;구름IDE에 간편하게 커밋&amp;amp;푸쉬하는 기능이 언제부터인가 생겼습니다. 때문에 이제는 이 포스트가 굳이 필요하지 않겠다는 생각이 들었습니다. 이 글을 보러오시는 분들은 구름 컨테이너의 내용을 깃허브에 올리시는 것만이 목적일 것이므로, 구름IDE에서 제공하는 버전관리 기능을 사용하시면 원하시는 일을 보다 간단하게 하실 수 있을 것으로 생각합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;그동안 이 포스트를 조회수 효자로 만들어주셔서 감사합니다. 이제는 아래 이어지는 내용을 따라하는 대신,&amp;nbsp; 구름IDE 버전관리 기능을 사용해보세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b98WRv/btqZ9Cx2l8f/5v1GScQCY5txkNihhedyNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b98WRv/btqZ9Cx2l8f/5v1GScQCY5txkNihhedyNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b98WRv/btqZ9Cx2l8f/5v1GScQCY5txkNihhedyNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb98WRv%2FbtqZ9Cx2l8f%2F5v1GScQCY5txkNihhedyNK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구름IDE와 GIT을 처음써보는 사람의 입장에서 작성한, 딱 깃허브 백업만의 목적에 충실한 가이드입니다.&lt;/p&gt;
&lt;p&gt;구체적이고 본질적인 내용은 다른 포스트를 찾아보셔야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p&gt;기존의 로컬작업환경을 구름IDE로 옮기고 싶은 상황이다. 아래와 같이 하고자 한다.&lt;/p&gt;
&lt;p&gt;1. github 저장소에 존재하는 파일을 기반으로 구름IDE컨테이너를 만든다.&lt;/p&gt;
&lt;p&gt;2. 이후 구름IDE에서 github에 푸쉬하여 자료를 백업하고자 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사전에 필요한 지식&lt;/h2&gt;
&lt;p&gt;아래 내용들을 읽고 알아서 시작하여도 좋겠으나, 귀찮으면 바로 아래의 &quot;해결&quot;로 넘어가도 된다.&lt;/p&gt;
&lt;p&gt;테스트해보니 구름IDE에서 귀찮은 초기설정을 모두 해결해준다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://opentutorials.org/course/2708&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지옥에서 온 GIT(생활코딩)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://yoshikixdrum.tistory.com/200&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GIT원격저장소 초기화&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://emflant.tistory.com/127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;.gitignore 설정&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;정말 아무것도 모르는 사람의 기준으로 작성된 글이다&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;초기설정&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;아래의 두 과정은 처음에 한 번 하고나면, 다음에는 할 필요가 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. GITHUB로부터 초기의 파일들을 구름IDE로 가져오는 과정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ewIb7z/btqEoABQ9Rz/aiPIpdKlhcupcIEbroGBVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ewIb7z/btqEoABQ9Rz/aiPIpdKlhcupcIEbroGBVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ewIb7z/btqEoABQ9Rz/aiPIpdKlhcupcIEbroGBVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FewIb7z%2FbtqEoABQ9Rz%2FaiPIpdKlhcupcIEbroGBVK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;먼저, 구름IDE대쉬보드에서 새 컨테이너를 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGn9JD/btqEoAIBGSD/v0PWvPrJoROaSSvTN7aurk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGn9JD/btqEoAIBGSD/v0PWvPrJoROaSSvTN7aurk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGn9JD/btqEoAIBGSD/v0PWvPrJoROaSSvTN7aurk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGn9JD%2FbtqEoAIBGSD%2Fv0PWvPrJoROaSSvTN7aurk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;생성 페이지에 들어가서 &quot;공개 범위&quot;는 Private로, &quot;템플릿&quot;은 Github로 선택한다.&lt;/p&gt;
&lt;p&gt;그러고 나면 아래에 &quot;인증&quot;부분이 나타나게 되는데, github의 유저네임(이메일 말고)과 비밀번호를 입력하고 가져오기를 누른다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bscBuX/btqEniu8EsP/zjaG3nWwLoRdSizCOED9GK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bscBuX/btqEniu8EsP/zjaG3nWwLoRdSizCOED9GK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bscBuX/btqEniu8EsP/zjaG3nWwLoRdSizCOED9GK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbscBuX%2FbtqEniu8EsP%2FzjaG3nWwLoRdSizCOED9GK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;가져오기를 누른 후에, 해당 계정에 있는 repository들이 나타나게 된다. 가져올 repository를 선택하고 나머지 설정을 하면 컨테이너가 만들어진다. 이 과정까지 마치고 나면, 컨테이너에 github repo의 모든 내용들이 옮겨온다.&lt;/p&gt;
&lt;p&gt;만들어진 컨테이너로 들어가서 다음 과정을 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 구름IDE에서 .gitignore설정하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FkOBH/btqEo7eUx72/7ocCOk0GHkIR2heEaKf84k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FkOBH/btqEo7eUx72/7ocCOk0GHkIR2heEaKf84k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FkOBH/btqEo7eUx72/7ocCOk0GHkIR2heEaKf84k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFkOBH%2FbtqEo7eUx72%2F7ocCOk0GHkIR2heEaKf84k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;작업에만 필요하고 굳이 github에 올릴필요 없는 파일을 지정할 수 있다. 탐색기 위의 [+]-[파일]을 눌러 새 파일을 만들자&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQLjB0/btqEmK6LzWn/0LpKIoeycnmpoZNtJgHGq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQLjB0/btqEmK6LzWn/0LpKIoeycnmpoZNtJgHGq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQLjB0/btqEmK6LzWn/0LpKIoeycnmpoZNtJgHGq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQLjB0%2FbtqEmK6LzWn%2F0LpKIoeycnmpoZNtJgHGq1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;기본설정 그대로 최상위 폴더에 &quot;.gitignore&quot;라는 이름을 적고 [확인]을 누른다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bklXZW/btqEo7FY86G/MEyVRAPEoNITutv18BWgXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bklXZW/btqEo7FY86G/MEyVRAPEoNITutv18BWgXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bklXZW/btqEo7FY86G/MEyVRAPEoNITutv18BWgXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbklXZW%2FbtqEo7FY86G%2FMEyVRAPEoNITutv18BWgXk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;자동으로 .gitignore파일이 열리게 될 것이다. 내용으로 &lt;b&gt;&quot;goorm.manifest&quot;&lt;/b&gt;를 적고 저장한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;커밋과 푸쉬&lt;/h2&gt;
&lt;p&gt;아래 두 과정은 github에 올리고자 할 때마다 해야하는 일이다&lt;/p&gt;
&lt;p&gt;github에 올리려면 다음 과정이 필요하다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;stage에 파일 add -&amp;gt; commit -&amp;gt; push&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;(&amp;nbsp;&lt;u&gt;실제로는 굉장히 다른 의미&lt;/u&gt;&lt;/b&gt;&lt;b&gt;이나, 깃허브에 백업하는 일만 하고 다른건 쳐다보지도 않는다면 이 의미로도 충분하다고 본다. )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&quot;commit&quot;이란 구름IDE상에서 깃허브로 코드를 보내기 위한 준비과정이라고 볼 수 있고 (버전을 만드는 것)&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&quot;push&quot; 란 커밋으로 준비된 프로그램을 깃허브에 업로드 한다고 생각 할 수 있다.&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;( &lt;u&gt;실제로는 굉장히 다른 의미&lt;/u&gt;이나, 깃허브에 백업하는 일만 하고 다른건 쳐다보지도 않는다면 이 의미로도 충분하다고 본다. )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. git로컬저장소에서 스테이징 영역에 파일 add하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7GO5A/btqEn9kcHpk/tmk1vi2AegLkb05UkdIv21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7GO5A/btqEn9kcHpk/tmk1vi2AegLkb05UkdIv21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7GO5A/btqEn9kcHpk/tmk1vi2AegLkb05UkdIv21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7GO5A%2FbtqEn9kcHpk%2Ftmk1vi2AegLkb05UkdIv21%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;우선 아무 파일이나 일단 수정을 해본다. 주석을 넣거나, 주석을 빼거나 아무거나 하면 된다.&lt;/p&gt;
&lt;p&gt;그 다음 아래 status 명령을 치면, 위와 같은 화면이 나온다. &lt;span style=&quot;color: #333333;&quot;&gt;빨간색 글자가 있는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;git status&lt;/blockquote&gt;
&lt;p&gt;빨간색 파일들의 수정사항이 깃허브에 반영되어야 한다면, 초록색으로 표시되어야 문제없이 커밋을 할 수 있다.&lt;/p&gt;
&lt;p&gt;아래 add &lt;span style=&quot;color: #333333;&quot;&gt;명령을 통하여 초록색으로 표시되게 바꿀 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;git add &amp;lt;파일명&amp;gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwDgh3/btqEnihJ7lD/3cftU2cLw0j49DS9ioeD51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwDgh3/btqEnihJ7lD/3cftU2cLw0j49DS9ioeD51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwDgh3/btqEnihJ7lD/3cftU2cLw0j49DS9ioeD51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwDgh3%2FbtqEnihJ7lD%2F3cftU2cLw0j49DS9ioeD51%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;빨간색으로 표시되던 파일들에 add를 사용하고 나서 status를 살펴보았다. 초록색으로 표시되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;이 상태여야 정상적으로 커밋할 준비가 된 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 로컬 저장소에 commit하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nhdOB/btqEo8dVoaf/9n3kdMX9mJpaQoUgd3kzE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nhdOB/btqEo8dVoaf/9n3kdMX9mJpaQoUgd3kzE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nhdOB/btqEo8dVoaf/9n3kdMX9mJpaQoUgd3kzE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnhdOB%2FbtqEo8dVoaf%2F9n3kdMX9mJpaQoUgd3kzE0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;위 상태에서 아래 commit 명령을 내린다. -m뒤에는 커밋메시지를 작성한다.&lt;/p&gt;
&lt;p&gt;별말 없으면 잘 된것이다.&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;git commit -m &quot;커밋메시지&quot;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. github에 push하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vAvWq/btqEnI1zbwf/dK1xWf1kea0FjzsxXPHaSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vAvWq/btqEnI1zbwf/dK1xWf1kea0FjzsxXPHaSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vAvWq/btqEnI1zbwf/dK1xWf1kea0FjzsxXPHaSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvAvWq%2FbtqEnI1zbwf%2FdK1xWf1kea0FjzsxXPHaSk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;아래와 같이 깃허브로 push하라는 명령을 작성한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;git push&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lagLc/btqEm3LSNkw/IkYbBlJDZc5vYGSclBLNfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lagLc/btqEm3LSNkw/IkYbBlJDZc5vYGSclBLNfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lagLc/btqEm3LSNkw/IkYbBlJDZc5vYGSclBLNfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlagLc%2FbtqEm3LSNkw%2FIkYbBlJDZc5vYGSclBLNfK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;깃허브 레포지토리에 들어가서 살펴보면, 정상적으로 내용이 반영된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 깃허브 버전을 구름ide로 가져오기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;만약 구름ide가 갖고있는 내용이 깃허브보다 이전의 버전이라면, 아래 명령을 통해 깃허브 내용을 구름ide로 가져올 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;git pull&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이제 해야할 일&lt;/h2&gt;
&lt;p&gt;이 포스트로 급한 불을 껐다면, GIT에 대해 제대로 된 글을 찾아 떠나자&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/342</guid>
      <comments>https://studioplug.tistory.com/342#entry342comment</comments>
      <pubDate>Mon, 25 May 2020 01:43:58 +0900</pubDate>
    </item>
    <item>
      <title>이시국 보건증 첫 버전 배포</title>
      <link>https://studioplug.tistory.com/341</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;&lt;b&gt;현재 서비스 운영중입니다!!!!!!!&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://leesiguk.wonj.in/&quot;&gt;https://leesiguk.wonj.in/&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;figure id=&quot;og_1593530390740&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://leesiguk.wonj.in/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;이시국 보건증&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;보건증 발급가능 기관을 찾아 비교해보세요&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;leesiguk.wonj.in&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #1a5490;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;&lt;b&gt;현재 서비스 운영중입니다!!!!!!!&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wonj.in/&quot;&gt;https://wonj.in/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589708906020&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;이시국 보건증&quot; data-og-description=&quot;비영리 공익목적 개인서비스입니다. 이 서비스는 단순 참고용도로만 사용하시고 정확한 정보는 각 의료기관으로 문의바랍니다. 아래 오픈소스/서비스를 사용하였습니다 dataframe-js https://www.npmjs&quot; data-og-host=&quot;wonj.in&quot; data-og-source-url=&quot;https://wonj.in/&quot; data-og-url=&quot;https://wonj.in/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://wonj.in/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wonj.in/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;이시국 보건증&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;비영리 공익목적 개인서비스입니다. 이 서비스는 단순 참고용도로만 사용하시고 정확한 정보는 각 의료기관으로 문의바랍니다. 아래 오픈소스/서비스를 사용하였습니다 dataframe-js https://www.npmjs&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;wonj.in&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;홍보하고자 하는 곳은 다음과 같다&lt;/p&gt;
&lt;p&gt;1. 조리 / 급식과 관련있는 커뮤니티&lt;/p&gt;
&lt;p&gt;2. 코로나 관련 커뮤니티&lt;/p&gt;
&lt;p&gt;3. 자취(알바)와 관련된 커뮤니티&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한 곳&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.facebook.com/groups/codingeverybody/permalink/4101147743259064/&quot;&gt;https://www.facebook.com/groups/codingeverybody/permalink/4101147743259064/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.facebook.com/groups/onehomelife/permalink/3517135318301891/&quot;&gt;https://www.facebook.com/groups/onehomelife/permalink/3517135318301891/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;현재의 상태는 다음과 같다&lt;/p&gt;
&lt;p&gt;1. 마커를 지도에 뿌려준다 ( 색깔 구분 : 초록-현재 발급가능한 민간의료기관, 파랑-현재 발급가능한 보건소, 회색 - 발급불가 )&lt;/p&gt;
&lt;p&gt;2. 마커에 click이벤트리스너를 준다 -&amp;gt; 정보창 토글&lt;/p&gt;
&lt;p&gt;3. 정보창의 기관명을 클릭하면 지도검색 페이지로 연결된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;620&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lJqBH/btqEdwz0eaF/aDPnWNt6Lbx3anlDJVIy90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lJqBH/btqEdwz0eaF/aDPnWNt6Lbx3anlDJVIy90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lJqBH/btqEdwz0eaF/aDPnWNt6Lbx3anlDJVIy90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlJqBH%2FbtqEdwz0eaF%2FaDPnWNt6Lbx3anlDJVIy90%2Fimg.png&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;620&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciABWq/btqEcnRv3uG/iVk3g7ROt9jtka9wC7R8Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciABWq/btqEcnRv3uG/iVk3g7ROt9jtka9wC7R8Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciABWq/btqEcnRv3uG/iVk3g7ROt9jtka9wC7R8Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciABWq%2FbtqEcnRv3uG%2FiVk3g7ROt9jtka9wC7R8Lk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdxEb1/btqEeo9iVqN/iCkTdujD0bS8OPt2wkOmK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdxEb1/btqEeo9iVqN/iCkTdujD0bS8OPt2wkOmK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdxEb1/btqEeo9iVqN/iCkTdujD0bS8OPt2wkOmK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdxEb1%2FbtqEeo9iVqN%2FiCkTdujD0bS8OPt2wkOmK0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;단기 아르바이트로 바쁜 나날을 보내며 시간이 날 때마다 데이터를 모으고, 퇴근해서는 문서를 뒤적이며 짜깁기해가며 코드를 적어나갔다. 사실 웹에 대해 아는게 없다보니 고도의 기술도 없었고, 당연히 서비스를 완성하는 과정이 어렵지는 않았다. API와 라이브러리가 다해먹었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;내가 퇴근하고 나면 병원도 퇴근한 뒤였기 때문에, 점심시간을 이용해 유선상 데이터 수집을 해야했다. 전화문의한 병원중 절반 정도는 &quot;보건증&quot;단어를 꺼내자마자 갑자기 짜증을 냈다. 영 기분좋은 경험은 아니었다. 다만 이해가 가긴 했다. 보건증 문의가 얼마나 많이 들어왔으면 그랬을까. 병원 직원들에게도 심심한 위로가 되었으면 좋겠다. 오늘 저녁쯤 보건증이 필요할만한 인터넷 커뮤니티에 뿌릴 예정이다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/341</guid>
      <comments>https://studioplug.tistory.com/341#entry341comment</comments>
      <pubDate>Sun, 17 May 2020 18:53:37 +0900</pubDate>
    </item>
    <item>
      <title>dataframe.js로 csv를 불러와 &amp;quot;dictionary 배열&amp;quot;로 변환하기(브라우저)</title>
      <link>https://studioplug.tistory.com/339</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p&gt;csv파일을&lt;b&gt; &lt;a href=&quot;https://gmousse.gitbooks.io/dataframe-js/content/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dataframe.js&lt;/a&gt;&lt;/b&gt;로 불러와, js의 dictionary의 array ( 딕셔너리를 원소로 갖는 배열 )로 변환해야 한다.&lt;/p&gt;
&lt;p&gt;csv파일은 &lt;b&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 스프레드시트&lt;/a&gt;&lt;/b&gt;에서 바로 export하여 사용하고싶다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&amp;nbsp;index.HTML&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;head&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&amp;nbsp;FOR&amp;nbsp;PRODUCTION&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;script&amp;nbsp;src&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;https://gmousse.github.io/dataframe-js/dist/dataframe.min.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;script&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&amp;nbsp;FOR&amp;nbsp;DEVELOPMENT&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;script&amp;nbsp;src&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;https://gmousse.github.io/dataframe-js/dist/dataframe.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;script&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;head&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;script&amp;nbsp;type&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;nbsp;src&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;script.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;script&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;body&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #272727; border-radius: 4px; height: 362px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 362px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; height: 362px; width: 19px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; height: 362px; width: 868px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;script.js&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;DataFrame&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt; dfjs.DataFrame;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;data;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;var&lt;/span&gt;&amp;nbsp;temp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;const&amp;nbsp;source_url&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;'https://docs.google.com/spreadsheets/d/&amp;lt;구글시트&amp;nbsp;문서&amp;nbsp;id&amp;gt;/export?format=csv'&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;DataFrame.fromCSV(source_url).then(df&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;show()&amp;nbsp;:&amp;nbsp;dataframe&amp;nbsp;미리보기&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;df.show();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;불러온&amp;nbsp;CSV에서&amp;nbsp;특정&amp;nbsp;컬럼&amp;nbsp;선택하여&amp;nbsp;새로운&amp;nbsp;dataframe생성&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;temp&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;df.select(&lt;span style=&quot;color: #ffd500;&quot;&gt;'기관명'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;'Latitude'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;'Longitude'&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;temp.show();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;새롭게&amp;nbsp;만든&amp;nbsp;dataframe(temp)를&amp;nbsp;dictionary형으로&amp;nbsp;변환&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;temp.toCollection();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;console&lt;/span&gt;.log(data);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;});&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 362px; width: 12px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;7열의 &amp;lt;구글시트문서 id&amp;gt;는, 본인의 구글 시트문서에 들어간 후 url에서 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;빨간사각형으로 표시한 부분이 문서id이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mq25v/btqD5Jy6Gjv/H3zTqTRfHdMoV56EhyCTu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mq25v/btqD5Jy6Gjv/H3zTqTRfHdMoV56EhyCTu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mq25v/btqD5Jy6Gjv/H3zTqTRfHdMoV56EhyCTu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmq25v%2FbtqD5Jy6Gjv%2FH3zTqTRfHdMoV56EhyCTu0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;script.js의 18열 data출력결과는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQ3IYv/btqD3Hvf00j/HldhHddhNqRkeVeNh5dIV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQ3IYv/btqD3Hvf00j/HldhHddhNqRkeVeNh5dIV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQ3IYv/btqD3Hvf00j/HldhHddhNqRkeVeNh5dIV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQ3IYv%2FbtqD3Hvf00j%2FHldhHddhNqRkeVeNh5dIV0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://gmousse.gitbooks.io/dataframe-js/content/doc/api/dataframe.html#fromcsv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;링크&lt;/b&gt;&lt;/a&gt; DataFrame.fromCSV( &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt; csv파일 경로 &amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; ).then( df =&amp;gt; &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;구문&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;csv를 불러와 새로운 dataframe을 만든다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://gmousse.gitbooks.io/dataframe-js/content/doc/api/dataframe.html#select&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;링크&lt;/b&gt;&lt;/a&gt; DataFrame.select( &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;선택할 컬럼&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;dataframe에서 특정 컬럼을 뽑아내어, 새로운 dataframe을 만든다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://gmousse.gitbooks.io/dataframe-js/content/doc/api/dataframe.html#tocollection&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;링크&lt;/b&gt;&lt;/a&gt; DataFrame.toCollection()&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;dataframe을 dictionary로 변환한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;추가적으로, 딕셔너리가 아닌 배열(list)로 변환하고 싶을 경우, toArray()를 사용할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://gmousse.gitbooks.io/dataframe-js/content/doc/api/dataframe.html#toArray&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;DataFrame.toArray()&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/339</guid>
      <comments>https://studioplug.tistory.com/339#entry339comment</comments>
      <pubDate>Mon, 11 May 2020 17:40:24 +0900</pubDate>
    </item>
    <item>
      <title>구글 스프레드시트에서 geocode by awesome Table로 주소를 좌표로 변환하기</title>
      <link>https://studioplug.tistory.com/338</link>
      <description>&lt;p&gt;다량의 주소 데이터를 위/경도 좌표로 변환할 일이 있을 때 유용한 구글스프레드 부가프로그램이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p&gt;다음과 같은 스프레드시트를 갖고 있는데, 주소 데이터만을 이용하여 위/경도 컬럼을 생성하려고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgETn2/btqD2G3w192/7CTFhnXg3JZRVQVOxrUSf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgETn2/btqD2G3w192/7CTFhnXg3JZRVQVOxrUSf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgETn2/btqD2G3w192/7CTFhnXg3JZRVQVOxrUSf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgETn2%2FbtqD2G3w192%2F7CTFhnXg3JZRVQVOxrUSf1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;방법&lt;/h2&gt;
&lt;p&gt;구글 스프레드시트에서 Geocode by Awesome Table을 설치하도록 하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nmkGJ/btqD1puV7v5/I5R38SNSAX9s4QCQ4VkPk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nmkGJ/btqD1puV7v5/I5R38SNSAX9s4QCQ4VkPk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nmkGJ/btqD1puV7v5/I5R38SNSAX9s4QCQ4VkPk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnmkGJ%2FbtqD1puV7v5%2FI5R38SNSAX9s4QCQ4VkPk0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzdvxx/btqD3HAReFW/Jk8dObqqvXeBWhvK1Mtjik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzdvxx/btqD3HAReFW/Jk8dObqqvXeBWhvK1Mtjik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzdvxx/btqD3HAReFW/Jk8dObqqvXeBWhvK1Mtjik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzdvxx%2FbtqD3HAReFW%2FJk8dObqqvXeBWhvK1Mtjik%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;설치를 완료하였다면, Start Geocoding을 선택하여 Geocode대화창을 우측에 연다.&lt;/p&gt;
&lt;p&gt;주소데이터가 있는 시트와 컬럼을 지정한다. 만약 주소가 여러개의 컬럼에 나뉘어 저장되어있다면, [Address column]아래의 파란글씨를 눌러 여러 컬럼을 지정해줄 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG6EDA/btqD3dteTya/0MtUdszQOPxkYJmXShlkW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG6EDA/btqD3dteTya/0MtUdszQOPxkYJmXShlkW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG6EDA/btqD3dteTya/0MtUdszQOPxkYJmXShlkW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG6EDA%2FbtqD3dteTya%2F0MtUdszQOPxkYJmXShlkW0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;작업이 완료되면 [주소]컬럼의 오른쪽에 위 경도 컬럼이 생기게 된다. 만약 저 자리에 다른 컬럼이 있었다면, 그 항목들은 모두 오른쪽으로 두칸씩 밀어버리고 작업한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxgvm/btqD1pVYNHc/kJilIIzkroxn5AvRxKHnEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxgvm/btqD1pVYNHc/kJilIIzkroxn5AvRxKHnEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxgvm/btqD1pVYNHc/kJilIIzkroxn5AvRxKHnEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkxgvm%2FbtqD1pVYNHc%2FkJilIIzkroxn5AvRxKHnEK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구글지도에서 확인 결과 주소가 위경도로 &lt;span style=&quot;color: #333333;&quot;&gt;제대로&lt;/span&gt;&amp;nbsp;변환되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2EOv9/btqD1qUOA0X/UwAMnCH00dqFFpLBTS1Hw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2EOv9/btqD1qUOA0X/UwAMnCH00dqFFpLBTS1Hw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2EOv9/btqD1qUOA0X/UwAMnCH00dqFFpLBTS1Hw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2EOv9%2FbtqD1qUOA0X%2FUwAMnCH00dqFFpLBTS1Hw0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>그 외</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/338</guid>
      <comments>https://studioplug.tistory.com/338#entry338comment</comments>
      <pubDate>Sat, 9 May 2020 18:46:37 +0900</pubDate>
    </item>
    <item>
      <title>이시국보건증 페이지 간소화계획 및 기능별 API예제 링크 정리</title>
      <link>https://studioplug.tistory.com/337</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;&lt;b&gt;현재 서비스 운영중입니다!!!!!!!&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://leesiguk.wonj.in/&quot;&gt;https://leesiguk.wonj.in/&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;figure id=&quot;og_1593530367416&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://leesiguk.wonj.in/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;이시국 보건증&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;보건증 발급가능 기관을 찾아 비교해보세요&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;leesiguk.wonj.in&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #1a5490;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;&lt;b&gt;현재 서비스 운영중입니다!!!!!!!&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;페이지 간소화 계획&lt;/h2&gt;
&lt;p&gt;기존 : &lt;a href=&quot;https://studioplug.tistory.com/335&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 포스트&lt;/a&gt;참고, 시작&amp;rarr;지역선택&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&lt;/span&gt;용도선택&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&lt;/span&gt;확인&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&lt;/span&gt;의료기관 및 지도열람&lt;/p&gt;
&lt;p&gt;변경 : 시작(시연영상 겸 사용안내)&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;의료기관 및 지도열람, 지역선택은 '시군구'단위로 지도 상단에 표시하여 버튼클릭. 혹은 사용자가 알아서 찾도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MvkSC/btqD2wGybRk/s2Wpb3ci8aAvlPD5JL5OP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MvkSC/btqD2wGybRk/s2Wpb3ci8aAvlPD5JL5OP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MvkSC/btqD2wGybRk/s2Wpb3ci8aAvlPD5JL5OP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMvkSC%2FbtqD2wGybRk%2Fs2Wpb3ci8aAvlPD5JL5OP1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;데이터 제공 방법&lt;/p&gt;
&lt;p&gt;기존 두 개의 csv데이터(보건소 현황, 보건증발급 의료기관현황)&lt;/p&gt;
&lt;p&gt;를 js에서 불러와 각각 딕셔너리 배열로 저장&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;보건소 : hcc_data[인덱스][키]&lt;/p&gt;
&lt;p&gt;의료기관 : hospital_data[인덱스][키]&lt;/p&gt;
&lt;p&gt;각각의 key와 value는 &lt;a href=&quot;https://studioplug.tistory.com/336&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;에서 모두 정의하였음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이후 이를 외부 프로그램에서 딕셔너리의 배열로 변환한 뒤, js에서 사용하도록 할 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;기능별 마커 API예제 정리&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;초기 세팅 및 지도에 데이터 뿌리기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://geeps.krihs.re.kr/geocoding/service_page&quot;&gt;http://geeps.krihs.re.kr/geocoding/service_page&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://www.gisdeveloper.co.kr/?p=4784&quot;&gt;http://www.gisdeveloper.co.kr/?p=4784&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-3-geocoder-geocoding.example.html&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;주소를 위경도 좌표로 변환&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&amp;nbsp; &lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-1-marker-simple.example.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;마커표시&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; &lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-infowindow-options.example.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;마커에 병원명 표시(정보)&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; &lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-marker-viewport.example.html&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;보이는 영역의 마커만 표시&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사용자가 시군구 버튼을 눌렀다&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-4-control-custom-p1.example.html#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;버튼 표시(사용자정의컨트롤)&lt;/a&gt; &amp;rarr; &lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-5-map-moves.example.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지도 이동&lt;/a&gt; (아마 버튼은 지도에 안그리고, 따로 그릴 것 같다)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;사용자가 마커를 좌클릭했다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-infowindow-options.example.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;마커에 상세정보창 표시(병원명 표시는 가리기)&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사용자가 마커를 우클릭했다&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://navermaps.github.io/maps.js.ncp/docs/tutorial-7-panorama-aroundcontrol.example.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;인터랙션(거리뷰 표시하기)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/337</guid>
      <comments>https://studioplug.tistory.com/337#entry337comment</comments>
      <pubDate>Sat, 9 May 2020 01:36:15 +0900</pubDate>
    </item>
    <item>
      <title>이시국 보건증 데이터 수집 방법</title>
      <link>https://studioplug.tistory.com/336</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;&lt;b&gt;현재 서비스 운영중입니다!!!!!!!&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://leesiguk.wonj.in/&quot;&gt;https://leesiguk.wonj.in/&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;figure id=&quot;og_1593530354183&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a href=&quot;https://leesiguk.wonj.in/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;이시국 보건증&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;보건증 발급가능 기관을 찾아 비교해보세요&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;leesiguk.wonj.in&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #1a5490;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;&lt;b&gt;현재 서비스 운영중입니다!!!!!!!&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;현상황&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(보건복지부 상담내용) &lt;/span&gt;보건증은 본래 '보건소'에서만 발급받을 수 있다.&amp;nbsp; 다만 코로나사태로 인해 보건소의 보건증업무가 중단되면서 주변의 일부 병원에 보건증을 발급할 수 있는 권한을 주었다. 근데 이 병원들이 현재 보건증업무를 하는지, 가격은 얼마인지는 장담못한다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(국민신문고 민원상담 내용)&lt;/span&gt;보건증 발급가능한 기관데이터는 보건복지부에 없고, 정부에서도 각 관할기관에 문의해서 알려줘야 한다. 전체 데이터를 물어보면 줄 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;기초자료(보건소현황)&lt;/h2&gt;
&lt;p&gt;보건복지부에서 공개한 가장 최근의&lt;a href=&quot;http://www.mohw.go.kr/upload/viewer/skin/doc.html?fn=1578033660750_20200103154100.xlsx&amp;amp;rs=/upload/viewer/result/202005/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; 보건소현황(2019.06)&lt;/a&gt;을 받아, 우선 서비스대상지역인 서울만 추려냈다.&lt;br /&gt;이 중에서 원래 보건증업무를 하지 않았던 보건지소는 삭제하였고, 위도와 경도 데이터의 추가수집이 필요하다.&lt;/p&gt;
&lt;p&gt;보건소의 위치와 공개정보를 토대로 그 권역의 보건증발급가능 민간의료기관의 정보를 조사한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기초 자료(보건소 현황)을 변형 및 추가수집하여 최종적으로 확정한 컬럼은 다음과 같다.&lt;/p&gt;
&lt;p&gt;[ 시도(string), 시군구&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 읍면동명&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 대표전화번호&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 보건기관유형&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 보건기관명&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 주소&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 보건증업무여부&lt;span style=&quot;color: #333333;&quot;&gt;(string)&lt;/span&gt;, 경도&lt;span style=&quot;color: #333333;&quot;&gt;(float)&lt;/span&gt;, 위도&lt;span style=&quot;color: #333333;&quot;&gt;(float)&lt;/span&gt; ]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;새로 구축하는 자료(보건증 발급가능한 민간의료기관)&lt;/h2&gt;
&lt;p&gt;본래는 공지사항을 크롤링 내지는 파싱하여 서비스에 뿌려줄 생각이었다. 그런데 발급가능기관 안내가 없는 경우도 있고, 공지 양식이 제각각이다. (이미지로 팝업을 띄워놓는 곳이 상당히 많다)&lt;/p&gt;
&lt;p&gt;그래서 이 정보를 자동으로 수집하게 하려면 배보다 배꼽이 더 큰 격이 되어버려, 수작업으로 수집하기로 했다. 우선 서비스대상도 수도권에서 서울로 축소조정하였다.&lt;/p&gt;
&lt;p&gt;[ 시도(string), 시군구(string), 기관명(string), 대표전화번호(string), 주소(string), 일반용시행(bool), 일반용가격(Number), 유흥용시행(bool), 유흥용가격(number), 경도(float), 위도(float) ]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;건강보험심사평가원에서 전국 병원을 탈탈털어서 비급여항목을 모두 조사해놓았다. 그러나 보건증 항목은 없다. 홈페이지가 없는 종합병원도 많아서, 이거 진짜 전화해서 물어봐야 될 수도 있다.&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/336</guid>
      <comments>https://studioplug.tistory.com/336#entry336comment</comments>
      <pubDate>Sun, 3 May 2020 23:02:45 +0900</pubDate>
    </item>
    <item>
      <title>anaconda folium의 popup 한글 인코딩 문제 임시해결방편</title>
      <link>https://studioplug.tistory.com/334</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.anaconda.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;anaconda&lt;/a&gt;에서 &lt;a href=&quot;https://python-visualization.github.io/folium/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;folium&lt;/a&gt; 및&lt;a href=&quot;https://jupyter.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; jupyter notebook&lt;/a&gt;을 사용한다.&lt;/p&gt;
&lt;p&gt;folium을,&amp;nbsp; jupyter notebook에서 사용할 때, popup 텍스트가 깨지는 현상이 발생하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r8QMh/btqDMkg0zU5/HtdsLCQ10qOtsXdlC2N4S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r8QMh/btqDMkg0zU5/HtdsLCQ10qOtsXdlC2N4S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r8QMh/btqDMkg0zU5/HtdsLCQ10qOtsXdlC2N4S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr8QMh%2FbtqDMkg0zU5%2FHtdsLCQ10qOtsXdlC2N4S0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원인&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.google.com/search?sxsrf=ALeKk00fizZF-hCHoU-gRoKYA1BjjUr5Xg%3A1588162794874&amp;amp;ei=6nCpXrLvNNLm-AbK5rm4DA&amp;amp;q=iframe+%EA%B0%9C%EB%85%90&amp;amp;oq=iframe+%EA%B0%9C%EB%85%90&amp;amp;gs_lcp=CgZwc3ktYWIQAzICCAAyAggAMgIIADICCAAyAggAMgIIADICCAAyAggAMgYIABAIEB4yBggAEAgQHjoECCMQJzoECAAQHlCrM1jKQWCrQmgGcAB4AYABfogBugqSAQQxLjExmAEAoAEBqgEHZ3dzLXdpeg&amp;amp;sclient=psy-ab&amp;amp;ved=0ahUKEwiyjO-5z43pAhVSM94KHUpzDscQ4dUDCAw&amp;amp;uact=5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;iframe&lt;/a&gt;으로 folium지도를 렌더링하게 되는데, UTF-8 인코딩을 못하고 있는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcuJHG/btqDOHoRKcY/fES6EQ8G8TMyNG4eGf58Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcuJHG/btqDOHoRKcY/fES6EQ8G8TMyNG4eGf58Kk/img.png&quot; data-alt=&quot;한글을 좀 더 사랑해주세요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcuJHG/btqDOHoRKcY/fES6EQ8G8TMyNG4eGf58Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcuJHG%2FbtqDOHoRKcY%2FfES6EQ8G8TMyNG4eGf58Kk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;한글을 좀 더 사랑해주세요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;미적지근한 해결&lt;/h2&gt;
&lt;p&gt;주피터 노트북 안에서 취할 수 있는 마땅한 해결방안은 없다.&lt;/p&gt;
&lt;p&gt;지난달 까지만 하더라도 특정 .py파일에 문자셋을 지정해주는 방법이 가능하였으나 현재는 html로 folium지도를 추출해서 보는 수밖에 없다.&lt;/p&gt;
&lt;p&gt;다음과 같은 구문으로 html로 지도를 저장할 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;map.save('index.html')&lt;br /&gt;# map은 folium.Map변수의 이름&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주피터 노트북과 같은 경로에 저장되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SjeKg/btqDOJfQRp0/pCVQZpbBhFZWUnKtP8OWkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SjeKg/btqDOJfQRp0/pCVQZpbBhFZWUnKtP8OWkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SjeKg/btqDOJfQRp0/pCVQZpbBhFZWUnKtP8OWkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSjeKg%2FbtqDOJfQRp0%2FpCVQZpbBhFZWUnKtP8OWkK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;index.html파일을 열어보면 당연하게도 제대로 출력되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FXpng/btqDNoiXIuH/CcknvK6fpnipFhsgorUtC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FXpng/btqDNoiXIuH/CcknvK6fpnipFhsgorUtC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FXpng/btqDNoiXIuH/CcknvK6fpnipFhsgorUtC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFXpng%2FbtqDNoiXIuH%2FCcknvK6fpnipFhsgorUtC1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python/통계 및 데이터관련</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/334</guid>
      <comments>https://studioplug.tistory.com/334#entry334comment</comments>
      <pubDate>Wed, 29 Apr 2020 21:36:11 +0900</pubDate>
    </item>
    <item>
      <title>pandas, matplotlib에서 글꼴을 불러오지 못할 때</title>
      <link>https://studioplug.tistory.com/333</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;p&gt;matplotlib의 폰트캐시가 새로 설치된 폰트를 못불러오고 있는 것이다.&lt;/p&gt;
&lt;p&gt;아래 코드로 업데이트 해주면 된다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;import&lt;/b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;matplotlib&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;matplotlib.font_manager._rebuild()&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p&gt;쥬피터에서, pandas의 dataframe을 plot()으로 시각화 하려했으나, 다음의 두가지 warning을 표시하며 한글이 깨져나온다.&lt;/p&gt;
&lt;p&gt;사용하려는 폰트는 &lt;b&gt;&lt;a href=&quot;https://github.com/naver/nanumfont&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;나눔고딕코딩&lt;/a&gt;&lt;/b&gt;이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;findfont: Font family ['NanumGothicCoding'] not found. Falling back to DejaVu Sans. /home/wonjinyi/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 49345 missing from current font. font.set_text(s, 0.0, flags=flags)&lt;br /&gt;&lt;br /&gt;거 NanumGothicCoding폰트가 없어서 적당한 기본폰트같은거 가져왔습니다.&lt;br /&gt;근데 이거 한글 글리프가 없어서 깨져보일텐데 뭐 알아서 하십시오. 1 경고 드립니다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kY5M0/btqDJfGrJN6/Qbrae7xObKujf1MJ0W2g4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kY5M0/btqDJfGrJN6/Qbrae7xObKujf1MJ0W2g4K/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 64.2626%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kY5M0/btqDJfGrJN6/Qbrae7xObKujf1MJ0W2g4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkY5M0%2FbtqDJfGrJN6%2FQbrae7xObKujf1MJ0W2g4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eBRbe0/btqDKTJlEaS/HNVzxDPbEdrRkZ02DctAR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eBRbe0/btqDKTJlEaS/HNVzxDPbEdrRkZ02DctAR0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 34.5746%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eBRbe0/btqDKTJlEaS/HNVzxDPbEdrRkZ02DctAR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeBRbe0%2FbtqDKTJlEaS%2FHNVzxDPbEdrRkZ02DctAR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;(좌)입력한 코드와 표시되는 warning 2가지, (우)한글이 꺠져나오는 그래프&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;[datafram].plot() 메소드는 pandas에서 제공하지만, 내부적으로는 matplotlib를 로드하여 plot을 호출하게 된다.&lt;/p&gt;
&lt;p&gt;따라서 관련 오류가 발생하는 경우, pandas자체보다는 matplotlib에 대하여 자세히 살펴볼 필요가 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원인&lt;/h2&gt;
&lt;p&gt;OS자체 글꼴관리 도구로 보면 분명 설치되어 있는것으로 나온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TjsDw/btqDL4KpUUi/m9pamBbXFykQonRM8rhTUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TjsDw/btqDL4KpUUi/m9pamBbXFykQonRM8rhTUk/img.png&quot; data-alt=&quot;하모니카OS의 &amp;amp;#39;글꼴&amp;amp;#39; 프로그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TjsDw/btqDL4KpUUi/m9pamBbXFykQonRM8rhTUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTjsDw%2FbtqDL4KpUUi%2Fm9pamBbXFykQonRM8rhTUk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;하모니카OS의 '글꼴' 프로그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;실제로 폰트를 불러오는 개발환경 쪽에서는 어떤지 살펴보아야 한다. matplotlib에서는 font_manager라는 것을 제공하는데, 이를 이용하여 폰트가 실제로 설치되었다고 인식하는지 출력하여볼 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;from &lt;b&gt;matplotlib&lt;/b&gt; import font_manager &lt;br /&gt;&lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; font_manager.fontManager.ttflist: &lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;if&lt;/b&gt; 'Nanum' in i.name: &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;print(&lt;/b&gt;i.name, i.fname&lt;b&gt;)&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;살펴보니 목록에 나오지도 않는 것을 볼 수 있다. 주피터를 죽였다 다시 살려보고, 아나콘다를 재실행해도 마찬가지였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GFjWo/btqDMkTMHx1/aH38ksF8MricuC0X44oDGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GFjWo/btqDMkTMHx1/aH38ksF8MricuC0X44oDGK/img.png&quot; data-alt=&quot;폰트를 가져왔는데, 왜 먹지를 못하니&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GFjWo/btqDMkTMHx1/aH38ksF8MricuC0X44oDGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGFjWo%2FbtqDMkTMHx1%2FaH38ksF8MricuC0X44oDGK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;폰트를 가져왔는데, 왜 먹지를 못하니&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그렇다면 여기서, 주피터 내지는 matplotlib에서 폰트 목록을 제대로 못 받아온다는 것을 원인으로 생각할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;p&gt;이 &lt;a href=&quot;https://github.com/matplotlib/matplotlib/issues/10201/#issuecomment-356303473&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;를 보면 같은 상황에 대하여 문답이 있다.&lt;/p&gt;
&lt;p&gt;요약하자면, matplotlib는 아래와 같은 경로의 json파일을 통해서 글꼴목록을 관리한다. 그런데 이 json파일의 업데이트가 제대로 안 된 모양이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mugOq/btqDJgFg1UQ/PXKJrkHVrxP0GwNUu8KWwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mugOq/btqDJgFg1UQ/PXKJrkHVrxP0GwNUu8KWwK/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 66.1428%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mugOq/btqDJgFg1UQ/PXKJrkHVrxP0GwNUu8KWwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmugOq%2FbtqDJgFg1UQ%2FPXKJrkHVrxP0GwNUu8KWwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vEaKz/btqDIm64uRl/HVKRvOiQhrTcVEPmhbFQn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vEaKz/btqDIm64uRl/HVKRvOiQhrTcVEPmhbFQn0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; style=&quot;width: 32.6944%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vEaKz/btqDIm64uRl/HVKRvOiQhrTcVEPmhbFQn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvEaKz%2FbtqDIm64uRl%2FHVKRvOiQhrTcVEPmhbFQn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;0&quot; height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;대체 왜이걸 여기다 박아놓은거야&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bastibe.de/2016-05-30-matplotlib-font-cache.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;에 따르면, fontlist ~~ .json파일을 업데이트 해주기 위해서는 다음과 같이 할 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;import&lt;/b&gt; matplotlib &lt;br /&gt;matplotlib.font_manager._rebuild()&lt;/blockquote&gt;
&lt;p&gt;그러고 나면 제대로 폰트를 불러올 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm7sim/btqDJLZmMNW/2RcKNoHewfUkX62ZfiQsVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm7sim/btqDJLZmMNW/2RcKNoHewfUkX62ZfiQsVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm7sim/btqDJLZmMNW/2RcKNoHewfUkX62ZfiQsVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm7sim%2FbtqDJLZmMNW%2F2RcKNoHewfUkX62ZfiQsVk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;글씨가 깨져나오던 그래프도, 정상적으로 한글이 나오는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nuAXZ/btqDInkC8AY/qd6cEvS8fhvkA5HUHeJYk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nuAXZ/btqDInkC8AY/qd6cEvS8fhvkA5HUHeJYk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nuAXZ/btqDInkC8AY/qd6cEvS8fhvkA5HUHeJYk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnuAXZ%2FbtqDInkC8AY%2Fqd6cEvS8fhvkA5HUHeJYk0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python/통계 및 데이터관련</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/333</guid>
      <comments>https://studioplug.tistory.com/333#entry333comment</comments>
      <pubDate>Tue, 28 Apr 2020 01:40:19 +0900</pubDate>
    </item>
    <item>
      <title>하모니카(우분투) anaconda 설치 + navigator 1.9.12 실행안되는 현상 해결</title>
      <link>https://studioplug.tistory.com/332</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;#1&quot;&gt; anaconda-navigator 1.9.12가 실행안되는 현상 해결하기 &lt;/a&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다운받은 sh파일을 탐색기에서 직접 실행했는데, 이상한것만 나오고 설치는 안된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRzhWp/btqDGgkA2zV/gqkjd0823srNgrSNgziuWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRzhWp/btqDGgkA2zV/gqkjd0823srNgrSNgziuWk/img.png&quot; data-alt=&quot;이게뭐지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRzhWp/btqDGgkA2zV/gqkjd0823srNgrSNgziuWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRzhWp%2FbtqDGgkA2zV%2Fgqkjd0823srNgrSNgziuWk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이게뭐지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;터미널에서 bash로 실행해주지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. &lt;b&gt;&lt;a href=&quot;https://www.anaconda.com/distribution/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;&lt;/b&gt;로 들어가서, 본인의 OS와 하드웨어에 맞는 파일을 다운로드받는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwf5o7/btqDGg55F6t/h0cr5ff1hTI87lEGd9djKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwf5o7/btqDGg55F6t/h0cr5ff1hTI87lEGd9djKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwf5o7/btqDGg55F6t/h0cr5ff1hTI87lEGd9djKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcwf5o7%2FbtqDGg55F6t%2Fh0cr5ff1hTI87lEGd9djKk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 다운로드 된 경로를 확인한다 (/다운로드/파일명.sh)&amp;nbsp; **Download폴더가 아니다!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1Ov6k/btqDHrTxLIF/MVnIKJuqF8GaHCQ68ioUp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1Ov6k/btqDHrTxLIF/MVnIKJuqF8GaHCQ68ioUp1/img.png&quot; data-alt=&quot;Download가 아니다!! &amp;amp;quot;다운로드&amp;amp;quot;다!!!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1Ov6k/btqDHrTxLIF/MVnIKJuqF8GaHCQ68ioUp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1Ov6k%2FbtqDHrTxLIF%2FMVnIKJuqF8GaHCQ68ioUp1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Download가 아니다!! &quot;다운로드&quot;다!!!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;3. 터미널에서 bash로 다운로드 받은 파일을 실행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tkA5x/btqDHr0mlam/JlG35dcU8YiTAEGYd0IPrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tkA5x/btqDHr0mlam/JlG35dcU8YiTAEGYd0IPrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tkA5x/btqDHr0mlam/JlG35dcU8YiTAEGYd0IPrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtkA5x%2FbtqDHr0mlam%2FJlG35dcU8YiTAEGYd0IPrK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;4. 약관이 나오게 되는데, 엔터를 쭉- 누르면 [yes/no]를 선택하는 부분이 나온다. yes로 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;경로를 선택하는 부분이 있다. 기본 경로는 아래와 같다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dr92Sg/btqDH1mPcGs/SaXs4LI7lyq7HNsdOYytc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dr92Sg/btqDH1mPcGs/SaXs4LI7lyq7HNsdOYytc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dr92Sg/btqDH1mPcGs/SaXs4LI7lyq7HNsdOYytc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdr92Sg%2FbtqDH1mPcGs%2FSaXs4LI7lyq7HNsdOYytc1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;5. 과정을 거쳐, 정상적으로 설치 완료&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;발생 할 수 있는 문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 명령어를 찾을 수 없다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;PATH추가를 안한 경우이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blsXek/btqDIn4divh/l9CCCN3kwYfPG9j4ueCgwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blsXek/btqDIn4divh/l9CCCN3kwYfPG9j4ueCgwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blsXek/btqDIn4divh/l9CCCN3kwYfPG9j4ueCgwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblsXek%2FbtqDIn4divh%2Fl9CCCN3kwYfPG9j4ueCgwK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. GUI환경을 쓰고싶다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bADERV/btqDH1AovoT/CgwkgnlZOXOBmcvXnuJk61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bADERV/btqDH1AovoT/CgwkgnlZOXOBmcvXnuJk61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bADERV/btqDH1AovoT/CgwkgnlZOXOBmcvXnuJk61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbADERV%2FbtqDH1AovoT%2FCgwkgnlZOXOBmcvXnuJk61%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;1&quot; data-ke-size=&quot;size26&quot;&gt;Anaconda-navigator 1.9.12가 실행이 안되는 문제&lt;/h2&gt;
&lt;p&gt;다음과 같은 오류내용이 맨 뒤에 붙으면서, 네비게이터가 실행이 안되는 현상을 겪었다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/wonjinyi/anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/external_apps/vscode.py&quot;,&amp;nbsp;line&amp;nbsp;168,&amp;nbsp;in&amp;nbsp;_find_linux_install_dir&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;DISTRO_NAME&amp;nbsp;in&amp;nbsp;['ubuntu',&amp;nbsp;'debian']:&lt;br /&gt;UnboundLocalError:&amp;nbsp;local&amp;nbsp;variable&amp;nbsp;'DISTRO_NAME'&amp;nbsp;referenced&amp;nbsp;before&amp;nbsp;assignment&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ContinuumIO/anaconda-issues/issues/11635&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;깃허브 이슈&lt;/b&gt;&lt;/a&gt;에서 같은 내용을 최근에 다뤘다.&lt;/p&gt;
&lt;p&gt;많은 내용중, 본인은 anaconda-navigator 업데이트를 통하여 문제를 해결했다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;conda update anaconda-navigator&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eKDbZG/btqDIRcVjbt/lrLfULQzcqfk3E3obAHwI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eKDbZG/btqDIRcVjbt/lrLfULQzcqfk3E3obAHwI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eKDbZG/btqDIRcVjbt/lrLfULQzcqfk3E3obAHwI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeKDbZG%2FbtqDIRcVjbt%2FlrLfULQzcqfk3E3obAHwI1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설치가 완료된 후, 네비게이터를 실행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JzZAr/btqDH1f3KmG/t7XPPWftPuUugXWzOPpPYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JzZAr/btqDH1f3KmG/t7XPPWftPuUugXWzOPpPYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JzZAr/btqDH1f3KmG/t7XPPWftPuUugXWzOPpPYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJzZAr%2FbtqDH1f3KmG%2Ft7XPPWftPuUugXWzOPpPYk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;아래와 같이 정상적으로 실행된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nsYUc/btqDImEfwUG/wvEokZgH1p7AmIkLLAkAGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nsYUc/btqDImEfwUG/wvEokZgH1p7AmIkLLAkAGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nsYUc/btqDImEfwUG/wvEokZgH1p7AmIkLLAkAGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnsYUc%2FbtqDImEfwUG%2FwvEokZgH1p7AmIkLLAkAGk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Linux</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/332</guid>
      <comments>https://studioplug.tistory.com/332#entry332comment</comments>
      <pubDate>Fri, 24 Apr 2020 21:16:37 +0900</pubDate>
    </item>
    <item>
      <title>하모니카(우분투) source.list의 repository주소에 의한 의존성오류 해결 사례</title>
      <link>https://studioplug.tistory.com/331</link>
      <description>&lt;h1&gt;도움주신 분&lt;/h1&gt;
&lt;p&gt;해티, rani, 김선호&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;배경&lt;/h1&gt;
&lt;p&gt;R 3.6을 깔기 위해 노력노력을 하던 중, 다음과 같은 의존성 문제를 마주했다.&lt;/p&gt;
&lt;p&gt;실제로 의존성 문제라기보다는, repo주소가 잘못 작성된 것이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;br /&gt;다음 패키지의 의존성이 맞지 않습니다:&lt;br /&gt;r-base : 의존: r-base-core (&amp;gt;= 3.6.3-1xenial) 하지만 %s 패키지를 설치하지 않을 것입니다&lt;br /&gt;의존: r-recommended (= 3.6.3-1xenial) 하지만 %s 패키지를 설치하지 않을 것입니다&lt;br /&gt;E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p&gt;사용하고 있는 OS는 다음과 같다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;2019.11.18&lt;br /&gt;HamoniKR-3.0&lt;br /&gt;File&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;hamonikr-sun-3.0-amd64-20200423.iso&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hamonikr-sun-3.0-amd64-20200423.iso&lt;/a&gt;&lt;br /&gt;Size&amp;nbsp;:&amp;nbsp;3.1G&lt;br /&gt;SHA256&amp;nbsp;:&amp;nbsp;660754a278523e7e139251898ed596bd8e68221bb639ab5e8967864a3d8b9f4b&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;원인&lt;/h1&gt;
&lt;p&gt;apt repository를 source.list에 무언가 잘못 추가했었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;해결방법&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;문제가 되는 Repo가 무엇인지 알아낸 뒤, 그 항목을 삭제해주면 해결될 수 있다. 대체로 [시도2]로 해결 될 수 있을 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;문제가 되는 repo알아내기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;sudo apt-get update를 했을 때, 많은 &quot;무시, 받기, 기존&quot;들 속에서 &quot;오류&quot;라고 표시되는 항목을 잡아낸다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;예시) &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;오류:11 &lt;/span&gt;&lt;a href=&quot;http://cran.rstudio.com/bin/linux/ubuntu&quot;&gt;http://cran.rstudio.com/bin/linux/ubuntu&lt;/a&gt;&lt;span&gt; tina/ Release&lt;/span&gt;&lt;br /&gt;&lt;span&gt; 404 Not Found [IP: 52.85.193.148 80]&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;시도 1 : 파일시스템 - etc - apt 안의 source.list파일을 확인하여, 잘못된 주소 제거&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;어디있는지 파악한다. source.list는 etc/apt에 있다. 어차피 저건 읽기전용이라 여기서 못바꾼다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EYIqP/btqDFqOU6dG/ggmkCPfVD7EnOUsrZDL9FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EYIqP/btqDFqOU6dG/ggmkCPfVD7EnOUsrZDL9FK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EYIqP/btqDFqOU6dG/ggmkCPfVD7EnOUsrZDL9FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEYIqP%2FbtqDFqOU6dG%2FggmkCPfVD7EnOUsrZDL9FK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;터미널에서 슈퍼유저 권한으로 내용을 편집하도록 하자. 경로로 들어가서 sudo권한으로 vi를 실행한다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8Lh4b/btqDGHPP1pR/WALurtEsSTzBQ1CPKAFKo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8Lh4b/btqDGHPP1pR/WALurtEsSTzBQ1CPKAFKo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8Lh4b/btqDGHPP1pR/WALurtEsSTzBQ1CPKAFKo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8Lh4b%2FbtqDGHPP1pR%2FWALurtEsSTzBQ1CPKAFKo0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나오는 내용에서 오류가 있었던 저장소 내용을 삭제해준다.&lt;/li&gt;
&lt;li&gt;삭제한 다음에는 [Ctrl+C] - [:wq! 입력] - [ENTER]로 저장하고 터미널로 복귀한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvi1aX/btqDHr63bBt/G59LdEBugU0knPGwn2bGVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvi1aX/btqDHr63bBt/G59LdEBugU0knPGwn2bGVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvi1aX/btqDHr63bBt/G59LdEBugU0knPGwn2bGVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvi1aX%2FbtqDHr63bBt%2FG59LdEBugU0knPGwn2bGVk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;sudo apt-get update로 &quot;오류&quot;항목이 없이 잘 나오는지 확인한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvLlG8/btqDF0PXGic/tvULopZPw7VF87XiaoFBt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvLlG8/btqDF0PXGic/tvULopZPw7VF87XiaoFBt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvLlG8/btqDF0PXGic/tvULopZPw7VF87XiaoFBt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvLlG8%2FbtqDF0PXGic%2FtvULopZPw7VF87XiaoFBt1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;시도 2 : 파일시스템 - etc - apt - sources.list.d 폴더 안의 어느 무언가 제거&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;시도1과 마찬가지로 어디있는지 확인한다. 본인의 경우 [additional-repositories.list]가 문제였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nNLdg/btqDF1nJg1Q/Dewuhf972Aook2kI3m2kTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nNLdg/btqDF1nJg1Q/Dewuhf972Aook2kI3m2kTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nNLdg/btqDF1nJg1Q/Dewuhf972Aook2kI3m2kTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnNLdg%2FbtqDF1nJg1Q%2FDewuhf972Aook2kI3m2kTk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;터미널에서 해당 경로로 이동하여 슈퍼유저 권한으로 문제가 있는 파일을 연다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CRGbd/btqDFqut92W/zSaKQsvMPkmaLdR9EkKO90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CRGbd/btqDFqut92W/zSaKQsvMPkmaLdR9EkKO90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CRGbd/btqDFqut92W/zSaKQsvMPkmaLdR9EkKO90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCRGbd%2FbtqDFqut92W%2FzSaKQsvMPkmaLdR9EkKO90%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;&quot;오류&quot;로 표시됐던 항목을 지워버린다. 그 후, [Ctrl+C] - [:qw! 입력] - [ENTER]로 저장하고 터미널로 복귀한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sQ8nE/btqDIQSzGzi/Lw7pOToFe5abm3HLMNEDlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sQ8nE/btqDIQSzGzi/Lw7pOToFe5abm3HLMNEDlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sQ8nE/btqDIQSzGzi/Lw7pOToFe5abm3HLMNEDlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsQ8nE%2FbtqDIQSzGzi%2FLw7pOToFe5abm3HLMNEDlk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;sudo apt-get update에서 &quot;오류&quot;항목이 더이상 표시되지 않는 것을 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvLlG8/btqDF0PXGic/tvULopZPw7VF87XiaoFBt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvLlG8/btqDF0PXGic/tvULopZPw7VF87XiaoFBt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvLlG8/btqDF0PXGic/tvULopZPw7VF87XiaoFBt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvLlG8%2FbtqDF0PXGic%2FtvULopZPw7VF87XiaoFBt1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Linux</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/331</guid>
      <comments>https://studioplug.tistory.com/331#entry331comment</comments>
      <pubDate>Fri, 24 Apr 2020 20:28:39 +0900</pubDate>
    </item>
    <item>
      <title>정보기기운용기능사 실기 후기</title>
      <link>https://studioplug.tistory.com/329</link>
      <description>&lt;p&gt;&lt;b&gt;실기 공부할 때 정리한 내용은 &lt;a href=&quot;https://studioplug.tistory.com/325?category=854788&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를 참고&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2ygOG/btqDNmSdpbf/7zMfhGoDOrQzlSj5W08WN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2ygOG/btqDNmSdpbf/7zMfhGoDOrQzlSj5W08WN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2ygOG/btqDNmSdpbf/7zMfhGoDOrQzlSj5W08WN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ygOG%2FbtqDNmSdpbf%2F7zMfhGoDOrQzlSj5W08WN0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;언제 봤는가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;2020년 4월 19일 서울 남부지사 12시30분 시험&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;난이도가 어려웠는가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;쉬웠다. 10분만에 풀고 10분 때우다 나왔다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;어떤 내용이 나왔는가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;토폴로지는 (pc 2대)-(라우터)-(라우터)-(서버 1대)로 연결된 아주 전형적인 모양이었다.&lt;/p&gt;
&lt;p&gt;기본적인 내용 : 비밀번호, 콘솔/텔넷설정, 배너 메세지&lt;/p&gt;
&lt;p&gt;인터페이스 설정 : ip할당, vlan, inter-vlan&lt;/p&gt;
&lt;p&gt;라우팅 : RIP v2라우팅 외 기타 설정(no auto-summary, passive-interface)&lt;/p&gt;
&lt;p&gt;테스트 : 각 pc에서 server에 설정된 웹서비스에 접속할 수 있는가?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;어떤 내용을 틀린 것 같은가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;passive-interface로 써야하는 것을, no passive-interface로 반대로 설정했다.&lt;/p&gt;
&lt;p&gt;네트워크가 굴러가는데는 이상이 없어서 별 문제 없을 것으로 판단한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;실습환경과 시험환경의 차이점이 있는가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. CLI작업시 커서가 안보인다. 입력은 잘 된다.&lt;/p&gt;
&lt;p&gt;2. Simple PDU를 사용할 수 없다. 알아서 ping으로 하든 뭘로하든 대체하면 된다. 좀 당황스러웠다.&lt;/p&gt;
&lt;p&gt;3. CLI 말고는 탭이 아예 잠겨있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;시험장에서 시작 및 제출방법이 어려운가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;감독관과 진행위원이 아주 느리고 친절하게 알려준다. 그래도 안되면 1:1로 붙어서 알려준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;시험보는 곳은 남부지사 건물에서 어디인가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;지하1층으로 내려가서 가만히 있으면, 누군가 와서 시험장으로 데려간다.&lt;/p&gt;
&lt;p&gt;입구 안내요원이 지정한 곳으로 가서 가만히 있으면 되는데, 보통 지하1층이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;대중교통으로 남부지사 가는 가장 적당한 길?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;5호선 영등포시장역에서 내려서 걸어간다. 버스타고 뭘 해도 어차피 걸리는 시간은 거기서 거기다.&lt;/p&gt;
&lt;p&gt;(갈때는 영등포시장역-&amp;gt;버스-&amp;gt;남부지사, 올때는 남부지사-&amp;gt;영등포시작역. 둘 다 해봤는데 걸리는시간 똑같다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;주변에 밥먹을 곳?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;없다&lt;/p&gt;</description>
      <category>취미</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/329</guid>
      <comments>https://studioplug.tistory.com/329#entry329comment</comments>
      <pubDate>Fri, 24 Apr 2020 01:01:40 +0900</pubDate>
    </item>
    <item>
      <title>[Edwith]데이터 과학 산책</title>
      <link>https://studioplug.tistory.com/328</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dp5RPt/btqDCY59vfx/FoxCpwxWSHQXiYWmC7QCR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dp5RPt/btqDCY59vfx/FoxCpwxWSHQXiYWmC7QCR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dp5RPt/btqDCY59vfx/FoxCpwxWSHQXiYWmC7QCR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdp5RPt%2FbtqDCY59vfx%2FFoxCpwxWSHQXiYWmC7QCR0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;강의소개 페이지는 &lt;a href=&quot;https://www.edwith.org/walkingds19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;로 들어가면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;데이터과학과 R, 통계학에 대한 아무런 지식없이 듣기 좋은 수업이었다.&lt;/p&gt;
&lt;p&gt;가끔 막히는 부분은 감사하게도 주변 사람에게 물어 해결할 수 있었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실질적으로 깊은 내용을 가르쳐주지는 않지만, 대충 어떻게 일이 돌아가는지 알게 된 좋은 기회였다.&lt;/p&gt;</description>
      <category>취미</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/328</guid>
      <comments>https://studioplug.tistory.com/328#entry328comment</comments>
      <pubDate>Fri, 24 Apr 2020 00:57:24 +0900</pubDate>
    </item>
    <item>
      <title>정보기기운용기능사 실기</title>
      <link>https://studioplug.tistory.com/325</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:ERS-8600.JPG#/media/파일:ERS-8600.JPG&quot;&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/b/b0/ERS-8600.JPG&quot; alt=&quot;ERS-8600.JPG&quot; /&gt;&lt;/a&gt;&lt;br /&gt;By &lt;a class=&quot;extiw&quot; title=&quot;en:User:PassportDude&quot; href=&quot;https://en.wikipedia.org/wiki/User:PassportDude&quot;&gt;PassportDude&lt;/a&gt; at the &lt;a class=&quot;extiw&quot; title=&quot;en:&quot; href=&quot;https://en.wikipedia.org/wiki/&quot;&gt;English Wikipedia&lt;/a&gt;, &lt;a title=&quot;Creative Commons Attribution-Share Alike 3.0&quot; href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot;&gt;CC BY-SA 3.0&lt;/a&gt;, &lt;a href=&quot;https://commons.wikimedia.org/w/index.php?curid=11812244&quot;&gt;링크&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성시작일 &lt;span&gt;2020. 3. 31. 00:05&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;시험공부 요약내용 모두 업데이트 완료&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험 후기 및 결과는 &lt;a href=&quot;https://studioplug.tistory.com/329&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;99&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#00&quot;&gt;00 왜하는가&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#01&quot;&gt;01 작업 전 필요한 것&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;02. 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#02-1&quot;&gt;02-01 라우터/스위치 공통 명령&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#02-2&quot;&gt;02-02 라우터 명령&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#02-3&quot;&gt;02-03 스위치 명령&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#03&quot;&gt;03 기타 트릭/팁/정형화된 작업&lt;/a&gt;&lt;/p&gt;
&lt;hr id=&quot;00&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;00 왜하는가&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각없이 4월19일 실기 신청했다. 돈아까워서 시험보러 가야된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr id=&quot;01&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;01 작업 전 필요한 것&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;b&gt;시험에서 사용하는 프로그램&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.google.com/search?q=%ED%8C%A8%ED%82%B7%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%84%9C+5.3.3&amp;amp;oq=%ED%8C%A8%ED%82%B7%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%84%9C+5.3.3&amp;amp;aqs=chrome..69i57j0l3.4325j0j4&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;시스코 패킷트레이서 5.3.3&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; 유용한 명령/설정&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;[Option]-[Preferences]에서 Show Link Light, Show Device Labels, Always Show Port Labels 체크&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl+Shift+6 : 뭔가 잘못해서 터미널이 먹통됐을 때 탈출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;exit, Ctrl+Z(C) : 뒤로가기인데 둘이 다름. 알아서 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스위치/라우터 초기화 : erase startup-config &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; &lt;/span&gt;엔터 &amp;rarr; reload &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&lt;/span&gt;엔터 하면 라우터가 초기화된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(대충 뭔가 설정되어있는데, 다시 뭘 하기로 했다 ) 라고 설명에 나와있으면, 초기화하고 시작하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr id=&quot;02-1&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;02 - 1 시험에서 사용하는 명령어 *라우터 및 스위치*&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#99&quot;&gt;목차 보기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;프리빌리지 모드 진입&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router &amp;gt; enable&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router #&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; &lt;b&gt;전역 환경설정 모드 진입&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Router# configure terminal&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Router(config)#&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; 콘솔설정 진입&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Router(config)#line console 0&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Router(config-line)#&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** &lt;a href=&quot;https://vitalholic.tistory.com/274&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;line의 0번포트에 들어간다&lt;/a&gt;는 뜻&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;호스트 이름 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router(config)# hostname 이름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름(config)#&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; 접속메시지 설정&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Router(config)# banner motd #&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;메시지#&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Router(config)#&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;** 이 상태에서 끝까지 exit후 터미널을 재시작하면 설정한 메시지가 출력됨&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;** 주의사항 : 접속메시지중에 #가 있다면, 구분자를 #로 설정하면 안된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt; 명령어 히스토리 사이즈 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;Router(config-line)# history size 사이즈&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;Router(config-line)#&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;** 화살표로 불러올 수 있는 명령어 수가 설정되었음&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; DNS설정&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router(config)# ip host [도메인] [ip주소]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 해당 ip주소를 도메인을 사용하여 접근가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; DNS질의 안하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Router(config)# no ip domain-lookup&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;** Translating &quot;dd&quot;...domain server (255.255.255.255) 이런거 안나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;그냥 비밀번호 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Router(config)# enable password 사용할비번&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;* enable에 대하여 평문 비밀번호를 설정한다. 별말없으면 이걸 쓴다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;MD5해시로 비밀번호설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Router(config)# enable secret 사용할비번&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;** enable에 대하여 MD5(128bit암호화 해시)로 비밀번호를 설정한다. 이상한 말붙여서 암호설정하라 하면 이걸 쓴다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;모든 비밀번호에 대하여 암호화하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#&lt;span&gt; service password-encryption&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;** 입력 될 모든 비밀번호에 대하여 암호화적용한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;콘솔 비밀번호 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-line)# password 암호&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router(config-line)# login&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** &lt;a href=&quot;https://vitalholic.tistory.com/274&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt; password는 비밀번호를 정하는 명령. login이 콘솔 비밀번호 기능을 활성화하는 명령.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cli껐다가 켜보면 비밀번호 치라고 함. 그게 이 비밀번호임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** &lt;a href=&quot;http://www.terms.co.kr/console.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;콘솔&lt;/a&gt;은 어떤 장치에 붙여놓고 사용하는 장치. 패킷트레이서에서는 cli로 표현되어있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;텔넷&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;접속 &amp;amp; 비밀번호 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#&lt;span&gt; username 아이디 password 비밀번호&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router(config)# line con 0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-line)#&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; line vty 0 15&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-line)#&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; login local&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;* 전체적인 내용은 &lt;a href=&quot;https://jeongzzang.com/25&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를 참고하자&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;* 사용자 계정, 권한에 대해 &lt;a href=&quot;https://m.blog.naver.com/PostView.nhn?blogId=novajini&amp;amp;logNo=220189621007&amp;amp;proxyReferer=https%3A%2F%2Fwww.google.com%2F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;궁금&lt;/a&gt;하면 여기를 참고하자&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;* 사용자 계정, 로그인에 대해 궁금하면 &lt;a href=&quot;https://m.blog.naver.com/PostView.nhn?blogId=kcmsj&amp;amp;logNo=10043447553&amp;amp;proxyReferer=https%3A%2F%2Fwww.google.com%2F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를 참고하자&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;rarr; username [아이디] &lt;b&gt;privilege 15&lt;/b&gt; password [비밀번호] 와 같이 로그인할 때부터 권한을 부여해줄 수 있다. (해당 명령은 로그인후 관리자모드로 바로 접속함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&amp;rarr;&lt;span&gt; login은 비밀번호, login local은 아이디+비밀번호 두 가지를 같이 검증한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;SSH접속설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# username [아이디] password [비번]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ip domain-name [ssh도메인]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# crypto key generate rsa&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;line vty 0 4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-line)# login local&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config&lt;span style=&quot;color: #333333;&quot;&gt;-line&lt;/span&gt;)#&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;transport input ssh&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; TFTP 백업&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#copy [파일명] tftp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- (대충 파일 보낼 ip쓰라는 내용) - [ip주소]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- (대충 보낼파일 이름 정하라는 내용) - [이름]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;** 파일 목록을 확인하려면 dir, show flash 등을 사용&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;** startup-config가 invalid이면 write명령으로 생성가능&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;클럭펄스 값 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# int s0/0/0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#&lt;span&gt; clock rate 64000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#&lt;span&gt; no shut&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;enable진입시 (대충 15레벨 얻었다는 말) 나오게하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# logging userinfo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr id=&quot;02-2&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;02 - 2 시험에서 사용하는 명령어 *라우터*&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#99&quot;&gt;목차 보기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;PPP PAP프로토콜&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#username [상대id] password [비번]&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int s0/0/0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#no shut&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#en ppp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ppp auth pap&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ppp pap sent-username [이 기기 id] password [비번]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;PPP CHAP프로토콜&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#username [상대id] password [비번]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int s0/0/0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#no shut&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#en ppp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ppp auth chap&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;DHCP서비스 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#ip dhcp pool [DCHP영역명]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(dhcp-config)#network [할당 네트워크 ip]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(dhcp-config)#default-router [디폴트 게이트웨이]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(dhcp-config)#dns-server [dns주소]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)ip dhcp excluded-address [할당제외주소 시작] [할당제외주소 끝]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;DHCP Relay 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [SUB인터페이스의 포트]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-subif)#ip helper-address [DHCP서버의 Ip]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;라우터와&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;연결된 네트워크보기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#do show ip route&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 라우팅 정보, 라우팅 프로토콜 데이터가 내부로 전송 안되도록하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-router)#passive-interactive [포트]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 네트워크정보 전송시 요약안하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config&lt;span style=&quot;color: #333333;&quot;&gt;-router&lt;/span&gt;)#no auto-summary&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;RIP 라우팅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#router rip&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-router)#version 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;** 버전2를 쓰고자 하는 경우에 입력&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-router)#network [네트워크 ip]&amp;nbsp; &amp;nbsp; &amp;nbsp; ** 필요한만큼 반복&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* RIP은 동적라우팅이다. HOP 카운트는 15까지만 지원.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 버전2는 내부정보가 외부로 전달된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;OSPF라우팅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#router ospf [프로세스ID]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-router)#network [네트워크 ip] [와일드카드마스크] area [에리어 넘버]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;** OSPF는 서브넷요약을 하지 않는다. (no auto-summary가 필요없다)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;eigrp라우팅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#router eigrp [as넘버]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-router)#network [네트워크 ip] [와일드카드마스크]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Static 라우팅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#ip route [목적지 IP] [목적지 서브넷마스크] [경유할 IP or Interface명]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ex ) Router(config)#ip route&lt;span&gt; 123.123.123.0 255.255.255.0 serial[0/0/0]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Default 라우팅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#ip route 0.0.0.0 0.0.0.0 [패킷보낼 주소]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 따로 지정안한 모든패킷에 대한 경로지정.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;CDP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#show cdp neighbors&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#show cdp neighbors detail&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#show cdp neighbors entry *&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이웃한 디바이스 확인하는 프로토콜. 셋 중 하나 알아서 사용. detail은 ip주소 나옴.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;표준&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;ACL(access-list)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;특정 네트워크의 경우&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#access-list [리스트 번호] [permit / deny] [출발지] [출발지의 wildcard mask]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [포트]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ip access-gruop [리스트 번호] [in/out]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;텔넷/콘솔의 경우&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#access-list [리스트 번호] [permit / deny] [출발지] [출발지의 wildcard mask]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#line vty 0 4&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#access-class 1 in&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#login&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* ACL은 Top-Down방식.(특수한 상황 설정 &amp;rarr; 일반적인 설정)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* access-group/class에서 in은 라우터 들어갈때, out은 나갈때 검사.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 출발지+출발지wildcardmask를 뭉뜽그려서 any라고 적을 수 있다. 이 경우는 &lt;b&gt;전부다&lt;/b&gt;를 말한다. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;any는 0.0.0.0/32 이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 확장 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;ACL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#access-list [리스트 번호] [permit / deny] [적용대상] host [출발지] host [목적지]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [포트]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ip access-group [리스트 번호] [in / out]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* access-list에서 [적용대상]은 protocol 혹은 service가 올 수 있다. (예 : ping을 못날리게 하려면 icmp)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;NAT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 예제와 자세한 설명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://vaulbo.tistory.com/23&quot;&gt;여기&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;를 참고&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. Static NAT (주소 안바뀜)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#ip nat inside source static [내부ip] [외부ip]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [내부포트]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ip nat inside&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [외부포트]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config&lt;span style=&quot;color: #333333;&quot;&gt;-if&lt;/span&gt;)#ip nat outside&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. Dynamic NAT(클라이언트 요청에 따라 주소 바뀜)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#ip nat [ACL명] [공인ip시작] [공인ip끝] netmask [공용네트워크 서브넷마스크]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#ip nat inside source list [ACL번호] pool [ACL명]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#access-list [ACL번호] [permit / deny] [공용네트워크ip] [공용네트웍 서브넷마스크]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [내부포트]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ip nat inside&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#int [외부포트]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)#ip nat outside&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;PAT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;는 NAT overload이다. &lt;/span&gt;Dynamic NAT의 첫줄의 끝에 overload 를 붙여준다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;NAT : Router(config)#ip nat [ACL명] [공인ip시작] [공인ip끝] netmask [공용네트워크 서브넷마스크]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;PAT : Router(config)#ip nat [ACL명] [공인ip시작] [공인ip끝] netmask [공용네트워크 서브넷마스크] &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;overload&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 예제와 자세한 설명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://vaulbo.tistory.com/23&quot;&gt;여기&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;를 참고&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr id=&quot;02-3&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;02 - 3 시험에서 사용하는 명령어 *스위치*&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;#99&quot;&gt;목차 보기&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;STP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;루트브릿지를 지정하는 경우&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#spanning-tree vlan 1 priority 4096&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* priority의 최소값 4096. 이후 4096씩 증가. 최대:65535. 기본 32769.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;portfast로 지정하는 경우&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#spanning-tree portfast&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 여러개의 포트 지정시, int range fa0/1-10 과 같이 선택할 수 있다.( 이 경우, Switch(config-if-range)로 표시 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Port Security&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Dynamic Port-security의 경우 : 최초통신시 MAC주소가 학습됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw mode access&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw port-security&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정적으로 MAC주소를 지정할 경우 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw mode access&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw port-security mac-address [MAC주소]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw port-security&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 지정한 MAC이 아닐때 포트를 다운시키려면, &lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw port-security violation shutdown 추가&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;접근가능한 MAC주소의 수를 지정할 경우 :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw mode access&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw port-security maximum [접근가능한 수]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#sw port-security&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;VTP 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#vtp mode [설정할 모드] * Server, Client, Transparent&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#vtp domain [도메인]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#vtp password [비번]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 자세한 설명은 &lt;a href=&quot;https://galid1.tistory.com/140&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를 참고&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;VLAN 구성&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하위 VLAN들에 대하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#vlan 10&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-vlan)#name myvlan&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-vlan)#exit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#int fa0/1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#sw mode acc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#sw acc vlan 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적당히 TRUNK로 지정할 포트에 대하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#int fa0/24&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#sw mode trunk&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;vlan이 잘 구성됐는지 확인하고 싶다면&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#do show vlan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr id=&quot;03&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;03 간단한 시험용 트릭 및 팁들&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#99&quot;&gt;목차 보기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 할당가능한 IP주소 구하기(서브넷마스크와 서브넷팅)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://limkydev.tistory.com/166&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브넷마스크&lt;/a&gt;는 [연속된1]+[연속된0]의 형태. 1은 네트워크영역, 0은 호스트영역.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 IP주소처럼 생겼음. ( 8자리.8자리.8자리.8자리 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0으로 채워진 호스트영역이 할당에 사용할 수 있도록 허락된 공간. 기본 서브넷마스크는 &lt;a href=&quot;http://korean-daeddo.blogspot.com/2015/12/ip.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;IP 클래스&lt;/a&gt;마다 다름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브넷마스크로 네트웍을 분리하는것 : Subnetting / 합치는 것 : Supernetting&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span&gt;예를 들어, 어떤 네트워크에 기본적으로 할당된 IP가 200.160.200.0/24라고 하자.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;이 안에서 A망(컴퓨터 102대연결), B망(컴퓨터 60대연결)을 나눈다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;IP : 200.160.200.0&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Subnet mask : 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;A망&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터에 들어갈 IP 102개 + zerobit 1개 + broadcast 1개 = 104(hostbit 갯수)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스트비트 갯수인 104보다 큰, 2의 제곱수는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;128&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;= 2^7 -&amp;gt; 7bit&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브넷마스크는 255.255.255.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;1&lt;/b&gt;000 0000 로 한자리 잡아먹도록 한다. 0이 7개 남았다. 이걸 A망에 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체네트워크에서 A망이 잡아먹는 영역은 200.160.200.0~200.160.200.127 (총 128개 주소)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 200.160.200.0은 zerobit로, 200.160.200.127은 broadcast로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 쓸모있게 할당할 수 있는 부분은 200.160.200.1~200.160.200.126(총 126개 주소)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;A네트워크의 IP :&amp;nbsp; 200.160.200.0/25&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A네트워크 가용IP : 200.160.200.1 ~ 200.160.200.126&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 문제에서 자주 물어보는 '사용가능한 마지막 IP'는 200.160.200.126이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;B망&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A망에서 이미 서브넷마스크의 첫자리를 잡아먹었다. IP도 .127까지 잡아먹었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 네트워크에서 남은 IP영역 : 200.160.200.128 ~ 200.160.200.255&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산을 시작할 서브넷마스크 : 255.255.255. 1000 0000&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B망에서 컴퓨터에 들어갈 IP 60개 + 제로비트 1개 + 브로드캐스트 1개 = 62&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로 필요한 호스트비트수는 64(62보다 큰 2의 제곱수) = 2^6 -&amp;gt; 6bit&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브넷마스크를 한 자리 더 먹어 255.255.255. 1&lt;b&gt;1&lt;/b&gt;00 0000 으로 사용하자. 호스트비트가 6비트가 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B망이 사용하는 IP범위 : 200.160.200.128 ~ 200.160.200.191&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;B 네트워크의 IP : 200.160.200.128 / 27&lt;/li&gt;
&lt;li&gt;&lt;span&gt;가용 IP범위 : 200.160.200.129 ~ 200.160.200.190&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;사용 가능한 마지막 IP주소 : 200.160.200.190&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;radius AAA Server 설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Server 기기에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[config]탭 - 좌측[AAA]메뉴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Service : ON&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Network configuration : Client Name-알아서, Client IP-라우터ip, secret-키&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;User setup : Username-유저네임, Password-비번&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 라우터에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Router(config)#aaa new-model&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#aaa authenti login default group radius&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#radius-server host [서버ip]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#radius-server secret [서버 키값]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. 만약 콘솔/텔넷에 AAA서버인증을 받게하고싶다면&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#line con 0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#login auth default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#line vty 0 4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)#login auth default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;을 추가한다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;inter-vlan설정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Router에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;절차 : 포트선택 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; (&lt;/span&gt;서브인터페이스 설정 &amp;rarr; 802.1q설정 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; ip설정)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# int fa0/0&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config-if)# no shut&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(&lt;span style=&quot;color: #333333;&quot;&gt;config-if&lt;/span&gt;)# int fa0/0.10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;config-subif&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)#&lt;span&gt; en do 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;config-subif&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)# ip addr 111.111.111.111 000.000.000.000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(&lt;span style=&quot;color: #333333;&quot;&gt;config-if&lt;/span&gt;)# int fa0/0.20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;config-subif&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)#&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;en do 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;config-subif&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)# ip addr 222.222.222.222 000.000.000.000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 여기서 입력되는 ip는, VLAN당사자의 입장에서는 default-gateway이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. Switch에서&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;절차 : 각vlan설정 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; &lt;/span&gt;라우터 트렁크모드 설정 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; &lt;/span&gt;vlan네트워크지정 ip설정(필요시)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#&lt;/span&gt;vlan 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#&lt;/span&gt;name aaaa&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#&lt;/span&gt;vlan 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#&lt;/span&gt;name bbbb&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#&lt;/span&gt;int fa0/1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#&lt;/span&gt;sw acc vlan 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#&lt;/span&gt;sw mode acc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)&lt;/span&gt;#&lt;/span&gt;int fa0/2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#&lt;/span&gt;sw acc vlan 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#&lt;/span&gt;sw mode acc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Switch(config)# int fa0/24&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)#&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;sw mode trunk&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)# int vlan 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config-if)# ip addr [스위치ip] [스위치subnet mask]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Switch(config)#ip def [vlan20의 default-gateway]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;DHCP설정 절차&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Router에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** server가 있는 네트워크는 해줄필요없다. 나머지 vlan들만 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip dh pool [풀 이름]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;network [vlan네트워크 주소]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;def [vlan의 default gateway]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dns [서버 ip주소]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;exit&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(반복해서 위 절차 수행)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip dh ex [시작] [끝]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; ** 대체로 시작은 ~.1 부터&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ip dh ex [시작] [끝]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; ** 대체로 끝은 ~.255까지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 각 기기에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip설정 들어가서 static누른다음 DHCP를 선택. 받아져오면 성공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 안받아져오는경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 우선 스위치의 VLAN설정을 다시해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 안된다면, 라우터에서 해당 인터페이스 설정을 다시해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 여기까지 해서 안되면, 일단 라우터 start-config를 밀어버리고 새로시작하는게 빠르다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 라우터 밀고도 안되면, 스위치도 밀고 하는게 빠르다(어차피 시간은 남는다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;문제를 대하는 자세&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 주소 정리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크, 가용ip범위, 디폴트게이트웨이, 서브넷마스크10진수로 정리해두고 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 라우터 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시덥잖은설정 : enable패스워드, 암호화여부, 호스트네임, logging info, 초기화여부&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DHCP설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터페이스 설정 : 보통 inter-vlan&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라우팅 : rip, rip version2, ospf, eigrp 및 static, default&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘솔, 텔넷, PPP, radius 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 스위치설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vlan&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 테스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완벽하게 돌아간다고 대충 판단하는 기준 : DHCP로 IP는 잘 불러오는지? 웹서비스는 잘 들어가지는지? 이메일은 되는지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;SImple PDU로 어디까지 안되는지 확인 ( 같은 스위치 아래끼리 되는지&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;switch까진 되는지?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; router까진 되는지?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; router너머 스위치 까지 되는지?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; router너머 단말까지 되는지? )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 밀고 하기 순서 : 단말 확인 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr;&lt;/span&gt; 스위치 포트 재설정 &amp;rarr; 라우터 포트 재설정 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; 라우터 밀기 &lt;span style=&quot;color: #333333;&quot;&gt;&amp;rarr; 스위치 밀기&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;이메일이 안된다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;span&gt; 각 단말에서 DNS주소에 서버의 IP를 잘 넣었는가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. 서버에서 DNS설정을 했는가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3. 오타난게 아닌가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;4. 다 안되면 편하게 라우터를 밀고 시작하도록 하자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;PDU가 FAIL이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;span&gt;&lt;span&gt; 두 세번 더해본다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;2. 혹시 해당 회차의 PDU가 아니라 다른걸 보고있는게 아닌지 확인.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;패킷트레이서 1~9까지 위에서 아래로 잘 가다가, 10번은 1번 밑에있다. 20번은 2번 밑에있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;3. 그래도 안되면 안되는거 맞다. 밀고 시작하자.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 라우팅 해야되는데, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;연결된 네트워크 정보가 제대로 안뜬다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. ospf, rip등으로 라우팅을 하기 위해서 do show ip route로 네트워크 정보를 보려고 하는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안뜨는 경우가 발생할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 인터페이스 설정을 해줬는지 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 인터페이스가 다운된게 아닌지 확인 (CLI에서 no shut으로 해결)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 뭔가 하드웨어연결 자체가 잘못된게 아닌지 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 잘 모르겠으면 밀고 다시시작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;라우터 flash에 있는 파일 TFTP백업이 안된다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. 높은 확률로 라우터에서 TFTP서버쪽 인터페이스 설정을 잘못했다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(ip address입력시 default gateway가 아닌 host를 입력)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. copy [파일] tftp가 아닌, copy tftp ___ 로 입력한 것이 아닌지 확인&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;디폴트 라우팅 절차&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. CDP를 켠다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# cdp run&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. 인접 디바이스를 조사한다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# do show cdp neighbors detail&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;( 대충 필요없는 디바이스 정보 )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;( 대충 버전 몇이라는 말 )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Device&amp;nbsp;ID:&amp;nbsp;ISP&lt;br /&gt;Entry&amp;nbsp;address(es):&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;IP&amp;nbsp;address&amp;nbsp;:&amp;nbsp;&lt;u&gt;&lt;b&gt;100.100.100.1&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;Platform:&amp;nbsp;cisco&amp;nbsp;C2800,&amp;nbsp;Capabilities:&amp;nbsp;Router&lt;br /&gt;Interface:&amp;nbsp;Serial0/0/0,&amp;nbsp;Port&amp;nbsp;ID&amp;nbsp;(outgoing&amp;nbsp;port):&amp;nbsp;Serial0/0/0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;( 대충 버전 몇이라는 말 )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. 디폴트 라우팅한다. ip route [0] [0] [아까 조사한 아이피]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Router(config)# ip route 0.0.0.0 0.0.0.0 &lt;u&gt;&lt;b&gt;100.100.100.1&lt;/b&gt;&lt;/u&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#99&quot;&gt;목차 보기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>취미</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/325</guid>
      <comments>https://studioplug.tistory.com/325#entry325comment</comments>
      <pubDate>Sat, 18 Apr 2020 01:05:52 +0900</pubDate>
    </item>
    <item>
      <title>웹문서에 Web font적용</title>
      <link>https://studioplug.tistory.com/323</link>
      <description>&lt;p&gt;React에서 단순히 html문서에 웹폰트 관련 링크와 적용법을 정리한 것이다.&lt;/p&gt;
&lt;p&gt;이 포스트는 옛날 브라우저는 일찍이 갖다버렸으며 요즘 브라우저만 취급한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;먼저 참고하면 좋을 글&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://d2.naver.com/helloworld/4969726&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;네이버D2&lt;/a&gt; 웹폰트 관련내용 전반&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;혹시 폰트 서브셋을 만들고 싶다면&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;폰트 파일이 너무 크다면 필요없는 글자를 지워 용량을 줄일 수 있다. &lt;span style=&quot;color: #333333;&quot;&gt;아래 두 가지 방법이 가장 마음에 들어 소개한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://palindrom615.dev/optimizing-web-font&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;subfont&lt;/a&gt; : &lt;/span&gt;웹페이지에 있는 문자에 대한 서브셋 만들기&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://futurecreator.github.io/2018/07/07/hexo-change-font-face-no-cdn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;fontforge&lt;/a&gt; : &lt;/span&gt;그냥 알아서 열심히 서브셋 만들기&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;TTF를 웹폰트(WOFF2)로 변환하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;세 가지 서비스를 소개한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://onlinefontconverter.com/&quot;&gt;Online Font Converter&lt;/a&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 여기가 최고존엄이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://convertio.co/kr/ttf-woff/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CONVERT IO&lt;/a&gt; : 아쉽게도 WOFF2는 없고, WOFF만 지원한다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.fontsquirrel.com/tools/webfont-generator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;fontsquirrel&lt;/a&gt; : TTF를 업로드하면 WOFF 및 WOFF2로 변환되고, 바로 사용가능한 코드가 함께 제공된다. 다만 한글이 깎여나가는지 HTML문서에서 한글에는 폰트적용이 되지 않는 현상이 있다. &lt;a href=&quot;https://clova.ai/handwriting/list.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;네이버 나눔손글씨&lt;/a&gt;사용시 나타난 증상이고, 다른 폰트는 잘 모르겠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문서에 폰트 적용하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;폰트 파일에 문제가 없다면, css문서에 다음과 같은 형태의 코드로 폰트를 적용할 수 있다.&lt;/p&gt;
&lt;p&gt;@font-face{ } 에서 css내에서 사용할 폰트 이름, 폰트가 위치하는 경로를 지정한다.&lt;/p&gt;
&lt;p&gt;그 다음, 원하는 엘리먼트에 { font-family : '폰트이름'; } 구문을 통해 폰트를 적용한다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;color: #000000; background: #f1f0f0;&quot;&gt;&lt;code&gt;/* app.css */

@font-face{
  font-family : 'Nanum_gangin';
  src: url('./fonts/nanum_gangin.woff') format('woff');
}

.App{
  font-family : 'Nanum_gangin';
  font-size : 200%;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;구글폰트 사용하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;위에 있는 것들 전부 다 하기 싫다면, &lt;a href=&quot;https://fonts.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글폰트&lt;/a&gt;를 사용할 수도 있다. 구글 서버에 저장된 폰트를 필요한만큼 쪼개서 보내준다. 본인이 원하는 폰트가 마침 구글폰트에 있다면, 바로 사용하면 된다.&lt;/p&gt;
&lt;p&gt;예를 들어 &lt;a href=&quot;https://fonts.google.com/specimen/Nanum+Gothic?selection.family=Nanum+Gothic&amp;amp;sidebar.open&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;나눔고딕&lt;/a&gt;을 사용하고 싶다고 하자. 오른쪽의 사이드바에서 Embed를 선택하면 태그가 나타난다. link는 html의 head에, @import는 css에 사용할 수 있으니 맘에드는대로 고르면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/323</guid>
      <comments>https://studioplug.tistory.com/323#entry323comment</comments>
      <pubDate>Thu, 19 Mar 2020 01:38:37 +0900</pubDate>
    </item>
    <item>
      <title>조주기능사 필기 합격 후기</title>
      <link>https://studioplug.tistory.com/306</link>
      <description>&lt;p&gt;학원에서 필기/실기 수업을 한달동안 들었었고&lt;/p&gt;&lt;p&gt;교과서를 처음부터 끝까지 보면서 학원에서 짚어준 내용을 중심으로 노트에 요약정리함.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;75점으로 합격 했는데 내용을 알아서 합격했다기보다는 감으로 찍어 맞춘 것이 많았음.&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;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 학원에서는 각 술들의 역사가 출제된 적이 없으니 걸러도 된다 했는데, 문제에 출제되었음. 달라진 부분으로 보임.&lt;/p&gt;&lt;p&gt;2. 커피 문제는 원두 종의 쓰임새가 나왔음.&lt;/p&gt;&lt;p&gt;3. 제조 순서는 안나왔음.&lt;/p&gt;&lt;p&gt;4. 중성세제-더운물-찬물은 단골문제인 것 같음. 기출문제에도 항상 나왔고. 시험에도 나왔음.&lt;br /&gt;&lt;/p&gt;</description>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/306</guid>
      <comments>https://studioplug.tistory.com/306#entry306comment</comments>
      <pubDate>Tue, 29 Aug 2017 00:45:12 +0900</pubDate>
    </item>
    <item>
      <title>18회차(끝) : 구조체 초기화, 비트 구조체, 공용체</title>
      <link>https://studioplug.tistory.com/283</link>
      <description>&lt;p&gt;&lt;b&gt;0. 참고 자료&lt;/b&gt;&lt;/p&gt;&lt;p&gt;http://soen.kr/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. 구조체 초기화&lt;/b&gt;&lt;/p&gt;&lt;p&gt;구조체의 멤버들은 마치 배열을 초기화하듯 초기화할 수 있다. 별거없다.&lt;/p&gt;&lt;p&gt;struct b {&lt;br /&gt;&amp;nbsp;&amp;nbsp;int apple;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int banana;&lt;br /&gt;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;struct a {&lt;br /&gt;&amp;nbsp;&amp;nbsp;struct b bb;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int tomato;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;struct a plug = { {1,2},3 };&lt;br /&gt;&amp;nbsp;printf(&quot;%d %d %d\n&quot;, plug.bb.apple, plug.bb.banana, plug.tomato);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. 구조체의 대입&lt;/b&gt;&lt;/p&gt;&lt;p&gt;구조체는 같은 모양이면 대입할 수 있다. 멤버들을 덮어씌우는 것이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct strt {&lt;br /&gt;&amp;nbsp;&amp;nbsp;int one;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int two;&lt;br /&gt;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;struct strt a = { 1,2 };&lt;br /&gt;&amp;nbsp;struct strt b=a;&lt;br /&gt;&amp;nbsp;printf(&quot;%d %d&quot;, b.one, b.two);&lt;/p&gt;&lt;p&gt;위 예제는 strt태그로부터 구조체 a,b를 만든다. 그리고 b에 a를 대입한다.&lt;/p&gt;&lt;p&gt;이게 가능하다는 것은, 구조체가 좌변값이라는 것. 함수 인수로 받을 수도 있고, 리턴하는데 구조체를 쓸 수 있다.&lt;/p&gt;&lt;p&gt;b=a 구문은 memcpy(&amp;amp;b, &amp;amp;a, sizeof(a)); 와 같다. 메모리를 푹 퍼다가 복사해주는 것이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 깊은 복사와 얕은 복사&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;struct strt {&lt;br /&gt;&amp;nbsp;&amp;nbsp;char *pc;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;struct strt a = { NULL };&lt;br /&gt;&amp;nbsp;struct strt b;&lt;/p&gt;&lt;p&gt;&amp;nbsp;a.pc = malloc(32);&lt;br /&gt;&amp;nbsp;strcpy_s(a.pc,sizeof(&quot;helololollooo&quot;),&quot;helololollooo&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp;b = a;&lt;/p&gt;&lt;p&gt;&amp;nbsp;printf(&quot;%s %s\n&quot;, a.pc, b.pc);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;strcpy_s(a.pc, sizeof(&quot;goodbyeeeyee&quot;), &quot;goodbyeeeyee&quot;);&lt;br /&gt;&amp;nbsp;printf(&quot;%s %s\n&quot;, a.pc, b.pc);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위 코드는 a.pc에 &quot;hellololo&quot;비슷한걸 복사하고난뒤에, b=a를 한다.&lt;/p&gt;&lt;p&gt;이후에 a.pc가 가리키는 문자열의 내용을 바꿨더니 b.pc도 바뀐다.&lt;/p&gt;&lt;p&gt;이것은 b.pc에 a.pc의 값 그 자체가 단순히 복사되어 들어갔기 때문이다. helolollolo 문자열이 아닌, 포인터를 복사했다는 말이다.&lt;/p&gt;&lt;p&gt;잘못됐다는 것이 아니라, 이런 현상이 일어나기 때문에 대입했을 때 의도치않은 상황이 생길 수 있다는 것이다.&lt;/p&gt;&lt;p&gt;이와 같이 그냥 단순히 복사만 하는 것을 &lt;b&gt;'얕은 복사'&lt;/b&gt; 라고 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;반면 &lt;b&gt;'깊은 복사'&lt;/b&gt;는 포인터를 복사하는게 아니고, 포인터를 따라가면 나오는 그 값을 취한다.&lt;/p&gt;&lt;p&gt;즉, b=a를 할 때 깊은 복사가 일어났다면, a.pc 라는 포인터가 b.pc로 대입되지 않는다.&lt;/p&gt;&lt;p&gt;b.pc는 새로운 공간을 할당한 뒤에, &quot;helololllo&quot;를 여기에 기록한다. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;b = a;&lt;br /&gt;&amp;nbsp;b.pc = malloc(32);&lt;br /&gt;&amp;nbsp;strcpy_s(b.pc, strlen(a.pc)+1, a.pc);&lt;/p&gt;&lt;p&gt;위는 깊은 복사의 한 예이다. b에 일단 a를 대입한다. 그 다음 b에다가는 a포인터를 따라가면 나오는 &quot;helololo&quot;따위의 상수를 기록해준다.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. 비트 구조체&lt;/b&gt;&lt;/p&gt;&lt;p&gt;비트들을 멤버로 가지는 구조체이다. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct tag_bit {&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int a : 4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int b : 8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int c : 4;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;&lt;p&gt;위 코드는 비트 구조체를 정의한 것이다. &lt;b&gt;&lt;u&gt;타입 멤버이름 : 비트수;&lt;/u&gt;&lt;/b&gt; 의 형식으로 멤버들을 적어준다.&lt;/p&gt;&lt;p&gt;위의 경우 총 16비트 = 2바이트를 차지한다. 비트들은 먼저 쓰인것이 일반적으로 하위비트(작은 자리)로 들어간다.&lt;/p&gt;&lt;p&gt;예를 들어, 0101 00110101 1110 이렇게 2바이트 코드가 있을 때, 맨뒤 1110을 a가 나타내고, 맨앞 0101을 c가 나타낸다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct tag_bit {&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int a : 4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int&amp;nbsp; : 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int c : 4;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;&lt;p&gt;만약 이렇게 크기를 0으로 주면, 해당 워드에서 사용되지 않은 비트는 모두 버린다.&lt;/p&gt;&lt;p&gt;c는 그 다음 워드에서 시작한다. 구조체 패딩과 비슷한 맥락에서 이해할 수 있겠다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;물론, 비트 필드가 구조체에 쓰였다고 해서 우리가 늘상 쓰던 멤버를 쓸 수 없는 것은 아니다. 섞어써도 된다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;5. 공용체&lt;/b&gt;&lt;/p&gt;&lt;p&gt;공용체는 구조체와 문법이 유사하나, 멤버들이 기억공간을 공유한다는 특징을 가진다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;union {&lt;/p&gt;&lt;p&gt;&amp;nbsp; int a;&lt;/p&gt;&lt;p&gt;&amp;nbsp; char b[10];&lt;/p&gt;&lt;p&gt;}unab;&lt;/p&gt;&lt;p&gt;위와 같은 코드로 unab라는 이름의 공용체를 하나 정의했다. 여기서 a의 주소와 b의 주소는 같다.&lt;/p&gt;&lt;p&gt;즉, a값이 바뀌면 b값도 바뀐다. b값이 바뀌면 마찬가지로 a값도 바뀐다.&lt;/p&gt;&lt;p&gt;공용체의 크기는 가장 큰 멤버의 크기와 같다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하나의 정보를 나타내는데 여러 형식으로 나타내고 싶을 때 공용체를 사용한다.&lt;br /&gt;&lt;/p&gt;</description>
      <category>C</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/283</guid>
      <comments>https://studioplug.tistory.com/283#entry283comment</comments>
      <pubDate>Fri, 3 Mar 2017 13:28:27 +0900</pubDate>
    </item>
    <item>
      <title>17회차 : 구조체 정의, 구조체 멤버 참조</title>
      <link>https://studioplug.tistory.com/282</link>
      <description>&lt;p&gt;&lt;b&gt;0. 참고 자료&lt;/b&gt;&lt;/p&gt;&lt;p&gt;http://soen.kr/&lt;/p&gt;&lt;p&gt;구조체 패딩 http://pangate.com/19&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. 구조체의 정의&lt;/b&gt;&lt;/p&gt;&lt;p&gt;여러 변수들을 하나로 묶어둔 것. &lt;/p&gt;&lt;p&gt;struct {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; char a[10];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; int b;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; int c[5];&lt;/p&gt;&lt;p&gt;} studioplug;&lt;/p&gt;&lt;p&gt;위와 같이 a,b,c를 멤버로 가지는 studioplug라는 이름의 구조체를 정의할 수 있다.&lt;/p&gt;&lt;p&gt;구조체 안에 들어있는 변수를 멤버라고 한다. 구조체도 멤버가 될 수 있다. (ㄷㄷ)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;studioplug.b=10;&lt;/p&gt;&lt;p&gt;stucioplug.c[2]=100;&lt;/p&gt;&lt;p&gt;멤버에 접근하고 싶으면 위와 같이 한다. 구조체 이름 뒤에 점(.)을 붙이고, 멤버를 적는다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. 구조체의 태그&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1번항목의 studioplug와 같은 구조체가 단 하나만 필요하다면, 이미 본 예제처럼 바로 정의를 해버려도 된다.&lt;/p&gt;&lt;p&gt;하지만 동일한 모양의 구조체가 여러개 필요하다면, 태그를 사용할 수 있다.&lt;/p&gt;&lt;p&gt;struct studioplug{&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; char a[10];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; int b;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;위와 같은 코드를 두고 구조체 태그를 선언했다고 표현한다. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct studioplug first;&lt;/p&gt;&lt;p&gt;태그를 선언한 다음에는 태그를 이용해 위와 같이 구조체를 정의할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;strcpy_s(first.a,5,&quot;abcd&quot;);&lt;/p&gt;&lt;p&gt;다음과 같이 멤버에 접근할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 구조체 포인터&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;struct plug {&lt;br /&gt;&amp;nbsp;&amp;nbsp;char a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int b;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;&lt;p&gt;&amp;nbsp;struct plug g;&lt;br /&gt;&amp;nbsp;struct plug *gp;&lt;br /&gt;&amp;nbsp;gp=&amp;amp;g;&lt;/p&gt;&lt;p&gt;&amp;nbsp;(*gp).a = 'a';&lt;br /&gt;&amp;nbsp;gp-&amp;gt;b = 5;&lt;br /&gt;&amp;nbsp;printf(&quot;%c %c %c\n&quot;, g.a, (*gp).a, gp-&amp;gt;a);&lt;br /&gt;&amp;nbsp;printf(&quot;%d %d %d\n&quot;, g.b, (*gp).b, gp-&amp;gt;b);&lt;/p&gt;&lt;p&gt;위의 코드는 구조체의 포인터를 만들고, 이를 이용해 멤버의 값을 출력하는 동작을 한다.&lt;/p&gt;&lt;p&gt;struct plug *gp와 같이 포인터를 만들 수 있고, (*gp).a 또는 gp-&amp;gt;a와 같이 멤버에 접근할 수 있다.&lt;/p&gt;&lt;p&gt;-&amp;gt;는 멤버 액세스 연산자라고 한다. 좌변에 구조체 포인터, 우변에 멤버이름이 온다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. 구조체 배열&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;struct plug {&lt;br /&gt;&amp;nbsp;&amp;nbsp;char a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int b;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;&lt;p&gt;struct plug strArray[10];&lt;/p&gt;&lt;p&gt;와 같이 코드를 적으면 plug구조체를 원소로 하는 strArray배열이 만들어진다.&lt;/p&gt;&lt;p&gt;strArray[0].a='g'; 나, strArray[5].b=53; 같이 멤버에 접근할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct plug *strPtr[10];&lt;/p&gt;&lt;p&gt;for(int i=0;i&amp;lt;10;i++){&lt;/p&gt;&lt;p&gt;&amp;nbsp; strPtr[i]=(struct plug *)malloc(sizeof(struct plug));&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;strPtr[5]-&amp;gt;b=53;&lt;/p&gt;&lt;p&gt;위와 같이 구조체 포인터를 하나 두고, 동적할당을 해줄 수도 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;5. 중첩 구조체&lt;/b&gt;&lt;/p&gt;&lt;p&gt;구조체 멤버로 구조체가 올 수도 있다. 단, 자기중첩이나 상호중첩은 안된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct a{&lt;/p&gt;&lt;p&gt;&amp;nbsp; struct a *b;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;그러나 구조체 멤버로 자신의 구조체포인터를 가질 수는 있다. 이를 자기 참조 구조체 라고 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;struct b{&lt;/p&gt;&lt;p&gt;&amp;nbsp; int apple;&lt;/p&gt;&lt;p&gt;&amp;nbsp; int banana;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;struct a{&lt;/p&gt;&lt;p&gt;&amp;nbsp; struct b bb;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;struct a plug;&lt;/p&gt;&lt;p&gt;plug.bb.apple=53;&lt;/p&gt;&lt;p&gt;plug.bb.banana=5353;&lt;/p&gt;&lt;p&gt;위 코드는 구조체 b가 구조체a의 멤버변수인 경우이다. 이 상황에서 a속 bb의 멤버변수에 접근하는 예를 보여준다.&lt;/p&gt;</description>
      <category>C</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/282</guid>
      <comments>https://studioplug.tistory.com/282#entry282comment</comments>
      <pubDate>Thu, 2 Mar 2017 21:29:30 +0900</pubDate>
    </item>
    <item>
      <title>16회차 : 문자열 함수, 수치와 문자열</title>
      <link>https://studioplug.tistory.com/281</link>
      <description>&lt;p&gt;오늘은 글을 쓰면서 마크다운을 배워야겠다는 생각이 강렬히 들었다.&lt;/p&gt;&lt;p&gt;그리고 주변 지인들에겐 옛날자료 보지말고 최신책 사서 보라고 말해줘야겠다&lt;/p&gt;&lt;p&gt;모두 string.h 에 포함된 함수들.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;0. 참고 자료&lt;/b&gt; &lt;/p&gt;&lt;p&gt;내용 전체 http://soen.kr/&lt;/p&gt;&lt;p&gt;strcpy_s http://ehclub.co.kr/790&lt;/p&gt;&lt;p&gt;strncpy_s http://ehclub.co.kr/792&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. 문자열 길이 조사&lt;/b&gt;&lt;/p&gt;&lt;p&gt;- &lt;span&gt;size_t strlen(const char *string);&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span&gt;널문자는 길이에 포함되지 않음. 길이의 단위는 바이트.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;( 예 : printf(&quot;%s&quot;,strlen(&quot;studio플러그&quot;)); // studio는 6바이트, 플러그는 6바이트, 총 12바이트. 12출력. )&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2&amp;nbsp;문자열 복사&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;- strcpy_s(char *dest, size_t length, const char *src);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;dest :&amp;nbsp;src를 복사할&amp;nbsp;문자열 포인터, length : 버퍼 길이, src : 복사될 문자열 포인터&lt;/p&gt;&lt;p&gt;src의 내용을 dest에 복사해 넣는다.&lt;/p&gt;&lt;p&gt;*기존 strcpy(char *dest, char *src)함수에서는 src길이&amp;gt;(dest길이-1) 이면 오버플로 버그가 났었다고 한다. 이를 해결한게 strcpy_s라고.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;errno_t&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; strncpy_s ( &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; * destination,&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;size_t&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; size, &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; * source, &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;size_t&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; n ); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;destination : source를 복사할 문자열 포인터, size:버퍼길이, source:복사될 문자열 포인터, n:복사할 길이&lt;/p&gt;&lt;p&gt;* source지점에서부터 n개의 문자를 destination위치에 복사한다.&lt;/p&gt;&lt;p&gt;* 복사하고 나서 뒤에 널문자를 붙인다.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 문자열 연결&lt;/b&gt;&lt;/p&gt;&lt;p&gt;-&amp;nbsp;&lt;span&gt;char *strcat_s(char *dest, size_t size,&amp;nbsp;const char *src);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;dest의 널문자를 지우고, src문자열을 dest문자열 뒤에 붙인다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;이 때, dest의 문자배열 크기는 dest와 src의 길이를 합친 것보다 같거나 커야한다. 작으면 프로그램 뻗음.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- char *strncat_s(char *dest, size_t size, const char *src,size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;strcat_s와 같으나, src문자열에서 count만큼의 갯수만 연결해준다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. 문자열 비교&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- int strcmp(const char *s1, const char *s2);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- int strncmp(const char *s1, const char *s2, size_t count);&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span&gt;내용이 같으면 0리턴. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;내용이 다른경우 s1값이 크면&amp;nbsp;양수, s2가&amp;nbsp;크면 음수 리턴&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- int stricmp(const char *string1, const char *string2);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- int strnicmp(const char *string1, const char *string2, size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;이런것도 있는데. i가 함수이름 중간에 들어가면 대소문자를 무시한다. ab나 AB나 똑같은거다.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;5. 문자열 검색&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- char *strchr(const char *string, int c);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;string문자열 안에서 c에 해당하는 문자중 가장 앞쪽것의&amp;nbsp;번지를 리턴한다. 없으면&amp;nbsp;NULL리턴.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;printf(&quot;%d %d\n&quot;, &quot;abAB&quot;, strchr(d, 'A')); 하면&amp;nbsp;두 값이 2차이날것. 'A'부분을 65로 바꿔도 됨.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strrchr(const char *string, int c);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;strchr랑 하는짓은 똑같은데 뒤에서부터 검색한다.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- c&lt;/span&gt;har *strstr(const char *string, const char *strSearch);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;string문자열 안에서 strSearch문자열을 찾아 시작번지 리턴&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strpbrk(const char *string, const char *strCharSet );&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;strCharSet문자열에 들어있는 문자 하나하나를 모조리 string내에서 검색한다. 가장 빨리 찾은놈의 번지를 리턴.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;printf(&quot;%d %d\n&quot;, &quot;umapplepen&quot;, strpbrk(&quot;umapplepen&quot;, &quot;abcd&quot;));&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;이러면 두 번지값의 차이가 2 난다. umapplepen에서 a를 가장 먼저 찾았기 때문. &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strtok(char *strToken, const char *strDelimit);&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;a9&quot;&gt;strDelimit에는 구분자를 준다. &quot;, &quot;와 같이 주면 쉼표(,)와 공백( )을 구분자로 사용한다.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;strToken에서 이 문자들을 만나면 그 위치에 NULL값을 쓴 뒤, 앞에있는 문자열의 포인터를 리턴한다.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;첫 번째 인수가 NULL이면 NULL문자를 만날 때 까지 윗줄의 동작을 반복한다.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;char s[20] = &quot;a b c d,e f&quot;;&lt;br /&gt;&amp;nbsp;char *p=strtok(s,&quot;, &quot;);&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&amp;nbsp;while (p != NULL)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;printf(&quot;%d %s \n&quot;, p, p);&lt;br /&gt;&amp;nbsp;&amp;nbsp;p = strtok(NULL, &quot;, &quot;);&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&amp;nbsp;return 0;&lt;br /&gt;}&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;b&gt;6. 문자열 변환&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- char *strset(char *string, int c);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strnset(char *string, int c, size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;string문자열을 c문자로 채운다. strnset은 갯수지정가능.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strlwr(char *string);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;모두 소문자로&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strupr(char *string);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;모두 대문자로&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;char *strrev(char *string);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;문자열 순서 뒤집기. apple-&amp;gt;elppa&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;b&gt;7. 문자가 특정 그룹에 속하는지 확인, 대소문자 변환&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;http://soen.kr/lecture/ccpp/cpp1/12-1-6.htm&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;함수를 호출해 그룹에 속하면 0아닌값, 안속하면 0을 리턴.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;tolower(char)는 소문자로, toupper(char)는 대문자로.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;b&gt;8. 메모리 관리 함수&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;- void *memcpy(void *dest, const void *src, size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;void *memmove(void *dest,const void *src,size_t count);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;현재 vs에서는 둘은 같은 함수.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;int memcmp(const void *buf1,const void *buf2,size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;같나 안같다 보는함수&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;void *memchr(const void *buf,int c,size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;찾기&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;void *memset(void *dest,int c,size_t count);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;dest를 싸그리 c로 count개만큼 값을 바꿈.&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;9. 숫자---&amp;gt;문자(열) 변환 함수&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;char *itoa(int value, char *string, int radix);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;char *ltoa(long value, char *string, int radix);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;char *ultoa(unsigned long value, char *string, int radix);&lt;/span&gt;&lt;/p&gt;&lt;span &gt;&lt;p class=&quot;a9&quot;&gt;정수를 문자로 바꿈. value는 숫자. string은 문자로 바뀐게 저장될 문자배열. radix는 진법&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;char *gcvt(double value, int digits, char *buffer);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;char *ecvt(double value, int count, int *dec, int *sign);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;char *fcvt(double value, int count, int *dec, int *sign);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;실수를 문자로 바꿈&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;&lt;b&gt;10. 문자(열)---&amp;gt;숫자 변환함수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;span &gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;int atoi(const char *string);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;long atol(const char *string);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;long strtol(const char *nptr, char **endptr, int base);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;unsigned long strtoul(const char *nptr, char **endptr, int base);&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p class=&quot;a9&quot;&gt;문자(열)을 숫자로 바꿔 리턴. atoi, atol은 10진법으로만 인식하지만, strtol,strtoul은 진법바꾸기 가능.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;base가 진법.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;double atof(const char *string);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span &gt;double strtod(const char *nptr, char **endptr);&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class=&quot;a9&quot;&gt;문자(열)을 실수로 바꿔 리턴&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/div&gt;&lt;div&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;11.sprintf()&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span &gt;- int sprintf(char *buffer,const char *format , ...);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;printf와 같지만, 고거를 그냥 출력을 안하고 버퍼포인터로 보낸다. 왜지..&lt;/div&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/281</guid>
      <comments>https://studioplug.tistory.com/281#entry281comment</comments>
      <pubDate>Wed, 1 Mar 2017 04:45:05 +0900</pubDate>
    </item>
    <item>
      <title>15회차 : 배열 포인터, 배열과 문자열</title>
      <link>https://studioplug.tistory.com/280</link>
      <description>&lt;p&gt;참고 자료 http://soen.kr/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번에도 이 내용들을 이해하는데 시간이 정말 오래걸렸다.&lt;/p&gt;&lt;p&gt;개념 자체는 별 것 아닌데, 실제로 코드를 써보고 이건 왜 이런지를 고민하는 시간이 많았다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. 배열 포인터&lt;/b&gt;&lt;/p&gt;&lt;p&gt;int intar[5][3]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};&lt;/p&gt;&lt;p&gt;int (*ar)[3];&lt;/p&gt;&lt;p&gt;ar = intar;&lt;/p&gt;&lt;p&gt;여기서 *ar++를 하면 {6,7,8,9,10}을 가리킨다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;만약 int(*ar)[3]에 int a[7]={1,2,3,4,5,6,7} 을 넣고싶다면, 이렇게 캐스팅할 수 있다.&lt;/p&gt;&lt;p&gt;ar = (int(*)[3])a;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. 배열 인수의 표현&lt;/b&gt;&lt;/p&gt;&lt;p&gt;함수가 배열을 인수로 받을 때, *ar로 써도되고, ar[i]로 써도 된다.&lt;/p&gt;&lt;p&gt;사실 배열을 인수로 전달할 수는 없다. 배열의 포인터를 전달한다.&lt;/p&gt;&lt;p&gt;void sum(int ar[3])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;int a = 0;&lt;br /&gt;&amp;nbsp;for (int i = 0; i &amp;lt; 3; i++)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;a += ar[i];&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;printf(&quot;%d\n&quot;,a);&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;int ar[3] = { 1,2,3 };&lt;br /&gt;&amp;nbsp;sum(ar);&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;다음과 같은 코드에서 첫줄은 &lt;b&gt;void sum(int *ar)&lt;/b&gt; 와 같이 써도 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;int ar[3][2] = { 1,2,3,4,5,6 }; 일 경우는 void sum(int ar[][2]), void sum(int (*ar)[2])로 쓰면 된다.&lt;/p&gt;&lt;p&gt;두 번째 첨자부터만 똑바로 쓰면 된다. 그 앞의 것은 아무숫자나 넣어도 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 문자열 상수&lt;/b&gt;&lt;/p&gt;&lt;p&gt;printf(&quot;hello&quot;); 라는 프로그램을 실행할&amp;nbsp;때, &quot;hello&quot;는 정적데이터 영역에 문자형 포인터로 기록된다. 맨 뒤에는 널문자가 1바이트를 차지한다. 만약 같은 문자열이 여러번 나오면 한 번만 기록한다.&lt;/p&gt;&lt;p&gt;이후 이걸 가져다가 써서 화면에 hello를 출력한다. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. 문자형 배열과 문자형 포인터의 차이&lt;/b&gt;&lt;/p&gt;&lt;p&gt;char *ch=&quot;hello&quot;;&lt;/p&gt;&lt;p&gt;의 경우, 정적데이터 영역에 hello를 기록하고 포인터를 값으로 갖는다.&lt;/p&gt;&lt;p&gt;char ch[]=&quot;hello&quot;; &lt;/p&gt;&lt;p&gt;의 경우 정적데이터 영역에 hello를 기록하는 것 까진 같다. 그러나 이후 그 기록된 내용을 사용해 ch배열을 초기화한다. 즉, 정적데이터 영역에 기록된 문자열을 그대로 가리키는 것이 아니라, 그 내용을 가져다 새로운 배열을 꾸리는 것이다.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;5. 정적데이터 영역의 초기화&lt;/b&gt;&lt;/p&gt;&lt;p&gt;일반적으로 정적데이터 영역은 프로그램 실행 파일 내부이므로 값을 쓸 수 없다. 읽기만 가능하다.&lt;br /&gt;&lt;/p&gt;</description>
      <category>C</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/280</guid>
      <comments>https://studioplug.tistory.com/280#entry280comment</comments>
      <pubDate>Sun, 26 Feb 2017 18:57:42 +0900</pubDate>
    </item>
    <item>
      <title>14회차 : 첨자 연산, 포인터 배열</title>
      <link>https://studioplug.tistory.com/279</link>
      <description>&lt;p&gt;&lt;b&gt;참고자료 http://soen.kr/&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;그 어느때보다 혼돈의 카오스가 가득한 공부였다...&lt;/p&gt;&lt;p&gt;주변에 실력자들이 많아서 감사하게도 편하게 공부한다.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. 부분배열(subArray)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;int a[2][5]; 라고 한다면 보통 다차원 배열이라고 부르지만 c에는 다차원배열이 존재하지 않고 오직 일차원배열만이 존재한다.&lt;/p&gt;&lt;p&gt;즉, a[2][5]배열은 이차원배열이 아니며 a[0], a[1] 이라는 부분배열을 가진다. a[0]는 그저 a의 원소가 아니라, 하나의 완전한 배열인 것이다.&lt;/p&gt;&lt;p&gt;a[0]이라는 배열은 a[0][0]~a[0][4]라는 원소를 가질 것이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. 포인터 배열&lt;/b&gt;&lt;/p&gt;&lt;p&gt;원소가 포인터형인 배열.&lt;/p&gt;&lt;p&gt;예 : char *a[5]={&quot;java&quot;,&quot;python&quot;,&quot;perl&quot;,&quot;ruby&quot;,&quot;cpp&quot;};&lt;/p&gt;&lt;p&gt;만약 위와같이 정의를 해두면, &quot;java&quot;가 메모리공간 어딘가에 저장되고, 그 포인터가 반환돼서 a[0]으로 쏙 들어간다.&lt;/p&gt;&lt;p&gt;printf(&quot;%s&quot;,a[0])을 하면 그래서 &quot;java&quot;가 출력된다.&lt;/p&gt;&lt;p&gt;%s는 문자열의 포인터를 받아 문자열을 출력한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 배열과 포인터의 차이&lt;/b&gt;&lt;/p&gt;&lt;p&gt;- 배열은 상수, 포인터는 변수. 가리키는 대상이 바뀔 수 있는지 여부가 다르다.&lt;/p&gt;&lt;p&gt;- 배열 원소에 접근할 때는 배열 포인터에서부터 인덱스만큼 이동해 읽지만, 포인터는 대상체로 직접 이동한다. 접근속도는 포인터가 배열보다 빠르다.&lt;br /&gt;&lt;/p&gt;</description>
      <category>C</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/279</guid>
      <comments>https://studioplug.tistory.com/279#entry279comment</comments>
      <pubDate>Thu, 23 Feb 2017 05:03:52 +0900</pubDate>
    </item>
    <item>
      <title>13회차 : 동적 메모리 할당, 이중 포인터</title>
      <link>https://studioplug.tistory.com/278</link>
      <description>&lt;p&gt;참고자료 http://soen.kr/&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. 동적 할당, 할당 해제&lt;/b&gt;&lt;/p&gt;&lt;p&gt;malloc과 calloc은 인수에 넣은 만큼의 공간을 할당하는 함수. free는 메모리를 풀어주는 함수. stdlib.h에 있다.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;void *malloc(size_t size );&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;&lt;span&gt;void *calloc( size_t num, size_t size );&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;void free(void *memblock );&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;예&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;int *ar;&lt;br /&gt;ar = malloc(10 * sizeof(int));&lt;br /&gt;printf(&quot;%p&quot;,ar);&lt;br /&gt;free(ar);&lt;br /&gt;printf(&quot;\n%p&quot;, ar);&lt;/div&gt;&lt;div&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. 재할당&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;void *realloc( void *memblock, size_t size );&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class=&quot;a9&quot;&gt;첫 번째 인수로 할당된 메모리의 번지를 주고, 두 번째 인수로 재할당 크기를 준다.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;첫 번째 인수가 NULL이면 메모리를 새로 할당하고, 두 번째 인수가 0이면 할당 해제한다.(free함수와 같음)&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;혹시 메모리 사정상 포인터값이 바뀔 수는 있지만, 내용은 유지된다.&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;b&gt;3. 할당한 메모리 크기 읽기&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;size_t&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/span&gt;_msize(void *memblock);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a9&quot;&gt;&lt;span&gt;표준함수는 아니다. &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4. 다중포인터&lt;/b&gt;&lt;/div&gt;&lt;div&gt;포인터를 가리키는 포인터&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int i = 53;&lt;br /&gt;int *pi = &amp;amp;i;&lt;br /&gt;int **ppi = &amp;amp;pi;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;printf(&quot;pi:%d&amp;nbsp; *ppi:%d&amp;nbsp;&amp;nbsp; **ppi:%d&quot;, pi, *ppi, **ppi);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-&amp;gt; 출력결과 예 : pi:1234&amp;nbsp; *ppi:1234&amp;nbsp; **ppi:53&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. main함수의 리턴값&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;프로그램이 종료될 때&amp;nbsp;운영체제로 넘기는 리턴값. 탈출코드 라고도 한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;6. main함수의 인수&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;main함수의 원형은 다음과 같이 쓸 수 있다. 인수는 뒤에서부터 차례로 생략할 수 있다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;!--[endif]--&gt;&lt;p class=&quot;a3&quot;&gt;&lt;span &gt;void(또는 int) main(int argc,char *argv[],char *env[]);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&lt;span &gt;- int argc : 받을 인수의 갯수. 프로그램 이름을 포함한다. (program 1 2와 같이 호출이 argc의 값은 3)&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&lt;span &gt;- char *argv[] : 인수의 값. argv[0]은 프로그램 이름. 이후는 인수&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&lt;span &gt;- char *env[] : 운영체제의 환경변수&lt;/span&gt;&lt;/p&gt;&lt;span &gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span &gt;&lt;p class=&quot;a3&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&lt;b&gt;7. void ** 이중포인터&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;void **은 void *과는 다르게, 어떤 대상체를 가리키며 어떤 타입인지 정확히 알고있다.&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;void * 타입인 어떤 포인터를 가리키는 것이다.&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&amp;nbsp;void *avp[5];&lt;br /&gt;&amp;nbsp;void **vp = avp; //avp배열의 포인터를 대입&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&amp;nbsp;int i = 5;&lt;br /&gt;&amp;nbsp;avp[0] = &amp;amp;i;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&amp;nbsp;// **vp; 로 avp[0]을 읽지는 못한다&lt;br /&gt;&amp;nbsp;printf(&quot;%d&quot;, *(int *)*vp); // 5&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&lt;span &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;a3&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;a9&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C</category>
      <author>노는게 제일 좋습니다.</author>
      <guid isPermaLink="true">https://studioplug.tistory.com/278</guid>
      <comments>https://studioplug.tistory.com/278#entry278comment</comments>
      <pubDate>Mon, 20 Feb 2017 22:54:51 +0900</pubDate>
    </item>
  </channel>
</rss>