<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>주절주절</title>
    <link>https://precommer.tistory.com/</link>
    <description>배우고 싶은, 잘하고 싶은 개발 관련 내용과 내 주변의 이야기</description>
    <language>ko</language>
    <pubDate>Mon, 24 Aug 2026 13:53:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>힐둔</managingEditor>
    <item>
      <title>2024 공법 분양가상한제 적용지역, 투기과열지구, 조정대상지역 지정 정리</title>
      <link>https://precommer.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 484px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.20924%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;지정권자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 52.4418%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;지정기준&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 252px;&quot;&gt;
&lt;td style=&quot;width: 10.3489%; height: 252px;&quot;&gt;분양가상한제&lt;/td&gt;
&lt;td style=&quot;width: 7.20924%; height: 252px;&quot;&gt;국장&lt;/td&gt;
&lt;td style=&quot;width: 52.4418%; height: 252px;&quot;&gt;공공택지 외의 택지&lt;br /&gt;주택가격이 급등하거나 급등할 우려가 있는지역에 심의를거쳐 지정 &lt;br /&gt;&lt;br /&gt;투기과열지역중&lt;br /&gt;1. 분양가 상한제 적용지역으로 지정하는 날이 속하는 달의 바로 전달부터 소급하여&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; 12개월간 아파트 분양가격상승률이 물가상승률의 2배&lt;/b&gt;&lt;/span&gt;를 초과하는 지역&lt;br /&gt;&lt;br /&gt;2. 분양가상한제적용직전월부터 소급하여 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3개월간 주택매매거래량이 전년 동기 대비 20% 이상 증가&lt;/span&gt;&lt;/b&gt;한 지역&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&amp;nbsp; &lt;span style=&quot;text-align: start;&quot;&gt;전달부터 2개월 동안 해당 지역에서 공급되는 주택의 월평균 청약경쟁률이 모두 5대 1을 초과하였거나 해당 지역에서 공급되는 국민주택규모 주택의 월평균 청약경쟁률이 모두 10대 1을 초과하는 지역 (분양가상한제, 투기과열지구, 조정지구 공통)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 195px;&quot;&gt;
&lt;td style=&quot;width: 10.3489%; height: 195px;&quot;&gt;투기과열지구&lt;/td&gt;
&lt;td style=&quot;width: 7.20924%; height: 195px;&quot;&gt;국장&lt;br /&gt;시/도시사&lt;/td&gt;
&lt;td style=&quot;width: 52.4418%; height: 195px;&quot;&gt;주택가격상승률이 물가 상승률보다 현저히 높은 지역&lt;br /&gt;주택에 대한 투가기 성행하고 있거나 성행할 우려가 있는 지역 &lt;br /&gt;&lt;br /&gt;1. 위 분양가상한제 3번&lt;br /&gt;2. 주택공급이 위축될 우려가 있는 곳&lt;br /&gt;&amp;nbsp; 1) 직전월 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;주택분양실적&lt;/span&gt;&lt;/b&gt;이 전달보다&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 30% 이상 감소&lt;/span&gt;&lt;/b&gt;한 곳&lt;br /&gt;&amp;nbsp; 2) 사업계획승인건수, 건축허가 건수가 직전 연도보다 급격히 감소하는 지역&lt;br /&gt;&lt;br /&gt;3. 투기 및 주거불안의 우려가 있는 곳&lt;br /&gt;&amp;nbsp; 1) 해당 지역이 속하는 시/도의 주택보급률이 전국 평균 이하인 곳&lt;br /&gt;&amp;nbsp; 2) 해당 지역이 속하는 시/도의 자가주택비율이 전국 평균 이하인 곳&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 10.3489%; height: 17px;&quot;&gt;조정대상지역&lt;/td&gt;
&lt;td style=&quot;width: 7.20924%; height: 17px;&quot;&gt;국장&lt;/td&gt;
&lt;td style=&quot;width: 52.4418%; height: 17px;&quot;&gt;과열지역 : 주택 분양 등이 과열되어 있거나 과열될 우려가 있는 곳&lt;br /&gt;위축지역 : 주택의 분양/매매 등 거래가 위축되어 있거나 위축될 우려가 있는 지역&lt;br /&gt;&lt;br /&gt;과열지역&lt;br /&gt;조정대상지역지정직전월 부터 소급하여 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;3개월간&lt;/b&gt;&lt;/span&gt; 해당 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;주택가격상승률&lt;/b&gt;&lt;/span&gt;이 그 지역이 속하는 시/도 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소비자 물가상승률&lt;/b&gt;&lt;/span&gt;의&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 1.3배&lt;/span&gt;&lt;/b&gt;를 초과한 지역으로서 다음에 해당하는 지역&lt;br /&gt;&amp;nbsp; &amp;nbsp; 1) 위의 분양가 상한제 3번&lt;br /&gt;&amp;nbsp; &amp;nbsp; 2) 3개월간 분양권 전매거래량이 직전 연도의 같은 기간보다 30% 이상 증가한 지역&lt;br /&gt;&lt;br /&gt;위축지역&lt;br /&gt;&amp;nbsp;조정대상지역지정직전월부터 소급하여 6개월간 평균 주택가격상승률이&lt;b&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;마이너스 1%&lt;/span&gt;&lt;/b&gt; 이하인 지역으로 다음에 해당 하는지역&lt;br /&gt;&amp;nbsp; 1) &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3개월&lt;/span&gt;&lt;/b&gt; 연속 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;주택매매거래량&lt;/span&gt;&lt;/b&gt;이 직전 연도의 같은 기간보다 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;20%&lt;/span&gt; &lt;/b&gt;이상 감소한 지역&lt;br /&gt;&amp;nbsp; 2) &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3개월간&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;평균 &lt;b&gt;미&lt;/b&gt;분양주택의 수&lt;/span&gt;&lt;/b&gt;가 직전 연도의 같은 기간보다&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; 2배&lt;/b&gt; &lt;/span&gt;이상인 지역&lt;br /&gt;&amp;nbsp; 3) 해당 지역이 속하는 시/도의 주택보급률 또는 자가주택비율이 전국 평균을 초과하는 지역&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(공통) 1. 지정권자는 필요없다고 인정 되면 심의를 거쳐 해제해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;(공통)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 2. 시/도지사 또는 시장/군수/구청장은 국장에게 해제를 요청할 수 있음. 국장은 심의를 거쳐 40일 이내 해제 여부 결정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투기과열지구/조정대상지역은 국장이 반기마다 지정의 유지여부를 재검토 해야 한다.&lt;/p&gt;</description>
      <category>공인중개사 2차 공부/공법</category>
      <category>분양가상한제</category>
      <category>조정대상지역</category>
      <category>투기과열지구</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/137</guid>
      <comments>https://precommer.tistory.com/137#entry137comment</comments>
      <pubDate>Sat, 19 Oct 2024 14:23:44 +0900</pubDate>
    </item>
    <item>
      <title>WiX Toolset - 자동폴더구성 (heat.exe)</title>
      <link>https://precommer.tistory.com/136</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;WiX 3.11에서 확인 작성되었습니다.&lt;/p&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;이 문제를 해결해기 위해 자동으로 생성해주는 Tool 인 heat.exe를 제공하고 있다. Heat는 폴더를 보고 그 안에 있는 모든 파일을 평가하고 모든 파일을 설치하는데 필요한 구성요소를 정의해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C:\Program Files (x86)\WiX Toolset v3.11\bin\heat.exe 에 있고, 원하는 곳에서 사용하려면 PATH를 설정 해주면 된다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Windows10기준 :&amp;nbsp; (바탕화면) 내 PC &amp;gt; 마우스 오른쪽 버튼 &amp;gt; 속성 &amp;gt; 고급 시스템 설정 &amp;gt; 고급 &amp;gt; 환경변수 &amp;gt; 시스템 변수 목록에서 PATH를 찾고, C:\Program Files (x86)\WiX Toolset v3.11\bin\를 추가.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;general syntax&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;heat.exe harvestType harvestSource &amp;lt;harvester arguments&amp;gt; -o[ut] sourceFiles.wxs&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래와 같이 Test1.txt, Test2.txt, Test3.txt이 있는 Testing_Heat 폴더가 만들어 두자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;186&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oJkiO/btsE0ISMPiE/IKJVhutWBK3ua6M9D0ufV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oJkiO/btsE0ISMPiE/IKJVhutWBK3ua6M9D0ufV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oJkiO/btsE0ISMPiE/IKJVhutWBK3ua6M9D0ufV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoJkiO%2FbtsE0ISMPiE%2FIKJVhutWBK3ua6M9D0ufV1%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;186&quot; height=&quot;183&quot; data-origin-width=&quot;186&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CASE #1&amp;gt; heat.ext dir &quot;C:\Testing_Heat&quot; -out &quot;.\HeatFile.wxs&quot; 를 입력하면 다음과 같은 출력이 나온다.&lt;/p&gt;
&lt;pre id=&quot;code_1708240509572&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;Wix xmlns=&quot;http://schemas.microsoft.com/wix/2006/wi&quot;&amp;gt;
    &amp;lt;Fragment&amp;gt;
        &amp;lt;DirectoryRef Id=&quot;TARGETDIR&quot;&amp;gt;
            &amp;lt;Directory Id=&quot;dir38A6B94A55C1CA6F17AF72ADC52A6DBE&quot; Name=&quot;Testing_Heat&quot; /&amp;gt;
        &amp;lt;/DirectoryRef&amp;gt;
    &amp;lt;/Fragment&amp;gt;
    &amp;lt;Fragment&amp;gt;
        &amp;lt;DirectoryRef Id=&quot;dir38A6B94A55C1CA6F17AF72ADC52A6DBE&quot;&amp;gt;
            &amp;lt;Component Id=&quot;cmp412A0F156198A904E08BAD62798E9040&quot; Guid=&quot;PUT-GUID-HERE&quot;&amp;gt;
                &amp;lt;File Id=&quot;filD3AB479F6FC048DD35542912379125EF&quot; KeyPath=&quot;yes&quot; Source=&quot;SourceDir\Test3.txt&quot; /&amp;gt;
            &amp;lt;/Component&amp;gt;
        &amp;lt;/DirectoryRef&amp;gt;
    &amp;lt;/Fragment&amp;gt;
    &amp;lt;Fragment&amp;gt;
        &amp;lt;DirectoryRef Id=&quot;dir38A6B94A55C1CA6F17AF72ADC52A6DBE&quot;&amp;gt;
            &amp;lt;Component Id=&quot;cmp874424846728A79118411FBC5638AD33&quot; Guid=&quot;PUT-GUID-HERE&quot;&amp;gt;
                &amp;lt;File Id=&quot;fil05308F14B9AF775E569130938A1E26EF&quot; KeyPath=&quot;yes&quot; Source=&quot;SourceDir\Test1.txt&quot; /&amp;gt;
            &amp;lt;/Component&amp;gt;
        &amp;lt;/DirectoryRef&amp;gt;
    &amp;lt;/Fragment&amp;gt;
    &amp;lt;Fragment&amp;gt;
        &amp;lt;DirectoryRef Id=&quot;dir38A6B94A55C1CA6F17AF72ADC52A6DBE&quot;&amp;gt;
            &amp;lt;Component Id=&quot;cmpF0957E8EA28E012F21BE94CBF57600CE&quot; Guid=&quot;PUT-GUID-HERE&quot;&amp;gt;
                &amp;lt;File Id=&quot;filB99BE09CA42546F3A65FDBA1E96A3B91&quot; KeyPath=&quot;yes&quot; Source=&quot;SourceDir\Test2.txt&quot; /&amp;gt;
            &amp;lt;/Component&amp;gt;
        &amp;lt;/DirectoryRef&amp;gt;
    &amp;lt;/Fragment&amp;gt;
&amp;lt;/Wix&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에서의 문제점은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) Testing_Heat 이라는 폴더명을 가진 폴더가 생성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) Guid 값이 &quot;PUT-GUID-HERE&quot;로 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) file의 Source attribute가 SorceDir 안의 각 파일로 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 이러한 모든 구성 요소가 ComponentGroup 으로 그룹핑 되었으면 좋겠음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 몇가지 인수를 더 추가해봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;heat&amp;nbsp;dir&amp;nbsp;&quot;C:\Testing_Heat&quot;&amp;nbsp;-dr&amp;nbsp;MyProgramDir&amp;nbsp;-cg&amp;nbsp;NewFilesGroup&amp;nbsp;-gg&amp;nbsp;-g1&amp;nbsp;-sf&amp;nbsp;-srd&amp;nbsp;-var&amp;nbsp;&quot;var.MyDir&quot;&amp;nbsp;-out&amp;nbsp;&quot;HeatFile2.wxs&quot;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 179px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 17px;&quot;&gt;&lt;b&gt;Argument&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 17px;&quot;&gt;&lt;b&gt;what it does&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 20px;&quot;&gt;-cg &amp;lt;ComponentGroup&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;ComponentGroup의 이름으로 &lt;/span&gt;Heat가 Component를 그룹핑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 40px;&quot;&gt;-dr &amp;lt;DirectoryName&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 40px;&quot;&gt;DirectoryName 하위에 Component들이 복사됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 17px;&quot;&gt;-gg&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 17px;&quot;&gt;GUID 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 17px;&quot;&gt;-g1&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 17px;&quot;&gt;GUID에 중괄호 없애기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 17px;&quot;&gt;-sfrag&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 17px;&quot;&gt;기본적으로 Heat는 각 Component와 Directory 구조를 별도의 Fragment 요소에 넣는데, 이를 동일한 Fragment에 넣어줌.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 17px;&quot;&gt;-srd&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 17px;&quot;&gt;파일이 있는 폴더를 수집할 이유가 없으므로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.0465%; height: 17px;&quot;&gt;-var &amp;lt;VarName&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.9535%; height: 17px;&quot;&gt;VarName란 이름으로 SourceDir에 추가 됨. 향후 VarName은 설정해줘야 함.&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;pre id=&quot;code_1708240994457&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;Wix xmlns=&quot;http://schemas.microsoft.com/wix/2006/wi&quot;&amp;gt;
    &amp;lt;Fragment&amp;gt;
        &amp;lt;DirectoryRef Id=&quot;MyProgramDir&quot; /&amp;gt;
    &amp;lt;/Fragment&amp;gt;
    &amp;lt;Fragment&amp;gt;
        &amp;lt;ComponentGroup Id=&quot;NewFilesGroup&quot;&amp;gt;
            &amp;lt;Component Id=&quot;cmp6E6E0088162FB06CBCEA9A4AA7CBC603&quot; Directory=&quot;MyProgramDir&quot; Guid=&quot;42999FA2-B476-4972-A2A4-A343108A3353&quot;&amp;gt;
                &amp;lt;File Id=&quot;filCA67D5B125E878518FEA8F7FB62EF550&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.MyDir)\Test1.txt&quot; /&amp;gt;
            &amp;lt;/Component&amp;gt;
            &amp;lt;Component Id=&quot;cmpC3D97EF2ADF77EB61AEF04285A25C2D2&quot; Directory=&quot;MyProgramDir&quot; Guid=&quot;6A3CB8CB-E7A6-42B2-9C60-56D6279B3450&quot;&amp;gt;
                &amp;lt;File Id=&quot;filA2FD0B78B439D62B0C28A829A9508C01&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.MyDir)\Test2.txt&quot; /&amp;gt;
            &amp;lt;/Component&amp;gt;
            &amp;lt;Component Id=&quot;cmp5B1A530DE50F4D3437F2171E2CAB91A6&quot; Directory=&quot;MyProgramDir&quot; Guid=&quot;FE272604-7A5C-4CAE-93D7-27C642D32E17&quot;&amp;gt;
                &amp;lt;File Id=&quot;fil3C980C5A1D26D4B12D481104B14E98D2&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.MyDir)\Test3.txt&quot; /&amp;gt;
            &amp;lt;/Component&amp;gt;
        &amp;lt;/ComponentGroup&amp;gt;
    &amp;lt;/Fragment&amp;gt;
&amp;lt;/Wix&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Component가 그룹화 되어 있고, Component의 GUID가 있으며 내가 만드는 MyProgramDir 폴더에 설치되고, File은 Source에서 $(var.MyDir) 변수를 사용합니다. 이 구성요소를 사용하고 싶다면 아래 처럼 ComponentGroupRef에 ComponentGroup의 Id를 적어주면 된다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708241326313&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;Feature ID=&quot;ProductFeature&quot;
         Title=&quot;Main Product&quot;
         Level=&quot;1&quot;&amp;gt;
&amp;lt;ComponentGroupRef Id=&quot;NewFilesGroup&quot; /&amp;gt;
&amp;lt;/Feature&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 &amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/PacktPublishing/WiX-3.6-A-Developer-s-Guide-to-Windows-Installer-XML/tree/master/Chapter%202/Heat%20example&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/PacktPublishing/WiX-3.6-A-Developer-s-Guide-to-Windows-Installer-XML/tree/master/Chapter%202/Heat%20example&lt;/a&gt;&lt;/p&gt;</description>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/136</guid>
      <comments>https://precommer.tistory.com/136#entry136comment</comments>
      <pubDate>Sun, 18 Feb 2024 16:43:18 +0900</pubDate>
    </item>
    <item>
      <title>WiX Toolset - 빈폴더 생성하기</title>
      <link>https://precommer.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;WiX toolset 3.11 버전 기준으로 작성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 Windows Installer에서는 빈 폴더를 만들 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 비어 있는 Component 내에서 CreateFolder를 사용하면 빈 폴더를 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 소스를 보면 기본 어플리케이션 폴더 내에 EmptyFolder라는 새 Directory를 추가 하고, DirectoryRef를 사용하여 이 Directory에 Component를 추가한다. 이 용도로 사용할 파일이 없으므로 Component의 KeyPath를 yes로 설정하고, CrateFolder를 추가하여 windows Installer에게 폴더를 생성해야 함을 알려준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708238225597&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;Directory Id=&quot;TARGETDIR&quot; Name=&quot;SourceDir&quot;&amp;gt;
    &amp;lt;Directory Id=&quot;ProgramFilesFolder&quot;&amp;gt;
        &amp;lt;Directory Id=&quot;INSTALLFOLDER&quot; Name=&quot;EmptyFolderExample&quot;&amp;gt;
            &amp;lt;Directory Id=&quot;EmptyFolderDir&quot; Name=&quot;EmptyFolder&quot; /&amp;gt;
        &amp;lt;/Directory&amp;gt;
    &amp;lt;/Directory&amp;gt;
&amp;lt;/Directory&amp;gt;

&amp;lt;DirectoryRef Id=&quot;EmptyFolderDir&quot;&amp;gt;
  &amp;lt;Component Id=&quot;CMP_MyEmptyDir&quot;
           Guid=&quot;85DAD4AE-6404-4A40-B713-43538091B9D3&quot;
           KeyPath=&quot;yes&quot;&amp;gt;
    &amp;lt;CreateFolder /&amp;gt;
  &amp;lt;/Component&amp;gt;
&amp;lt;/DirectoryRef&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 소스 &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/PacktPublishing/WiX-3.6-A-Developer-s-Guide-to-Windows-Installer-XML/tree/master/Chapter%202/Empty%20folder%20example&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/PacktPublishing/WiX-3.6-A-Developer-s-Guide-to-Windows-Installer-XML/tree/master/Chapter%202/Empty%20folder%20example&lt;/a&gt;&lt;/p&gt;</description>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/135</guid>
      <comments>https://precommer.tistory.com/135#entry135comment</comments>
      <pubDate>Sun, 18 Feb 2024 15:47:35 +0900</pubDate>
    </item>
    <item>
      <title>WiX Toolset - 기본 구성 요소 설명</title>
      <link>https://precommer.tistory.com/134</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;WiX Toolset 3.11 버전 기준으로 작성됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The File element&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;File element 는 File을 최종 사용자의 컴퓨터에 복사하려는 각 파일을 지정하는데 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연하게도 파일 경로를 식별하는 Source attribute은 꼭 작성해줘야 하고, Id, Name, KeyPath는 옵션입니다. Id 속성은 MSI 데이터베이스 행의 기본 키가 된다. 고유한 것이어야 하지만 File element를 참조한다는 점을 분명히 하기 위해 FILE로 시작하는 것을 고려할 수 있겠다. 설정 하지 않는다면 Source attribute의 이름으로 설정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 중요 파일로 표시하려면 (삭제 혹은 누락된 경우 복구) 해당 파일을 구성 요소의 KeyPath파일로 설정하면 된다. Component element 내에 하나의 파일만 배치해야 하므로 거의 모든 경우 해당 파일은 KeyPath 파일이어야 한다. 설정 하지 않는다면 구성 요소의 첫번째 파일이 자동으로 KeyPath 파일이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외, Hidden과 ReadOnly attribute 또한 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Hidden : 사용자가 숨겨진 파일을 표시하도록 폴더옵션을 설정하지 않으면 파일이 표시 되지 않는다. 숨김파일 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;ReadOnly&lt;span&gt; : 읽을 수는 있지만 파일 속성을 변경하지 않는 한 수정할 수 없다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;아래는 작성 예이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708219172664&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;Component Id =&quot;CMP_NonOverwriteATXT&quot;
               Guid =&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;
      &amp;lt;File Id=&quot;FILE_NonOverwriteATXT&quot;
            Source=&quot;NonOverwiteA.txt&quot;
            Name=&quot;NonOverwiretA&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드에서는 NonOverwiteA.txt 파일이 WiX 프로그램 내에 있으므로 상대경로를 써서 작성을 하였는데, 다른 폴더에 있는 경우 절대 경로(&quot;D:\ NonOverwiteA.txt &quot;)나 상대 경로 (&quot;..\..\&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;NonOverwiteA.txt&quot;)&lt;/span&gt; 를 통해서 지정할 수 있다. 또 다른 한가지 방법은 preprocessor variable에 특정 경로를 지정하고, 소스에서 사용하는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래처럼 지정해주고, 소스 내에서는 var.FilePath로 사용하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2p5Hh/btsE1EQe4W1/L7w8l5gblakuXNv7VqCZC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2p5Hh/btsE1EQe4W1/L7w8l5gblakuXNv7VqCZC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2p5Hh/btsE1EQe4W1/L7w8l5gblakuXNv7VqCZC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2p5Hh%2FbtsE1EQe4W1%2FL7w8l5gblakuXNv7VqCZC0%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;1214&quot; height=&quot;352&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708220549569&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;    &amp;lt;Component Id =&quot;CMP_NonOverwiteATXT&quot;
               Guid =&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;
      &amp;lt;File Source=&quot;$(var.FilePath)NonOverwiteA.txt&quot; /&amp;gt;
    &amp;lt;/Component&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The Directory element&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만든 프로그램을 C:\Program Files\ 이나 C:\Windows\System\ 등으로 복사하려면 어떻게 해야 할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Window Installer에서 제공하는 여러 디렉토리 속성을 사용하여 Directory element를 중첩으로 추가해주면 된다. 한가지 알아야 되는 점은 Id 속성이 TARGETDIR이고, 이름이 SourceDir인 Directory element로 시작을 해야 한다. 설치의 루트 디렉토리라고 생각하면 될 듯 하다. 따라서 항상 먼저 생성되고, 그 안에 다른 모든 Directory element들을 중첩하면 된다.&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;Directory element에는 Directory 테이블에서 기본 키 역할을 하는 Id속성이 있고, 위에 설명 처럼 미리 정의된 이름을 사용하거나 직접 정의할 수 있다. 폴더의 이름은 Name attribute에 지정한다. 이게 없으면 폴더가 생성되지 않고, 그 안에 들어갈 모든 파일이 대신 상위 폴더에 배치 된다. 기 정의된 Directory에는 Name attribute를 제공할 필요가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Directory 사용 예시 &amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708227761507&quot; class=&quot;html xml&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;Wix ....&amp;gt;
  &amp;lt;Product ....&amp;gt;
    &amp;lt;Package .... /&amp;gt;

    &amp;lt;Directory Id=&quot;TARGETDIR&quot;
               Name=&quot;SourceDir&quot;&amp;gt;
      &amp;lt;Directory Id=&quot;ProgramFilesFolder&quot;&amp;gt;
        &amp;lt;Directory Id=&quot;MyProgramDir&quot;
                   Name=&quot;MyProgramName&quot; /&amp;gt;
      &amp;lt;/Directory&amp;gt;
    &amp;lt;/Directory&amp;gt;
  &amp;lt;/Product&amp;gt;
&amp;lt;/Wix&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 88px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;속성&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;ProgramFile64Folder&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;64비트 Program Files 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;ProgramFileFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;32비트 Program Fiels 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;AppDataFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;현재 사용자에 대한 Roaming 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;FontsFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Fonts 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;LocalAppDataFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;local 어플리케이션이 포함된 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;StartMenuFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Start menu 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;StartupFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Startup 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;System64Floder&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;System64 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;SystemFolder&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;현재 사용자에 대한 System 폴더의 전체 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/windows/win32/msi/property-reference?redirectedfrom=MSDN&quot;&gt;https://learn.microsoft.com/ko-kr/windows/win32/msi/property-reference?redirectedfrom=MSDN&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The Component element&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows Installer에서는 모든 파일이 설치되기 전에 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Component&lt;span&gt; &lt;/span&gt;&lt;/span&gt;element에 래핑될 것으로 예상합니다. 항상 고유한 GUID를 갖는 구성 요소를 통해 Windows는 최종 사용자의 컴퓨터에 설치된 모든 파일을 추척할 수 있습니다. 설치하는 동안 이 정보는 Registry에 저장됩니다. 이를 통해 Windows는 제거 중에 제품의 모든 부분을 찾아 SW를 완전히 제거할 수 있습니다. 또한 이를 사용하여 복구 중에 누락된 파일을 교체할 수 있습니다. 이는 MSI 파일을 마우스 오른쪽 버튼으로 클릭하고 복구를 선택하여 실행할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 Component element는 GUI attribute를 통해 고유한 GUID를 가져 옵니다. Visual Studio에서 GUID는 &quot;도구 &amp;gt; GUID 만들기&quot;를 통해서 생성하고 레지스트리 형식을 사용하여 새로운 GUID를 복사합니다. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Component element ID 속성은 작성자가 만들어야 하며, 이는 MSI 데이터베이스 구성 요소의 기본 키 역할을 하므로 각 키도 고유해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Component를 생성하는 방법 1&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708232555324&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;Component Id =&quot;CMP_NonOverwriteATXT&quot;
               Guid =&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;
      &amp;lt;File Id=&quot;FILE_NonOverwriteATXT&quot;
            Source=&quot;NonOverwiteA.txt&quot;
            Name=&quot;NonOverwiretA&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Direcotry에 Component를 추가하는 방법 1&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 직접추가, 가장 간단하지만 파일과 폴더가 여러개라면 ??&lt;/p&gt;
&lt;pre id=&quot;code_1708232978226&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;Directory Id =&quot;TARGETDIR&quot;
               Name=&quot;SourceDir&quot;&amp;gt;
      &amp;lt;Directory Id=&quot;ProgramFilesFolder&quot;&amp;gt;
        &amp;lt;Directory Id=&quot;MyProgramDir&quot;
                   Name=&quot;first directory&quot;&amp;gt;
                   
          &amp;lt;Component Id=&quot;CMP_NonOverwriteATXT&quot;
                     Guid=&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;  
            &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteATXT&quot;
                  Source=&quot;NonOverwiteA.txt&quot;
                  KeyPath=&quot;yes&quot;/&amp;gt;
          &amp;lt;/Component&amp;gt;
        
        &amp;lt;/Directory&amp;gt;
      &amp;lt;/Directory&amp;gt;
    &amp;lt;/Directory&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Direcotry에 Component를 추가하는 방법 2&amp;gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;- DIrectoryRef element를 사용하여 Direcotry를 참조. Directory에 File을 추가하는 것과 Directory 생성부분을 분리&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708233402443&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;Directory Id =&quot;TARGETDIR&quot;
               Name=&quot;SourceDir&quot;&amp;gt;
      &amp;lt;Directory Id=&quot;ProgramFilesFolder&quot;&amp;gt;
        &amp;lt;Directory Id=&quot;MyProgramDir&quot;
                   Name=&quot;first directory&quot;&amp;gt;
        &amp;lt;/Directory&amp;gt;
      &amp;lt;/Directory&amp;gt;
    &amp;lt;/Directory&amp;gt;

    &amp;lt;DirectoryRef Id=&quot;MyProgramDir&quot;&amp;gt;
      &amp;lt;Component Id=&quot;CMP_NonOverwriteATXT&quot;
        Guid=&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;

        &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteATXT&quot;
              Source=&quot;NonOverwiteA.txt&quot;
              KeyPath=&quot;yes&quot;/&amp;gt;
      &amp;lt;/Component&amp;gt; 
    &amp;lt;/DirectoryRef&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Direcotry에 Component를 추가하는 방법 3&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;- ComponentGroup 내부에 구성 요소를 그룹화하고 해당 Directory element를 사용하여 대상 Directory를 설정.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708233591755&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;Directory Id =&quot;TARGETDIR&quot;
               Name=&quot;SourceDir&quot;&amp;gt;
      &amp;lt;Directory Id=&quot;ProgramFilesFolder&quot;&amp;gt;
        &amp;lt;Directory Id=&quot;MyProgramDir&quot;
                   Name=&quot;first directory&quot;&amp;gt;
        &amp;lt;/Directory&amp;gt;
      &amp;lt;/Directory&amp;gt;
    &amp;lt;/Directory&amp;gt;

  &amp;lt;ComponentGroup Id=&quot;ProductComponents&quot;
                Directory=&quot;MyProgramDir&quot;&amp;gt;
    &amp;lt;Component Id=&quot;CMP_NonOverwriteATXT&quot;
              Guid=&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;
      &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteATXT&quot;
            Source=&quot;NonOverwiteA.txt&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;

    &amp;lt;Component Id=&quot;CMP_NonOverwriteBTXT&quot;
      Guid=&quot;D5F82112-A68C-4C3B-9478-54BE29151603&quot;&amp;gt;

      &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteBTXT&quot;
            Source=&quot;NonOverwiteB.txt&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;
  &amp;lt;/ComponentGroup&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The DirectoryRef element&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Directory 구성을 먼저 다 하고, 그 이후에 DirectoryRef를 통해 Directory에 들어갈 파일들을 아래와 같이 작성할 수 있다. 여러개의 Component들을 각각의 DirectoryRef elment를 사용하여 작성할 수도 있고, 하나의 DirectoryRef elment에 여러개의 Component들을 배치할 수도 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1708234334638&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;Directory Id =&quot;TARGETDIR&quot;
               Name=&quot;SourceDir&quot;&amp;gt;
      &amp;lt;Directory Id=&quot;ProgramFilesFolder&quot;&amp;gt;
        &amp;lt;Directory Id=&quot;MyProgramDir&quot;
                   Name=&quot;first directory&quot;&amp;gt;
        &amp;lt;/Directory&amp;gt;
      &amp;lt;/Directory&amp;gt;
    &amp;lt;/Directory&amp;gt;

    
  &amp;lt;DirectoryRef Id=&quot;MyProgramDir&quot;&amp;gt;
    &amp;lt;Component Id=&quot;CMP_NonOverwriteATXT&quot;
      Guid=&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;

      &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteATXT&quot;
            Source=&quot;NonOverwiteA.txt&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;

    &amp;lt;Component Id=&quot;CMP_NonOverwriteBTXT&quot;
      Guid=&quot;D5F82112-A68C-4C3B-9478-54BE29151603&quot;&amp;gt;

      &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteBTXT&quot;
            Source=&quot;NonOverwiteB.txt&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;
  &amp;lt;/DirectoryRef&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The ComponentGroup element&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ComponentGroup은 Component를 그룹화하는데 사용된다. 여러개의 Component를 참조하는 대신 그룹화 하여 하나의 GomponentGroup 참조하므로 유용하게 사용할 수 있다. ComponentGroup에 Directory attribute을 사용하여 포함될 Directory를 지정할 수 있다. ComponentGroup 대신 Component에서도 지정할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;pre id=&quot;code_1708235090169&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &amp;lt;ComponentGroup Id=&quot;ProductComponents&quot;
                Directory=&quot;MyProgramDir&quot;&amp;gt;
    &amp;lt;Component Id=&quot;CMP_NonOverwriteATXT&quot;
              Guid=&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;
      &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteATXT&quot;
            Source=&quot;NonOverwiteA.txt&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;

    &amp;lt;Component Id=&quot;CMP_NonOverwriteBTXT&quot;
      Guid=&quot;D5F82112-A68C-4C3B-9478-54BE29151603&quot;&amp;gt;

      &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteBTXT&quot;
            Source=&quot;NonOverwiteB.txt&quot;
            KeyPath=&quot;yes&quot;/&amp;gt;
    &amp;lt;/Component&amp;gt;
  &amp;lt;/ComponentGroup&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DirectoryRef에 Component를 구성하고, 해당 ComponentRef를 통해 ComponentGroup을 지정하는 것도 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1708235419408&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;DirectoryRef Id=&quot;MyProgramDir&quot;&amp;gt;
      &amp;lt;Component Id=&quot;CMP_NonOverwriteATXT&quot;
        Guid=&quot;A93701E5-2344-43D9-B7BE-6E07AC02333D&quot;&amp;gt;

        &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteATXT&quot;
              Source=&quot;NonOverwiteA.txt&quot;
              KeyPath=&quot;yes&quot;/&amp;gt;
      &amp;lt;/Component&amp;gt;

      &amp;lt;Component Id=&quot;CMP_NonOverwriteBTXT&quot;
        Guid=&quot;D5F82112-A68C-4C3B-9478-54BE29151603&quot;&amp;gt;

        &amp;lt;File Id=&quot;FILE_FIRST_DIR_NonOverwriteBTXT&quot;
              Source=&quot;NonOverwiteB.txt&quot;
              KeyPath=&quot;yes&quot;/&amp;gt;
      &amp;lt;/Component&amp;gt;
    &amp;lt;/DirectoryRef&amp;gt;

    &amp;lt;ComponentGroup Id=&quot;ProductComponentGroup&quot;&amp;gt;
      &amp;lt;ComponentRef Id=&quot;CMP_NonOverwriteATXT&quot; /&amp;gt;
      &amp;lt;ComponentRef Id=&quot;CMP_NonOverwriteBTXT&quot; /&amp;gt;
    &amp;lt;/ComponentGroup&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The Fragment element&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치할 파일이 몇개 없다면 상관 없지만&amp;nbsp; 많은 파일을 패키지화 하는 경우 모든 코드를 한곳에 모아두기 보다는 여러개로 분할할 수 있는데 이 때 쓰는 게 Fragment 이다. Fragment는 attribute가 필요하지 않다. 단지 컨테이너 일 뿐이다. 모든 Diretory나 모든 Component 등 그 안에는 무엇이든 배치할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/134</guid>
      <comments>https://precommer.tistory.com/134#entry134comment</comments>
      <pubDate>Sun, 18 Feb 2024 10:43:36 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스] SYSLOG로 CPU 정보 출력하는 리눅스서비스 만들기 #1</title>
      <link>https://precommer.tistory.com/130</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아래 이미지처럼 10초마다 CPU 사용량을 계산해서 출력해주는 프로그램이 있다고 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 프로그램을 작성하고 (아래 파일)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 컴파일하고 (gcc -o printcpu printcpu.cpp)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 실행 시킨다.&amp;nbsp; (./printcpu)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s7xaa/btsfvnUaC4K/UdANieJpbuKXQAhQt6oQ6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s7xaa/btsfvnUaC4K/UdANieJpbuKXQAhQt6oQ6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s7xaa/btsfvnUaC4K/UdANieJpbuKXQAhQt6oQ6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs7xaa%2FbtsfvnUaC4K%2FUdANieJpbuKXQAhQt6oQ6K%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;354&quot; height=&quot;164&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684126556020&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;time.h&amp;gt;



int main() {
     time_t t;
     struct tm *tm;
     double a[4], b[4], loadavg;
     while (1) {
         t = time(NULL);
         tm = localtime(&amp;amp;t);
         FILE *fp = fopen(&quot;/proc/stat&quot;,&quot;r&quot;);

         fscanf(fp,&quot;%*s %lf %lf %lf %lf&quot;,&amp;amp;a[0],&amp;amp;a[1],&amp;amp;a[2],&amp;amp;a[3]);
         fclose(fp);

         sleep(1);

         fp = fopen(&quot;/proc/stat&quot;,&quot;r&quot;);
         fscanf(fp,&quot;%*s %lf %lf %lf %lf&quot;,&amp;amp;b[0],&amp;amp;b[1],&amp;amp;b[2],&amp;amp;b[3]);
         fclose(fp);

         loadavg = ((b[0]+b[1]+b[2]) - (a[0]+a[1]+a[2])) / ((b[0]+b[1]+b[2]+b[3]) - (a[0]+a[1]+a[2]+a[3]));
         printf(&quot;%04d-%02d-%02d %02d:%02d:%02d CPU usage : %.2f%%\n&quot;,
             tm-&amp;gt;tm_year + 1900, tm-&amp;gt;tm_mon + 1, tm-&amp;gt;tm_mday,
            tm-&amp;gt;tm_hour, tm-&amp;gt;tm_min, tm-&amp;gt;tm_sec, loadavg * 100);

        sleep(9);
    }
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이걸 서비스로 만들어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;su 권한으로 로그인해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp; cd /etc/systemd/system으로 간다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 만들고 싶은 서비스 이름을 만든다. 난,printcpu.service 라는 이름으로 간단하게 만들어봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 위에서 만들었던 printcpu라는 binary를 /usr/sbin에 옮겨야 한다. (아래 ExecStart로 지정했으므로.)&lt;/p&gt;
&lt;pre id=&quot;code_1684125159952&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Unit]
Description=System CPU check

[Service]
ExecStart=/usr/sbin/printcpu 
Restart=on-failure

[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 서비스를 시작해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 만든 서비스 파일을 로드 하고, printcpu라는 서비스를 시작하도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 /etc/systemd/system/printcpu.service라고 만들었으니 서비스 이름은 printcpu.service나 printcpu로 입력 하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1684125279838&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl daemon-reload
sudo systemctl start printcpu.service&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;systemctl status printcpu로 잘 실행되고 있는지 확인해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1451&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh5NZv/btsfOIp5L0D/9QhgEpKcBYuxNcEVj6KKVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh5NZv/btsfOIp5L0D/9QhgEpKcBYuxNcEVj6KKVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh5NZv/btsfOIp5L0D/9QhgEpKcBYuxNcEVj6KKVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh5NZv%2FbtsfOIp5L0D%2F9QhgEpKcBYuxNcEVj6KKVK%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;1451&quot; height=&quot;351&quot; data-origin-width=&quot;1451&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 서비스는 잘 시작 했으나, 10초에 한번씩 로그를 찍게 만드는 부분이 어디에 남아 있는지 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemd 로그는 기본적으로 /var/log/ 아래에 syslog에 남는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo vi /var/log/syslog 라는 명령으로 실행해보면 아래와 같이 printcpu라는 서비스가 시작 했다라는 것만 로그에 남고 실제 printf 로 찍은 로그는 남지 않는 걸 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1387&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbXITE/btsfOKBvxNY/RIkIu6rm9R6qvkTZqtg9p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbXITE/btsfOKBvxNY/RIkIu6rm9R6qvkTZqtg9p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbXITE/btsfOKBvxNY/RIkIu6rm9R6qvkTZqtg9p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbXITE%2FbtsfOKBvxNY%2FRIkIu6rm9R6qvkTZqtg9p1%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;1387&quot; height=&quot;46&quot; data-origin-width=&quot;1387&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 코드를 살펴보자. printf로 찍은 걸 syslog()를 이용하도록 변경해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;syslog.h를 include 해주고, openlog() 함수를 사용하여 로그에 대한 설정을 합니다. 첫 번째 인자는 로그 이름을 지정하는데, 여기서는 &quot;printcpu&quot;라고 지정하고, 두 번째 인자는 로그 옵션을 지정하는데, LOG_PID 옵션을 사용하면 프로세스 ID가 로그에 추가된다. 마지막으로&amp;nbsp; 세 번째 인자는 로그 타입을 지정하는데, LOG_DAEMON을 사용하면 로그를 시스템 로그에 기록하게 된다. 그리고 기존에 printf를 syslog() 함수로 변경한다. 첫 번째 인자에 로그 레벨을 지정할 수 있는데, LOG_INFO를 설정했다. 마지막으로 closelog() 함수를 사용하여 로그를 닫아주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684126172690&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;time.h&amp;gt;
#include &amp;lt;syslog.h&amp;gt;

int main() {
    time_t t;
    struct tm *tm;
    double a[4], b[4], loadavg;

    openlog(&quot;printcpu&quot;, LOG_PID, LOG_DAEMON);

    while (1) {
        t = time(NULL);
        tm = localtime(&amp;amp;t);
        FILE *fp = fopen(&quot;/proc/stat&quot;,&quot;r&quot;);

        fscanf(fp,&quot;%*s %lf %lf %lf %lf&quot;,&amp;amp;a[0],&amp;amp;a[1],&amp;amp;a[2],&amp;amp;a[3]);
        fclose(fp);

        sleep(1);
 
        fp = fopen(&quot;/proc/stat&quot;,&quot;r&quot;);
        fscanf(fp,&quot;%*s %lf %lf %lf %lf&quot;,&amp;amp;b[0],&amp;amp;b[1],&amp;amp;b[2],&amp;amp;b[3]);
        fclose(fp);
 
        loadavg = ((b[0]+b[1]+b[2]) - (a[0]+a[1]+a[2])) / ((b[0]+b[1]+b[2]+b[3]) - (a[0]+a[1]+a[2]+a[3]));
 //       printf(&quot;%04d-%02d-%02d %02d:%02d:%02d CPU usage : %.2f%%\n&quot;,
 //           tm-&amp;gt;tm_year + 1900, tm-&amp;gt;tm_mon + 1, tm-&amp;gt;tm_mday,
 //           tm-&amp;gt;tm_hour, tm-&amp;gt;tm_min, tm-&amp;gt;tm_sec, loadavg * 100);
 
        syslog(LOG_INFO, &quot;%04d-%02d-%02d %02d:%02d:%02d CPU usage : %.2f%%\n&quot;,
            tm-&amp;gt;tm_year + 1900, tm-&amp;gt;tm_mon + 1, tm-&amp;gt;tm_mday,
            tm-&amp;gt;tm_hour, tm-&amp;gt;tm_min, tm-&amp;gt;tm_sec, loadavg * 100);
 
        sleep(9);
    }
 
    closelog();
    return 0;
 }&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;다시 컴파일하고, binary를 /usr/sbin에 옮긴다. 기존에 서비스가 돌고 있으므로 정지를 시켜줘야 한다. 이땐 sudo systemctl stop printcpu를 이용하자. binary 파일 복사가 되었으면 다시 서비스를 시작해보자. 그리고 /var/log/syslog를 보면 아래와 같이 의도한대로 INFO type으로 printcpu라는 이름으로 로그가 남는 걸 확인할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs1Bn5/btsfOJbAaXj/G7mODIwpomLL612G3gOrIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs1Bn5/btsfOJbAaXj/G7mODIwpomLL612G3gOrIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs1Bn5/btsfOJbAaXj/G7mODIwpomLL612G3gOrIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs1Bn5%2FbtsfOJbAaXj%2FG7mODIwpomLL612G3gOrIK%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;739&quot; height=&quot;262&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 불필요한 로그가 많이 남으므로 서비스는 종료해놓도록 하자.&amp;nbsp;&lt;/p&gt;</description>
      <category>linux service</category>
      <category>리눅스서비스</category>
      <category>리눅스서비스만들기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/130</guid>
      <comments>https://precommer.tistory.com/130#entry130comment</comments>
      <pubDate>Mon, 15 May 2023 11:49:33 +0900</pubDate>
    </item>
    <item>
      <title>리눅스에서 서비스 만들기</title>
      <link>https://precommer.tistory.com/126</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에서 서비스로 만들어서 구성하고 싶은 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만든 스크립트나 실행 파일이 백그라운드에서 실행이 되게끔 하고 싶거나 시스템이 재부팅 되어도 자동 실행 되게 하고 싶은 경우 혹은 종료 되었을 때&amp;nbsp; 자동으로 다시 시작하게끔 설정하고 싶은 경우다. 실행 파일을 실행하는 것보다 관리하기도 편하고 만드는 방법도 그렇게 어렵지 않다. 간단하게 리눅스에서 서비스 만드는 방법에 대해서 확인해보도록 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;cd /&lt;span&gt;etc&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;systemd&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;system&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;your-service.service라는 파일을 만들고 작성하자. (아래는 rsyslog.service라는 서비스 스크립트)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1682585458210&quot; class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Unit]
Description=System Logging Service
Requires=syslog.socket
Documentation=man:rsyslogd(8)
Documentation=man:rsyslog.conf(5)
Documentation=https://www.rsyslog.com/doc/

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n -iNONE
StandardOutput=null
Restart=on-failure

# Increase the default a bit in order to allow many simultaneous
# files to be monitored, we might need a lot of fds.
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target
Alias=syslog.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 새 서비스를 포함하도록 서비스 파일을 다시 로드 하자.&lt;/p&gt;
&lt;pre id=&quot;code_1682585968222&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl daemon-reload&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;4. 서비스 시작&lt;/p&gt;
&lt;pre id=&quot;code_1682585984034&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl start your-service.service&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;5. 서비스 상태를 확인하려면&lt;/p&gt;
&lt;pre id=&quot;code_1682586000297&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl status example.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; letter-spacing: 0px;&quot;&gt;6. 재부팅할 때마다 서비스를 활성화하려면&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682586028265&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl enable example.service&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;7. 재부팅할 때마다 서비스를 비활성화하려면&lt;/p&gt;
&lt;pre id=&quot;code_1682586063704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl disable example.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl start: 서비스를 시작&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #232629; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;systemctl stop: 서비스를 중지&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #232629; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;systemctl restart: 서비스를 중지했다가 다시 시작&lt;/p&gt;</description>
      <category>Linux</category>
      <category>systemctl</category>
      <category>리눅스데몬</category>
      <category>리눅스에서서비스만들기</category>
      <category>서비스만들기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/126</guid>
      <comments>https://precommer.tistory.com/126#entry126comment</comments>
      <pubDate>Thu, 27 Apr 2023 18:02:03 +0900</pubDate>
    </item>
    <item>
      <title>[linux] dpkg: error: 2 expected programs not found in PATH or not executable 오류</title>
      <link>https://precommer.tistory.com/125</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;dpkg:&amp;nbsp;warning:&amp;nbsp;'ldconfig'&amp;nbsp;not&amp;nbsp;found&amp;nbsp;in&amp;nbsp;PATH&amp;nbsp;or&amp;nbsp;not&amp;nbsp;executable &lt;br /&gt;dpkg:&amp;nbsp;warning:&amp;nbsp;'start-stop-daemon'&amp;nbsp;not&amp;nbsp;found&amp;nbsp;in&amp;nbsp;PATH&amp;nbsp;or&amp;nbsp;not&amp;nbsp;executable &lt;br /&gt;dpkg:&amp;nbsp;error:&amp;nbsp;2&amp;nbsp;expected&amp;nbsp;programs&amp;nbsp;not&amp;nbsp;found&amp;nbsp;in&amp;nbsp;PATH&amp;nbsp;or&amp;nbsp;not&amp;nbsp;executable&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.bashrc를 열고 맨 마지막에 아래와 같이 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(.bashrc는 각 계정별로 존재, root로 접근했으면 /root/.bashrc, user1인 경우 /home/user1/.bashrc)&lt;/p&gt;
&lt;pre id=&quot;code_1681380859432&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #232629; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;저장하고&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #232629; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;적용 source .bashrc&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #232629; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #232629; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>'start-stop-daemon' not found in PATH or not executable</category>
      <category>dpkg에러</category>
      <category>ldconfig' not found in PATH or not executable</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/125</guid>
      <comments>https://precommer.tistory.com/125#entry125comment</comments>
      <pubDate>Thu, 13 Apr 2023 19:16:33 +0900</pubDate>
    </item>
    <item>
      <title>modbusTCP client linux c code 예제</title>
      <link>https://precommer.tistory.com/123</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;여러개의 device가 연결 되어 있을 때 간단히 확인 하는 코드 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1679338510092&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;sys/socket.h&amp;gt;
#include &amp;lt;netinet/in.h&amp;gt;
#include &amp;lt;arpa/inet.h&amp;gt;

#define MB_TCP_PORT 502

int main(int argc, char *argv[]) {
    int sockfd;
    struct sockaddr_in serv_addr;
    char *ip_addr;
    
    if (argc &amp;lt; 2) {
        fprintf(stderr, &quot;Usage: %s &amp;lt;IP address&amp;gt;\n&quot;, argv[0]);
        exit(EXIT_FAILURE);
    }
    
    ip_addr = argv[1];
    fprintf(stderr, &quot;ipaddress : %s\n&quot;,ip_addr);

    // 소켓 생성
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd &amp;lt; 0) {
        perror(&quot;ERROR opening socket&quot;);
        exit(EXIT_FAILURE);
    }
    
    // 서버 주소 설정
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(MB_TCP_PORT);
    serv_addr.sin_addr.s_addr = inet_addr(ip_addr);
  //a if (inet_pton(AF_INET, ip_addr, &amp;amp;serv_addr.sin_addr) &amp;lt;= 0) {
  //      fprintf(stderr, &quot;Invalid IP address: %s\n&quot;, ip_addr);
  //      exit(EXIT_FAILURE);
  //  }
    
    // 연결 시도
    if (connect(sockfd, (struct sockaddr *)&amp;amp;serv_addr, sizeof(serv_addr)) &amp;lt; 0) {
        perror(&quot;ERROR connecting&quot;);
        exit(EXIT_FAILURE);
    }
    
    // 연결 성공
    fprintf(stderr,&quot;Success to Connected  %s\n\n&quot;, ip_addr);
    
    // 소켓 닫기
    close(sockfd);
    
    return 0;
}&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;/p&gt;
&lt;pre id=&quot;code_1679338567598&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gcc modbustest.c
./a.out 192.168.102.11&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;여러개의 포트를 확인하기 위해서 아래와 같은 shell script 추가 (파일명 check_connection.sh)&lt;/p&gt;
&lt;pre id=&quot;code_1679338654261&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./a.out 192.168.102.11
./a.out 192.168.102.12
./a.out 192.168.102.13
./a.out 192.168.102.14
./a.out 192.168.102.15
./a.out 192.168.102.16
./a.out 192.168.102.17
./a.out 192.168.102.18&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;/p&gt;
&lt;pre id=&quot;code_1679338697126&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./check_connection.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;</description>
      <category>Linux</category>
      <category>MODBUS</category>
      <category>modbus c</category>
      <category>modbus linux c example</category>
      <category>모두버스</category>
      <category>모두버스리눅스코드</category>
      <category>모드버스테스트코드</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/123</guid>
      <comments>https://precommer.tistory.com/123#entry123comment</comments>
      <pubDate>Tue, 21 Mar 2023 04:00:18 +0900</pubDate>
    </item>
    <item>
      <title>[TIP] 리눅스 C 프로그래밍 코드들 모음</title>
      <link>https://precommer.tistory.com/116</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 C programming용 유용한 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. HOME PATH 얻기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Home Path를 하드코딩할 순 없고, 환경변수 HOME을 읽어와서 설정하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;strdup으로 return 했으므로 받는 쪽에서 free를 꼭 해줘야 함. 안하면 memery leakage 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;strdup은 &amp;lt;stdio.h&amp;gt;에 있으며 내부적으로 malloc으로 메모리를 할당함.&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;char *get_homedir(void)
{
    char homedir[MAX_PATH];

    snprintf(homedir, MAX_PATH, &quot;%s&quot;, getenv(&quot;HOME&quot;));
    return strdup(homedir);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>getenv</category>
      <category>HOME</category>
      <category>리눅스 홈 찾기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/116</guid>
      <comments>https://precommer.tistory.com/116#entry116comment</comments>
      <pubDate>Thu, 29 Dec 2022 11:51:02 +0900</pubDate>
    </item>
    <item>
      <title>[TIP] unmount: command not found</title>
      <link>https://precommer.tistory.com/112</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스/데비안에서 이런저런 사유로 unmount 하는 경우가 있는데 왕왕 아래와 같은 오류가 발생한다. (&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 df -h 명령으로 확인 후 SD CARD인 /dev/sdc1을 unmount 하려는 중이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;unmount:&amp;nbsp;command&amp;nbsp;not&amp;nbsp;found&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 unmount는 없는 명령이고, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;umount&lt;/span&gt;&lt;/b&gt;가 실제로 존재하는 명령이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bajk5y/btrSUS2coFR/JWkdWmZANu3hjQD5xyxCSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bajk5y/btrSUS2coFR/JWkdWmZANu3hjQD5xyxCSK/img.png&quot; data-alt=&quot;unmount:&amp;amp;nbsp;command&amp;amp;nbsp;not&amp;amp;nbsp;found&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bajk5y/btrSUS2coFR/JWkdWmZANu3hjQD5xyxCSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbajk5y%2FbtrSUS2coFR%2FJWkdWmZANu3hjQD5xyxCSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;unmount: command not found&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;284&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;unmount:&amp;nbsp;command&amp;nbsp;not&amp;nbsp;found&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;umount /dev/sdc1&lt;/span&gt;&lt;/b&gt;을 입력 후 다시 df -h를 입력하면 제대로 unmount 됨을 확인할 수 있다. &lt;s&gt;윽 dh -h&amp;nbsp;&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwvaJe/btrSU9istFo/j4kKtIcm899Og79PWzFQuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwvaJe/btrSU9istFo/j4kKtIcm899Og79PWzFQuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwvaJe/btrSU9istFo/j4kKtIcm899Og79PWzFQuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwvaJe%2FbtrSU9istFo%2Fj4kKtIcm899Og79PWzFQuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;258&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>unmount: command not found</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/112</guid>
      <comments>https://precommer.tistory.com/112#entry112comment</comments>
      <pubDate>Mon, 5 Dec 2022 15:29:24 +0900</pubDate>
    </item>
    <item>
      <title>[TIP] 데비안/우분투 개발 시 Compile Error</title>
      <link>https://precommer.tistory.com/111</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데비안 이나 우분투로 C 프로그램 개발시 겪을 수 있는 컴파일에러 모음 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;fatal&amp;nbsp;error:&amp;nbsp;curl/curl.h:&amp;nbsp;No&amp;nbsp;such&amp;nbsp;file&amp;nbsp;or&amp;nbsp;directory&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-&amp;gt; sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;libcurl4-gnutls-dev&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;fatal&amp;nbsp;error:&amp;nbsp;openssl/sha.h:&amp;nbsp;No&amp;nbsp;such&amp;nbsp;file&amp;nbsp;or&amp;nbsp;directory&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-&amp;gt; sudo apt install libssl-dev (혹은 sudo apt install libcurl4-openssl-dev)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;bash:&amp;nbsp;cmake:&amp;nbsp;command&amp;nbsp;not&amp;nbsp;found&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-&amp;gt; sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;cmake&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;No&amp;nbsp;package&amp;nbsp;'glib-2.0'&amp;nbsp;found&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-&amp;gt; sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;libglib2.0-dev&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;No&amp;nbsp;package&amp;nbsp;'sqlite3'&amp;nbsp;found&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-&amp;gt; sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;libsqlite3-dev&lt;/p&gt;</description>
      <category>Linux</category>
      <category>cmake: command not found</category>
      <category>fatal error: curl/curl.h: No such file or directory</category>
      <category>fatal error: openssl/sha.h: No such file or directory</category>
      <category>No package 'glib-2.0' found</category>
      <category>No package 'sqlite3' found</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/111</guid>
      <comments>https://precommer.tistory.com/111#entry111comment</comments>
      <pubDate>Mon, 5 Dec 2022 14:46:35 +0900</pubDate>
    </item>
    <item>
      <title>사토시 코인 기타</title>
      <link>https://precommer.tistory.com/108</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2022년 9월 25일 현재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선물카드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4t6e5my&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4t8phvy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4taxx63&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4td8be5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4tfgqp8&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4ths4x9&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4tm2h7c&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4tpawfe&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4trkaqh&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4ttupyf&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광부모집&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.btcs.love/invite/60u98&quot;&gt;https://www.btcs.love/invite/60u98&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해시카드교환방 (카톡 오픈채널)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://open.kakao.com/o/gGebkpbe&quot;&gt;https://open.kakao.com/o/gGebkpbe&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>사토시코인 광부모집</category>
      <category>사토시코인 선물</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/108</guid>
      <comments>https://precommer.tistory.com/108#entry108comment</comments>
      <pubDate>Sun, 25 Sep 2022 10:04:48 +0900</pubDate>
    </item>
    <item>
      <title>[정올 3195][C++] 팀 빙고게임</title>
      <link>https://precommer.tistory.com/107</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 : &lt;a href=&quot;http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&amp;amp;code=3195&amp;amp;sca=be50&quot;&gt;http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&amp;amp;code=3195&amp;amp;sca=be50&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 : USACO&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USACO 제공 reference code ! &lt;a href=&quot;http://usaco.org/current/data/sol_tttt_bronze_open18.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://usaco.org/current/data/sol_tttt_bronze_open18.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경우의 수가 적다. 알파벳을 기준으로 이길 수 있는 가능성을 모두 조사해서&amp;nbsp; 푼듯 하다 !! 간단한데 나는 이 방법이 왜 생각이 나지 않던가 !&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663484201412&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;fstream&amp;gt;
using namespace std;

char B[3][3];

// Does 1 cow win?
int cow_wins(char ch)
{
    // Check diagonals
    if (B[0][0] == ch &amp;amp;&amp;amp; B[1][1] == ch &amp;amp;&amp;amp; B[2][2] == ch) return 1;
    if (B[0][2] == ch &amp;amp;&amp;amp; B[1][1] == ch &amp;amp;&amp;amp; B[2][0] == ch) return 1;

    // Check rows and columns
    for (int i = 0; i &amp;lt; 3; i++) {
        if (B[0][i] == ch &amp;amp;&amp;amp; B[1][i] == ch &amp;amp;&amp;amp; B[2][i] == ch) return 1;
        if (B[i][0] == ch &amp;amp;&amp;amp; B[i][1] == ch &amp;amp;&amp;amp; B[i][2] == ch) return 1;
    }

    return 0;
}

// Test if a team wins based on 3 characters in a row, column, or diagonal
bool check3(char ch1, char ch2, char a, char b, char c)
{
    // All 3 characters have to be either ch1 or ch2
    if (a != ch1 &amp;amp;&amp;amp; a != ch2) return false;
    if (b != ch1 &amp;amp;&amp;amp; b != ch2) return false;
    if (c != ch1 &amp;amp;&amp;amp; c != ch2) return false;

    // ch1 and ch2 have to appear at least once each
    if (a != ch1 &amp;amp;&amp;amp; b != ch1 &amp;amp;&amp;amp; c != ch1) return false;
    if (a != ch2 &amp;amp;&amp;amp; b != ch2 &amp;amp;&amp;amp; c != ch2) return false;

    return true;
}

// Does a team win?
int team_wins(char ch1, char ch2)
{
    // Check diagonals
    if (check3(ch1, ch2, B[0][0], B[1][1], B[2][2])) return 1;
    if (check3(ch1, ch2, B[0][2], B[1][1], B[2][0])) return 1;

    // Check rows and columns
    for (int i = 0; i &amp;lt; 3; i++) {
        if (check3(ch1, ch2, B[0][i], B[1][i], B[2][i])) return 1;
        if (check3(ch1, ch2, B[i][0], B[i][1], B[i][2])) return 1;
    }

    return 0;
}

int main(void)
{
 //   ifstream fin(&quot;tttt.in&quot;);
//    ofstream fout(&quot;tttt.out&quot;);

    for (int i = 0; i &amp;lt; 3; i++)
        for (int j = 0; j &amp;lt; 3; j++)
            cin &amp;gt;&amp;gt; B[i][j];

    int answer1 = 0, answer2 = 0;
    for (char ch = 'A'; ch &amp;lt;= 'Z'; ch++)
        answer1 += cow_wins(ch);
    
    for (char ch1 = 'A'; ch1 &amp;lt;= 'Z'; ch1++)
        for (char ch2 = ch1 + 1; ch2 &amp;lt;= 'Z'; ch2++)
            answer2 += team_wins(ch1, ch2);

    cout &amp;lt;&amp;lt; answer1 &amp;lt;&amp;lt; &quot;\n&quot; &amp;lt;&amp;lt; answer2 &amp;lt;&amp;lt; &quot;\n&quot;;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 코드 #&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 너무 어렵게 풀었나 보다.&amp;nbsp; 세 개를 훑어서 각각 나오는 회수를 기록한다 (어떤 알파벳이 몇번 나왔는지가 체크 되어야 하고, 정렬을 이용하기로 했으므로 구조체로 선언했다.) 그리고 내림차순 정렬한다. 만약 가장 첫번째 항목이 세번 나왔으면 개인이 우승, 두번 나왔으면 팀이 우승한 케이스이다. 이렇게 풀었으나, 문제는 개인이나 팀이나 중복해서 이긴 경우가 체크가 되지 않았다. 그래서 중복 체크를 하기 위해서 우승 했던 개인이나 팀을 저장한 후 비교하는 방법을 택했다. 이렇게 풀지 말기를 바라며 코드는 공개 안하는 걸로......&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정올 3195</category>
      <category>팀빙고게임</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/107</guid>
      <comments>https://precommer.tistory.com/107#entry107comment</comments>
      <pubDate>Sun, 18 Sep 2022 16:14:48 +0900</pubDate>
    </item>
    <item>
      <title>MFC 빌드 에러 ('/ZI' and '/Gy-' command-line options are incompatible)</title>
      <link>https://precommer.tistory.com/105</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CodeProject나 여타 사이트에서 다른 사람의 소스를 가져와서 실행할 때 아래와 같은 에러로 빌드가 되지 않는 경우가 있다. 처음에는 안된나 보다 하다가 찾아보니 설정에서 Debug Information을 변경 하면 이를 방지할 수 있다. 간단히 타인이 만든 프로그램을 실행할 때 아주 유용하다.&lt;/p&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;Build&amp;nbsp;started... &lt;br /&gt;1&amp;gt;------&amp;nbsp;Build&amp;nbsp;started:&amp;nbsp;Project:&amp;nbsp;ListBoxTutorial,&amp;nbsp;Configuration:&amp;nbsp;Debug&amp;nbsp;Win32&amp;nbsp;------ &lt;br /&gt;1&amp;gt;cl&amp;nbsp;:&amp;nbsp;command&amp;nbsp;line&amp;nbsp;warning&amp;nbsp;D9035:&amp;nbsp;option&amp;nbsp;'Gm'&amp;nbsp;has&amp;nbsp;been&amp;nbsp;deprecated&amp;nbsp;and&amp;nbsp;will&amp;nbsp;be&amp;nbsp;removed&amp;nbsp;in&amp;nbsp;a&amp;nbsp;future&amp;nbsp;release &lt;br /&gt;1&amp;gt;cl&amp;nbsp;:&amp;nbsp;command&amp;nbsp;line&amp;nbsp;error&amp;nbsp;D8016:&amp;nbsp;'/ZI'&amp;nbsp;and&amp;nbsp;'/Gy-'&amp;nbsp;command-line&amp;nbsp;options&amp;nbsp;are&amp;nbsp;incompatible &lt;br /&gt;1&amp;gt;Done&amp;nbsp;building&amp;nbsp;project&amp;nbsp;&quot;ListBoxTutorial.vcxproj&quot;&amp;nbsp;--&amp;nbsp;FAILED. &lt;br /&gt;==========&amp;nbsp;Build:&amp;nbsp;0&amp;nbsp;succeeded,&amp;nbsp;1&amp;nbsp;failed,&amp;nbsp;0&amp;nbsp;up-to-date,&amp;nbsp;0&amp;nbsp;skipped&amp;nbsp;==========&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d03SIp/btrJuCvoHoD/VsAgoVVSaHOsNr2lM6CkT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d03SIp/btrJuCvoHoD/VsAgoVVSaHOsNr2lM6CkT0/img.png&quot; data-alt=&quot;'/ZI'&amp;amp;nbsp;and&amp;amp;nbsp;'/Gy-'&amp;amp;nbsp;command-line&amp;amp;nbsp;options&amp;amp;nbsp;are&amp;amp;nbsp;incompatible&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d03SIp/btrJuCvoHoD/VsAgoVVSaHOsNr2lM6CkT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd03SIp%2FbtrJuCvoHoD%2FVsAgoVVSaHOsNr2lM6CkT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;&amp;amp;#39;/ZI&amp;amp;#39; and &amp;amp;#39;/Gy-&amp;amp;#39; command-line options are incompatible&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;546&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;'/ZI'&amp;nbsp;and&amp;nbsp;'/Gy-'&amp;nbsp;command-line&amp;nbsp;options&amp;nbsp;are&amp;nbsp;incompatible&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vE2sD/btrJvkg2Yk3/7KkS4uTy4XCDfsq8JcwS1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vE2sD/btrJvkg2Yk3/7KkS4uTy4XCDfsq8JcwS1k/img.png&quot; data-alt=&quot;변경후&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vE2sD/btrJvkg2Yk3/7KkS4uTy4XCDfsq8JcwS1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvE2sD%2FbtrJvkg2Yk3%2F7KkS4uTy4XCDfsq8JcwS1k%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;714&quot; height=&quot;548&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;변경후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>'/ZI' and '/Gy-'</category>
      <category>MFC빌드에러</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/105</guid>
      <comments>https://precommer.tistory.com/105#entry105comment</comments>
      <pubDate>Fri, 12 Aug 2022 13:00:20 +0900</pubDate>
    </item>
    <item>
      <title>Docker Failed to Initialize on Windows 10 (Docker 오류)</title>
      <link>https://precommer.tistory.com/103</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #525960;&quot;&gt;&lt;span style=&quot;color: #525960;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;사용할 일이 생겨 지금 사용하고 있는 notebook에 docker 최신 버전 (4.11.1)을 설치 했더니 &quot;&lt;span style=&quot;background-color: #ffffff; color: #525960;&quot;&gt;Docker failed to initialize - Docker Desktop is shutting down&quot; 를 표시하며 &lt;/span&gt;실행이 되지 않는다. 내 Notebook의 OS는 Windows 10 Home, 21H2, 19044.1889 이다. 검색해보니, 아래의 폴더를 지우면 된다고 하는데 &lt;span style=&quot;background-color: #ffffff; color: #525960;&quot;&gt;그것조차 나에겐 통하지 않는다.&lt;span&gt;&amp;nbsp; 짐작컨대, 폴더를 지워서 해결되는 경우는 이전에 잘 동작하는 docker를 설치해서 사용하고 있었던 사람들로 추측된다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/Users/AppData/Local/Docker&lt;/li&gt;
&lt;li&gt;/Users/AppData/Roaming/Docker&lt;/li&gt;
&lt;/ol&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: #525960;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;그래서 잘 동작한다고 하는 이전 버전 (4.4.2)을 설치해봤고, 정상 동작함을 확인했다. 여기에서 다시 최신 버전으로 업데이트 하면 문제가 될 것 같긴한데 그건 차후에 다시 ..... 4.4.2를 사용중에도 재 부팅후 다시 실행되지 않는 문제가 있었는데 위의 폴더를 지우고 재 실행 하니 정상적으로 동작 하였다.&amp;nbsp;&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;Docker 4.4.2 windows 설치 파일 경로 :&amp;nbsp;&lt;span style=&quot;background-color: #ffffff; color: #525960;&quot;&gt;&lt;a href=&quot;https://docs.docker.com/desktop/release-notes/#docker-desktop-442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.docker.com/desktop/release-notes/#docker-desktop-442&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsVMSZ/btrJqKF9oSE/KSCxNvFafrzUkyfgkfi3K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsVMSZ/btrJqKF9oSE/KSCxNvFafrzUkyfgkfi3K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsVMSZ/btrJqKF9oSE/KSCxNvFafrzUkyfgkfi3K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsVMSZ%2FbtrJqKF9oSE%2FKSCxNvFafrzUkyfgkfi3K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;docker오류&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;193&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lYln5/btrJpdWPswT/Qseq7XxrcU0qkn1p17hpLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lYln5/btrJpdWPswT/Qseq7XxrcU0qkn1p17hpLK/img.png&quot; data-alt=&quot;docker 설치중&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lYln5/btrJpdWPswT/Qseq7XxrcU0qkn1p17hpLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlYln5%2FbtrJpdWPswT%2FQseq7XxrcU0qkn1p17hpLK%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;703&quot; height=&quot;484&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;docker 설치중&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;589&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMPFck/btrJpdWPyZo/FrToMaTUeHEV9Qz1XK7Cw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMPFck/btrJpdWPyZo/FrToMaTUeHEV9Qz1XK7Cw0/img.png&quot; data-alt=&quot;docker 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMPFck/btrJpdWPyZo/FrToMaTUeHEV9Qz1XK7Cw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMPFck%2FbtrJpdWPyZo%2FFrToMaTUeHEV9Qz1XK7Cw0%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;789&quot; height=&quot;589&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;589&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;docker 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>docker실행안됨</category>
      <category>docker오류</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/103</guid>
      <comments>https://precommer.tistory.com/103#entry103comment</comments>
      <pubDate>Wed, 10 Aug 2022 22:51:55 +0900</pubDate>
    </item>
    <item>
      <title>[mfc] 빌드시 느림, Symbol loading 느림</title>
      <link>https://precommer.tistory.com/102</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio 2019 사용중인데, 간단한 수정 후 빌드시 Microsoft symbol server로 부터 디버깅을 위한 symbol 정보를 가져오느라 한참을 기다려야 하는 경우가 있다. 아래 화면 처럼. 실제 문제가 발생하고 MS에서 제공하고 있는 dll 등의 내부까지 디버깅을 하고 싶은 경우에만 symbol을 가져오도록 하면 될 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0IBv6/btrJmtc9mBE/w8kTFhj0ml2invY36EsuT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0IBv6/btrJmtc9mBE/w8kTFhj0ml2invY36EsuT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0IBv6/btrJmtc9mBE/w8kTFhj0ml2invY36EsuT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0IBv6%2FbtrJmtc9mBE%2Fw8kTFhj0ml2invY36EsuT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;549&quot; height=&quot;173&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Disable 하는 방법은 위의 화면에서 언급된 것처럼 위 팝업의 Cancel을 누르거나 아래 처럼 Tools &amp;gt; Options에서 symbol을 검색해서 나온 symbols 메뉴에서 Microsoft Sysbol Servers 체크를 해제 하면 된다. 일단 빨라서 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oj2AL/btrJj5risgs/Ms8YXkm48atSQ1EvS3JH21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oj2AL/btrJj5risgs/Ms8YXkm48atSQ1EvS3JH21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oj2AL/btrJj5risgs/Ms8YXkm48atSQ1EvS3JH21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foj2AL%2FbtrJj5risgs%2FMs8YXkm48atSQ1EvS3JH21%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;996&quot; height=&quot;610&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Visual Studio 빌드시 느림</category>
      <category>비쥬얼 스튜디오 Symbol loading 느림</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/102</guid>
      <comments>https://precommer.tistory.com/102#entry102comment</comments>
      <pubDate>Wed, 10 Aug 2022 10:41:06 +0900</pubDate>
    </item>
    <item>
      <title>fashion_mnist tensorflow DNN 예제</title>
      <link>https://precommer.tistory.com/99</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;널리 알려진 fashion mnist data에 대한 DNN 구현 예제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;fashion mnist dataset : &lt;a href=&quot;https://github.com/zalandoresearch/fashion-mnist&quot;&gt;https://github.com/zalandoresearch/fashion-mnist&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 총 70,000개&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;-&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;28x28 grayscale image&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 10 classes&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;tensorflow version : 2.6&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1655273340846&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import tensorflow as tf
from tensorflow.keras import layers

from sklearn.model_selection import train_test_split

import numpy as np
import matplotlib.pyplot as plt

tf.__version__&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273489998&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Load training and eval data from tf.keras
(train_data, train_labels), (test_data, test_labels) = \
    tf.keras.datasets.fashion_mnist.load_data()
    
train_data, valid_data, train_labels, valid_labels = \
    train_test_split(train_data, train_labels, test_size=0.1, shuffle=True)

# 이미지 확인
plt.imshow(valid_data[0].reshape(28, 28))
plt.colorbar()
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273505583&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;train_data = train_data /255.
train_data = train_data.reshape(-1, 28 * 28)
train_data = train_data.astype(np.float32)
train_labels = train_labels.astype(np.int32)

test_data = test_data / 255.
test_data = test_data.reshape(-1, 28 * 28)
test_data = test_data.astype(np.float32)
test_labels = test_labels.astype(np.int32)

valid_data = valid_data / 255.
valid_data = valid_data.reshape(-1, 28 * 28)
valid_data = valid_data.astype(np.float32)
valid_labels = valid_labels.astype(np.int32)


print(train_data.shape, train_labels.shape)
print(test_data.shape, test_labels.shape)
print(valid_data.shape, valid_labels.shape)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1655273578345&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def one_hot_label(image, label):
  label = tf.one_hot(label, depth=10)
  return image, label&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273591589&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;batch_size = 32
max_epochs = 10

# for train
train_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_labels))
train_dataset = train_dataset.shuffle(buffer_size=10000)
train_dataset = train_dataset.map(one_hot_label)
train_dataset = train_dataset.repeat().batch(batch_size=batch_size)
print(train_dataset)

# for test
test_dataset = tf.data.Dataset.from_tensor_slices((test_data, test_labels))
test_dataset = test_dataset.map(one_hot_label)
test_dataset = test_dataset.batch(batch_size=batch_size)
print(test_dataset)

# for test
valid_dataset = tf.data.Dataset.from_tensor_slices((valid_data,valid_labels))
valid_dataset = valid_dataset.map(one_hot_label)
valid_dataset = valid_dataset.repeat().batch(batch_size=batch_size)
print(valid_dataset)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273604189&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;model = tf.keras.Sequential()

model.add(layers.Dense(64))
model.add(layers.BatchNormalization())
model.add(layers.Activation('relu'))

model.add(layers.Dense(32))
model.add(layers.BatchNormalization())
model.add(layers.Activation('relu'))

model.add(layers.Dropout(0.2))

model.add(layers.Dense(16))
model.add(layers.BatchNormalization())
model.add(layers.Activation('relu'))

model.add(layers.Dense(10, activation='softmax'))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273616533&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;model.compile(optimizer=tf.keras.optimizers.Adam(1e-4),
              loss=tf.keras.losses.CategoricalCrossentropy(from_logits=False),
              metrics=['accuracy'])&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273625724&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;predictions = model(train_data[0:1], training=False)
print(&quot;Predictions: &quot;, predictions.numpy())&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273636693&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# using `tf.data.Dataset` 
history = model.fit(train_dataset,
                    epochs=max_epochs,
                    steps_per_epoch=int(len(train_data) / batch_size),
                    validation_data=valid_dataset,
                    validation_steps=int(len(train_data) / batch_size))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273653559&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;acc = history.history['accuracy']
val_acc = history.history['val_accuracy']

loss = history.history['loss']
val_loss = history.history['val_loss']

epochs_range = range(max_epochs)

plt.figure(figsize=(8, 8))
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Valid Accuracy')

plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Valid Loss')
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273673206&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;results = model.evaluate(test_dataset)

# loss
print(&quot;loss value: {:.3f}&quot;.format(results[0]))
# accuracy
print(&quot;accuracy value: {:.4f}%&quot;.format(results[1]*100)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273682533&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;itemlist = ['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankel boot']&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1655273692740&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;np.random.seed(219)
test_batch_size = 16
batch_index = np.random.choice(len(test_data), size=test_batch_size, replace=False)

batch_xs = test_data[batch_index]
batch_ys = test_labels[batch_index]
y_pred_ = model(batch_xs, training=False)

fig = plt.figure(figsize=(16, 10))
for i, (px, py) in enumerate(zip(batch_xs, y_pred_)):
  p = fig.add_subplot(4, 8, i+1)
  if np.argmax(py) == batch_ys[i]:
    p.set_title(&quot;y_pred: {}&quot;.format(itemlist[np.argmax(py)]), color='blue')
  else:
    p.set_title(&quot;y_pred: {}&quot;.format(itemlist[np.argmax(py)]), color='red')
  p.imshow(px.reshape(28, 28))
  p.axis('off')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;lt;&amp;lt; 결과 &amp;gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chs2gz/btrESkkH6Jl/4XJQKHgQVyUoaezqGnYCC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chs2gz/btrESkkH6Jl/4XJQKHgQVyUoaezqGnYCC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chs2gz/btrESkkH6Jl/4XJQKHgQVyUoaezqGnYCC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fchs2gz%2FbtrESkkH6Jl%2F4XJQKHgQVyUoaezqGnYCC0%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;248&quot; height=&quot;65&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;65&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xqDce/btrERnI5nFC/h4rAIERYDhciYVkbStCLl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xqDce/btrERnI5nFC/h4rAIERYDhciYVkbStCLl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xqDce/btrERnI5nFC/h4rAIERYDhciYVkbStCLl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxqDce%2FbtrERnI5nFC%2Fh4rAIERYDhciYVkbStCLl1%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;579&quot; height=&quot;532&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m7vKo/btrER16RhsB/StEYCrjY22ZwKalvxR4Da0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m7vKo/btrER16RhsB/StEYCrjY22ZwKalvxR4Da0/img.png&quot; data-alt=&quot;fashion_mnist DNN 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m7vKo/btrER16RhsB/StEYCrjY22ZwKalvxR4Da0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm7vKo%2FbtrER16RhsB%2FStEYCrjY22ZwKalvxR4Da0%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;1055&quot; height=&quot;304&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;fashion_mnist DNN 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Keras</category>
      <category>fashion_mnist DNN 예제</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/99</guid>
      <comments>https://precommer.tistory.com/99#entry99comment</comments>
      <pubDate>Wed, 15 Jun 2022 15:25:01 +0900</pubDate>
    </item>
    <item>
      <title>[C++ STL] pair</title>
      <link>https://precommer.tistory.com/95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;pair는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;두개의 자료형&lt;/span&gt;을 함께 결합해서 사용할 때 사용합니다. 같은 데이터형도 될 수 있으며 서로 다른 데이터형도 될 수 있습니다. 기존에 struct로 구성해서 사용하던 것을 pair를 이용해서 간단히 사용할 수 있습니다. DFS/ BFS 할 때의 좌표 (int x, int y) 정보를 저장할 때 사용할 수도 있고, 두 데이터를 묶을 때 사용하게 됩니다. 만약 두개 이상의 데이터를 묶길 원한다면 tuple을 사용하세요. 혹은 pair안에 pair를 하나 넣어주셔도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;BFS에서 좌표를 저장하는 Queue를 생성할 때에는 아래와 같이 선언하세요.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652004575711&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;queue&amp;lt;pair&amp;lt;int,int&amp;gt;&amp;gt; q;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;book-toc&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Definition&lt;br /&gt;&amp;lt;utility&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;pair 생성/사용 방법&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot;&gt;&lt;code&gt;pair &amp;lt;data_type1, data_type2&amp;gt; Pair_name&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;값을 지정해서 생성하거나 다른 값을 복사해서 생성하거나 혹은 make_pair를 이용해서 생성할 수 있습니다. 그리고 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;첫번째는 first&lt;/span&gt;, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;두번째는 second&lt;/span&gt;로 접근할 수 있고,&amp;nbsp; pair안에 pair를 넣을 수도 있습니다. first, second만 중첩될뿐 사용법은 동일 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot;&gt;&lt;code&gt;// pair::pair example
#include &amp;lt;utility&amp;gt;      // std::pair, std::make_pair
#include &amp;lt;string&amp;gt;       // std::string
#include &amp;lt;iostream&amp;gt;     // std::cout

using namespace std;


int main() {
	pair &amp;lt;string, double&amp;gt; product1;                     // default constructor
	pair &amp;lt;string, double&amp;gt; product2(&quot;tomatoes&quot;, 2.30);   // value init
	pair &amp;lt;string, double&amp;gt; product3(product2);          // copy constructor

	product1 = make_pair(&quot;lightbulbs&quot;, 0.99);   // using make_pair (move)

	product2.first = &quot;shoes&quot;;                  // the type of first is string
	product2.second = 39.90;                   // the type of second is double

	pair &amp;lt;pair&amp;lt;string, double&amp;gt;, pair&amp;lt;string, double&amp;gt;&amp;gt; product4;

	product4.first.first = &quot;Apple&quot;;
	product4.first.second = 1.1;
	product4.second.first = &quot;Banana&quot;;
	product4.second.second = 2.2;

	cout &amp;lt;&amp;lt; &quot;The price of &quot; &amp;lt;&amp;lt; product1.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product1.second &amp;lt;&amp;lt; '\n';
	cout &amp;lt;&amp;lt; &quot;The price of &quot; &amp;lt;&amp;lt; product2.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product2.second &amp;lt;&amp;lt; '\n';
	cout &amp;lt;&amp;lt; &quot;The price of &quot; &amp;lt;&amp;lt; product3.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product3.second &amp;lt;&amp;lt; '\n';
	cout &amp;lt;&amp;lt; &quot;The price of &quot; &amp;lt;&amp;lt; product4.first.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product4.first.second &amp;lt;&amp;lt; '\n';
	cout &amp;lt;&amp;lt; &quot;The price of &quot; &amp;lt;&amp;lt; product4.second.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product4.second.second &amp;lt;&amp;lt; '\n';

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GXB3e/btrBxaTRCwI/0X514lmnc9URxCjhjv3TYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GXB3e/btrBxaTRCwI/0X514lmnc9URxCjhjv3TYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GXB3e/btrBxaTRCwI/0X514lmnc9URxCjhjv3TYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGXB3e%2FbtrBxaTRCwI%2F0X514lmnc9URxCjhjv3TYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;c++ pair&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;124&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;swap&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;두 변수의 값을 swap 해줄때 사용&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652003293767&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// pair::pair example
#include &amp;lt;utility&amp;gt;      // std::pair, std::make_pair
#include &amp;lt;string&amp;gt;       // std::string
#include &amp;lt;iostream&amp;gt;     // std::cout

using namespace std;


int main() {
	pair &amp;lt;string, double&amp;gt; product1;                 // default constructor
	pair &amp;lt;string, double&amp;gt; product2(&quot;banana&quot;, 2.00);   // value init

	product1 = make_pair(&quot;apple&quot;, 1.00);   // using make_pair (move)

	cout &amp;lt;&amp;lt; &quot;Before swap&quot; &amp;lt;&amp;lt; endl;
	cout &amp;lt;&amp;lt; &quot;Product1 : price of &quot; &amp;lt;&amp;lt; product1.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product1.second &amp;lt;&amp;lt; '\n';
	cout &amp;lt;&amp;lt; &quot;Product2 : price of &quot; &amp;lt;&amp;lt; product2.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product2.second &amp;lt;&amp;lt; '\n';

	product1.swap(product2);

	cout &amp;lt;&amp;lt; &quot;After swap&quot; &amp;lt;&amp;lt; endl;
	cout &amp;lt;&amp;lt; &quot;Product1 : price of &quot; &amp;lt;&amp;lt; product1.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product1.second &amp;lt;&amp;lt; '\n';
	cout &amp;lt;&amp;lt; &quot;Product2 : price of &quot; &amp;lt;&amp;lt; product2.first &amp;lt;&amp;lt; &quot; is $&quot; &amp;lt;&amp;lt; product2.second &amp;lt;&amp;lt; '\n';

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D0wP1/btrBtCX55Sq/AefKYnRcKUo7mVTi3HQBJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D0wP1/btrBtCX55Sq/AefKYnRcKUo7mVTi3HQBJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D0wP1/btrBtCX55Sq/AefKYnRcKUo7mVTi3HQBJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD0wP1%2FbtrBtCX55Sq%2FAefKYnRcKUo7mVTi3HQBJK%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;300&quot; height=&quot;143&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;비교연산자 (==, !=, &amp;gt;,&amp;lt;) 사용가능&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>language/C++</category>
      <category>c pair</category>
      <category>c++ stl pair</category>
      <category>make_pair</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/95</guid>
      <comments>https://precommer.tistory.com/95#entry95comment</comments>
      <pubDate>Sun, 8 May 2022 18:57:54 +0900</pubDate>
    </item>
    <item>
      <title>[C++ STL] 순열 (next_permutation, prev_permutation)</title>
      <link>https://precommer.tistory.com/90</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;순열 (&lt;span&gt;permutation) &lt;/span&gt;이란 서로 다른 n개의 원소에서 r개를 중복없이 순서에 상관있게 선택하는 것을 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DFS 등 다른 알고리즘을 통해 구현을 할 수도 있지만, &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;C++ STL에서는 함수를 제공하고 있다.&lt;span&gt;&amp;nbsp;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;next_permutation(오름차순)&lt;/span&gt;과 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;prev_permutation(내림차순)&lt;/span&gt;이 있으며, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;오름차순, 내림차순의 기준은 사전적(lexicographically)&lt;/span&gt;순서 입니다. &lt;span&gt;인자로는 vector, array, string등 요소 값을 갖는 자료형이 될 수 있다. 만약 다음 순열이 존재하면 true를 return 하고, 다음 순열이 존재하지 않는 경우, 첫번째 순열로 재배치 되고 false를 return 한다.&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;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #0000ff;&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;next_permutation&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #008000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;BidirIt first, BidirIt last&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #008000;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #008080;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #0000ff;&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;next_permutation&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #008000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;BidirIt first, BidirIt last, Compare comp&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #008000;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #008080;&quot;&gt;;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Definition&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;lt;algorithm&amp;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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;&lt;span&gt;Parameter &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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;&lt;span&gt;first, last, comp : permutation 범위와 compare 함수를 지정할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;lt;사용예 1 - 4자리 숫자의 순열 표시&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1649596721520&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

int main() {

	vector&amp;lt;int&amp;gt; f(4);
	vector&amp;lt;int&amp;gt; b(4);

	for (int i = 0; i &amp;lt; 4; i++) {
		f[i] = i + 1;
	}

	for (int i = 0; i &amp;lt; 4; i++) {
		b[i] = 4 - i;
	}

	do {
		for (int i = 0; i &amp;lt; 4; i++) {
			cout &amp;lt;&amp;lt; f[i] &amp;lt;&amp;lt; &quot; &quot;;
		}

		cout &amp;lt;&amp;lt; '\n';

	} while (next_permutation(f.begin(), f.end()));

	cout &amp;lt;&amp;lt; &quot;********************************\n&quot;;

	do {

		for (int i = 0; i &amp;lt; 4; i++) {
			cout &amp;lt;&amp;lt; b[i] &amp;lt;&amp;lt; &quot; &quot;;
		}

		cout &amp;lt;&amp;lt; '\n';

	} while (prev_permutation(b.begin(), b.end()));

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;285&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxP037/btryY8Yk9DN/CweKePGtokbBvGOnI3G34k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxP037/btryY8Yk9DN/CweKePGtokbBvGOnI3G34k/img.png&quot; data-alt=&quot;출력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxP037/btryY8Yk9DN/CweKePGtokbBvGOnI3G34k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxP037%2FbtryY8Yk9DN%2FCweKePGtokbBvGOnI3G34k%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;285&quot; height=&quot;578&quot; data-origin-width=&quot;285&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;lt;사용예2 - 문자열&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1649597049268&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

int main()
{
    string s = &quot;aba&quot;;
    sort(s.begin(), s.end());
    do {
        cout &amp;lt;&amp;lt; s &amp;lt;&amp;lt; '\n';
    } while (next_permutation(s.begin(), s.end()));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X65VS/btry2R9kwKA/FqtQ2Uhi5y3o6KHrhr20Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X65VS/btry2R9kwKA/FqtQ2Uhi5y3o6KHrhr20Jk/img.png&quot; data-alt=&quot;출력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X65VS/btry2R9kwKA/FqtQ2Uhi5y3o6KHrhr20Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX65VS%2Fbtry2R9kwKA%2FFqtQ2Uhi5y3o6KHrhr20Jk%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;282&quot; height=&quot;147&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>language/C++</category>
      <category>C++ STL 순열</category>
      <category>next_permutation</category>
      <category>prev_permutation</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/90</guid>
      <comments>https://precommer.tistory.com/90#entry90comment</comments>
      <pubDate>Sun, 8 May 2022 11:10:38 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스] 파일 이름 일괄 변경 / 파일 내용 일괄 변경</title>
      <link>https://precommer.tistory.com/94</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;자주 요긴 하게 쓰는 강력한 명령인데, 기억나지 않아서 기록해 둡니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 하위 디렉토리 파일 내용 치환&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650525123708&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ find ./ -type f | xargs sed -i 's/from/to/g'
현재 디렉토리 내의 모든 파일들의 내용중 from 을 to로 바꾼다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 하위 디렉토리 파일 이름 변경&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650525160266&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ find ./ -name &quot;*from*&quot;  | sed -e 'p' -e &quot;s/from/to/g&quot; |xargs -n 2 mv
#현재 디렉토리 내의 모든 파일, 디렉토리의 이름중 from이 포함된 파일, 디렉토리의 이름의 from을 to로 바꾼다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;background-color: #f1f1f1; color: #000000;&quot;&gt;출처:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://onecellboy.tistory.com/329&quot;&gt;https://onecellboy.tistory.com/329&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>리눅스 파일 내용 일괄 변경</category>
      <category>리눅스 파일이름 일괄 변경</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/94</guid>
      <comments>https://precommer.tistory.com/94#entry94comment</comments>
      <pubDate>Thu, 21 Apr 2022 16:15:55 +0900</pubDate>
    </item>
    <item>
      <title>[pytorch] mnist download error - &amp;quot;File not found or corrupted&amp;quot;</title>
      <link>https://precommer.tistory.com/83</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;mnist를 이용한 pytorch 예제 프로그램을 돌려보려고 하는데, 아래와 같이 &quot;File not found or corrupted&quot; 에러를 내며 다운로드 하지 못하는 경우가 있다. (아래와 같은 코드를 이용해서 다운로드 할 수 있다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1647836918025&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from torchvision import datasets
from torchvision.transforms import ToTensor
train_data = datasets.MNIST(
    root = 'data',
    train = True,                         
    transform = ToTensor(), 
    download = True,            
)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd6oyt/btrwnaFkL34/TthI7Z9Lsm0aIeweDBqSQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd6oyt/btrwnaFkL34/TthI7Z9Lsm0aIeweDBqSQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd6oyt/btrwnaFkL34/TthI7Z9Lsm0aIeweDBqSQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd6oyt%2FbtrwnaFkL34%2FTthI7Z9Lsm0aIeweDBqSQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;파이토치 mnist 다운로드 오류&quot; loading=&quot;lazy&quot; width=&quot;1396&quot; height=&quot;651&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;651&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;mnist 다운로드 받는 mirror 사이트의 오류로 보이며 아래처럼 간단한 소스 수정 후 (mirror 사이트 우선 순위 변경), jupyter notebook을 재 실행 했더니 정상적으로 다운로드 되었다. 수정은 간단했지만 하루를 googling 한 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;기본으로 깔리는 pytorch 패키지 안에 mnist 다운 받는 site들이 몇개 들어 있고 이 중 가장 먼저 시도하는 site가 문제가 있다. 좀 더 자세히 보면, torchvision의 mnist.py의 소스를 보면 아래와 같이 mirrors 사이트가 구성 되어 있고, 첫번째로 yann.lecun.com으로 되어 있는데, 어떤 사유로 제대로 다운로드 되지 못하는 문제가 있는 것 같다. 그래서 두번째인 ossci-dataset.s3.amazonaws.com/mnist를 먼저 찾아보도록 우선 순위를 변경했더니 정상 적으로 다운로드 되었다. 나 같은 경우 첫번째를 주석처리 했다.&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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;파일위치 : anaconda3/envs/pytorch_p39_cuda113/lib/python3.9/site-packages/torchvision/datasets/mnist.py&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(* 환경에 따라 다를 수 있다. grep -rn mnist.py로 검색을 해보자. )&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1647837150664&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    mirrors = [
#        'http://yann.lecun.com/exdb/mnist/',
        'https://ossci-datasets.s3.amazonaws.com/mnist/',
    ]&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;wow !!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJDaug/btrwt0boE5c/G2CBRA6kF8DALgs7UUDAnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJDaug/btrwt0boE5c/G2CBRA6kF8DALgs7UUDAnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJDaug/btrwt0boE5c/G2CBRA6kF8DALgs7UUDAnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJDaug%2Fbtrwt0boE5c%2FG2CBRA6kF8DALgs7UUDAnK%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;1094&quot; height=&quot;446&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝</category>
      <category>File not found or corrupted</category>
      <category>pytorch mnist download error</category>
      <category>파이토치 mnist 다운로드 오류</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/83</guid>
      <comments>https://precommer.tistory.com/83#entry83comment</comments>
      <pubDate>Mon, 21 Mar 2022 13:48:12 +0900</pubDate>
    </item>
    <item>
      <title>[셀프인테리어] 주방 타일 덧방</title>
      <link>https://precommer.tistory.com/82</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;주방 타일을 바꾸기로 하고, 견적을 알아보다가 셀프로 해도 될 것 같아서 셀프로 하기로 했다. 입주 시 까지 시간이 길었던지라 여러 채널을 통해서 셀프로 가능한지와 방법 등을 많이 찾아 보았다. 결론적으로는 나의 경우에는 셀프 덧방 시공이 가장 합리적인 방법이었다. 보통 타일 덧방은 두번 정도 할 수 있다고 하는데, 기존 주인이 한번 했었기 때문에 다행히 덧방 한번 정도는 가능했다. 다음 타일 시공은 아마 덧방을 못할 거 같다. 한번 더 하게 되면 창틀보다 타일이 튀어 나오게 되리라. 그 외에도 생각지도 못한 문제가 나오리라........&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;각설하고, 주방 타일 덧방을 하려면 가장 먼저 알아봐야 할 것은 역시나 '덧방 시공이 가능한지' 이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음으로 마음에 드는 타일을 찾는 것이다. 온라인으로 알아봐도 되지만, 그래도 타일은 직접 봐야 한다. 아무래도 셀프로 하는지라, 자잘한(?) 타일 보다는 넓대대한 - 대충해도 표나지 않는- 것을 찾아보고 사이즈 (300 x 100)를 결정했으나 오프라인으로 매장에서 직접 봤을 때의 그 거대함이란.! 그 사이즈는 가정 집 보다는 매장에 어울린다고 한다. 그래서 사이즈는 오프라인 매장에서 보고 결정하길 추천한다. 타일 매장은 &quot;인천 홈씨씨&quot;와 '을지로 방산 시장&quot; 정도를 둘러봤다. 을지로 방산 시장에서 구매를 했으나, 실제 물건은 하남에 있는 창고에 있다고 해서 작업 하기 전 직접 가서 가져오기로 했다. 타일이다 보니 배송료가 물건 값의 반 정도 였다. 타일 비용은 5상자에 125,000 이었다. 1상자당 1평이 시공 가능하다. 42평 주방 기준으로 약간 넉넉하게 주문 했다. 참고로 배송비는 5만원 정도 였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;타일은 매장에서 보고 디자인과 사이즈를 결정해야 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음에 세라픽스 4 Kg (맞나? 나중에 부족해서 1 kg 정도를 추가로 샀다. 우리집이다 보니 듬뿍듬뿍 발랐다.), 세라픽스를 벽에 바르기 위한 고데, 그리고 타일 사이사이 간격 유지를 위한 십자가 모양의 고정기 정도를 추가 구매했다. 그리고 줄눈은 비둘기색으로. 타일이 흰색이다 보니 비둘기 색이 가장 어울렸다. 십자가 모양의 고정기는 1.5mm 를 샀던 것 같다.&amp;nbsp; 문제는 타일 커팅기와 그라인드가 필요한데, 한번 작업을 위해서 사기에는 너무 비쌌다. 셀프의 이점이 없었다. 다행히 공구를 빌려주는 사이트 (공구빌리)가 있어서 하루를 대여 할 수 있었다. (근데 너무 멀었다.)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주방타일 작업 날 전에 미리 공구는 빌려오고 (하루를 빌렸기 때문에 최대한 빠르게 해야 한다.), 미리 싱크대 상부장도 모두 분리해놨다. 작업을 하려고 하니, 싱크대와 기존 타일 사이에 실리콘이 있었다. 이거 제거 하는 시간이 추가로 들었다. 그리고 빠르게 작업을 했다. 처음에는 신중하게 했으나 시간이 너무 걸렸고, 이후에는 좀 더 원할하게 빠르게 할 수 있었다. 커팅은 처음 한두 번만 실패했고 방법을 알고나서 쉽게 할 수 있었다.&amp;nbsp; 그라인더가 필요한 부분은 두군데 였는데, -가스 연결부와 콘센트- 전문가가 아니라 일정하게는 나오지 않았지만 그냥 쓰기로 했다. 현실과 기술에 타협을 하긴 했지만 다 완성하고 보니 그 정도는 보이지도 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8시간 정도 소요되었고, 22만원 정도의 비용이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;볼 때마다 뿌듯함이 몰려온다. 준비만 착실히 하면 해볼 만한 도전 인 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구매한 타일은 65 * 265, JJ626CT G1 (유광), 5상자 (125,000) 이고, &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1상자는 약, 1m x 1m를 작업할 수 있는 양.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시공전 - 상부장 뜯어놓은 상태&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZqoLS/btrvLARgqzZ/TVRzQbURZKcrGhG9D62ra1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZqoLS/btrvLARgqzZ/TVRzQbURZKcrGhG9D62ra1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZqoLS/btrvLARgqzZ/TVRzQbURZKcrGhG9D62ra1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZqoLS%2FbtrvLARgqzZ%2FTVRzQbURZKcrGhG9D62ra1%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;1157&quot; height=&quot;596&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시공중&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1533&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boo2AD/btrvOfGup1p/KaL0q9CIWIkdFzhdbiFJHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boo2AD/btrvOfGup1p/KaL0q9CIWIkdFzhdbiFJHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boo2AD/btrvOfGup1p/KaL0q9CIWIkdFzhdbiFJHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fboo2AD%2FbtrvOfGup1p%2FKaL0q9CIWIkdFzhdbiFJHk%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;1533&quot; height=&quot;682&quot; data-origin-width=&quot;1533&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타일 완성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KTwm5/btrvPgynfy9/oAthNqnYeqKfBWmOxGyx3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KTwm5/btrvPgynfy9/oAthNqnYeqKfBWmOxGyx3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KTwm5/btrvPgynfy9/oAthNqnYeqKfBWmOxGyx3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKTwm5%2FbtrvPgynfy9%2FoAthNqnYeqKfBWmOxGyx3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;셀프타일&quot; loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;606&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>주변이야기</category>
      <category>셀프타일</category>
      <category>주방타일덧방</category>
      <category>타일셀프하기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/82</guid>
      <comments>https://precommer.tistory.com/82#entry82comment</comments>
      <pubDate>Sun, 13 Mar 2022 12:07:28 +0900</pubDate>
    </item>
    <item>
      <title>[셀프인테리어] 후기</title>
      <link>https://precommer.tistory.com/81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아파트 매매 계약을 덜컥 작년 8월에 하고 나서 실제 잔금을 1월에 치뤘으니 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;지금은 다 마무리하고 잘 살고 있다. 가끔 내가 했던 작품(?)들을 보고 있노라면 괜시리 뿌듯해진다. 셀프로 해야 하기에 준비에 많은 시간을 투자해야 했지만 준비하는 과정이나 실제로 진행하면서, 우리의 계획대로 진행되는 것을 보며 뿌듯함도 느꼈지만 고된 하루하루 였다. 재택을 한다해놓고 주방타일을 붙이고 있었고, 도배를 하고 있었다. 장비가 없어서 빌리러 가고, 주방 타일을 받으러 하남까지 차타고 갔다. 밤 9시, 10시까지 작업을 하기 일쑤였다. 나야 남자니깐 몸으로 버티면 된다지만 이 모든 계획에 반대 없이 지원해준 와이프가 없었다면 꿈도 못 꿀 일이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌이켜 보면 그렇게 어렵지 않은 일이었다. 혹시나 나같은 사람이 또 있을까하여 내가 아니 우리가 했던 몇가지 인테리어 후기를 남기고자 한다.&amp;nbsp;&lt;/p&gt;</description>
      <category>셀프인테리어후기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/81</guid>
      <comments>https://precommer.tistory.com/81#entry81comment</comments>
      <pubDate>Sun, 20 Feb 2022 23:02:52 +0900</pubDate>
    </item>
    <item>
      <title>아파트 셀프 등기 해보기</title>
      <link>https://precommer.tistory.com/80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cM1ekk/btrstKKasyS/1XxiB7bHIr64K7KAogXoPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cM1ekk/btrstKKasyS/1XxiB7bHIr64K7KAogXoPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cM1ekk/btrstKKasyS/1XxiB7bHIr64K7KAogXoPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcM1ekk%2FbtrstKKasyS%2F1XxiB7bHIr64K7KAogXoPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;아파트 셀프등기&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;389&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;389&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2022년 1월에 이사가면서 셀프등기를 하기로 결정하였다. 1차적인 이유는 영끌해서 돈이 없었고, 대출을 끼고 사지 않았기에 시도해볼만한 기회이기도 했다. 며칠 인터넷 찾아보고, 잔금일 움직일 동선을 미리파악한 후 어렵잖게 등기를 완료할 수 있었다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래는 준비 및 납부해야할 서류이며 모든 것은 인터넷으로 가능하다. 그리고 소유권 이전 등기 시에는 매도인과 매수인이 공동으로 가는게 원칙이지만 보통은 매수인쪽만 가기 때문에 매도인 인감날인된 위임장도 필요하다. 위임장은 인터넷 등기소에서 소유권 이전 등기 신청서 작성 후에 같이 출력할 수 있다. 처음에 이걸 모르고 별도의 위임장 파일에 힘들게 작성했었다. 현명한 여러분은 그러지 말기를......&lt;/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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) 공동신청이 원칙이므로 일방에게 위임하는 경우 위임장 준비 (매도인 위임시 인감날인)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) 가족대리인에게 위임하는 경우 위임장, 가족증빙서류, 신분증, 도장 준비&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3) 인감도장과 인감증명서는 본인서명과 본인서명사실확인서로 대체할 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매수인&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 280px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 4.24418%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;소유권 이전등기 신청서 (e-Form)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷 등기소에서 e-Form으로 작성, 모든 정보를 입력 력 하게 되면 위임장도 같이 출력된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;http://www.iros.go.kr/&quot;&gt;http://www.iros.go.kr/&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 4.24418%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위임장&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷 등기소에서 소유권 이전등기 신청서 (e-Form) 작성후에 선택해서 출력 가능.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매매계약서&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;본인이 소유하고 있는 매매 계약서 원본&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;부동산 거래계약 신고 필증 (관할 시/군/구청)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷발급&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(부동산에서도 챙겨줌)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;등기소와 취득세 신고시 필요. 넉넉하게 3부 출력해서 갔으나 부동산에서도 2부를 줌. 아침에 일어나서 부동산 가기전에 취득세 신고를 먼저할 요량이라면 한부 정도 출력해놓으면 좋을 것 같음.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* 취득세 신고를 wetax (etax)로 하는 경우 폰 카메라로 찍어서 첨부.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://rtms.molit.go.kr/index.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://rtms.molit.go.kr/index.do&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 80px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 80px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 80px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;토지 : 토지 대장등본&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;건물 : 건축물 대장등본&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;집합건물 : 집합건축물대장등본(전유부분),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 토지대장등본(대지권 등록부 포함)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 80px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷발급&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 80px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주민번호 뒷자리 등은 안나와도 되니 기본으로 설정되어 있는대로 출력하면 됨.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.gov.kr/mw/AA020InfoCappView.do?CappBizCD=15000000098&quot;&gt;https://www.gov.kr/mw/AA020InfoCappView.do?CappBizCD=15000000098&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.gov.kr/main?a=AA020InfoCappViewApp&amp;amp;HighCtgCD=A02009006&amp;amp;CappBizCD=13100000026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.gov.kr/main?a=AA020InfoCappViewApp&amp;amp;HighCtgCD=A02009006&amp;amp;CappBizCD=13100000026&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;농지취득자격증명원 (농지인 경우만)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;해당사항없음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주민등록등본&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷발급&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;혹시 몰라서 주민 번호 나오게 출력.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.gov.kr/mw/AA020InfoCappView.do?CappBizCD=13100000015&quot;&gt;https://www.gov.kr/mw/AA020InfoCappView.do?CappBizCD=13100000015&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;취득세 영수필확인서&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;잔금일 당일 앱을 통해 신고 및 납부 후 등기소 PC에서 출력&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;잔금일 당일에 아래 사이트에서 취득세 신고 후 카드나 현금으로 납부 가능. 앱으로도 가능함. 이후 등기소 PC에서 취득세 영수필 확인서를 출력하면 됨. 신고를 먼저하고 계약 마무리하고 등기소 가는 길에 납부해도 됨. 모든 건 앱으로 가능 ! 매매 계약서와 부동산 거래계약 신고필증은 폰 카메라로 찍어서 첨부 가능.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;서울 :&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://etax.seoul.go.kr/&quot;&gt;https://etax.seoul.go.kr/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;서울이외 :&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.wetax.go.kr/&quot;&gt;https://www.wetax.go.kr/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* 일정 금액 이상은 분할납부 가능, 카드사 이벤트와 한도 확인해봐야 함. 카드로 하는 경우 그 금액은 연말 정산 금액에 포함되지 않음.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* 취득세는 신고 납부 원칙인 지방세이며, 취득한 날로부터 60일 이내에 납부해야 한다. 기한을 어기거나 금액을 속이는 경우, 각각 20%, 40%의 가산세가&amp;nbsp; 붙음.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;7&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;국민주택 채권매입 영수증&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;http://nhuf.molit.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://nhuf.molit.go.kr/&lt;/a&gt; 에서 납부액 계산 후 선호 은행 사이트에서 납부 및 채권매입 영수증 출력&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* 채권 매입 후 즉시 매도시 본인 부담금만 납부 하면 됨. 처음 채권 금액에 깜놀 후 본인 부담금 확인 후 안도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;8&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;정부 수입인지 영수증&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷 납부 &amp;amp; 발급&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.e-revenuestamp.or.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.e-revenuestamp.or.kr/&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;9&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;등기신청수수료 납부 영수증&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인터넷 납부 &amp;amp; 발급&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;http://www.iros.go.kr/PMainJ.jsp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.iros.go.kr/&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 4.24418%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.872%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;신분증, 도장&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 7.90695%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 26.9767%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매도인&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 104px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 6.97674%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 43.0233%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 6.97674%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 43.0233%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매도용인감증명서&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot; colspan=&quot;2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매수인 정보가 기입된 부동산 매도용으로 준비&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 6.97674%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 43.0233%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;등기필정보 (구 등기필증,등기권리증)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot; colspan=&quot;2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;재발급 안됨, 확인서면으로 대체 가능&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 6.97674%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 43.0233%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주민등록초본 (주소변동사항 나온 것)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot; colspan=&quot;2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 6.97674%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 43.0233%; height: 21px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;신분증, 인감도장&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot; colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>주변이야기</category>
      <category>셀프등기</category>
      <category>아파트셀프등기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/80</guid>
      <comments>https://precommer.tistory.com/80#entry80comment</comments>
      <pubDate>Sat, 5 Feb 2022 00:47:01 +0900</pubDate>
    </item>
    <item>
      <title>[tensorflow] optuna tensorflow cnn 예제 #1</title>
      <link>https://precommer.tistory.com/79</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;창조는 모방의 어머니 였나? CNN 튜닝하다가 막히는 부분이 있어서 구글링 하다가 원하는 코드가 있어서 발췌해본다. 내가 하고자 했던 것은 CNN Convolution Layer를 몇개쯤 지정을 해야 하는지 였다. 그리고 Layer별 필터수를 각각의 Layer별로도 알아야 했다. 그래야 Before / After를 해볼 수 있지 않을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래는 num_layer 만큼 layer를 추가해보고, 추가한 Layer의 필터를 num_filter Array에 지정해주고 있다. 첫번째 Layer는 고정으로 연결해주고, Max Pooling 해준다. 그리고 Convolution Layer만 연속적으로 추가해주고, 이후에 Max Pooling, Dropout 이후 Dense층에 연결하고 있다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;정리하면 아래와 같이 되는듯 하다. Convolution layer만 연속 적으로 쓴다는 게 어떤 의미일까? 차원의 변화 없이 연속적으로 Feature를 추출하는 건데.....이건 좀 더 확인을 해봐야겠다. 그리고 모방을 해서 한번 돌려봐야겠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKYdg5/btrrq0GX5El/O0uTu2u24TJWylnCJKkRwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKYdg5/btrrq0GX5El/O0uTu2u24TJWylnCJKkRwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKYdg5/btrrq0GX5El/O0uTu2u24TJWylnCJKkRwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKYdg5%2Fbtrrq0GX5El%2FO0uTu2u24TJWylnCJKkRwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;optuna keras cnn&quot; loading=&quot;lazy&quot; width=&quot;544&quot; height=&quot;198&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1642939568409&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import optuna
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D

img_rows, img_cols = 28, 28
num_classes = 10

#CNN 모델 정의
#define the CNN model
def create_model(num_layer, mid_units, num_filters,dropout_rate):
    
    model = Sequential()
    model.add(Conv2D(filters=num_filters[0], kernel_size=(3, 3),
                 activation=&quot;relu&quot;,
                 input_shape=(img_rows, img_cols, 1)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    for i in range(1,num_layer):
        model.add(Conv2D(filters=num_filters[i], kernel_size=(3,3), padding=&quot;same&quot;, activation=&quot;relu&quot;))
    
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(dropout_rate[0]))
    model.add(Flatten())
    model.add(Dense(mid_units))
    model.add(Dropout(dropout_rate[1]))
    model.add(Dense(num_classes, activation='softmax'))
    
    return model&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642939844106&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def objective(trial):
    print(&quot;Optimize Start&quot;)
    
    #세션 지우기
    #clear_session
    keras.backend.clear_session()
    
    
    #컨볼루션 레이어 수의 매개변수
    #number of the convolution layer
    num_layer = trial.suggest_int(&quot;num_layer&quot;, 2, 5)
    
    #FC 레이어 유닛 수
    #number of the unit
    mid_units = int(trial.suggest_discrete_uniform(&quot;mid_units&quot;, 100, 300, 100))
    
    #각 컨볼루션 레이어의 필터 수
    #number of the each convolution layer filter
    num_filters = [int(trial.suggest_discrete_uniform(&quot;num_filter_&quot;+str(i), 16, 128, 16)) for i in range(num_layer)]
    
    #활성화 함수
    #activation = trial.suggest_categorical(&quot;activation&quot;, [&quot;relu&quot;, &quot;sigmoid&quot;])
    
    #Dropout
    #dropout_rate = trial.suggest_uniform('dropout_rate', 0.0, 0.5)
    #dropout_rate = [int(trial.suggest_uniform(&quot;dropout_rate&quot;+str(ii), 0.0, 0.5)) for ii in range(2)]
    dropout_rate = [0] * 2
    dropout_rate[0] = trial.suggest_uniform('dropout_rate'+str(0), 0.0, 0.5)
    dropout_rate[1] = trial.suggest_uniform('dropout_rate'+str(1), 0.0, 0.5)
    
    #optimizer
    optimizer = trial.suggest_categorical(&quot;optimizer&quot;, [&quot;sgd&quot;, &quot;adam&quot;])
    
    model = create_model(num_layer, mid_units, num_filters,dropout_rate)
    model.compile(optimizer=optimizer,
          loss=&quot;categorical_crossentropy&quot;,
          metrics=[&quot;acc&quot;])
          #metrics=[&quot;accuracy&quot;])
    
    history = model.fit(X_train, y_train, verbose=0, epochs=20, batch_size=128, validation_split=0.1)
    
    scores = model.evaluate(X_train, y_train)
    print('accuracy={}'.format(*scores))
    
    #검증용 데이터에 대한 정답률이 최대가 되는 하이퍼파라미터를 구한다
    #return 1 - history.history[&quot;val_acc&quot;][-1]
    return 1 - history.history[&quot;val_acc&quot;][-1]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;출처 : &lt;a href=&quot;https://www.kaggle.com/takeshikobayashi/mnist-cnn-keras-with-optuna-visualization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.kaggle.com/takeshikobayashi/mnist-cnn-keras-with-optuna-visualization&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Keras</category>
      <category>optuna keras cnn example</category>
      <category>optuna keras cnn 예제</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/79</guid>
      <comments>https://precommer.tistory.com/79#entry79comment</comments>
      <pubDate>Sun, 23 Jan 2022 21:38:42 +0900</pubDate>
    </item>
    <item>
      <title>'Sequential' object has no attribute 'predict_classes' 오류</title>
      <link>https://precommer.tistory.com/48</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;219&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buiALQ/btrrxXvE8um/mHGtgxt9izG9iVRK8RVlik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buiALQ/btrrxXvE8um/mHGtgxt9izG9iVRK8RVlik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buiALQ/btrrxXvE8um/mHGtgxt9izG9iVRK8RVlik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuiALQ%2FbtrrxXvE8um%2FmHGtgxt9izG9iVRK8RVlik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;'Sequential' object has no attribute 'predict_classes' 오류&quot; loading=&quot;lazy&quot; width=&quot;219&quot; height=&quot;195&quot; data-origin-width=&quot;219&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;tensorflow에서 분류 문제를 위해 입력 데이터의 class probability를 predict 해주던 predict_classes는 2.6 이상 버전 부터 더 이상 지원하지 않는다. 하여 2.6 이상에서 predict_classes를 대신해서 사용하는 방법에 대해 알아 보도록 하자.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;분류는 흔히 둘 중 하나를 선택하는 것(binary classification)과 여러개 중에 하나를 선택하는 경우 (multi class classification)가 있기 마련이다. 그 두가지 방법은 acivation funtion으로 각각 sigmoid와 softmax 를 사용하게 되는데 그 두가지 방법에 대해 predic_classes를 대신해 사용할 수 있는 방법은 다음과 같다.&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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. softmax 을 사용하는 multi class classification인 경우&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641103694059&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;np.argmax(model.predict(x), axis=-1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. sigmoid을 사용하는 binary classification인 경우.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641103762368&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(model.predict(X_test) &amp;gt; 0.5).astype(&quot;int32&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;0.5 보다 크면 true, false로 반환하고 이걸 int32로 변환하면 0 혹은 1로 return 된다. 결국 값이 0.5 보다 크면 1이고, 작게 되면 0으로 된다.&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;</description>
      <category>Tips</category>
      <category>'Sequential' object has no attribute 'predict_classes'</category>
      <category>predict_classes error</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/48</guid>
      <comments>https://precommer.tistory.com/48#entry48comment</comments>
      <pubDate>Fri, 21 Jan 2022 22:50:28 +0900</pubDate>
    </item>
    <item>
      <title>tesorflow GPU 확인 방법</title>
      <link>https://precommer.tistory.com/78</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;375&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IcExg/btrrxnVn0Er/nr9nXsKLqcNMRSRhM7KkNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IcExg/btrrxnVn0Er/nr9nXsKLqcNMRSRhM7KkNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IcExg/btrrxnVn0Er/nr9nXsKLqcNMRSRhM7KkNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIcExg%2FbtrrxnVn0Er%2Fnr9nXsKLqcNMRSRhM7KkNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;tensorflow gpu 확인 방법&quot; loading=&quot;lazy&quot; width=&quot;589&quot; height=&quot;375&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;375&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;tensorflow에서 GPU를 제대로 로딩하는지 확인 하는 몇가지 방법이다. 어느 것으로 하든 GPU가 제대로 보인다면 설치가 정상적으로 된 것이고 GPU를 이용해서 모델을 학습할 수 있다는 것을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. list_local_devices()&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642490751943&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
print(&quot;Num GPUs Available: &quot;, len(tf.config.list_physical_devices('GPU')))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppHQA/btrq0vhm4SM/j9V0earp2e6WGHWqmsKK11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppHQA/btrq0vhm4SM/j9V0earp2e6WGHWqmsKK11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppHQA/btrq0vhm4SM/j9V0earp2e6WGHWqmsKK11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FppHQA%2Fbtrq0vhm4SM%2Fj9V0earp2e6WGHWqmsKK11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;device_lib.list_local_devices&quot; loading=&quot;lazy&quot; width=&quot;819&quot; height=&quot;402&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. list_physical_devices('GPU')&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642491260858&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tf.config.list_physical_devices('GPU')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MP2jr/btrq1gdnE00/fUPAu7D0GWMrwiWS3P0GLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MP2jr/btrq1gdnE00/fUPAu7D0GWMrwiWS3P0GLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MP2jr/btrq1gdnE00/fUPAu7D0GWMrwiWS3P0GLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMP2jr%2Fbtrq1gdnE00%2FfUPAu7D0GWMrwiWS3P0GLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;tf.config.list_physical_devices('GPU')&quot; loading=&quot;lazy&quot; width=&quot;563&quot; height=&quot;78&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. is_build_with_cuda()&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642491305964&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import tensorflow as tf
print(tf.test.is_built_with_cuda())&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;output : True&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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. gpu_device_name()&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642491333898&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tf.test.gpu_device_name()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;output : '/device:GPU:0'&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;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연관글&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/60&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.09 - [Linux] - [ubuntu 서버만들기 #2] nvidia graphic driver 설치&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/66&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.09 - [Linux] - [ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cud 8.1 설치하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/77&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.18 - [머신러닝 딥러닝/Tools] - conda 환경에서 tensorflow에서 GPU 인식 못하는 문제&lt;/a&gt;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Tools</category>
      <category>tesorflow GPU 확인</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/78</guid>
      <comments>https://precommer.tistory.com/78#entry78comment</comments>
      <pubDate>Tue, 18 Jan 2022 16:38:27 +0900</pubDate>
    </item>
    <item>
      <title>conda 환경에서 tensorflow에서 GPU 인식 못하는 문제</title>
      <link>https://precommer.tistory.com/77</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;NVidia Graphic Driver, CUDA&amp;nbsp; 그리고 cuDNN을 구글이 문제 없다고 한 버전을 제대로 설치했음에도 tensorflow에서 GPU를 인식하지 못하는 경우가 있다. 문제는 tensorflow를 conda 명령으로 설치하면서 발생했다. 빠른 해결 방법은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. tensorflow를 conda 명령으로 삭제 한 후&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642490225350&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;conda uninstall tensorflow&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. pip 명령으로 tesorflow 설치&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642490261460&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install tensorflow==2.6.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. GPU 로딩 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzvy1M/btrq4xE33Xk/X3t2nwTaWqQryJU5GCD7R1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzvy1M/btrq4xE33Xk/X3t2nwTaWqQryJU5GCD7R1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzvy1M/btrq4xE33Xk/X3t2nwTaWqQryJU5GCD7R1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzvy1M%2Fbtrq4xE33Xk%2FX3t2nwTaWqQryJU5GCD7R1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;tensorflow GPU 로딩 확인&quot; loading=&quot;lazy&quot; width=&quot;890&quot; height=&quot;534&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문제가 발생했을 때에는 아래의 명령으로 tensorflow를 설치 했었다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642490286699&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;conda install -c conda-forge tensorflow==2.6.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;anacoda 환경에서는 conda명령을 이용해 설치하는 것이 성능이 더 좋다고 해서 설치한 것인데, 당황스럽긴 하다.&amp;nbsp; 그리고 아래는 pip로 tensorflow를 설치 했을 때의 마지막 화면인데, keras를 2.7.0으로 설치하고 있었다. pip로 설치하는 경우와 conda 명령으로 설치하는 경우의 설치하는 패키지 차이일까? 아니면 환경변수 등의 차이일까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Successfully&amp;nbsp;installed&amp;nbsp;absl-py-0.15.0&amp;nbsp;astunparse-1.6.3&amp;nbsp;cached-property-1.5.2&amp;nbsp;cachetools-4.2.4&amp;nbsp;charset-normalizer-2.0.10&amp;nbsp;clang-5.0&amp;nbsp;flatbuffers-1.12&amp;nbsp;gast-0.4.0&amp;nbsp;google-auth-2.3.3&amp;nbsp;google-auth-oauthlib-0.4.6&amp;nbsp;google-pasta-0.2.0&amp;nbsp;grpcio-1.43.0&amp;nbsp;h5py-3.1.0&amp;nbsp;idna-3.3&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;keras-2.7.0&lt;/b&gt;&lt;/span&gt;&amp;nbsp;keras-preprocessing-1.1.2&amp;nbsp;markdown-3.3.6&amp;nbsp;numpy-1.19.5&amp;nbsp;oauthlib-3.1.1&amp;nbsp;opt-einsum-3.3.0&amp;nbsp;protobuf-3.19.3&amp;nbsp;pyasn1-0.4.8&amp;nbsp;pyasn1-modules-0.2.8&amp;nbsp;requests-2.27.1&amp;nbsp;requests-oauthlib-1.3.0&amp;nbsp;rsa-4.8&amp;nbsp;six-1.15.0&amp;nbsp;tensorboard-2.7.0&amp;nbsp;tensorboard-data-server-0.6.1&amp;nbsp;tensorboard-plugin-wit-1.8.1&amp;nbsp;tensorflow-2.6.0&amp;nbsp;tensorflow-estimator-2.7.0&amp;nbsp;termcolor-1.1.0&amp;nbsp;typing-extensions-3.7.4.3&amp;nbsp;urllib3-1.26.8&amp;nbsp;werkzeug-2.0.2&amp;nbsp;wrapt-1.12.1 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(tensorflow_26_p37)&amp;nbsp;ubuntu@ip-10-200-0-160:~$&amp;nbsp;conda&amp;nbsp;deactivate &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(base)&amp;nbsp;ubuntu@ip-10-200-0-160:~$&amp;nbsp;jupyter&amp;nbsp;notebook&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTdXuf/btrq6aoRnlZ/9iyJK2LreKJstLcXbCOQF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTdXuf/btrq6aoRnlZ/9iyJK2LreKJstLcXbCOQF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTdXuf/btrq6aoRnlZ/9iyJK2LreKJstLcXbCOQF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTdXuf%2Fbtrq6aoRnlZ%2F9iyJK2LreKJstLcXbCOQF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;pip install tensorflow==2.6.0&quot; loading=&quot;lazy&quot; width=&quot;965&quot; height=&quot;146&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Tools</category>
      <category>conda 환경에서 tensorflow에서 GPU 인식 못하는 문제</category>
      <category>tensorflow GPU 오류</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/77</guid>
      <comments>https://precommer.tistory.com/77#entry77comment</comments>
      <pubDate>Tue, 18 Jan 2022 16:20:55 +0900</pubDate>
    </item>
    <item>
      <title>AlreadyExistsError: Another metric with the same name already exists.오류</title>
      <link>https://precommer.tistory.com/76</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;환경 오류로 &quot;Another metric with the same name already exists.&quot; 라는 오류가 뜨는 경우는 keras가 두개 이상 설치되어 있는경우이다. 해결 방법은 keras를 uninstall 하고나서 재 설치 하면 된다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. keras를 uninstall 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642488357172&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip uninstall keras&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 특정 keras 버전을 설치한다. ==는 2.6.0만 설치하라는 구문임.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642488429829&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install keras==2.6.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kz46M/btrq6uU6Mla/KK3resy71VIGEQH2vfG9zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kz46M/btrq6uU6Mla/KK3resy71VIGEQH2vfG9zK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kz46M/btrq6uU6Mla/KK3resy71VIGEQH2vfG9zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkz46M%2Fbtrq6uU6Mla%2FKK3resy71VIGEQH2vfG9zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Another metric with the same name already exists.&quot; loading=&quot;lazy&quot; width=&quot;919&quot; height=&quot;234&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;생각해보니, 초기 설치 시 tensorflow를 conda 명령으로 설치했으나 GPU를 인식하지 못하는 문제로 conda uninsall 하고 다시pip로 keras를 설치 했는데, clean remove가 되지 않은 모양이다. 위 화면을 보면 2.7.0이 깔려 있다. 난 분명 tensorflow를 2.6.0으로 설치 했는데, keras는 왜 2.7.0이 설치 되어 있는 지 모르겠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Tools</category>
      <category>Another metric with the same name already exists.</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/76</guid>
      <comments>https://precommer.tistory.com/76#entry76comment</comments>
      <pubDate>Tue, 18 Jan 2022 15:51:33 +0900</pubDate>
    </item>
    <item>
      <title>[tip] optuna study 저장/로드 하기</title>
      <link>https://precommer.tistory.com/53</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;optuna는 딥러닝의 hyperparameter를 자동으로 최적화 해주는 툴이다. learning rate, dropout, filter 수 등 최적화 하고 싶은 parameter 들에 대해서 값의 범위를 지정하고 모델을 돌려볼 수 있다. 튜닝하고자 하는 값이 많으면 많을 수록 study 수를 늘려야 하는데, 시간이 많이 걸린다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;아래는 최적화 과정이 다 끝나고 나서 그 값을 저장하는 방법이다. 많은 시간을 들여 진행한 결과를 한꺼번에 날려 버리는 일이 없었으면 좋겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642773547014&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# SAVE
import joblib
joblib.dump(study, &quot;optuna_tuning_model.pkl&quot;)


# LOAD &amp;amp; USE
load_study = joblib.load(&quot;optuna_tuning_model.pkl&quot;)
print(&quot;Best trial until now:&quot;)
print(&quot; Value: &quot;, load_study.best_trial.value)
print(&quot; Params: &quot;)
for key, value in load_study.best_trial.params.items():
    print(f&quot;    {key}: {value}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>optuna study 저장</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/53</guid>
      <comments>https://precommer.tistory.com/53#entry53comment</comments>
      <pubDate>Wed, 12 Jan 2022 20:38:27 +0900</pubDate>
    </item>
    <item>
      <title>[tip] jupyter notebook 여러 개 실행하기</title>
      <link>https://precommer.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주피터 노트북을 사용하여 모델 학습을 하는 중에 새로운 가상환경을 만들어서 모델을 돌려야 하는 경우가 있다. 며칠동안 돌고 있는 기존 노트북 세션을 종료하면 안되기에.! 이럴 때는 그냥 jupyter notebook만 다시 실행하면 알아서 다른 포트로 세션을 열어 준다.&amp;nbsp; 혹은 포트를 지정해서 실행 해줘도 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda로 새로운 가상환경을 만들어 주고 (conda create ...)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; letter-spacing: 0px;&quot;&gt;해당 가상환경을 activation 시켜주고 (conda activate ....)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;jupyter notebook 실행&lt;br /&gt;★ &lt;/span&gt;이미 실행 중이라면 +1하는듯. 아니면 실행 시 지정가능 &lt;span style=&quot;letter-spacing: 0px; color: #ee2323;&quot;&gt;jupyter notebook --port 10000&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; letter-spacing: 0px;&quot;&gt;새로운 포트 허용 (방화벽으로 막혀 있는 경우)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cypAzo/btrqBHtEkWe/ySU4DNrFWQbKWUrT9NanhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cypAzo/btrqBHtEkWe/ySU4DNrFWQbKWUrT9NanhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cypAzo/btrqBHtEkWe/ySU4DNrFWQbKWUrT9NanhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcypAzo%2FbtrqBHtEkWe%2FySU4DNrFWQbKWUrT9NanhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;아나콘다 여러개 실행&quot; loading=&quot;lazy&quot; width=&quot;823&quot; height=&quot;287&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아나콘다 가상환경이나 다른 팁들은아래 참조해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/71&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.11 - [Tips] - [tip] jupyter notebook background로 실행 시키기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/69&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.10 - [Linux] - [ubuntu 서버만들기 #5] jupyter notebook 서버 설정&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/67&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.09 - [머신러닝 딥러닝/Tools] - [아나콘다] conda 명령어 목록 (conda command list)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.10 - [Linux] - [ubuntu 서버만들기 #4] 아나콘다 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>jupyter notebook 여러개 실행</category>
      <category>주피터 여러개</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/73</guid>
      <comments>https://precommer.tistory.com/73#entry73comment</comments>
      <pubDate>Wed, 12 Jan 2022 20:32:55 +0900</pubDate>
    </item>
    <item>
      <title>[tip] jupyter notebook kernel 여러개 만들기</title>
      <link>https://precommer.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주피터 노트북에서 kernel을 여러개 만드는 방법이다. 주피터 노트북에서의 커널은 우리가 알고 있는 그런 커널이 아니다. 주피터 노트북 application을 실행하기 위한 실행 환경이라고 생각하면 될 것 같다. 아시다시피 주피터 노트북에서는 여러 언어 (파이썬, R 등)를 작성할 수 있는데, 이것은 각각의 주피터 application과 그 application을 동작하게 하기 위한 환경 (kernel)이 각각 연결 되어 있기 때문에 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;만약 주피터 노트북에서 하나의 환경만 사용한다면 구지 kernel을 추가할 필요는 없다. 기본적으로 ipykernel 은 지원하고 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UjdKW/btrqvzWXrZQ/2fqHBdabVZ4mh4vi8bt7JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UjdKW/btrqvzWXrZQ/2fqHBdabVZ4mh4vi8bt7JK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UjdKW/btrqvzWXrZQ/2fqHBdabVZ4mh4vi8bt7JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUjdKW%2FbtrqvzWXrZQ%2F2fqHBdabVZ4mh4vi8bt7JK%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;783&quot; height=&quot;135&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfCqUu/btrqvUGEzio/GIKq5On0xSKi4kVZyujIOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfCqUu/btrqvUGEzio/GIKq5On0xSKi4kVZyujIOk/img.png&quot; data-alt=&quot;https://docs.jupyter.org/en/latest/projects/architecture/content-architecture.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfCqUu/btrqvUGEzio/GIKq5On0xSKi4kVZyujIOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfCqUu%2FbtrqvUGEzio%2FGIKq5On0xSKi4kVZyujIOk%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;635&quot; height=&quot;345&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://docs.jupyter.org/en/latest/projects/architecture/content-architecture.html&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;커널을 추가 하게 되면 우리는 주피터 노트북의 홈에서 커널을 선택할 수 있다. 명시적으로 선택할 수 있기 때문에 자신의 환경을 쉽게 확인할 수 있고,&amp;nbsp; kernel switching도 쉽게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tIV8A/btrqpsY7bQX/HRJPrhqS2YdYenZ2SiAlZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tIV8A/btrqpsY7bQX/HRJPrhqS2YdYenZ2SiAlZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tIV8A/btrqpsY7bQX/HRJPrhqS2YdYenZ2SiAlZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtIV8A%2FbtrqpsY7bQX%2FHRJPrhqS2YdYenZ2SiAlZ1%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;810&quot; height=&quot;375&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda 명령으로 가상환경을 설정한 경우를 보자. 아래는 tensorflow용과 pytorch용 가상환경이 생성된 경우이다. conda를 모른다면 &lt;a href=&quot;https://precommer.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;와 &lt;a href=&quot;https://precommer.tistory.com/67&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를 참고 해보자.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czDgcq/btrqgb32jhY/Gvk0B9Jj7kAbqrMLQgPOQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czDgcq/btrqgb32jhY/Gvk0B9Jj7kAbqrMLQgPOQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czDgcq/btrqgb32jhY/Gvk0B9Jj7kAbqrMLQgPOQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczDgcq%2Fbtrqgb32jhY%2FGvk0B9Jj7kAbqrMLQgPOQ0%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;798&quot; height=&quot;200&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;kernel을 추가 하는 방법은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda install ipykernel&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;추가하고 싶은 가상환경 Activation (conda activate 가상환경이름)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;kernel 추가 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;python -m ipykernel install --user --name pytorch_p39_cuda113--display-name &quot;pytorch_p39_cuda113&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;python -m ipykernel install --user --name 가상환경이름 --display-name &quot;표시하고 싶은 이름&quot;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnveze/btrquhWNxce/JzmXLLGvzBzj3tWMFbgQY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnveze/btrquhWNxce/JzmXLLGvzBzj3tWMFbgQY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnveze/btrquhWNxce/JzmXLLGvzBzj3tWMFbgQY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnveze%2FbtrquhWNxce%2FJzmXLLGvzBzj3tWMFbgQY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;주피터 노트북 kernel 추가&quot; loading=&quot;lazy&quot; width=&quot;801&quot; height=&quot;339&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;339&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lGCsk/btrp8rUqSUg/hbeEokzu8zah4VyJ7OdEW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lGCsk/btrp8rUqSUg/hbeEokzu8zah4VyJ7OdEW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lGCsk/btrp8rUqSUg/hbeEokzu8zah4VyJ7OdEW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlGCsk%2Fbtrp8rUqSUg%2FhbeEokzu8zah4VyJ7OdEW0%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;793&quot; height=&quot;205&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;jupyter kernelspc list를 이용해서 추가한 kernel을 확인할 수 있다. 그리고 jupyter kernelspec remove 가상환경이름 으로 삭제할 수 있다. 추가/삭제 시 jupyter notebook을 재실행 해줘야 관련 내용을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMZ7Un/btrquZ9hCKZ/rVOXXeOZbWhQLk7fPQ0r7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMZ7Un/btrquZ9hCKZ/rVOXXeOZbWhQLk7fPQ0r7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMZ7Un/btrquZ9hCKZ/rVOXXeOZbWhQLk7fPQ0r7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMZ7Un%2FbtrquZ9hCKZ%2FrVOXXeOZbWhQLk7fPQ0r7K%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;798&quot; height=&quot;500&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;음, 작성하다 보니 한가지 의문점이 생겼다. 난 경험 상 추가하는게 편해서 추가하긴 했는데, 만약 추가하지 않고 여러 가상환경을 실행 시킬 수 있으려나? 각각 conda 가상환경을 activation 시킨 후에 각각 jupyter notebook을 실행해야 하나? 포트를 각각 다르게 설정해서 ?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #ee2323;&quot;&gt;2022/01/17 update : 아래와 같은 방법으로 각기 다른 환경의 주피터 노트북을 여러개 실행 시킬 수 있다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) 여러 환경에 대한 커널을 모두 추가하고, 주피터 노트북을 하나만 실행 시켜서 kernel switching&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) 각각의 환경에서 각각 주피터 노트북 실행 &lt;br /&gt;&amp;nbsp; &amp;nbsp; (명시적으로 포트를 지정해도 되고, 묵시적으로 포트를 생략해도 자동으로 새로운 포트로 실행 시켜줌)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/73&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.12 - [분류 전체보기] - [tip] jupyter notebook 여러 개 실행하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>jupyter notebook kernel 여러개 만들기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/72</guid>
      <comments>https://precommer.tistory.com/72#entry72comment</comments>
      <pubDate>Wed, 12 Jan 2022 00:17:04 +0900</pubDate>
    </item>
    <item>
      <title>[tip] jupyter notebook background로 실행 시키기</title>
      <link>https://precommer.tistory.com/71</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우분투 &amp;amp; 콘다 환경에서 주피터 노트북을 백그라운드로 실행시키는 방법 입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;백그라운드로 실행시키면 터미널이 종료되거나 원격으로 접속 시 연결이 끊기는 경우에 주피터 노트북이 종료되는 불상사를 막을 수 있습니다만, 터미널이 보이지 않기에 종료 시키려면 kill 명령을 사용해야 합니다. kill 하다가 다른 거 죽일 수 있으니 조심 하시길......&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주피터 노트북을 백그라운드로 실행 하는 방법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. nohup jupyter notebook &amp;amp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp;nohup : no hang up ! 터미널 종료 시 hang up 시그널을 받지 못하도록 처리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EpiKI/btrqmp1wNaM/UNxTVvn3PN1JePPQkFtlFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EpiKI/btrqmp1wNaM/UNxTVvn3PN1JePPQkFtlFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EpiKI/btrqmp1wNaM/UNxTVvn3PN1JePPQkFtlFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEpiKI%2Fbtrqmp1wNaM%2FUNxTVvn3PN1JePPQkFtlFK%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;733&quot; height=&quot;148&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. screen -A -m -d -s test jupyter notebook&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogswK/btrqdSp8PF8/ueQ4mYhPTAeZ8K0ZwH9ck0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogswK/btrqdSp8PF8/ueQ4mYhPTAeZ8K0ZwH9ck0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogswK/btrqdSp8PF8/ueQ4mYhPTAeZ8K0ZwH9ck0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FogswK%2FbtrqdSp8PF8%2FueQ4mYhPTAeZ8K0ZwH9ck0%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;739&quot; height=&quot;93&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주피터 노트북 확인 하는 방법&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;jupyter notebook list&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;주피터 노트북을 종료 시키는 방법&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ps -ef | grep jupyter # jupyter notebook process 찾기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;kill -9 pid # jupyter 죽이기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ps -ef | grep jupyter # 죽었는지 확인하기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;251&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q8yDr/btrqiiPp3cL/CwF7UNvQftge4gmy0QhZQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q8yDr/btrqiiPp3cL/CwF7UNvQftge4gmy0QhZQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q8yDr/btrqiiPp3cL/CwF7UNvQftge4gmy0QhZQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ8yDr%2FbtrqiiPp3cL%2FCwF7UNvQftge4gmy0QhZQk%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;798&quot; height=&quot;251&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;251&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>주피터노트북 백그라운드 실행</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/71</guid>
      <comments>https://precommer.tistory.com/71#entry71comment</comments>
      <pubDate>Tue, 11 Jan 2022 23:08:36 +0900</pubDate>
    </item>
    <item>
      <title>우분투 nvidia gpu 메모리 모니터링 방법</title>
      <link>https://precommer.tistory.com/70</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우분투에서 nvidia gpu 메모리 모니터링 하는 네가지 방법입니다.&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. nvidia-smi -l 1 : 1초에 한번씩 업데이트 해줌&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;495&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x4g04/btrqsFC7wrI/JalXtJHP6OGzRXnHkejOV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x4g04/btrqsFC7wrI/JalXtJHP6OGzRXnHkejOV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x4g04/btrqsFC7wrI/JalXtJHP6OGzRXnHkejOV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4g04%2FbtrqsFC7wrI%2FJalXtJHP6OGzRXnHkejOV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 nvidia gpu 메모리 모니터링&quot; loading=&quot;lazy&quot; width=&quot;746&quot; height=&quot;495&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;495&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. watch -d -n 0.5 nvidia-smi (0.5초 간격으로 Diff에 대해서 Highlight 해서 보여줌 - 아래 하얀 부분)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0FWAg/btrqd4dqXuw/wpNKkpj2C0LvAV1ARsNK10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0FWAg/btrqd4dqXuw/wpNKkpj2C0LvAV1ARsNK10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0FWAg/btrqd4dqXuw/wpNKkpj2C0LvAV1ARsNK10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0FWAg%2Fbtrqd4dqXuw%2FwpNKkpj2C0LvAV1ARsNK10%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;733&quot; height=&quot;523&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. gpustats (패키지 설치 필요 - pip install gpustat 후 &lt;span style=&quot;color: #ee2323;&quot;&gt;gpustat -cp -i 1&lt;/span&gt; 사용 )&amp;nbsp;&lt;br /&gt;nvidia에서만 동작하고, 출력내용을 보아하니 nvidia-smi의 데이터를 wrapping 해서 보여주는 것 같음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래의 &lt;span style=&quot;color: #ee2323;&quot;&gt;gpustat -cp -i 1&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;span&gt;의 의미는 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;c&lt;/span&gt;&lt;/b&gt;olor로 출력하고, GPU를 사용하는 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;P&lt;/span&gt;&lt;/b&gt;ID를 1초의 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;i&lt;/b&gt;&lt;/span&gt;nterval로 보여 달라라는 내용임&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://github.com/wookayin/gpustat&quot;&gt;https://github.com/wookayin/gpustat&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;87&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/roj75/btrqt10fhgV/SeDKuOnyJelCpQnZ4FL2lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/roj75/btrqt10fhgV/SeDKuOnyJelCpQnZ4FL2lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/roj75/btrqt10fhgV/SeDKuOnyJelCpQnZ4FL2lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Froj75%2Fbtrqt10fhgV%2FSeDKuOnyJelCpQnZ4FL2lk%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;1158&quot; height=&quot;87&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;87&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. glances (패키지 설치 필요, sudo snap install glances 후 &lt;span style=&quot;color: #ee2323;&quot;&gt;glances&lt;/span&gt; 명령 사용)&lt;br /&gt;&amp;nbsp;top 처럼 CPU, Memory, Network 정보도 보여줌.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1104&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3mk9Y/btrqobbzBj2/u5Vk0Aok1DpGFU4EePwlg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3mk9Y/btrqobbzBj2/u5Vk0Aok1DpGFU4EePwlg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3mk9Y/btrqobbzBj2/u5Vk0Aok1DpGFU4EePwlg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3mk9Y%2FbtrqobbzBj2%2Fu5Vk0Aok1DpGFU4EePwlg1%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;1104&quot; height=&quot;480&quot; data-origin-width=&quot;1104&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>nvidia-smi 실시간</category>
      <category>우분투 GPU 모니터링</category>
      <category>우분투 nvidia gpu 메모리 모니터링</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/70</guid>
      <comments>https://precommer.tistory.com/70#entry70comment</comments>
      <pubDate>Tue, 11 Jan 2022 14:32:01 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 서버만들기 #5] jupyter notebook 서버 설정</title>
      <link>https://precommer.tistory.com/69</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;★ ubuntu 딥러닝 서버만들기 &lt;b&gt;★&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/55&quot;&gt;[Ubuntu 서버 만들기 #1] 한글 키보드 설정 하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/60&quot;&gt;[ubuntu 서버만들기 #2] nvidia graphic driver 설치&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/66&quot;&gt;[ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cudnn 8.1 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/68&quot;&gt;[ubuntu 서버만들기 #4] 아나콘다 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/69&quot;&gt;[ubuntu 서버만들기 #5] jupyter notebook server 설정&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우분투 딥러닝 서버 만들기 5번째 글이다. &lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이번에는 jupyter notebook을 설치하고, 서버용으로 설정하기로 해본다. 순서는 다음과 같다.&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda base 환경으로 진입&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;jupyter notebook 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;jupyter notebook 서버 설정 ( password 등)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.conda base 환경으로 진입&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda에 여러개의 가상환경이 있는 상태에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;conda activate base&lt;/b&gt; &lt;/span&gt;명령으로 base에 진입한다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. jupyter notebook 설치&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;base인 상태에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;conda install &lt;span style=&quot;color: #9d9d9d;&quot;&gt;-c conda-forge&lt;/span&gt; jupyter&lt;/b&gt; &lt;/span&gt;명령으로 설치하도록 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda 환경에서는 pip 대신 conda install을 사용하고, -c conda-forge는 생략 가능하다. -c conda-forge는 conda-forge라는 채널에서 받겠다라는 뜻이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nisFV/btrp65podT9/AHCZojcCFctqveWXwpQWkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nisFV/btrp65podT9/AHCZojcCFctqveWXwpQWkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nisFV/btrp65podT9/AHCZojcCFctqveWXwpQWkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnisFV%2Fbtrp65podT9%2FAHCZojcCFctqveWXwpQWkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;133&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deEh5e/btrp6myElmr/ETx9h7kwWl5798MIHo9HfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deEh5e/btrp6myElmr/ETx9h7kwWl5798MIHo9HfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deEh5e/btrp6myElmr/ETx9h7kwWl5798MIHo9HfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeEh5e%2Fbtrp6myElmr%2FETx9h7kwWl5798MIHo9HfK%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;446&quot; height=&quot;281&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치가 완료되었으면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;jupyter notebook&lt;/b&gt;&lt;/span&gt;이라는 명령으로 한번 실행해보자. browser가 열리고 localhost:8888로 실행이 된다. 우리는 서버의 브라우저가 아닌 network에 연결된 다른 사람의 PC에서 각각 jupyter notebook을 사용해야 하기에 환경 설정을 변경 해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8oxAu/btrqdTB52x0/IVjkUaDAeg7BaSrB3MgkUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8oxAu/btrqdTB52x0/IVjkUaDAeg7BaSrB3MgkUK/img.png&quot; data-alt=&quot;jupyter notebook 실행 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8oxAu/btrqdTB52x0/IVjkUaDAeg7BaSrB3MgkUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8oxAu%2FbtrqdTB52x0%2FIVjkUaDAeg7BaSrB3MgkUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 주피터 노트북&quot; loading=&quot;lazy&quot; width=&quot;857&quot; height=&quot;309&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;jupyter notebook 실행 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ui23f/btrp6mL9Iat/W8XKlfjZxjq9JeN421gk61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ui23f/btrp6mL9Iat/W8XKlfjZxjq9JeN421gk61/img.png&quot; data-alt=&quot;jupyter notebook이 browser에서 실행된 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ui23f/btrp6mL9Iat/W8XKlfjZxjq9JeN421gk61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fui23f%2Fbtrp6mL9Iat%2FW8XKlfjZxjq9JeN421gk61%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;1152&quot; height=&quot;260&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;jupyter notebook이 browser에서 실행된 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. jupyter notebook 서버 설정&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;jupyter notebook --generate-config&lt;/b&gt; &lt;/span&gt;명령으로 configuration file을 생성하자. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;/home/{사용자명}/.jupyter/jupyter_notebook_config.py라는 생성되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9TEYU/btrpWyrqnLu/W12KnH7RWvyIENxL9DX490/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9TEYU/btrpWyrqnLu/W12KnH7RWvyIENxL9DX490/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9TEYU/btrpWyrqnLu/W12KnH7RWvyIENxL9DX490/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9TEYU%2FbtrpWyrqnLu%2FW12KnH7RWvyIENxL9DX490%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;837&quot; height=&quot;94&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;보안을 위해 password를 설정할 수 있다. 자동으로 설정하는 방법과 수동으로 설정하는 두 가지가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;자동으로 설정하는 방법 : notebook 5.0 이상에서만 지원하고, 아래 처럼&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; jupyter notebook password&lt;/b&gt;&lt;/span&gt;를 입력하면 자동으로 json 파일(/home/{사용자명}/.jupyter/ 폴더 안의&amp;nbsp;jupyter_notebook_config.json)에 비밀 번호까지 지정해준다.&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdpyQx/btrp0Jlp9Dn/kGi7UFupKtJlP2NAPPQ6y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdpyQx/btrp0Jlp9Dn/kGi7UFupKtJlP2NAPPQ6y0/img.png&quot; data-alt=&quot;자동으로 설정하는 방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdpyQx/btrp0Jlp9Dn/kGi7UFupKtJlP2NAPPQ6y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdpyQx%2Fbtrp0Jlp9Dn%2FkGi7UFupKtJlP2NAPPQ6y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;jupyter notebook password&quot; loading=&quot;lazy&quot; width=&quot;837&quot; height=&quot;175&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자동으로 설정하는 방법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;수동으로 설정하는 방법 :&amp;nbsp; &lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ipython을 실행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;차례로 from notebook.auth import passwd&amp;nbsp; passwd() 파이썬 코드를 직접 입력한다. 그리고 나오는 정보를&amp;nbsp; jupyter_notebook_config.py파일의 c.NotebookApp.password=u'xxxxx' 라고 직접 기입해줘야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clSP7O/btrp6HCSfTK/qMhcDrmnOK8YmKr0FXnipK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clSP7O/btrp6HCSfTK/qMhcDrmnOK8YmKr0FXnipK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clSP7O/btrp6HCSfTK/qMhcDrmnOK8YmKr0FXnipK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclSP7O%2Fbtrp6HCSfTK%2FqMhcDrmnOK8YmKr0FXnipK%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;985&quot; height=&quot;310&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdhEk1/btrqdTCxmSd/nVwKNPyDuTzALNWP637E91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdhEk1/btrqdTCxmSd/nVwKNPyDuTzALNWP637E91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdhEk1/btrqdTCxmSd/nVwKNPyDuTzALNWP637E91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdhEk1%2FbtrqdTCxmSd%2FnVwKNPyDuTzALNWP637E91%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;1022&quot; height=&quot;193&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 jupyter_notebook_config.py 파일에서 아래 사항은 기본적으로 적용해주는 것이 좋을 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;# Set ip to '*' to bind on all interfaces (ips) for the public server
c.NotebookApp.ip = '*'

# server에서 browser 실행 하지 않도록
c.NotebookApp.open_browser = False

# 익히 알려진 8888 포트에서 다른 포트로 변경
c.NotebookApp.port = 9999&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;jupyter notebook으로 실행하고 나서 원격에서 접속하면 아래와 같이 password 입력하라고 뜬다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7HXK3/btrqiioghU5/OWKlQBgQbrVfkYQBifeszk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7HXK3/btrqiioghU5/OWKlQBgQbrVfkYQBifeszk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7HXK3/btrqiioghU5/OWKlQBgQbrVfkYQBifeszk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7HXK3%2FbtrqiioghU5%2FOWKlQBgQbrVfkYQBifeszk%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;955&quot; height=&quot;299&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;299&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;보안을 더욱 강화하기 위해 SSL 등 추가적인 방법을 이용할 수 있다. 자세한 건 아래에서 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;출처 : &lt;a href=&quot;https://jupyter-notebook.readthedocs.io/en/stable/public_server.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jupyter-notebook.readthedocs.io/en/stable/public_server.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>우분투 주피터</category>
      <category>우분투 주피터 서버</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/69</guid>
      <comments>https://precommer.tistory.com/69#entry69comment</comments>
      <pubDate>Mon, 10 Jan 2022 23:08:43 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 서버만들기 #4] 아나콘다 설치하기</title>
      <link>https://precommer.tistory.com/68</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;★ ubuntu 딥러닝 서버만들기 &lt;b&gt;★&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/55&quot;&gt;[Ubuntu 서버 만들기 #1] 한글 키보드 설정 하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/60&quot;&gt;[ubuntu 서버만들기 #2] nvidia graphic driver 설치&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/66&quot;&gt;[ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cudnn 8.1 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/68&quot;&gt;[ubuntu 서버만들기 #4] 아나콘다 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/69&quot;&gt;[ubuntu 서버만들기 #5] jupyter notebook server 설정&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우분투 딥러닝 서버만들기 #4, 아나콘다 설치하기 !&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이제 아나콘다를 설치해보도록 한다. 우분투에서는 다음과 같은 순서로 설치를 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아나콘다 installer 다운로드 (&lt;a href=&quot;https://www.anaconda.com/products/individual&quot;&gt;https://www.anaconda.com/products/individual&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;다운로드한 installer를 실행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;가상환경 만들어 보기 (conda create xx)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치는 간단하다. 다운받아서 설치를 하면 된다. 사실 docker로 설치해볼까 하다가 몇명만 쓰는 서버라 필요를&amp;nbsp; 느끼지 못해서 docker 없이 아나콘다를 설치하기로 한다. 그리고 tensorflow와 pytorch를 각각 사용할 수 있는 환경을 구성할 예정이다. 아직 pytorch를 사용하는 인원은 없지만 !&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 아나콘다 installer 다운로드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;두 가지 방법이 있다. 웹브라우저를 이용하거나 wget을 이용하면 된다. 웹 브라우저를 띄울 수 없는 client 환경에서는 wget 명령을 이용하여 다운로드 한다. 다만 아나콘다 버전명을 모를 수가 있는데 일단 웹브라우저가 되는 환경에서 설치할 서버의 환경에 맞게 다운로드해서 받아지는 버전명을 참조해서 wget 명령을 구성할 수 있다. (다른 방법도 있으려나?) 난 우분투 (X86_64Bit)이므로 64Bit (x86)용으로 받는다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;uname -m &lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;을 사용하면 바로 확인 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- wget 이용&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642471953107&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vVpi0/btrq4qk33OQ/dhdCPryd8MoB6tayZsrPR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vVpi0/btrq4qk33OQ/dhdCPryd8MoB6tayZsrPR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vVpi0/btrq4qk33OQ/dhdCPryd8MoB6tayZsrPR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvVpi0%2Fbtrq4qk33OQ%2FdhdCPryd8MoB6tayZsrPR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;아나콘다 wget&quot; loading=&quot;lazy&quot; width=&quot;919&quot; height=&quot;164&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 웹브라우저 이용&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://www.anaconda.com/products/individual&quot;&gt;https://www.anaconda.com/products/individual&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5qT0Z/btrpSlsyKbL/UbnSpy7K1DlYI15kh2Mgx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5qT0Z/btrpSlsyKbL/UbnSpy7K1DlYI15kh2Mgx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5qT0Z/btrpSlsyKbL/UbnSpy7K1DlYI15kh2Mgx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5qT0Z%2FbtrpSlsyKbL%2FUbnSpy7K1DlYI15kh2Mgx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;아나콘다 설치&quot; loading=&quot;lazy&quot; width=&quot;1261&quot; height=&quot;548&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;다운로드한&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;installer를 실행&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Downloads 폴더로 가서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;sh Anaconda3-2021.11-Linux-x86_64.sh&lt;/b&gt;&lt;/span&gt; 를 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbzpYt/btrp0IT28Lk/Jkss7qkHSSCaTmwzlMeTRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbzpYt/btrp0IT28Lk/Jkss7qkHSSCaTmwzlMeTRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbzpYt/btrp0IT28Lk/Jkss7qkHSSCaTmwzlMeTRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbzpYt%2Fbtrp0IT28Lk%2FJkss7qkHSSCaTmwzlMeTRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;아나콘다 설치&quot; loading=&quot;lazy&quot; width=&quot;904&quot; height=&quot;453&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Path 정보를 꼭 확인해야 한다. root를 쓰지 않음에도 root밑에 설치하는 경우도 있다. &lt;br /&gt;난 ubuntu 계정이라 /home/ubutu/anaconda3로 설치하였다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OIm2u/btrq4p0Myns/A12a8yQBZD5dnP1HnP1vB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OIm2u/btrq4p0Myns/A12a8yQBZD5dnP1HnP1vB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OIm2u/btrq4p0Myns/A12a8yQBZD5dnP1HnP1vB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOIm2u%2Fbtrq4p0Myns%2FA12a8yQBZD5dnP1HnP1vB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;175&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행되는 사이에 광고를...&lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;기본적인 package들이 설치 된다. 그리고 마지막으로 conda init 할꺼냐고 묻는다. yes를 하도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bj9xt/btrpWyxTIN8/PpORFZIGdSOUJc3SrIwbok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bj9xt/btrpWyxTIN8/PpORFZIGdSOUJc3SrIwbok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bj9xt/btrpWyxTIN8/PpORFZIGdSOUJc3SrIwbok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBj9xt%2FbtrpWyxTIN8%2FPpORFZIGdSOUJc3SrIwbok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;아나콘다 설치&quot; loading=&quot;lazy&quot; width=&quot;903&quot; height=&quot;537&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceyScb/btrpU0uT9pS/1leyFVLbkIc1hFCBuHVrKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceyScb/btrpU0uT9pS/1leyFVLbkIc1hFCBuHVrKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceyScb/btrpU0uT9pS/1leyFVLbkIc1hFCBuHVrKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceyScb%2FbtrpU0uT9pS%2F1leyFVLbkIc1hFCBuHVrKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;907&quot; height=&quot;535&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 terminal을 새로 열면 아래와 같이 (base) 라는 게 앞에 붙는다. base 는 default로 생기는 가상환경이다. 매번 터미널을 열때마다 (base)가 붙을 건데, 만약 이게 불편하다면 (사실 불편하다) &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;conda config --set auto_activate_base false&lt;/b&gt;&lt;/span&gt;를 입력한다. 그리고 다시 열면 (base)가 붙지 않는다. 아나콘다 설치는 여기까지가 끝이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t95kG/btrpTfMUvXk/sludIrHH0p6PIsbOpFDyX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t95kG/btrpTfMUvXk/sludIrHH0p6PIsbOpFDyX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t95kG/btrpTfMUvXk/sludIrHH0p6PIsbOpFDyX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft95kG%2FbtrpTfMUvXk%2FsludIrHH0p6PIsbOpFDyX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;onda config --set auto_activate_base false&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;101&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 가상환경 만들어 보기 (conda create xx)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아나콘다도 설치했으니 간단하게 가상환경을 만들어보자. tensorflow 2.7.0 버전과 python 3.9, 그리고 몇몇 필수 패키지들도 같이 포함된 tensorflow_27_p39라는 가상환경을 만들 계획이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;일단, cconda activate base를 입력해서 conda 환경으로 가자. 그리고 아래와 같은 명령을 차례로 입력해보자. conda 명령은 여기(&lt;a href=&quot;https://precommer.tistory.com/67&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;conda command list&lt;/a&gt;)를 참조하기로 하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1641782616417&quot; class=&quot;css&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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-thickness: initial; 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;conda create -n tensorflow_27_p39 python=3.9 
(tensorflow_27_p39 이름을 가진 가상환경 생성)

conda env list  
(가상환경 생성 확인)

conda activate tensorflow_27_p39 
(생성한 가상환경으로 진입)

(패키지 설치 - 되도록 conda install로 하자.)
conda install -c conda-forge numpy scipy matplotlib pandas scikit-learn seaborn
pip install tensorflow==2.6
conda install -c conda-forge tensorflow=2.6 # 잘 안받아지고, 설치시 오류가 나는 것 같음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;1047&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxy9Dr/btrp3KmePM6/Yg65qqlpKkayVkKGvKBuck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxy9Dr/btrp3KmePM6/Yg65qqlpKkayVkKGvKBuck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxy9Dr/btrp3KmePM6/Yg65qqlpKkayVkKGvKBuck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcxy9Dr%2Fbtrp3KmePM6%2FYg65qqlpKkayVkKGvKBuck%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;787&quot; height=&quot;1047&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;1047&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duIikB/btrpUGXMSdL/M0pkNyFa5a3Vf0fHqeRzb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duIikB/btrpUGXMSdL/M0pkNyFa5a3Vf0fHqeRzb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duIikB/btrpUGXMSdL/M0pkNyFa5a3Vf0fHqeRzb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduIikB%2FbtrpUGXMSdL%2FM0pkNyFa5a3Vf0fHqeRzb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;672&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DUfwg/btrpUInQLli/5np5A29OW0tNndxzQJ1zF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DUfwg/btrpUInQLli/5np5A29OW0tNndxzQJ1zF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DUfwg/btrpUInQLli/5np5A29OW0tNndxzQJ1zF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDUfwg%2FbtrpUInQLli%2F5np5A29OW0tNndxzQJ1zF1%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;792&quot; height=&quot;800&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sNo0h/btrp3UIl2cX/VrkgJWkbi9J0n63e4FOuN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sNo0h/btrp3UIl2cX/VrkgJWkbi9J0n63e4FOuN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sNo0h/btrp3UIl2cX/VrkgJWkbi9J0n63e4FOuN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsNo0h%2Fbtrp3UIl2cX%2FVrkgJWkbi9J0n63e4FOuN0%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;800&quot; height=&quot;192&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;1027&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kPAkI/btrp6HOMCri/OhFVu659rzs5hsuHM6pCak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kPAkI/btrp6HOMCri/OhFVu659rzs5hsuHM6pCak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kPAkI/btrp6HOMCri/OhFVu659rzs5hsuHM6pCak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkPAkI%2Fbtrp6HOMCri%2FOhFVu659rzs5hsuHM6pCak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;806&quot; height=&quot;1027&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;1027&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yD1AB/btrp5BhoTZg/7ncUM8MXiMwKJRKpAVLB4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yD1AB/btrp5BhoTZg/7ncUM8MXiMwKJRKpAVLB4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yD1AB/btrp5BhoTZg/7ncUM8MXiMwKJRKpAVLB4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyD1AB%2Fbtrp5BhoTZg%2F7ncUM8MXiMwKJRKpAVLB4K%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;816&quot; height=&quot;594&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>ubuntu 아나콘다</category>
      <category>우분투 아나콘다</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/68</guid>
      <comments>https://precommer.tistory.com/68#entry68comment</comments>
      <pubDate>Mon, 10 Jan 2022 11:46:44 +0900</pubDate>
    </item>
    <item>
      <title>[아나콘다] conda 명령어 목록 (conda command list)</title>
      <link>https://precommer.tistory.com/67</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아나콘다 가상환경을 생성하고 삭제하는 등 관리하는 conda 명령에 대해 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아나콘다의 경우 하나의 플랫폼에 각각의 독립된 환경을 구축한다는 것이 가장 큰 매력이다. 하나의 개발환경만 사용하는 경우를 제외하고, 다양한 개발환경을 사용하는 경우 환경 셋업 만으로 짜증 나는 경우가 있다. 또, 여러명이 개발시 가끔 빌드 에러나 환경문제가 왕왕 발생한다. &quot;내 껀 문제가 없는데...&quot; 라는 말을 하고 환경을 비교해보느라 또 시간을 소요하기도 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;만약 서버를 하나 가지고 있고 서버를 통해서만 빌드 하는 경우에는 아나콘다는 유용해보인다. 물론 서로 다른 각기 환경에서는 아나콘다 보다는, 개발 환경을 공유 할 수 있는 docker 등을 사용하는게 더 유용해 보인다. 어찌 되었든 이런 플랫폼은 계속 나오고 있고 자신의 개발 환경에 맞게 사용하면 될 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda 지원 명령은 다음과 같으며, 실제 사용하는 기준으로 다시 알아보도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 330px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;명령&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;사용 예&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;create&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;새로운 conda 환경 생성&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda create --name name python=3.5&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 10px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;list&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 10px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda 환경에 설치된 package list&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 10px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda list&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;remove&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda 환경 삭제&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda remove --name name --all&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;install&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda환경에 package 설치&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda install PACKAGENAME&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;uninstall&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;package 제거&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda uninstall PACKAGENAME&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;info&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;현재 활성화된 conda 정보 확인&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda info -a&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;package&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;low-level conda package 환경 (experimental)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;init&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;shell interaction을 위한 conda 초기화 (experimental)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;config&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Modify configuration value in .condarc. This is modeled after the git config command. Write to the user .condarc file (/home/ubuntu/,condarc) by default.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #404040; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda config --show&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;search&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;특정 package 검색&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda search PACKAGENAME&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;update&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;특정 package 업데이트&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda update PACKAGENAME&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;upgrade&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;update 명령과 동일&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda upgrade PACKAGENAME&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;clean&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;사용하지 않는 packages 나 cache 제거&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda clean --all&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;compare&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;conda 환경간 설치된 패키지 비교&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;help&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;hep&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda --help&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.2635%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;run&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.2171%; height: 20px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Run an excutable in a conda enviroments (experimental)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 37.5193%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Conda를 설치하고, 가상환경을 생성, 패키지 설치, 가상 환경 삭제하는 명령에 대해 알아보도록 한다. 가장 많이 사용하는 경우이고, 그 외에는 사실 잘 모르겠다. 더 사용해봐야 알 수 있을 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. Conda 가상환경 목록 확인 (conda env list)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda env list를 입력하면 현재 설정된 가상환경 리스트가 나온다. 설치 후 아무거도 하지 않은 상태이므로 base만 나오게 된다. base는 설치만 해도 나오는 것으로 conda root 이나 home이라고 보면 될 것 같다. base환경으로 진입하기 위해서는 'conda activate 가상환경이름' 을 이용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5n2GL/btrqbGvqHdt/vYUimaNyqoIaztnDzUBhr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5n2GL/btrqbGvqHdt/vYUimaNyqoIaztnDzUBhr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5n2GL/btrqbGvqHdt/vYUimaNyqoIaztnDzUBhr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5n2GL%2FbtrqbGvqHdt%2FvYUimaNyqoIaztnDzUBhr0%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;740&quot; height=&quot;211&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 가상 환경 활성/비활성화 (conda activate/deactivate 생성한가상환경이름)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;하나 밖에 없으니 base를 선택해본다. 여러개가 있다면 사용하고자 하는 환경을 지정한다. 환경을 사용하고자 하면 activate이고, 나오고자 하면 deactivate 를 사용하면 된다. deactivate의 경우 deactivate만 입력 하면된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;92&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQZTNq/btrpUHJcVkK/qckfiWAUlKuYmfMXqDwIh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQZTNq/btrpUHJcVkK/qckfiWAUlKuYmfMXqDwIh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQZTNq/btrpUHJcVkK/qckfiWAUlKuYmfMXqDwIh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQZTNq%2FbtrpUHJcVkK%2FqckfiWAUlKuYmfMXqDwIh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda activate&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;92&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;92&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. conda 버전 확인 (conda --vesion)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYqBuQ/btrpRXeFvP6/oWJQDl9MfsKqLW0ru8ofkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYqBuQ/btrpRXeFvP6/oWJQDl9MfsKqLW0ru8ofkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYqBuQ/btrpRXeFvP6/oWJQDl9MfsKqLW0ru8ofkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYqBuQ%2FbtrpRXeFvP6%2FoWJQDl9MfsKqLW0ru8ofkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda --vesion&quot; loading=&quot;lazy&quot; width=&quot;715&quot; height=&quot;88&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. conda 가상환경 생성 (conda create --n 가상환경명)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;tensorflow 2.7 버전과 python 3.9 버전을 갖는 환경을 만들어보기로 한다. conda 생성시 설치할 패키지를 지정할 수도 있고, 아니면 환경만 설치한 이후에 conda install 명령으로 설치도 가능하다.&amp;nbsp; 사용한 명령은 '&lt;span style=&quot;color: #ee2323;&quot;&gt;conda create -n tensorflow_27_p39 python=3.9&lt;/span&gt;' 이다. 아래 화면 처럼 설치할 패키지 정보들도 표시된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;1047&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b42ncp/btrpRWUunnH/hiVXun0ogr4rwPKisLqdS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b42ncp/btrpRWUunnH/hiVXun0ogr4rwPKisLqdS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b42ncp/btrpRWUunnH/hiVXun0ogr4rwPKisLqdS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb42ncp%2FbtrpRWUunnH%2FhiVXun0ogr4rwPKisLqdS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda create&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;1047&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;1047&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치후 conda env list를 확인해보면 base와 방금 생성한 tensorflow_27_p39가 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5o7S9/btrp0JyT90h/6Ae0WuBAE7nI91R7jI3Sfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5o7S9/btrp0JyT90h/6Ae0WuBAE7nI91R7jI3Sfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5o7S9/btrp0JyT90h/6Ae0WuBAE7nI91R7jI3Sfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5o7S9%2Fbtrp0JyT90h%2F6Ae0WuBAE7nI91R7jI3Sfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda env list&quot; loading=&quot;lazy&quot; width=&quot;831&quot; height=&quot;195&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. conda 가상환경 복사 (conda create --name 가상환경명 --clone 복사할가상환경명)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이전 정보를 복제해서 생성할 수 있다. 가상 환경 이름을 바꾸고 싶은 경우 (rename 명령은 없기에), 비교를 위해 특정 패키지의 버전만 변경하거나 추가해야 하는 경우 사용 할 수 있을 듯 하다. 이럴 경우 conda info --envs 명령을 통해 두 환경을 확인해 봐야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;conda create --name myclone --clone myenv&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6. conda 가상환경 제거 (conda remove --name 가상환경명 --all)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;remove명령으로 생성한 가상환경을 삭제할 수 있다. 이때에는 base로 돌아간다음에 제거를 해야 한다. 만약 해당 환경이 activation 되어 있는 상태에서 그 환경을 지우려면 아래와 같이 에러가 발생한다. 당연한 결과겠쥬?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v7pOE/btrp7i188Qu/wfWZ8Wk0sll8s8HKs5EKKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v7pOE/btrp7i188Qu/wfWZ8Wk0sll8s8HKs5EKKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v7pOE/btrp7i188Qu/wfWZ8Wk0sll8s8HKs5EKKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv7pOE%2Fbtrp7i188Qu%2FwfWZ8Wk0sll8s8HKs5EKKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda remove&quot; loading=&quot;lazy&quot; width=&quot;877&quot; height=&quot;337&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;7. conda 패키지 설치/제거/업데이트 (conda install/uninstall/update 패키지명)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda install로 패키지를 설치할 수 있다. 버전도 지정할 수 있고, 여러개를 한꺼번에 설치도 가능하다. 여러개를 한꺼번에 설치 시에는 패키지 사이에 한 칸씩 띄워주기만 하면 된다. 삭제 (uninstall)도 되고, 업데이트 (update)도 된다. conda 환경에서는 conda를 이용해서 패키지를 설치하는 것이 PIP를 이용해서 설치하는 것보다 성능도 좋고, PATH 가 맞지 않아서 발생하는 여러 오류를 방지할 수 있다. 일단 conda로 설치 시도해보고, 에러가 발생하는 경우에만 PIP로 설치하자.&amp;nbsp; install 다음에 오는 '-c conda-forge'는 conda-forge라는 채널을 통해서 다운 받겠다라는 의미이다. 채널이 여러 개 있는듯? 버전명 기입 시 지정하는 수식도 아래 있으니 참고하길 바란다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3B5XD/btrp6RwX3Rr/8JZJeGoGUGWtWlrVAtEkTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3B5XD/btrp6RwX3Rr/8JZJeGoGUGWtWlrVAtEkTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3B5XD/btrp6RwX3Rr/8JZJeGoGUGWtWlrVAtEkTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3B5XD%2Fbtrp6RwX3Rr%2F8JZJeGoGUGWtWlrVAtEkTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda install&quot; loading=&quot;lazy&quot; width=&quot;993&quot; height=&quot;548&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Constraint type&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Specification&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Result&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Fuzzy&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;numpy=1.11&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.11.0, 1.11.1, 1.11.2, 1.11.18 etc.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 10px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Exact&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 10px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;numpy==1.11&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 10px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.11.0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Greater than or equal to&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&quot;numpy&amp;gt;=1.11&quot;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.11.0 or higher&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;higher OR&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&quot;numpy=1.11.1|1.11.3&quot;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.11.1, 1.11.3&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;AND&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&quot;numpy&amp;gt;=1.8,&amp;lt;2&quot;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.8, 1.9, not 2.0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;8. conda 환경 내 설치된 패키지 정보 확인 (conda list)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;여러 패키지를 설치하다가 가끔 버전을 확인해야 하는 경우에 사용 할 수 있다. 너무 많다면 export해서 txt 파일로 저장할 수도 있다. 추후 이 파일로 두 가상환경간 설치 패키지 정보 비교도 가능한 것 같고, 이 리스트를 input으로 새로운 package를 생성할 수도 있는 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;9. 버전 정보 포함된 설치된 패키지를 text 파일로 export 하는 방법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; conda list --explicit &amp;gt; bio-env.txt&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;10. 생성된 패키지 정보를 이용해서 동일한 환경의 새로운 가상환경을 생성하는 방법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;conda env create --file bio-env.txt&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;11. conda --help&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;955&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Owjz/btrpU1U9vdx/S6okgOj8eOeWOe2aHWsUK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Owjz/btrpU1U9vdx/S6okgOj8eOeWOe2aHWsUK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Owjz/btrpU1U9vdx/S6okgOj8eOeWOe2aHWsUK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Owjz%2FbtrpU1U9vdx%2FS6okgOj8eOeWOe2aHWsUK1%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;821&quot; height=&quot;955&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;955&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;12. conda 정보 확인 (conda info)&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;현재 활성화된 가상환경의 정보를 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;605&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r7eL5/btrpVPzQY0V/eds2sZXMksgNJvTEKKWXAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r7eL5/btrpVPzQY0V/eds2sZXMksgNJvTEKKWXAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r7eL5/btrpVPzQY0V/eds2sZXMksgNJvTEKKWXAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr7eL5%2FbtrpVPzQY0V%2Feds2sZXMksgNJvTEKKWXAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;conda info&quot; loading=&quot;lazy&quot; width=&quot;837&quot; height=&quot;605&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;605&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Tools</category>
      <category>conda command list</category>
      <category>conda 명령어</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/67</guid>
      <comments>https://precommer.tistory.com/67#entry67comment</comments>
      <pubDate>Sun, 9 Jan 2022 14:18:23 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cud 8.1 설치하기</title>
      <link>https://precommer.tistory.com/66</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;★ ubuntu 딥러닝 서버만들기 &lt;b&gt;★&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/55&quot;&gt;[Ubuntu 서버 만들기 #1] 한글 키보드 설정 하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/60&quot;&gt;[ubuntu 서버만들기 #2] nvidia graphic driver 설치&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/66&quot;&gt;[ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cudnn 8.1 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;우분투 딥러닝 서버만들기 세번째 시간 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이전 포스트에서 Nvidia Graphic Driver를 깔았고, 이번에는 CUDA와 cudNN을 설치해보기로 한다. tensorflow, python, CUDA 그리고 cuDNN 까지 구글에서 검증된 버전으로 설치해보도록 한다. 병렬연산을 하도록 도와주는게 CUDA라면 (이걸로 코인을 채굴하면?) cuDNN은 그런 CUDA위에서 GPU를 사용해 딥러닝을 효율적으로 처리해주는 Deep &lt;span style=&quot;background-color: #ffffff;&quot;&gt;Neural Network library 이다.&amp;nbsp;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.tensorflow.org/install/source#tested_build_configurations&quot;&gt;https://www.tensorflow.org/install/source#tested_build_configurations&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byqG7a/btrp7ia6e4v/ylTmMjRgpcn845osZzsQy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byqG7a/btrp7ia6e4v/ylTmMjRgpcn845osZzsQy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byqG7a/btrp7ia6e4v/ylTmMjRgpcn845osZzsQy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyqG7a%2Fbtrp7ia6e4v%2FylTmMjRgpcn845osZzsQy0%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;854&quot; height=&quot;155&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;525&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nRFFi/btrqzR4jAPr/11c6WiW47bnopKgQYAdgbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nRFFi/btrqzR4jAPr/11c6WiW47bnopKgQYAdgbk/img.png&quot; data-alt=&quot;https://docs.nvidia.com/deploy/cuda-compatibility/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nRFFi/btrqzR4jAPr/11c6WiW47bnopKgQYAdgbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnRFFi%2FbtrqzR4jAPr%2F11c6WiW47bnopKgQYAdgbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;cuda&quot; loading=&quot;lazy&quot; width=&quot;525&quot; height=&quot;415&quot; data-origin-width=&quot;525&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://docs.nvidia.com/deploy/cuda-compatibility/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;각설하고, 다음과 같은 순서로 CUDA와 cuDNN을 잘 설치해보도록 하자.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CUDA 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CUDA PATH 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;cuDNN 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치후 버전 확인&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. CUDA 설치&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래의 설치 사이트 (가입해야 한다.)에서 자신의 환경을 설정하면 설치가능한 명령이 나온다. 그걸 이용해 다운 및 설치를 해주면 된다. 자신의 정보를 잘 모른다면 &lt;b&gt;uname -m &amp;amp;&amp;amp; cat /etc/*release &lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/cuda-11.2.2-download-archive?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=Ubuntu&amp;amp;target_version=2004&amp;amp;target_type=runfilelocal&quot;&gt;https://developer.nvidia.com/cuda-11.2.2-download-archive?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=Ubuntu&amp;amp;target_version=2004&amp;amp;target_type=runfilelocal&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckSBB5/btrpQQEQecm/tonISHfC7N1k7U6gcUc4u1/img.png&quot; width=&quot;800&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/ckSBB5/btrpQQEQecm/tonISHfC7N1k7U6gcUc4u1/img.png&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;870&quot; /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642470391598&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 11.2 CUDA download  (graphic driver까지 포함되어 있음)
wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run

# 실행 방법 1
sudo sh cuda_11.2.2_460.32.03_linux.run

# 실행 방법 2 (UI 없이, Graphic Driver 제외하고 CUDA toolkit만 설치)
sudo sh cuda_11.2.2_460.32.03_linux.run --silent --toolkit

# 실행 방법 2 (UI 없이, Graphic Driver 제외하고 CUDA toolkit만 특정 경로에 설치)
# path를 지정하지 않아도 기본적으로 /usr/local/cuda-xx.xx 에 설치된다. 변경하고자 하면 지정가능
sudo sh cuda_11.2.2_460.32.03_linux.run --silent --toolkit --toolkitpath=/user/local/cuda-11.2&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;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위의 명령대로 다운로드 받고 실행을 해보자. 그래픽 드라이버까지 포함한 버전인듯? 근데 버전이 460.32.03 이다. 난 470 대 버전을 깔았는데.... 지우고 까는 걸 추천한다고 한다. 하지만 난 어차피 CUDA만 깔고 그래픽 드라이버는 설치를 안할 예정이라 과감히 넘어간다. 그리고 다음 화면에서 그래픽 드라이버 체크를 해제한다. 이게 참 햇갈렸다. X가 설치 SKIP인줄 알았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;★ 2022/01/12 update&lt;/span&gt; &lt;/b&gt;: 아래와 같은 명령을 사용하게 되면 UI 화면 없이 toolkit만 설치할 수 있다고 한다. 그리고 서치 위치도 지정 가능하다. 저렇게 지정하지 않아도 default로 /user/local/cuda-11.2 이런 식으로 설치 되는 것 같지만...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo sh cuda.........run --silent --toolkit --toolkitpath=/user/local/cuda-xx.xx&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjP7Hz/btrp6P72vdq/65HeFkXmLDSYXnH7e1KrDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjP7Hz/btrp6P72vdq/65HeFkXmLDSYXnH7e1KrDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjP7Hz/btrp6P72vdq/65HeFkXmLDSYXnH7e1KrDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjP7Hz%2Fbtrp6P72vdq%2F65HeFkXmLDSYXnH7e1KrDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cuda&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;167&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nqiAq/btrp8ryA4sd/GdKcSfjet7DYlbK9VWradk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nqiAq/btrp8ryA4sd/GdKcSfjet7DYlbK9VWradk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nqiAq/btrp8ryA4sd/GdKcSfjet7DYlbK9VWradk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnqiAq%2Fbtrp8ryA4sd%2FGdKcSfjet7DYlbK9VWradk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cuda&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;152&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGt2Bz/btrp96ubQcI/AEur6yyKZGW18idUQ1KkH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGt2Bz/btrp96ubQcI/AEur6yyKZGW18idUQ1KkH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGt2Bz/btrp96ubQcI/AEur6yyKZGW18idUQ1KkH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGt2Bz%2Fbtrp96ubQcI%2FAEur6yyKZGW18idUQ1KkH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cuda&quot; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;345&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;791&quot; data-origin-height=&quot;501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCjZKn/btrp6cvSFll/trAZ1K3FGMnxKTKj66FUVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCjZKn/btrp6cvSFll/trAZ1K3FGMnxKTKj66FUVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCjZKn/btrp6cvSFll/trAZ1K3FGMnxKTKj66FUVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCjZKn%2Fbtrp6cvSFll%2FtrAZ1K3FGMnxKTKj66FUVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cuda&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;507&quot; data-origin-width=&quot;791&quot; data-origin-height=&quot;501&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;잘 설치가 된듯하다. 아래 자세히 보면 환경설정을 하라고 한다.&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjewSV/btrp0k1GmFv/i3EQp2OHc8R29bu8ySBf9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjewSV/btrp0k1GmFv/i3EQp2OHc8R29bu8ySBf9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjewSV/btrp0k1GmFv/i3EQp2OHc8R29bu8ySBf9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjewSV%2Fbtrp0k1GmFv%2Fi3EQp2OHc8R29bu8ySBf9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cuda&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;351&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. CUDA PATH 설정&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;PATH는 .bashrc를 열여서 가장 마지막에 설정하도록 하며, source ~/.bashrc를 통해 업데이트 하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641668065230&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi ~/.bashrc # open file

export PATH=/usr/local/cuda-11.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

source ~/.bashrc # apply after save file&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #ee2323;&quot;&gt;PATH 설정 후 nvcc -V를 통해 버전학인이 가능하다. PATH설정을 하지 않으면 다른 버전명이 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/paAYS/btrpVuPdAMG/VUIZMiqEO7GZHKsSZYU5d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/paAYS/btrpVuPdAMG/VUIZMiqEO7GZHKsSZYU5d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/paAYS/btrpVuPdAMG/VUIZMiqEO7GZHKsSZYU5d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpaAYS%2FbtrpVuPdAMG%2FVUIZMiqEO7GZHKsSZYU5d1%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;800&quot; height=&quot;259&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;

&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. cudnn 설치하기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래의 사이트에서 다운로드 가능하다. Linux (X85_64)용 cuDNN Libary를 설치한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/rdp/cudnn-archive&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.nvidia.com/rdp/cudnn-archive&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A18Za/btrp00B5RuF/yJFkRvTpFqtDiN3IdPmJgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A18Za/btrp00B5RuF/yJFkRvTpFqtDiN3IdPmJgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A18Za/btrp00B5RuF/yJFkRvTpFqtDiN3IdPmJgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA18Za%2Fbtrp00B5RuF%2FyJFkRvTpFqtDiN3IdPmJgK%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;1113&quot; height=&quot;424&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;cudnn-11.2-linux-x64-v8.1.0.77.tgz을 다운로드 받았다. 압축을 풀고 내용을 보면 inculde 파일과 library파일만 있다. 이것을 CUDA가 설치되어 있는 곳에 복사해놓으면 된다. 버전명은 cudnn_version.h에 있다. 이 파일까지 복사해놔야 추후에 cudnn 버전을 확인할 수 가 있을 듯한다. &lt;span style=&quot;color: #ee2323;&quot;&gt;7.X는 버전명이 cudnn.h 파일에 있다.&lt;/span&gt; 왜 없지 하지 마시고 grep으로 찾아봐도 좋을 듯 하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래는 설치 명령이다. cuda가 여러개 설치되어 있는 경우에는 꼭 cuda-11.2 등의 버전명을 기입해주자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;$ tar -xvzf cudnn-11.2-linux-x64-v8.1.0.77.tgz&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;$ sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.2/include 
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64 
$ sudo chmod a+r /usr/local/cuda-11.2/include/cudnn*.h /usr/local/cuda-11.2/lib64/libcudnn*&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/seJWB/btrp1HI3hlM/xqbOTEGzPshnGqH1TArQhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/seJWB/btrp1HI3hlM/xqbOTEGzPshnGqH1TArQhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/seJWB/btrp1HI3hlM/xqbOTEGzPshnGqH1TArQhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FseJWB%2Fbtrp1HI3hlM%2FxqbOTEGzPshnGqH1TArQhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cudnn&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;387&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;983&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SeBQ0/btrp2C1NEcw/N7pXpimEI5TPk8kwhxkkQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SeBQ0/btrp2C1NEcw/N7pXpimEI5TPk8kwhxkkQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SeBQ0/btrp2C1NEcw/N7pXpimEI5TPk8kwhxkkQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSeBQ0%2Fbtrp2C1NEcw%2FN7pXpimEI5TPk8kwhxkkQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 cudnn&quot; loading=&quot;lazy&quot; width=&quot;1056&quot; height=&quot;983&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;983&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. 설치후 버전 확인&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CUDA : nvcc -V&amp;nbsp; (sudo apt install nvidia-cuda-toolkit 설치 필요)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;cudnn : &lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/skRdG/btrqzSJjJPq/IK0r7TfuAx1JlZ2RNj3Mqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/skRdG/btrqzSJjJPq/IK0r7TfuAx1JlZ2RNj3Mqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/skRdG/btrqzSJjJPq/IK0r7TfuAx1JlZ2RNj3Mqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FskRdG%2FbtrqzSJjJPq%2FIK0r7TfuAx1JlZ2RNj3Mqk%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;829&quot; height=&quot;121&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Linux</category>
      <category>CUDA cudnn 설치</category>
      <category>CUDA 버전확인</category>
      <category>우분투 서버 만들기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/66</guid>
      <comments>https://precommer.tistory.com/66#entry66comment</comments>
      <pubDate>Sun, 9 Jan 2022 04:16:57 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 서버만들기 #2] nvidia graphic driver 설치</title>
      <link>https://precommer.tistory.com/60</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;★ ubuntu 딥러닝 서버만들기 &lt;b&gt;★&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/55&quot;&gt;[Ubuntu 서버 만들기 #1] 한글 키보드 설정 하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/60&quot;&gt;[ubuntu 서버만들기 #2] nvidia graphic driver 설치&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/66&quot;&gt;[ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cudnn 8.1 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/68&quot;&gt;[ubuntu 서버만들기 #4] 아나콘다 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/69&quot;&gt;[ubuntu 서버만들기 #5] jupyter notebook server 설정&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우분투 딥러닝서버 만들기 두번째, Nvidia Graphic Driver 설치하기 !&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Graphic Driver를 설치하는 순서는 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Graphic Card 확인&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치 가능한 Driver 버전 확인&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치 하고자 하는 Driver 버전 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;재부팅 후 버전 확인&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;딥러닝용 서버를 구축하기 위해 GPU Driver &amp;gt; CUDA &amp;gt; cudnn &amp;gt; Anaconda &amp;gt; tensorflow &amp;gt; Jupyter notebook 차례로 설치할 예정이다. 사실 이런 계획 없이 가장 마지막에 GPU와 CUDA 설치하다가 우분투를 두 세번 재 설치 했다. 우선적으로 window만 주종으로 써왔던 터라 우분투 (리눅스)는 많이 생소했다. 그 동안은 누가 서버 열어주면 터미널로만 소스 받고 빌드하는 정도 였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Graphic Driver와 CUDA 설치 단계에서 고배를 마셨던 주요 내용은 CUDA 설치 시에 Graphic driver 까지 같이 설치해주게 되는데 (나중에 안 거지만 CUDA만 깔고 Driver는 깔지 않도록 선택할 수 있었다.), 이전 설치된 driver와 충돌이 많이 발생했다. 쨋든 난 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Graphic Driver 설치 &amp;gt; CUDA 설치 (이 때, Graphic Driver는 제외)의 순&lt;/span&gt;&lt;/b&gt;으로 했다. 사실 CUDA도 conda 명령으로 설치 할 수 있다는 걸 나중에 알았다. 만약 이쯤되면 여러개의 가상환경에서 서로 다른 CUDA 버전을 깔아도 되는 것 같다. 나중에 한번 해보게 되면 포스팅 해보려 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;tensorflow를 사용하고 있기에 google에서 테스트 된 환경을 (recommanded) 설치하려고 한다. 그 중 일단 가장 최신 버전으로... 문제 있다면 나중에 다시 깔면 되니 !&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.tensorflow.org/install/source#tested_build_configurations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.tensorflow.org/install/source#tested_build_configurations&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TYOx2/btrp8qGruso/g8LkdBBnf5rXK81KpN2vK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TYOx2/btrp8qGruso/g8LkdBBnf5rXK81KpN2vK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TYOx2/btrp8qGruso/g8LkdBBnf5rXK81KpN2vK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTYOx2%2Fbtrp8qGruso%2Fg8LkdBBnf5rXK81KpN2vK1%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;854&quot; height=&quot;155&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CUDA 11.2를 위해서는 최소 450.80.02 이상만 깔면 된다고 한다. Minimum Required Driver 버전이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://docs.nvidia.com/deploy/cuda-compatibility/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.nvidia.com/deploy/cuda-compatibility/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv5z8J/btrp8qfnEMM/04iTChJPDKeQZ0VH66Mea1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv5z8J/btrp8qfnEMM/04iTChJPDKeQZ0VH66Mea1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv5z8J/btrp8qfnEMM/04iTChJPDKeQZ0VH66Mea1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv5z8J%2Fbtrp8qfnEMM%2F04iTChJPDKeQZ0VH66Mea1%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;726&quot; height=&quot;82&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. Graphic Card 확인&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;Nvidia Quadro RTX 4000 이고, nouveau driver가 설치되어 있다. Ubuntu 설치하면 기본으로 설치되는 것 같다. lshw (list hardware)는 hw 정보를 알 수 있는 리눅스 명령이며 display라는 class 명령을 통해 Graphic card를 확인 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641660696666&quot; class=&quot;shell&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo lshw -c display&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqpSF0/btrp95B1O0U/PkK5tzPkX4Ch3dGxUdtLV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqpSF0/btrp95B1O0U/PkK5tzPkX4Ch3dGxUdtLV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqpSF0/btrp95B1O0U/PkK5tzPkX4Ch3dGxUdtLV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqpSF0%2Fbtrp95B1O0U%2FPkK5tzPkX4Ch3dGxUdtLV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;lshw -c display&quot; loading=&quot;lazy&quot; width=&quot;718&quot; height=&quot;299&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;299&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CUDA core가 2304개이고, 8GB의 메모리를 가지고 있다. 음 의외로 괜찮은 걸 주운듯? 참고로 AWS EC2 &lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;g4dn.2xlarge&lt;/span&gt;는 Tesla T4 였던 것 같다. 그것 대비 나쁘지는 않다. 어차피 개나 나나 Graphic Card는 하나 뿐이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drqtT1/btrp3KlQ79B/6xXIW6xy6adLqQiUUbQGZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drqtT1/btrp3KlQ79B/6xXIW6xy6adLqQiUUbQGZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drqtT1/btrp3KlQ79B/6xXIW6xy6adLqQiUUbQGZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrqtT1%2Fbtrp3KlQ79B%2F6xXIW6xy6adLqQiUUbQGZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Quadro RTX 4000&quot; loading=&quot;lazy&quot; width=&quot;828&quot; height=&quot;657&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;설치 가능한 Driver 버전 확인&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;ubuntu-drivers devices로 확인 가능하며 아래와 같이 recommended 버전도 확인해준다. command가 먹지 않으면 &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;sudo apt install -y ubuntu-drivers-common&lt;/span&gt; 명령으로 설치먼저 해주자.&amp;nbsp; apt-cache나 apt search로도 확인 가능하다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641661865389&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ubuntu-drivers devices

apt-cache search nvidia-driver # 대체
apt search nvidia-driver # 대체&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WJZLy/btrp8qfnO9v/pw7zZBO7Fl6ogFQDricCuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WJZLy/btrp8qfnO9v/pw7zZBO7Fl6ogFQDricCuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WJZLy/btrp8qfnO9v/pw7zZBO7Fl6ogFQDricCuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWJZLy%2Fbtrp8qfnO9v%2Fpw7zZBO7Fl6ogFQDricCuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 그래픽 드라이버 설치&quot; loading=&quot;lazy&quot; width=&quot;725&quot; height=&quot;403&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;403&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 설치 하고자 하는 Driver 버전 설치&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;추천해준 버전을 sudo apt-get install nvidia-driver-470 이라는 명령으로 설치한다. 설치하기전에 sudo apt update와 sudo apt upgrade를 꼭 먼저 해주자.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641662146343&quot; class=&quot;html xml&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update
sudo apt upgrade

sudo apt-get install nvidia-driver-470&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckn9VI/btrpRX52cN6/GxHFWUyIC2OqeJbOGBdcW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckn9VI/btrpRX52cN6/GxHFWUyIC2OqeJbOGBdcW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckn9VI/btrpRX52cN6/GxHFWUyIC2OqeJbOGBdcW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckn9VI%2FbtrpRX52cN6%2FGxHFWUyIC2OqeJbOGBdcW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 그래픽 카드 드라이버 설치하기&quot; loading=&quot;lazy&quot; width=&quot;839&quot; height=&quot;142&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치되는 동안 광고 좀 보면서...&lt;/span&gt;&lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;재부팅 후 버전 확인&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;아래와 같은 명령들로 패키지 확인 가능하다. nvidia-smi에서 나오는 CUDA 버전은 실제 설치된 버전이 아니라 470.86에 어울리는 버전이라고 표시한 것 뿐이다. 처음에는 Graphic Driver를 깔면 자동으로 CUDA가 깔리는 것인줄 알았으나 그게 아닌 거였다. 일단 잘 깔린듯 하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641662577451&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cat /proc/driver/nvidia/version
dpkg -l | grep -i nvidia
nvidia-smi&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;105&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w2o4r/btrpPwnuxGd/oLnoeGRl0ZK3dQsyUBXvY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w2o4r/btrpPwnuxGd/oLnoeGRl0ZK3dQsyUBXvY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w2o4r/btrpPwnuxGd/oLnoeGRl0ZK3dQsyUBXvY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw2o4r%2FbtrpPwnuxGd%2FoLnoeGRl0ZK3dQsyUBXvY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;cat /proc/driver/nvidia/version&quot; loading=&quot;lazy&quot; width=&quot;817&quot; height=&quot;105&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;105&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span class=&quot;imageblock&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0XGa4/btrpPU9wf9w/P3Eo8ujEB6ZWNlsc5BfaZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0XGa4/btrpPU9wf9w/P3Eo8ujEB6ZWNlsc5BfaZk/img.png&quot; data-alt=&quot;1.3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0XGa4/btrpPU9wf9w/P3Eo8ujEB6ZWNlsc5BfaZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0XGa4%2FbtrpPU9wf9w%2FP3Eo8ujEB6ZWNlsc5BfaZk%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;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6nrLw/btrpP3FOlaw/F7OTzDMRGmq1FaTD96cjy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6nrLw/btrpP3FOlaw/F7OTzDMRGmq1FaTD96cjy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6nrLw/btrpP3FOlaw/F7OTzDMRGmq1FaTD96cjy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6nrLw%2FbtrpP3FOlaw%2FF7OTzDMRGmq1FaTD96cjy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;nvidia-smi&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;461&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>ubuntu graphic driver</category>
      <category>우분투 그래픽 드라이버</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/60</guid>
      <comments>https://precommer.tistory.com/60#entry60comment</comments>
      <pubDate>Sun, 9 Jan 2022 02:55:48 +0900</pubDate>
    </item>
    <item>
      <title>티스토리에서 변경한 항목들</title>
      <link>https://precommer.tistory.com/61</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;티스토리 하면서 적용한 것들 기입해주자. 스킨을 바꾸면 사라진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스킨편집 &amp;gt; html편집 &amp;gt; CSS (or HTML) 선택 &amp;gt; 변경 후 적용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;★ 목 차&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#c1&quot;&gt;1. 티스토리 이미지에 외곽선 추가하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#c2&quot;&gt;2. 티스토리 매거진 스킨 최 상단 타이틀 폰트 수정&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#c3&quot;&gt;3. 티스토리 매거진 스킨 본문 1 글자크기수정&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;#c4&quot;&gt;4. 티스토리 박스 만들기&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p id=&quot;c1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #a6bc00; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 티스토리 이미지에 외곽선 추가하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;imageblok으로 찾아서 있다면 border 추가하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;imageblock이 없다면 아래 내용대로 추가해주기 (입맞에 맞게 수정하기)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;★&lt;a href=&quot;http://www.copysense.co.uk/border.php&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.copysense.co.uk/border.php&lt;/a&gt; 에서 css border를 테스트 적용해볼 수 있네요. 적용후 소스 복!붙!&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641620420479&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/*custom*/
/* 이미지 외곽선 설정 */
.imageblock img{
	border:0.1em solid #999999;
	padding:5px; 
    background-color:#f5cb42; 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;lt; 사용 예 &amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t0Z8H/btrp3U928U2/5Q5pvGmRVGnmjNKLAthKn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t0Z8H/btrp3U928U2/5Q5pvGmRVGnmjNKLAthKn0/img.png&quot; data-alt=&quot;B &amp;amp;amp;amp;amp;amp;amp;amp; A&amp;amp;amp;amp;amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t0Z8H/btrp3U928U2/5Q5pvGmRVGnmjNKLAthKn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft0Z8H%2Fbtrp3U928U2%2F5Q5pvGmRVGnmjNKLAthKn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;티스토리 이미지에 외곽선 추가하기&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;284&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;B &amp;amp;amp;amp;amp;amp;amp; A&amp;amp;amp;amp;amp;amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;c2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;2. 티스토리 매거진 스킨 최 상단 타이틀 폰트 수정&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;h1 으로 검색해서 원하는 값으로 수정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;옆에 주석처리 되어 있는 값이 Original 값&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1641622100419&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.header h1 a, .ly_area .ly_logo a {
  font-size: 22px; /*26*/
  color: #3d4d94;/*#f25555;*/
  line-height: 26px; /*32*/
  font-weight: 800;/*600*/
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;lt; 사용 예 &amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dd7SrR/btrp7iojaUl/Q9uOgJdHqltRmrcW3SL7Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dd7SrR/btrp7iojaUl/Q9uOgJdHqltRmrcW3SL7Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dd7SrR/btrp7iojaUl/Q9uOgJdHqltRmrcW3SL7Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdd7SrR%2Fbtrp7iojaUl%2FQ9uOgJdHqltRmrcW3SL7Yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot; 티스토리 매거진 스킨 최 상단 타이틀 폰트 수정&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;304&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;c3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;3.티스토리 매거진 스킨 본문 1 글자크기 수정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://uniqbin.tistory.com/26#comment21401497&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;제이빈님의 블로그&lt;/a&gt; 참고&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CSS 코드 10번째 정도 라인에서 아래의 내용으로 검색 (Spoqa)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;font-size:12px를 주석처리 (시작과 끝에 /* */ 추가해주기)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1641623146778&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body, button, input, select, table, textarea {
/*  font-size: 12px;*/
	font-family: 'Spoqa Han Sans', Dotum, '돋움', Helvetica, &quot;Apple SD Gothic Neo&quot;, sans-serif;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  outline: none
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;사용예&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;481&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eJhwbR/btrp7RRxuuX/KUln0NK155QEq2eehFVDQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eJhwbR/btrp7RRxuuX/KUln0NK155QEq2eehFVDQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eJhwbR/btrp7RRxuuX/KUln0NK155QEq2eehFVDQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeJhwbR%2Fbtrp7RRxuuX%2FKUln0NK155QEq2eehFVDQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;티스토리 매거진 스킨 본문 1 글자크기 수정&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;481&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;481&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p id=&quot;c4&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #a6bc00;&quot;&gt;&lt;b&gt;4. 티스토리 박스 만들기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스킨편집 &amp;gt; html편집 &amp;gt; CSS (or HTML) 선택 한후 아래 코드 입력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;다시 기본모드로 돌아와서 만들어진 박스 위에 원하는 내용 작성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래 코드를 베이스로 원하는 boarder style 변경&amp;nbsp; (다른 스타일과 설정은 &lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;http://tcpschool.com/css/css_boxmodel_borders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;를 참조)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1641652610391&quot; class=&quot;css&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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-thickness: initial; 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;&amp;lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;span style=&quot;font-size: 11pt;&quot;&amp;gt;&amp;lt;span style=&quot;color: #000000;&quot;&amp;gt; 이중 테두리 박스 &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>티스토리 매거진 스킨 본문 1 글자크기 수정</category>
      <category>티스토리 매거진 스킨 최 상단 타이틀 폰트 수정</category>
      <category>티스토리 이미지에 외곽선 추가하기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/61</guid>
      <comments>https://precommer.tistory.com/61#entry61comment</comments>
      <pubDate>Sat, 8 Jan 2022 15:17:09 +0900</pubDate>
    </item>
    <item>
      <title>마인크래프트 포켓몬모드 설치  (with 포지)</title>
      <link>https://precommer.tistory.com/11</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마인크래프트 자바 에디션이 설치 되었다면, 이제 포켓몬 모드를 실행할 수 있도록 구성해보자. 자바에디션 설치는 &lt;a href=&quot;https://precommer.tistory.com/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이곳&lt;/a&gt;으로.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포지를 이용해 포켓몬모드를 실행 가능한 버전은 1.12.2 이다. &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;마인크래프트 JAVA 에디션과 포지 모두 1.12.2를 설치해야 한다.&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 복잡한데 아래와 같은 순서로 따라하면 어렵지 않게 설치 할&amp;nbsp; 수 있다. 애매하면 질문을 남기도록 하자.&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;1) 자바설치 (jar 파일을 실행하기 위해서)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모드 파일이나 포지는 jar 파일로 배포된다. 이를 실행하기 위해서는 귀찮지만 java를 설치해줘야 한다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;윈도우 키 + R&lt;/b&gt;을 누른후 나오는 실행화면에서 cmd를 입력해서 아래와 같이 명령 프롬프트를 실행한다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 java -- version을 입력해서&amp;nbsp; java가 설치 되어 있는지 확인한다.&amp;nbsp;&amp;nbsp;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MgnAH/btrbe6PsKs5/7I7MWZGt9dltuDfhhcWLMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MgnAH/btrbe6PsKs5/7I7MWZGt9dltuDfhhcWLMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MgnAH/btrbe6PsKs5/7I7MWZGt9dltuDfhhcWLMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMgnAH%2Fbtrbe6PsKs5%2F7I7MWZGt9dltuDfhhcWLMk%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;139&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1-1) 설치 되어 있지 않은 경우 (위 화면), &lt;a href=&quot;https://www.java.com/ko/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.java.com/ko/download/&lt;/a&gt;에서 JRE를 설치한다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC 환경에 맞는 JRE를 자동으로 설치 해준다.&amp;nbsp;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1-2) 설치 후 명령프롬프트를 다시 열어서 java -version을 확인해본다. 아래와 같이 잘 설치 되어 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;85&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8I5eN/btraZLzD6QV/HQ2hMm1WZhBfZtl7VtPNGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8I5eN/btraZLzD6QV/HQ2hMm1WZhBfZtl7VtPNGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8I5eN/btraZLzD6QV/HQ2hMm1WZhBfZtl7VtPNGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8I5eN%2FbtraZLzD6QV%2FHQ2hMm1WZhBfZtl7VtPNGk%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;558&quot; height=&quot;85&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;85&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;2) 마인크래프트 자바에디션을 1.12.2로 실행한다. (한번이라도 실행이 되어야 함)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;nbsp;Minecraft Launcher 실행 &amp;gt; 설치설정 &amp;gt; New installation &amp;gt; 버전에서 release 1.12.2 선택&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbqRdy/btra330Pl1U/5AXzLF3MfPuiBDhtwX77K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbqRdy/btra330Pl1U/5AXzLF3MfPuiBDhtwX77K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbqRdy/btra330Pl1U/5AXzLF3MfPuiBDhtwX77K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbqRdy%2Fbtra330Pl1U%2F5AXzLF3MfPuiBDhtwX77K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포켓몬모드설치&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;615&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;생성하고 나면 아래와 같이 1.12.2 버전이 나타난다. 플레이 버튼을 눌러서 한번 플레이한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR6dss/btra9XZVdIY/bP36SXBELs4wp8gHKcl691/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR6dss/btra9XZVdIY/bP36SXBELs4wp8gHKcl691/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR6dss/btra9XZVdIY/bP36SXBELs4wp8gHKcl691/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR6dss%2Fbtra9XZVdIY%2FbP36SXBELs4wp8gHKcl691%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포켓몬모드설치&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;628&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;클래식한 화면이 나온다. 왼쪽 하단에서 버전을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqU1eu/btrpu6biDpB/Dk2fnt06qxoS9pcaIqaox0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqU1eu/btrpu6biDpB/Dk2fnt06qxoS9pcaIqaox0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqU1eu/btrpu6biDpB/Dk2fnt06qxoS9pcaIqaox0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqU1eu%2Fbtrpu6biDpB%2FDk2fnt06qxoS9pcaIqaox0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포켓몬모드설치&quot; loading=&quot;lazy&quot; width=&quot;852&quot; height=&quot;458&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;

&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3) 1.12.2 버전의 포지 설치&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;포지도 버전이 있다. 아래 페이지에서 1.12.2 버전 Download Recommended의 Installer를 선택하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://files.minecraftforge.net/net/minecraftforge/forge/index_1.12.2.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://files.minecraftforge.net/net/minecraftforge/forge/index_1.12.2.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSMBHH/btraSXUt7Vf/fk4tIRFbQz2KrsfyPNDgC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSMBHH/btraSXUt7Vf/fk4tIRFbQz2KrsfyPNDgC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSMBHH/btraSXUt7Vf/fk4tIRFbQz2KrsfyPNDgC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSMBHH%2FbtraSXUt7Vf%2Ffk4tIRFbQz2KrsfyPNDgC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포지설치&quot; loading=&quot;lazy&quot; width=&quot;862&quot; height=&quot;426&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그러면 아래 페이지로 넘어가는데 5초 정도 그대로 있으면 오른쪽 상단에 &lt;b&gt;SKIP&lt;/b&gt; 이라는 버튼이 나오고 SKIP을 누르면 다운로드 된다. &lt;b&gt;forge-1.12.2-14.23.5.2855-installer.jar&lt;/b&gt;가 다운로드 되었다. JAVA가 설치 되었으니 실행한다.&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: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;보통 jar파일은 원래 자바가 실행이 되어야 하나 일부 압축 프로그램이 그 권한을 가져가면서 실행이 안되는 문제가 종종, 왕왕, 빈번하게 나타난다. 간단하게 JarFix를 이용해 경로를 다시 설정해줄 수 있다. 아래 파일을 다운 받거나 사이트에서 다운 받아 실행 해주시면 된다. 그래도 안되면 댓글로.....&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cwD5a1/btrppAxEqBB/Ox40huH5GxHT6iaxc14qxK/jarfix.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;jarfix.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.05MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;JarFix : &lt;a href=&quot;https://johann.loefflmann.net/en/software/jarfix/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://johann.loefflmann.net/en/software/jarfix/index.html&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/esYUnm/btraRx9AoB3/Lr7klVkHQ0RZTm4PTqPvr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/esYUnm/btraRx9AoB3/Lr7klVkHQ0RZTm4PTqPvr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/esYUnm/btraRx9AoB3/Lr7klVkHQ0RZTm4PTqPvr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FesYUnm%2FbtraRx9AoB3%2FLr7klVkHQ0RZTm4PTqPvr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포지설치&quot; loading=&quot;lazy&quot; width=&quot;1862&quot; height=&quot;333&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;271&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxLIiy/btrbd0aGd6m/HYEsJivuWLTbgvzk8UkGA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxLIiy/btrbd0aGd6m/HYEsJivuWLTbgvzk8UkGA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxLIiy/btrbd0aGd6m/HYEsJivuWLTbgvzk8UkGA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxLIiy%2Fbtrbd0aGd6m%2FHYEsJivuWLTbgvzk8UkGA0%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;405&quot; height=&quot;271&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;271&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;실행이 완료된 후 마인크래프트를 실행하면 forge (1.12.2-forge...)라고 선택하고 플레이를 누른다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IXAh6/btrpyjHHrHa/2qcZ0vKKQUtAkleCDqgvkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IXAh6/btrpyjHHrHa/2qcZ0vKKQUtAkleCDqgvkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IXAh6/btrpyjHHrHa/2qcZ0vKKQUtAkleCDqgvkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIXAh6%2FbtrpyjHHrHa%2F2qcZ0vKKQUtAkleCDqgvkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포켓몬모드설치&quot; loading=&quot;lazy&quot; width=&quot;863&quot; height=&quot;540&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래와 같이 실행되고, 오른쪽 하단에 버전이 Forge 버전이 표시되어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;1055&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgi2Fe/btrbgobieK2/ICBatlKLIlD77mKaWXS2gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgi2Fe/btrbgobieK2/ICBatlKLIlD77mKaWXS2gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgi2Fe/btrbgobieK2/ICBatlKLIlD77mKaWXS2gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgi2Fe%2FbtrbgobieK2%2FICBatlKLIlD77mKaWXS2gk%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;1902&quot; height=&quot;1055&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;1055&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4) 포멧몬모드 다운로드 후 설치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래 페이지로 가서 다운로드 버튼을 누르면 포켓몬모드가 다운로드 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://reforged.gg/ko&quot;&gt;https://reforged.gg/ko&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkZzMK/btrpOxNEELy/AZ8kEb23FeFeRKUJ3DDf3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkZzMK/btrpOxNEELy/AZ8kEb23FeFeRKUJ3DDf3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkZzMK/btrpOxNEELy/AZ8kEb23FeFeRKUJ3DDf3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkZzMK%2FbtrpOxNEELy%2FAZ8kEb23FeFeRKUJ3DDf3K%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;415&quot; height=&quot;530&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;오른쪽 하단 돋보기 버튼 옆을 누른 후 %appdata%를 입력하고 Enter키를 누르면 ,&amp;nbsp; AppData &amp;gt; Roaming &amp;gt; .minecrasft &amp;gt; mods 폴더로 저장한 포켓몬 모드 파일을 옮긴다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sJmvU/btrpvYXZ3Bc/r3DO082KrlgKpItW0MdhgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sJmvU/btrpvYXZ3Bc/r3DO082KrlgKpItW0MdhgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sJmvU/btrpvYXZ3Bc/r3DO082KrlgKpItW0MdhgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsJmvU%2FbtrpvYXZ3Bc%2Fr3DO082KrlgKpItW0MdhgK%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;519&quot; height=&quot;204&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lvPvP/btrpthj3Xp5/nWG2tfkXJnfm423y5trow1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lvPvP/btrpthj3Xp5/nWG2tfkXJnfm423y5trow1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lvPvP/btrpthj3Xp5/nWG2tfkXJnfm423y5trow1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlvPvP%2Fbtrpthj3Xp5%2FnWG2tfkXJnfm423y5trow1%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;578&quot; height=&quot;135&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNRj9q/btra6IB9wMw/AO4I8bGLvP5kro3aYyvNp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNRj9q/btra6IB9wMw/AO4I8bGLvP5kro3aYyvNp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNRj9q/btra6IB9wMw/AO4I8bGLvP5kro3aYyvNp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNRj9q%2Fbtra6IB9wMw%2FAO4I8bGLvP5kro3aYyvNp0%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;635&quot; height=&quot;122&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 마인크래프트를 설치 후 실행화면에서 Mods를 누르면 포켓몬모드 (Pixelmon)이 잘 설치 되어 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7WvR7/btrpzLcSEs4/qRAPTSZ7wmWypR4i9zgW9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7WvR7/btrpzLcSEs4/qRAPTSZ7wmWypR4i9zgW9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7WvR7/btrpzLcSEs4/qRAPTSZ7wmWypR4i9zgW9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7WvR7%2FbtrpzLcSEs4%2FqRAPTSZ7wmWypR4i9zgW9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포켓몬모드설치&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;474&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이제 플레이 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1887&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btievF/btra9W0UgMo/Ua4KheVhMAFLL3dGihTy30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btievF/btra9W0UgMo/Ua4KheVhMAFLL3dGihTy30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btievF/btra9W0UgMo/Ua4KheVhMAFLL3dGihTy30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtievF%2Fbtra9W0UgMo%2FUa4KheVhMAFLL3dGihTy30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;포켓몬모드설치&quot; loading=&quot;lazy&quot; width=&quot;1887&quot; height=&quot;1022&quot; data-origin-width=&quot;1887&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>게임</category>
      <category>포켓몬모드 836</category>
      <category>포켓몬모드 최신버전</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/11</guid>
      <comments>https://precommer.tistory.com/11#entry11comment</comments>
      <pubDate>Thu, 6 Jan 2022 23:08:04 +0900</pubDate>
    </item>
    <item>
      <title>vi editor 방향 키 오류 수정</title>
      <link>https://precommer.tistory.com/59</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;V&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;I 에디터를 즐겨 쓰는데, 방향키를 누르면 방향 이동이 아니라 영어 알파벳이 나온다. 당황하지 말고 아래와 같은 방법으로 수정 해보자.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. vi .exrc 명령으로 파일 생성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHlEz/btrp1H81A07/FOYmLqe3dLGAmu1JeK11K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHlEz/btrp1H81A07/FOYmLqe3dLGAmu1JeK11K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHlEz/btrp1H81A07/FOYmLqe3dLGAmu1JeK11K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHlEz%2Fbtrp1H81A07%2FFOYmLqe3dLGAmu1JeK11K1%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;703&quot; height=&quot;124&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 아래와 같은 코드 입력 후 저장하기&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;set bs=2&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;set nocp&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XKD7S/btrpU1BqMkT/XdqnyFRrKzMR2uKkqJRkTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XKD7S/btrpU1BqMkT/XdqnyFRrKzMR2uKkqJRkTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XKD7S/btrpU1BqMkT/XdqnyFRrKzMR2uKkqJRkTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXKD7S%2FbtrpU1BqMkT%2FXdqnyFRrKzMR2uKkqJRkTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;vi editor 방향 키 오류 수정&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;197&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;★ &lt;/span&gt;다시 해보니 sudo권한으로 vi를 연 경우 (sudo vi&amp;nbsp; 파일명) 동일하게 오류가 발생한다. 결국 vim을 설치했더니 문제가 해결되었다. vim은 vi 를 개선해서 나온 버전이니 상관 없겠지. 참 ! 칼라로 나온다. 실행도 vi 명령으로 할 수 있다. 그럼 지금까지 내가 다른 서버에 터미널 열어서 사용했던 것들이 vi가 아니라 vim 이었던 것인가! &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;문제 발생 시 &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;고민하&lt;/b&gt;지 마시고 vim을 설치하길 추천 한다.&lt;/span&gt; &lt;/b&gt;이것말고도 할게 많으니 말이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641561431614&quot; class=&quot;shell&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install vim&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX1kEx/btrp2CmqYol/XgHPbQ5hvNExf3w1xPtlu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX1kEx/btrp2CmqYol/XgHPbQ5hvNExf3w1xPtlu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX1kEx/btrp2CmqYol/XgHPbQ5hvNExf3w1xPtlu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX1kEx%2Fbtrp2CmqYol%2FXgHPbQ5hvNExf3w1xPtlu1%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;738&quot; height=&quot;175&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tips</category>
      <category>vi editor 방향 키 오류 수정</category>
      <category>vi editor 오류</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/59</guid>
      <comments>https://precommer.tistory.com/59#entry59comment</comments>
      <pubDate>Thu, 6 Jan 2022 21:32:01 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 20.04] ip 확인 하는 두 가지 방법</title>
      <link>https://precommer.tistory.com/58</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ubuntu에서 ip 주소 확인 하는 방법. 기록하자. 잊어버린다.&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. ifconfig&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjN9iB/btrp0JsICFZ/7kJb7kK8JT3PWCSerLt5rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjN9iB/btrp0JsICFZ/7kJb7kK8JT3PWCSerLt5rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjN9iB/btrp0JsICFZ/7kJb7kK8JT3PWCSerLt5rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjN9iB%2Fbtrp0JsICFZ%2F7kJb7kK8JT3PWCSerLt5rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;ubuntu ifconfig&quot; loading=&quot;lazy&quot; width=&quot;719&quot; height=&quot;523&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. ip a (address)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZZqAF/btrp1H2feTT/Ri2GUmHVYGANOMH95EoweK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZZqAF/btrp1H2feTT/Ri2GUmHVYGANOMH95EoweK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZZqAF/btrp1H2feTT/Ri2GUmHVYGANOMH95EoweK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZZqAF%2Fbtrp1H2feTT%2FRi2GUmHVYGANOMH95EoweK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 IP 주소 확인&quot; loading=&quot;lazy&quot; width=&quot;718&quot; height=&quot;407&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>Ubuntu IP</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/58</guid>
      <comments>https://precommer.tistory.com/58#entry58comment</comments>
      <pubDate>Thu, 6 Jan 2022 20:50:35 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 서버만들기 #1]  한글 키보드 설정 하기</title>
      <link>https://precommer.tistory.com/55</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/54&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.12.31 - [머신러닝 딥러닝/Tools] - AWS EC2 g4dn (2xlarge) 정보와 한계점&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위의 포스팅처럼 AWS EC2 AMI가 모든 해결책은 아니라는 걸 깨닫고 (물론 GPU 몇개 더달린 거 사면 되지만 너어무 비싸다.), 어렵사리 workstation 하나 구해서 Deep Learning 서버를 구축하기로 하였다. 하여 앞으로 몇 부분에 걸쳐서 관련 내용을 포스팅 할 예정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;일단 Ubuntu 20.04 LTS를 영어를 기본으로 설치했다. 처음에 한글로 설치했다가, 파일 Viewer를 통해 기본 폴더들이 한글로 나오는 걸보고 식겁해서 영어로 다시 깔았다. 한글로 깔리는 경우, 무엇보다 Path가 한글인 경우 동작하지 않는 프로그램 있을 것 같은 느낌 같은 느낌 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;실로 오랜만에 ubuntu를 깔아봤다. 그냥 모든 Driver를 자동으로 잡아주는 듯 하다. UI도 나쁘지 않은 듯 하다. 습관 때문인지 크롬을 아래의 명령으로 설치하고, 크&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;롬 실행 후 한글로 검색을 해보려니 한글이 안보인다. 한국 사람에게는 필수이므로 아래를 보고 설정하도록 하자.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; padding: 10px; border: 4px double; border-width: 3px; border-color: #79a5e4;&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;★ ubuntu 딥러닝 서버만들기 &lt;b&gt;★&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/55&quot;&gt;[Ubuntu 서버 만들기 #1] 한글 키보드 설정 하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/60&quot;&gt;[ubuntu 서버만들기 #2] nvidia graphic driver 설치&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/66&quot;&gt;[ubuntu 서버만들기 #3] cuda 11.2 &amp;amp; cudnn 8.1 설치하기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;★ chrome 설치 명령 (콘솔에서 아래 명령 차례로 입력)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641272343706&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1.&amp;nbsp; Show Applications (Super (Window key) + A ) 후 Language support&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;왼쪽 하단 메뉴키를 눌러도 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NuNey/btrpYnwT4Yu/0xd02KDZD7kgRJrf9BeWU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NuNey/btrpYnwT4Yu/0xd02KDZD7kgRJrf9BeWU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NuNey/btrpYnwT4Yu/0xd02KDZD7kgRJrf9BeWU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNuNey%2FbtrpYnwT4Yu%2F0xd02KDZD7kgRJrf9BeWU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;397&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. Language Support에서 한국어가 설치 되어 있는지 확인&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; 설치가 안되어 있다면 Install / Remove Languages 를 눌러서 설치.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/stntE/btrp0ac1hAM/34v2nYwxkj7kgD2uP04pAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/stntE/btrp0ac1hAM/34v2nYwxkj7kgD2uP04pAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/stntE/btrp0ac1hAM/34v2nYwxkj7kgD2uP04pAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FstntE%2Fbtrp0ac1hAM%2F34v2nYwxkj7kgD2uP04pAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 한글&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;460&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pwh0u/btrp6w1RZQD/V9ITtX4Pcn0y91KvTr8QWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pwh0u/btrp6w1RZQD/V9ITtX4Pcn0y91KvTr8QWK/img.png&quot; data-alt=&quot;오른쪽 화면에서 Korean이 Installed 되어 있는지 확인 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pwh0u/btrp6w1RZQD/V9ITtX4Pcn0y91KvTr8QWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPwh0u%2Fbtrp6w1RZQD%2FV9ITtX4Pcn0y91KvTr8QWK%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;860&quot; height=&quot;392&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오른쪽 화면에서 Korean이 Installed 되어 있는지 확인 가능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 한국어를 제대로 설치한 이후에 Input Sources에서 한글 추가하기.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; 3-1. &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Settings 진입 : 오른족 상단의 가장 마지막 역삼각형 버튼 누름 &amp;gt; Settings 선택 (&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래 첫번째 화면 참조)&lt;br /&gt;&amp;nbsp; 3-2. Setings의 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Region &amp;amp; Language에서&lt;span&gt; &lt;/span&gt;&lt;/span&gt;+ 버튼 누름 &amp;gt; korean 선택&amp;nbsp; &amp;gt; Korean (Hangul) 선택&lt;br /&gt;&amp;nbsp; ★ 혹시 아래 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Korean (Hangul)가 보이지 않는다면 재 부팅을 해보자. 언어팩을 설치후 재 부팅 필요한듯 하다.&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&gt;&lt;figure class=&quot;imageblock alignRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIjlbu/btrp01trwAl/T09CSMHSJVsWKtcBYkDkiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIjlbu/btrp01trwAl/T09CSMHSJVsWKtcBYkDkiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIjlbu/btrp01trwAl/T09CSMHSJVsWKtcBYkDkiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIjlbu%2Fbtrp01trwAl%2FT09CSMHSJVsWKtcBYkDkiK%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;574&quot; height=&quot;369&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;369&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKBkPL/btrpVwHSFnA/w4iFoLDO1KLpdmUz8rLZr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKBkPL/btrpVwHSFnA/w4iFoLDO1KLpdmUz8rLZr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKBkPL/btrpVwHSFnA/w4iFoLDO1KLpdmUz8rLZr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKBkPL%2FbtrpVwHSFnA%2Fw4iFoLDO1KLpdmUz8rLZr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 한글키보드&quot; loading=&quot;lazy&quot; width=&quot;857&quot; height=&quot;594&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;713&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5gl4X/btrp00HJxDv/CApKavCVwRi9QKkqjsTpNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5gl4X/btrp00HJxDv/CApKavCVwRi9QKkqjsTpNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5gl4X/btrp00HJxDv/CApKavCVwRi9QKkqjsTpNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5gl4X%2Fbtrp00HJxDv%2FCApKavCVwRi9QKkqjsTpNk%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;858&quot; height=&quot;713&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;713&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dv5H08/btrpMQyxtJa/3xZtj8Lox7DllG6KuQxnRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dv5H08/btrpMQyxtJa/3xZtj8Lox7DllG6KuQxnRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dv5H08/btrpMQyxtJa/3xZtj8Lox7DllG6KuQxnRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdv5H08%2FbtrpMQyxtJa%2F3xZtj8Lox7DllG6KuQxnRk%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;984&quot; height=&quot;820&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;820&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. Manage Installed Languages에서 추가 설정이 가능, 영어와 한글 변경을 Shift+space로 변경&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp;자기 입맛대로 설정 가능할듯?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;825&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A7utR/btrpD1O9uCX/ib2Jq8BBJBtOp7OEkkIKl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A7utR/btrpD1O9uCX/ib2Jq8BBJBtOp7OEkkIKl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A7utR/btrpD1O9uCX/ib2Jq8BBJBtOp7OEkkIKl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA7utR%2FbtrpD1O9uCX%2Fib2Jq8BBJBtOp7OEkkIKl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;우분투 한글키보드&quot; loading=&quot;lazy&quot; width=&quot;984&quot; height=&quot;825&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;825&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6. 본인이 설정한 단축키 (난, Shift+space)로 영어와 한글 변환 가능한지 확인 (오른쪽 상단 아이콘으로 확인 가능)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; chrome이나 Editor 열어서 확인 해보기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHCdTS/btrp0kNhaWs/DTGbwkIhGhh3bLYDxZOtyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHCdTS/btrp0kNhaWs/DTGbwkIhGhh3bLYDxZOtyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHCdTS/btrp0kNhaWs/DTGbwkIhGhh3bLYDxZOtyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHCdTS%2Fbtrp0kNhaWs%2FDTGbwkIhGhh3bLYDxZOtyK%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;856&quot; height=&quot;486&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buD2lI/btrpZ9SKWDB/dN1cKkFgR9ix70Ey4bW3jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buD2lI/btrpZ9SKWDB/dN1cKkFgR9ix70Ey4bW3jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buD2lI/btrpZ9SKWDB/dN1cKkFgR9ix70Ey4bW3jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuD2lI%2FbtrpZ9SKWDB%2FdN1cKkFgR9ix70Ey4bW3jk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>ubuntu 서버만들기</category>
      <category>ubuntu 한글</category>
      <category>우분투 서버 만들기</category>
      <category>우분투 한글</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/55</guid>
      <comments>https://precommer.tistory.com/55#entry55comment</comments>
      <pubDate>Tue, 4 Jan 2022 14:02:12 +0900</pubDate>
    </item>
    <item>
      <title>AWS EC2 g4dn (2xlarge) 정보와 한계점</title>
      <link>https://precommer.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Deep learning 모델을 돌릴 일이 있어서 개인 Notebook PC로 돌리다가 시간의 압박으로&amp;nbsp;AWS EC2 (g4dn.2xlarge) 환경에서 돌려봤는데, 학습 속도가 180초에서 18초로 1/10 가량 줄어드는 신세계를 경험했습니다. 다만 notebook PC는 GPU가 내장이라 CPU로만 돌렸고, AWS EC2에서는 별다른 설정을 하지 않았기에 GPU로 학습된 결과 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS g4dn에 대한 정보는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/ec2/instance-types/g4/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://aws.amazon.com/ko/ec2/instance-types/g4/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOfKY/btrpq8TEgks/PpXPW2DoUb3CoVMIoI2kU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOfKY/btrpq8TEgks/PpXPW2DoUb3CoVMIoI2kU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOfKY/btrpq8TEgks/PpXPW2DoUb3CoVMIoI2kU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOfKY%2Fbtrpq8TEgks%2FPpXPW2DoUb3CoVMIoI2kU1%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;1218&quot; height=&quot;167&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2xlarge는 GPU로 NVIDIA Tesla T4를 1개 사용 합니다. 그 외 자세한 사양은 아래와 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xLsxk/btrpjvo57ef/OWiR6WttCCZIlFhixkaG1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xLsxk/btrpjvo57ef/OWiR6WttCCZIlFhixkaG1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xLsxk/btrpjvo57ef/OWiR6WttCCZIlFhixkaG1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxLsxk%2Fbtrpjvo57ef%2FOWiR6WttCCZIlFhixkaG1k%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;780&quot; height=&quot;241&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참, AWS EC2 g4dn의 경우 무료가 아닙니다. 아래처럼 시간당 0.752 USD, 하루에 18.048 USD, 한달에 541.44 USD 입니다. 현재 환율로 한달에 65 만원 가량 지불을 해야 합니다. 비싸네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/ec2/pricing/on-demand/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://aws.amazon.com/ko/ec2/pricing/on-demand/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHCwEM/btrppzYiwGG/yYXT9hEX9CpkmCEEQy3e41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHCwEM/btrppzYiwGG/yYXT9hEX9CpkmCEEQy3e41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHCwEM/btrppzYiwGG/yYXT9hEX9CpkmCEEQy3e41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHCwEM%2FbtrppzYiwGG%2FyYXT9hEX9CpkmCEEQy3e41%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;855&quot; height=&quot;501&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;501&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;문제는&lt;/b&gt; &lt;/span&gt;사실 이런 큰 비용(?)을 지불하고 사용을 해도 GPU가 하나밖에 없어서 데이터가 많은 모델을 CNN으로 돌리는 경우 메모리 부족으로 jupyer notebook의 kerel이 죽는 경우가 있었습니다. 금요일에 기분좋게 돌려놓고 월요일 출근해서 보니 멈춰 있었네요. 시간과 비용이 모두 날라가 버리는 안타까운 일이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일주일간의 삽질 끝에 결론은 아래의 코드를 이용해서 CPU로만 돌리기로 했습니다. CPU로만 돌려도 180초에서 30초 정도로 1/6 정도 가량 줄어들긴 하지만 비용대비 훌륭한 방법은 아니었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1640914787772&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;os.environ['CUDA_VISIBLE_DEVICES'] = '-1'&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;사용했던 tesnorflow와 optuna (Hyper parameter tuning) 버전은 아래와 같았습니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;TensorFlow 2.3.4
Optuna 2.10.0&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;AWS EC2 g4dn.2xlage을 사용하고 Amazon Machine Image(AMI)을 사용했기에 conda로 아래와 같은 환경이 이미 구축되어 있었습니다. 저희는 선택해서 사용하면 되는데, 제가 사용한 것은 아래와 같습니다. 일단은 이용할 수 밖에 없긴 하지만 자체 서버를 구축해야 할지 말지 고민이 되는 부분입니다. 한정된 시간 내에서 Deep Learning model을 제대로 돌리려면 비싼 환경이 우선 구축이 되어야 할 것 같아 씁쓸합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;68&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zCzFc/btrptBnC2LA/nmRtuGTKqORu31k85qL9tK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zCzFc/btrptBnC2LA/nmRtuGTKqORu31k85qL9tK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zCzFc/btrptBnC2LA/nmRtuGTKqORu31k85qL9tK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzCzFc%2FbtrptBnC2LA%2FnmRtuGTKqORu31k85qL9tK%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;380&quot; height=&quot;68&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;68&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oHAMp/btrpthphQOJ/hmeaOqpnoknoO0SDDvj5FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oHAMp/btrpthphQOJ/hmeaOqpnoknoO0SDDvj5FK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oHAMp/btrpthphQOJ/hmeaOqpnoknoO0SDDvj5FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoHAMp%2FbtrpthphQOJ%2FhmeaOqpnoknoO0SDDvj5FK%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;348&quot; height=&quot;354&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;</description>
      <category>머신러닝 딥러닝/Tools</category>
      <category>AWS ec2</category>
      <category>AWS EC2 g4dn</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/54</guid>
      <comments>https://precommer.tistory.com/54#entry54comment</comments>
      <pubDate>Fri, 31 Dec 2021 10:57:41 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 20.04 LTS] Ubuntu 버전 확인</title>
      <link>https://precommer.tistory.com/52</link>
      <description>&lt;!-- 수평형 광고 (하단) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;terminal에서 Ubuntu 버전 확인 하는 방법 정리&lt;/span&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1 lsb_release -a&amp;nbsp; (Linux Standard Base)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfZyU0/btrpYmKvIjO/Vuyvyw2LIHoG3TOkLg8rPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfZyU0/btrpYmKvIjO/Vuyvyw2LIHoG3TOkLg8rPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfZyU0/btrpYmKvIjO/Vuyvyw2LIHoG3TOkLg8rPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfZyU0%2FbtrpYmKvIjO%2FVuyvyw2LIHoG3TOkLg8rPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Ubuntu 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;183&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;lsb가 없어도 버전 확인은 가능하나, 설치하고픈 경우 아래 명령으로 설치 가능하다.&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;sudo apt-get install lsb-core&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjx0BZ/btrpW8Mety3/80TkQZTVa4sFUb0TslrmX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjx0BZ/btrpW8Mety3/80TkQZTVa4sFUb0TslrmX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjx0BZ/btrpW8Mety3/80TkQZTVa4sFUb0TslrmX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjx0BZ%2FbtrpW8Mety3%2F80TkQZTVa4sFUb0TslrmX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Ubuntu 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;354&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;다시 실행하면 아래처럼 나온다.&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6ZSpq/btrpUHWnzip/NQRcmgbcEyXyhKqOc0Jc4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6ZSpq/btrpUHWnzip/NQRcmgbcEyXyhKqOc0Jc4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6ZSpq/btrpUHWnzip/NQRcmgbcEyXyhKqOc0Jc4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6ZSpq%2FbtrpUHWnzip%2FNQRcmgbcEyXyhKqOc0Jc4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Ubuntu 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;184&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2.&amp;nbsp; cat /etc/issue&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wlKWr/btrp0aC1XFI/xfCIfWVIAqqNgTjFolG2Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wlKWr/btrp0aC1XFI/xfCIfWVIAqqNgTjFolG2Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wlKWr/btrp0aC1XFI/xfCIfWVIAqqNgTjFolG2Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwlKWr%2Fbtrp0aC1XFI%2FxfCIfWVIAqqNgTjFolG2Ak%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;581&quot; height=&quot;96&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3.&amp;nbsp; cat /etc/os-release&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqTtO4/btrpVuPOhqi/sMuVpDcSLkPjvi7Xa6mBuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqTtO4/btrpVuPOhqi/sMuVpDcSLkPjvi7Xa6mBuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqTtO4/btrpVuPOhqi/sMuVpDcSLkPjvi7Xa6mBuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqTtO4%2FbtrpVuPOhqi%2FsMuVpDcSLkPjvi7Xa6mBuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Ubuntu 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;761&quot; height=&quot;306&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. uname -m &amp;amp;&amp;amp; cat /etc/*release&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vboxs/btrpTfFMUUA/KOYqPUJM4zmYypBtpb4rwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vboxs/btrpTfFMUUA/KOYqPUJM4zmYypBtpb4rwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vboxs/btrpTfFMUUA/KOYqPUJM4zmYypBtpb4rwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVboxs%2FbtrpTfFMUUA%2FKOYqPUJM4zmYypBtpb4rwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Ubuntu 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;740&quot; height=&quot;393&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. uname -a (-r : kernel release, -m : machine, -p :processor)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oM8H7/btrpTfeLFyQ/4nM3euFxKbH13H33NZ2tJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oM8H7/btrpTfeLFyQ/4nM3euFxKbH13H33NZ2tJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oM8H7/btrpTfeLFyQ/4nM3euFxKbH13H33NZ2tJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoM8H7%2FbtrpTfeLFyQ%2F4nM3euFxKbH13H33NZ2tJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Ubuntu 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;895&quot; height=&quot;110&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>ubuntu 버전</category>
      <category>우분투 버전</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/52</guid>
      <comments>https://precommer.tistory.com/52#entry52comment</comments>
      <pubDate>Fri, 24 Dec 2021 16:07:04 +0900</pubDate>
    </item>
    <item>
      <title>jupyter notebook 폰트 변경하기</title>
      <link>https://precommer.tistory.com/50</link>
      <description>&lt;div class=&quot;book-toc&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; font-size: 1.12em; letter-spacing: 0px;&quot;&gt;Anaconda를 설치하고 jupyter notebook에서 간단한 MNIST CNN 모델을 하나 돌려보려고 했는데,&amp;nbsp; jupyter notebook에서 기본적으로 제공하는 폰트와 옆의 광활한 공간이 마음에 들지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;아래의 Before와 After 화면을 클릭해서 보면 잘 바꾸었단 생각이 든다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Hn5k/btrpdoW5DXT/Ibx6QHYQo8v0m7O2Am7xy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Hn5k/btrpdoW5DXT/Ibx6QHYQo8v0m7O2Am7xy1/img.png&quot; data-alt=&quot;Before - width&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Hn5k/btrpdoW5DXT/Ibx6QHYQo8v0m7O2Am7xy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Hn5k%2FbtrpdoW5DXT%2FIbx6QHYQo8v0m7O2Am7xy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;jupyter notebook 폰트 변경&quot; loading=&quot;lazy&quot; width=&quot;1914&quot; height=&quot;922&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Before - width&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciFXfr/btrpBC1dzrr/VTksA5d5VVbnVlcm1KLGaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciFXfr/btrpBC1dzrr/VTksA5d5VVbnVlcm1KLGaK/img.png&quot; data-alt=&quot;Before - font&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciFXfr/btrpBC1dzrr/VTksA5d5VVbnVlcm1KLGaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciFXfr%2FbtrpBC1dzrr%2FVTksA5d5VVbnVlcm1KLGaK%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;615&quot; height=&quot;328&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Before - font&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/loAMX/btrppAvIbEz/KdylToaSDMNTBpROmzpAu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/loAMX/btrppAvIbEz/KdylToaSDMNTBpROmzpAu1/img.png&quot; data-alt=&quot;After - Width&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/loAMX/btrppAvIbEz/KdylToaSDMNTBpROmzpAu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FloAMX%2FbtrppAvIbEz%2FKdylToaSDMNTBpROmzpAu1%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;1913&quot; height=&quot;803&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;803&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;After - Width&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N1fNv/btrpwPUxpCz/tINm0YbmqYmiaK8aLrIoSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N1fNv/btrpwPUxpCz/tINm0YbmqYmiaK8aLrIoSK/img.png&quot; data-alt=&quot;After - font&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N1fNv/btrpwPUxpCz/tINm0YbmqYmiaK8aLrIoSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN1fNv%2FbtrpwPUxpCz%2FtINm0YbmqYmiaK8aLrIoSK%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;537&quot; height=&quot;417&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;After - font&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;앞으로 자주 대면해야 하는 입장에서 보다 친절한 화면으로 바꿀 필요가 생겼다. 나는 window에서 Anaconda를 설치해서 jupyter notebook을 사용하고 있고, AWS EC2 환경도 있었던지라 Window와 Linux(Ubuntu) 환경 모두에서 변경 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;방법은 어렵지 않으니 각각의 상황에 맞게 해보시면 좋을 것 같고, 바꾸니 일의 능률이 오르는 듯 하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Window10에서 변경 하는 방법&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) 설치하고자 하는 폰트를 다운로드 받는다.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;개인적으로 consolas 폰트를 좋아하지만, 이번에는 네이버에서 배포한 D2 coding 글꼴을 설치하기로 했다. 아래 사이트에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;D2Coding-Ver1.3.2-20180524.zip&lt;/b&gt;&lt;/span&gt;를 다운로드 받은 후 압축을 풀고 나오는 세개의 폴더 중 원하는 폰트를 설치한다. xx.ttc 파일을 더블 클릭 후 나오는 화면에서 설치 오른쪽 상단의 설치 버튼을 누르면 됩니다. 난 &lt;b&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;D2Coding-Ver1.3.2-20180524-all.ttc&lt;/span&gt;&lt;/b&gt;를 선택 했다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://github.com/naver/d2codingfont&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/naver/d2codingfont&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;실제 폰트는 C:\Windows\Fonts 아래에 있게 된다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boSqGR/btrpaHwev2V/hOwMa3Ikust7tTGOqOJtKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boSqGR/btrpaHwev2V/hOwMa3Ikust7tTGOqOJtKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boSqGR/btrpaHwev2V/hOwMa3Ikust7tTGOqOJtKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboSqGR%2FbtrpaHwev2V%2FhOwMa3Ikust7tTGOqOJtKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;731&quot; height=&quot;303&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;303&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) Window 버튼 + R로 선택 후 화면에서 cmd라고 입력해서 명령 프롬프트를 실행&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;409&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4JWst/btrpcM4PGBh/CGpBQKSguNPh7oJrRyngc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4JWst/btrpcM4PGBh/CGpBQKSguNPh7oJrRyngc1/img.png&quot; data-alt=&quot;Window 버튼 + R&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4JWst/btrpcM4PGBh/CGpBQKSguNPh7oJrRyngc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4JWst%2FbtrpcM4PGBh%2FCGpBQKSguNPh7oJrRyngc1%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;409&quot; height=&quot;231&quot; data-origin-width=&quot;409&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Window 버튼 + R&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ovgI6/btrpdq8gY2w/Ug4KTc1sFEV1IJiwSdWkwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ovgI6/btrpdq8gY2w/Ug4KTc1sFEV1IJiwSdWkwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ovgI6/btrpdq8gY2w/Ug4KTc1sFEV1IJiwSdWkwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FovgI6%2Fbtrpdq8gY2w%2FUg4KTc1sFEV1IJiwSdWkwK%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;972&quot; height=&quot;421&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3) jupyter notebook --generate-config 를 입력 (목적 : .jupyter 폴더 생성)&lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(이걸 필수로 해야 하는지 모르겠다. C:\Users\{사용자명}\ 밑에 .jupyter 폴더가 있으면 생략 가능)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deGsRP/btrpdn425ri/qF41ARoyYJDFKw7r8zXHq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deGsRP/btrpdn425ri/qF41ARoyYJDFKw7r8zXHq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deGsRP/btrpdn425ri/qF41ARoyYJDFKw7r8zXHq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeGsRP%2Fbtrpdn425ri%2FqF41ARoyYJDFKw7r8zXHq1%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;737&quot; height=&quot;183&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4) C:\Users\{사용자명}\ 하위에 .jupyter 폴더가 생성된다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EC2t7/btrpeJ7OSvz/YYp39T8qf9p1h3JRt9TiP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EC2t7/btrpeJ7OSvz/YYp39T8qf9p1h3JRt9TiP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EC2t7/btrpeJ7OSvz/YYp39T8qf9p1h3JRt9TiP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEC2t7%2FbtrpeJ7OSvz%2FYYp39T8qf9p1h3JRt9TiP1%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;635&quot; height=&quot;128&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5) custom 이라는 폴더를 생성후 custom.css에 변경하고픈 내용을 작성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BVWqO/btro38VrKcM/Idv9g2xF3hUHrtr85tH291/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BVWqO/btro38VrKcM/Idv9g2xF3hUHrtr85tH291/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BVWqO/btro38VrKcM/Idv9g2xF3hUHrtr85tH291/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBVWqO%2Fbtro38VrKcM%2FIdv9g2xF3hUHrtr85tH291%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;536&quot; height=&quot;104&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640856194765&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.container { width:95% !important; }

div.CodeMirror,

div.CodeMirror pre { /*코드 블록*/
font-family: D2Coding, Consolas;
font-size: 11pt;
line-height: 150%;
}

.text_cell_render { /*마크다운*/
font-family: Consolas;
}

.input_prompt { /*줄번호*/
font-family: D2Coding, Consolas;
}

.output_result pre { /*출력결과-맨마지막 출력*/
font-family: D2Coding, Consolas;
}

.output_stdout pre { /*출력결과-긴출력, 중간출력*/
font-family: D2Coding, Consolas;
}

.output_area { /*표*/
font-family: D2Coding, Consolas;
}

.CodeMirror-dialog, .CodeMirror-dialog .CodeMirror-search-field, .terminal-app .terminal {
font-family: D2Coding, Consolas;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;6. Jupyter notebook 재실행&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/loAMX/btrppAvIbEz/KdylToaSDMNTBpROmzpAu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/loAMX/btrppAvIbEz/KdylToaSDMNTBpROmzpAu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/loAMX/btrppAvIbEz/KdylToaSDMNTBpROmzpAu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FloAMX%2FbtrppAvIbEz%2FKdylToaSDMNTBpROmzpAu1%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;1913&quot; height=&quot;803&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;803&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Linux에서 변경 하는 방법&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Linux도 동일한 과정이다. 폰트를 설치하는 방법과 custom 폴더 경로만 다르다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) 아래의 명령으로 설치하고자 하는 폰트를 다운로드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$ mkdir ~/.local/share/fonts&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$&amp;nbsp;cd ~/.local/share/fonts&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$&amp;nbsp;wget &lt;a href=&quot;https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip&quot;&gt;https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$&amp;nbsp;unzip D2Coding-Ver1.3.2-20180524.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$&amp;nbsp;fc-list | grep &quot;D2Coding&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$&amp;nbsp;fc-cache -v&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;$&amp;nbsp;rm -rf D2Coding-Ver1.3.2-20180524.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) jupyter notebook --generate-config 입력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; (/home/{사용자명}/에 이미 .jupyter 폴더가 있다면 생략 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3) /home/{사용자명}/.jupyter/ 경로에 custom 폴더를 생성한 후 custom.css 파일을 작성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;(window에서 했던 동일한 파일사용)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$ mkdir custom&lt;/li&gt;
&lt;li&gt;$ cd custom&lt;/li&gt;
&lt;li&gt;$ vi&amp;nbsp;custom.css&lt;/li&gt;
&lt;li&gt;$ 위 파일 내용 붙여넣기&lt;/li&gt;
&lt;li&gt;$ wq!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daEOAS/btrpmfZUlV0/bKwELsqHdrXNjvGiUDhFpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daEOAS/btrpmfZUlV0/bKwELsqHdrXNjvGiUDhFpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daEOAS/btrpmfZUlV0/bKwELsqHdrXNjvGiUDhFpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaEOAS%2FbtrpmfZUlV0%2FbKwELsqHdrXNjvGiUDhFpK%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;744&quot; height=&quot;161&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Tools</category>
      <category>jupyter notebook font</category>
      <category>주피터노트북 폰트</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/50</guid>
      <comments>https://precommer.tistory.com/50#entry50comment</comments>
      <pubDate>Fri, 24 Dec 2021 13:39:19 +0900</pubDate>
    </item>
    <item>
      <title>[tensorflow] 모델 정보와 History 정보 저장하기</title>
      <link>https://precommer.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문서 작업 후 저장하지 않아서 애써 작성한 문서가 날라가는 경우처럼, tensorflow를 이용해서 학습 까지 완료한 이후에 어떠한 사유로 Jupyter notebook의 kernel이 죽거나, window 창을 닫거나 PC가 재부팅 하는 경우, 우리는 애써 학습한 결과를 날리게 됩니다. 모델이 가벼운 경우에는 다시 Trainig을 돌리면 되지만 무겁거나 GPU가 없이 CPU 만으로 힘들게 하루 꼬박 돌려 결과를 얻은 경우에는 참으로 안타까운 일이 아닐수 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그래서 이번에는 training model과 History를 저장하는 방법과 저장한 파일을 사용하는 방법을 알아보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;model을 저장하는 방법은 두 가지 방법이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;model.save_weights()&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;model.save()&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 학습결과를 담고 있는 history를 저장하는 방법은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;pickle,json, csv&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;모델 생성&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;일단 모델이 하나 있어야겠죠? MNIST를 이용하는 간단한 CNN 모델을 구성해봅니다. 유명해서 코드가 널려 있습니다. 우리는 그거 하나를 가져오기로 합니다. 저는 &lt;a href=&quot;https://victorzhou.com/blog/keras-cnn-tutorial/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기에서&lt;/a&gt; 가져왔습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1641094727326&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import numpy as np
import mnist
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Flatten
from tensorflow.keras.models import Sequential
import matplotlib.pyplot as plt

train_images = mnist.train_images()
train_labels = mnist.train_labels()
test_images = mnist.test_images()
test_labels = mnist.test_labels()

# Normalize the images.
train_images = (train_images / 255) - 0.5
test_images = (test_images / 255) - 0.5

# Reshape the images.
train_images = np.expand_dims(train_images, axis=3)
test_images = np.expand_dims(test_images, axis=3)

print(train_images.shape) # (60000, 28, 28, 1)
print(test_images.shape)  # (10000, 28, 28, 1)

num_filters = 8
filter_size = 3
pool_size = 2

model = Sequential([
  Conv2D(num_filters, filter_size, input_shape=(28, 28, 1)),
  MaxPooling2D(pool_size=pool_size),
  Flatten(),
  Dense(10, activation='softmax'),
])

model.compile(
  'adam',
  loss='categorical_crossentropy',
  metrics=['accuracy'],
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;model summary를 보면 Converlution layer, Pooling, 그리고 Dense 층이 각각 하나씩 밖에 없는 간단한 모델입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwIFgR/btrpu3eh10l/fkvKsvdzG7ZePXymOeDLeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwIFgR/btrpu3eh10l/fkvKsvdzG7ZePXymOeDLeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwIFgR/btrpu3eh10l/fkvKsvdzG7ZePXymOeDLeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwIFgR%2Fbtrpu3eh10l%2FfkvKsvdzG7ZePXymOeDLeK%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;323&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;323&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 fit() 함수를 통해 학습을 하고, 그 결과를 hist에 받도록 합니다. hist는 &lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;tf&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;keras&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;callbacks&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;History 형 이며, 학습의 결과를 dictionary 타입으로 저장하고 있습니다. 아래는 epochs가 3개 뿐이라 저장의 중요성을 약하지만, (필요시 마다 돌리면 되니) 데이터 종류가 더 크고, 모델이 복잡하며 그리고 epochs이 100개 이상 되는 몇 시간 이상 돌려야 하는 데이터의 경우는 저장은 필수입니다. 그리고 보통 하나만 돌리는게 아니라 여러개를 돌리게 되니까요~&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641094961067&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;hist = model.fit(
  train_images,
  to_categorical(train_labels),
  epochs=3,
  validation_data=(test_images, to_categorical(test_labels)),
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;결과는 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdE4pA/btrpq64kWtd/IOaNFoSyfzRWkbtzNHgTV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdE4pA/btrpq64kWtd/IOaNFoSyfzRWkbtzNHgTV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdE4pA/btrpq64kWtd/IOaNFoSyfzRWkbtzNHgTV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdE4pA%2Fbtrpq64kWtd%2FIOaNFoSyfzRWkbtzNHgTV0%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;981&quot; height=&quot;248&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Evaluation 결과는 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641098303805&quot; class=&quot;python&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;model.evaluate(test_images, to_categorical(test_labels))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cExhBs/btrpusMBite/NElRKU4KNM8ZqXLisoPw7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cExhBs/btrpusMBite/NElRKU4KNM8ZqXLisoPw7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cExhBs/btrpusMBite/NElRKU4KNM8ZqXLisoPw7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcExhBs%2FbtrpusMBite%2FNElRKU4KNM8ZqXLisoPw7k%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;678&quot; height=&quot;109&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;model을 저장하는 방법 &lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1. model.save_weights()&lt;/span&gt;는 학습 중인 weights를 저장합니다. 모델 정보를 저장하지 않기 때문에 이후에 사용할 때에는 정확한 모델을 알아야 합니다. 그리고 새로운 모델을 생성후 new_model.save_weights()를 통해 저장한 weights를 사용 가능 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;일단, new_model을 아래와 같이 기존 코드와 동일하게 생성하도록 합니다. 이처럼 기존 모델을 알아야 되겠죠?&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641097918359&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;num_filters = 8
filter_size = 3
pool_size = 2

new_model = Sequential([
  Conv2D(num_filters, filter_size, input_shape=(28, 28, 1)),
  MaxPooling2D(pool_size=pool_size),
  Flatten(),
  Dense(10, activation='softmax'),
])

new_model.compile(
  'adam',
  loss='categorical_crossentropy',
  metrics=['accuracy'],
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고, 아무것도 안한 상태로 evaluation을 하게 되면 당연히 accuracy가 낮게 나옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LIv17/btrpu27xCV4/gwBFc0uy93TmlPibbj7KK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LIv17/btrpu27xCV4/gwBFc0uy93TmlPibbj7KK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LIv17/btrpu27xCV4/gwBFc0uy93TmlPibbj7KK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLIv17%2Fbtrpu27xCV4%2FgwBFc0uy93TmlPibbj7KK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;109&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위에서 학습을 했던 model의 weights를 저장하고&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641098095009&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;model.save_weights(&quot;test_save_weight&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;new_model을 이용해 loading 하고, evaluation 하면 아래와 같이 accuracy가 높게 나음을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641098181385&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_model.load_weights(&quot;test_save_weight&quot;)
new_model.evaluate(test_images, to_categorical(test_labels))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYrHD4/btrpBCUuWV7/sTBzrWi0xUE4u3mIibtFz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYrHD4/btrpBCUuWV7/sTBzrWi0xUE4u3mIibtFz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYrHD4/btrpBCUuWV7/sTBzrWi0xUE4u3mIibtFz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYrHD4%2FbtrpBCUuWV7%2FsTBzrWi0xUE4u3mIibtFz1%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;681&quot; height=&quot;64&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #ee2323;&quot;&gt;2. &lt;b&gt;model.save()&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;는 모델 정보 및 학습 가중치를 모두 저장합니다. 처음의 model 저장 후 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&amp;nbsp;tf.keras.models.load_model&lt;/b&gt;&lt;/span&gt;를 이용해서 다시 로딩 후 확인 시 처음의 모델 결과와 정확히 일치하는 것을 확인할 수 있습니다. 모델 정보를 몰라도 load_model의 return 값을 받아서 사용 가능합니다. 저는 save_weight() 보다는 아무래도 이게 편한 것 같습니다...&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641096364908&quot; class=&quot;css&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; 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-thickness: initial; 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;model.save(&quot;test_save_model&quot;)
reconstructed_model = tf.keras.models.load_model(&quot;test_save_model&quot;)
reconstructed_model.summary()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/987Fn/btrpwPtvMSg/CIIW0LpIS9uyarN40p7dk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/987Fn/btrpwPtvMSg/CIIW0LpIS9uyarN40p7dk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/987Fn/btrpwPtvMSg/CIIW0LpIS9uyarN40p7dk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F987Fn%2FbtrpwPtvMSg%2FCIIW0LpIS9uyarN40p7dk1%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;518&quot; height=&quot;319&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그리고 이전 모델 (model)과 복원한 모델(reconstructed_model)을 evaluation 하게 되면, 동일한 결과를 출력 하는 것을 확인 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641097332998&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;model.evaluate(test_images, to_categorical(test_labels))
reconstructed_model.evaluate(test_images, to_categorical(test_labels))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPiA1x/btrpyioIoBd/D6Fj4XHFTmljDfOjOpPhbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPiA1x/btrpyioIoBd/D6Fj4XHFTmljDfOjOpPhbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPiA1x/btrpyioIoBd/D6Fj4XHFTmljDfOjOpPhbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPiA1x%2FbtrpyioIoBd%2FD6Fj4XHFTmljDfOjOpPhbK%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;698&quot; height=&quot;58&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sohtu/btrpjyGKKrl/Cqc2EpBVbukil9JCxi3U2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sohtu/btrpjyGKKrl/Cqc2EpBVbukil9JCxi3U2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sohtu/btrpjyGKKrl/Cqc2EpBVbukil9JCxi3U2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSohtu%2FbtrpjyGKKrl%2FCqc2EpBVbukil9JCxi3U2K%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;722&quot; height=&quot;67&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Training이 끝난 History 결과를 저장하는 방법&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;pickle.dump&lt;/b&gt;&lt;/span&gt;로 저장하고, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;pickle.load&lt;/b&gt;&lt;/span&gt;로 저장한 것을 로딩해서 재 사용 가능하다. 학습의 결과를 보려면 그래프 작업을 해야 하는데, 이렇게 저장하는 경우 추후에라도 재 사용이 가능해서 분석에 더욱 유리합니다. 많은 모델을 돌리고 그 결과를 저장해서 한꺼번에 결과 데이터를 만들때 다 로딩해서 확인하면 좋을 것 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;  with open('/trainHistoryDict', 'wb') as file_pi:
        pickle.dump(hist.history, file_pi)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1639552641169&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;history = pickle.load(open('/trainHistoryDict', &quot;rb&quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;History는 Dictinary 형식이므로 아래와 같이 data frame으로 변환 후, json이나 csv로도 저장할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639552627594&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# convert the history.history dict to a pandas DataFrame:     
hist_df = pd.DataFrame(history.history) 

# save to json:  
hist_json_file = 'history.json' 
with open(hist_json_file, mode='w') as f:
    hist_df.to_json(f)

# or save to csv: 
hist_csv_file = 'history.csv'
with open(hist_csv_file, mode='w') as f:
    hist_df.to_csv(f)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래와 같은 코드로 저장했던 history 데이터의 그래프를 그려볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641095502785&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fig, loss_ax = plt.subplots()
acc_ax = loss_ax.twinx()

loss_ax.plot(hist.history['loss'], 'y', label='train loss')
loss_ax.plot(hist.history['val_loss'], 'r', label='val loss')
loss_ax.set_xlabel('epoch')
loss_ax.set_ylabel('loss')
loss_ax.legend(loc='upper left')

acc_ax.plot(hist.history['accuracy'], 'b', label='train acc')
acc_ax.plot(hist.history['val_accuracy'], 'g', label='val acc')
acc_ax.set_ylabel('accuracy')
acc_ax.legend(loc='upper left')

plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>머신러닝 딥러닝/Keras</category>
      <category>tensorflow history 저장하기</category>
      <category>tensorflow model 저장하기</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/47</guid>
      <comments>https://precommer.tistory.com/47#entry47comment</comments>
      <pubDate>Wed, 15 Dec 2021 16:40:42 +0900</pubDate>
    </item>
    <item>
      <title>[마인크래프트] 아스매지카2 (1.17.10) 설치하기</title>
      <link>https://precommer.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;설치하려는 아스매지카2모드가 1.17.10 이기 때문에 마인크래프트 자바 버전과 포지 모두 1.17.10으로 설치해야 한다.&amp;nbsp;마인 크래프트 자바 버전과 포지 버전에 대해 모르시면 아래를 참조하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://precommer.tistory.com/11&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.08.02 - [게임] - 마인크래프트 포켓몬모드 설치 (with 포지)&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 아스 매지카2의 모드를 다운로드 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.curseforge.com/minecraft/mc-mods/ars-magica-2/files&quot;&gt;https://www.curseforge.com/minecraft/mc-mods/ars-magica-2/files&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 하단의 Minecraft 1.7에서 R (Release)이라고 있는 곳의 화살표 버튼을 클릭.&lt;/p&gt;
&lt;p&gt;&lt;img style=&quot;text-align: center; caret-color: transparent; letter-spacing: 0px;&quot; src=&quot;https://blog.kakaocdn.net/dn/bKPNkS/btrmid5Y740/Jx3opLFelMRzA6J9T2nPCk/img.png&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/bKPNkS/btrmid5Y740/Jx3opLFelMRzA6J9T2nPCk/img.png&quot; data-origin-width=&quot;1563&quot; data-origin-height=&quot;606&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Animationapi 모드를 다운로드 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.curseforge.com/minecraft/mc-mods/animationapi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.curseforge.com/minecraft/mc-mods/animationapi&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번과 동일하게 오른쪽 하단의 Minecraft 1.17에서 R (Release) 옆의 화살표를 클릭해서 다운로드&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1561&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFimZg/btrmgsQntJv/57RNLAUVkVEluQJtq4xVQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFimZg/btrmgsQntJv/57RNLAUVkVEluQJtq4xVQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFimZg/btrmgsQntJv/57RNLAUVkVEluQJtq4xVQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFimZg%2FbtrmgsQntJv%2F57RNLAUVkVEluQJtq4xVQk%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;1561&quot; height=&quot;602&quot; data-origin-width=&quot;1561&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 위 1) 2)번에서 다운로드 받은 jar파일들을 아래 위치의 minecrasft mod 저장소에 옮겨놓는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Window 버튼 + R &amp;gt;&amp;gt; 실행창에서 %appdata% 입력 후 엔터 &amp;gt;&amp;gt; \Roaming\.minecraft\mods 폴더내로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 포지 1.17.10 다운로드 후 설치하기. 1.17.10에서 Recommended 버전의 Installer를 선택하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포지 설치 전 마인크래프트 자바 버전 1.17.10을 한번이라도 실행이 되어 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://files.minecraftforge.net/net/minecraftforge/forge/index_1.7.10.html&quot;&gt;https://files.minecraftforge.net/net/minecraftforge/forge/index_1.7.10.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1484&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kNYeD/btrmgFhIl2L/2gWmQL7bPvGARaJLYctndK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kNYeD/btrmgFhIl2L/2gWmQL7bPvGARaJLYctndK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kNYeD/btrmgFhIl2L/2gWmQL7bPvGARaJLYctndK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkNYeD%2FbtrmgFhIl2L%2F2gWmQL7bPvGARaJLYctndK%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;1484&quot; height=&quot;850&quot; data-origin-width=&quot;1484&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 마인크래프트 자바 버전을 실행한후 왼쪽 하단에서 Forge 1.17.10을 선택하고 플레이 버튼 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rGnkT/btrmg3P7dQC/vbznPt8813JakYiwCPPtPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rGnkT/btrmg3P7dQC/vbznPt8813JakYiwCPPtPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rGnkT/btrmg3P7dQC/vbznPt8813JakYiwCPPtPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrGnkT%2Fbtrmg3P7dQC%2FvbznPt8813JakYiwCPPtPK%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;1140&quot; height=&quot;767&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 실행됨. Mods에서 옮겨놓은 아스매지카2가 있는지 확인 후 Single Player 로 게임을 실행하자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1260&quot; data-origin-height=&quot;711&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRzI17/btrmjHY7Wgv/GmyazwXQkQuvp1JQxqYOCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRzI17/btrmjHY7Wgv/GmyazwXQkQuvp1JQxqYOCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRzI17/btrmjHY7Wgv/GmyazwXQkQuvp1JQxqYOCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRzI17%2FbtrmjHY7Wgv%2FGmyazwXQkQuvp1JQxqYOCK%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;1260&quot; height=&quot;711&quot; data-origin-width=&quot;1260&quot; data-origin-height=&quot;711&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1260&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5r0kS/btrmiei7rR3/WUJf7WIeKSc19ZbJTE95B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5r0kS/btrmiei7rR3/WUJf7WIeKSc19ZbJTE95B0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5r0kS/btrmiei7rR3/WUJf7WIeKSc19ZbJTE95B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5r0kS%2Fbtrmiei7rR3%2FWUJf7WIeKSc19ZbJTE95B0%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;1260&quot; height=&quot;702&quot; data-origin-width=&quot;1260&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 이제 게임을 즐겨보도록 하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8aMOw/btrmjb0xirA/mFoH8VrK8RXNKyC0KXawH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8aMOw/btrmjb0xirA/mFoH8VrK8RXNKyC0KXawH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8aMOw/btrmjb0xirA/mFoH8VrK8RXNKyC0KXawH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8aMOw%2Fbtrmjb0xirA%2FmFoH8VrK8RXNKyC0KXawH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1257&quot; height=&quot;712&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>게임</category>
      <category>아스매지카2</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/45</guid>
      <comments>https://precommer.tistory.com/45#entry45comment</comments>
      <pubDate>Sun, 28 Nov 2021 09:47:00 +0900</pubDate>
    </item>
    <item>
      <title>[python] set array 만들기</title>
      <link>https://precommer.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;python에서 set을 array 형태로 구성하는 방법에 대해 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;python에서 set의 이점 중에 하나가 중복된 내용을 자동 필터링한다는 점이다&lt;/b&gt;&lt;/span&gt;. 중복된 데이터가 포함된 큰 DataFrame을 처리 하는 경우에 사용하면 유용하다. 다만 중복 처리해야 할 필드 들이 많아서 set를 여러개 사용해야 하고, 반복을 위해서는 set를 array화 해서 사용 해야 했었는데, 생각 처럼 간단치는 않았다. 여러번 시행 착오 끝에 아래와 같은 방법을 stackoverflow를 통해 찾을 수 있었다. 그리고 혹시나 잊을 듯 하여 내 블로그에 잊기 전에 keep 해놓는다,&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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래와 같이 6개짜리 set을 구성요소로 가지는 list 형 변수인 sets을 선언하고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;각 요소를 index로 접근하여 원하는 데이터를 할당하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1637970130532&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sets=[set() for i in range(6)] #array of sets

sets[0] = ([1,2,3,4,5])
sets[1] = ([4,7,6,7,8])
sets[2] = ([9,10,11,12,13])
sets[3] = ([13,15,16,17,18])
sets[4] = ([19,20,21,22,23])
sets[5] = ([24,25,26,27,28])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래와 같이 확인해보면 sets의 type은 list이며, for loop를 통해 접근이나 출력을 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;각각의 용도에 맞게 사용하면 될 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cprwOZ/btrmidRPCr1/ptu4MWuIHZk6NQO5tNzmzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cprwOZ/btrmidRPCr1/ptu4MWuIHZk6NQO5tNzmzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cprwOZ/btrmidRPCr1/ptu4MWuIHZk6NQO5tNzmzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcprwOZ%2FbtrmidRPCr1%2Fptu4MWuIHZk6NQO5tNzmzk%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;280&quot; height=&quot;499&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>language/파이썬</category>
      <category>python set array</category>
      <category>파이썬 set array</category>
      <author>힐둔</author>
      <guid isPermaLink="true">https://precommer.tistory.com/44</guid>
      <comments>https://precommer.tistory.com/44#entry44comment</comments>
      <pubDate>Sat, 27 Nov 2021 09:05:05 +0900</pubDate>
    </item>
  </channel>
</rss>