<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>For Beginners</title>
    <link>https://likecode.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 31 Jul 2026 01:08:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>.log</managingEditor>
    <item>
      <title>타이중 일정</title>
      <link>https://likecode.tistory.com/355</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;11일&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 250px;&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: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;시간&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 21px;&quot;&gt;할 일&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 21px;&quot;&gt;링크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;3시 30분&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 21px;&quot;&gt;기상&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 21px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;6시&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;비행기 체크인&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;7시 50분&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;비행기 탑승&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;10시&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;타이중 도착&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;11시 30분&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;타이중 시내 도착&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;12시&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;호텔 도착&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;12시 30분&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;푸딘왕&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;족발 덮밥&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/3vR9g5nKGS4EdNnh8&quot;&gt;https://maps.app.goo.gl/3vR9g5nKGS4EdNnh8&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;1시 30분&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;춘부라오 발마사지 워크인&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/xSjZjZpYsbz7f1dP9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/xSjZjZpYsbz7f1dP9&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;사이 시간&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;심계신촌&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;고구마볼&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/6ayFxy6b6Grveetd7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/6ayFxy6b6Grveetd7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #efefef; color: #333333; text-align: start;&quot;&gt;사이 시간&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;성태양주&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/xWWq1he23SzBcPys8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/xWWq1he23SzBcPys8&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;6시&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;철판구이 예약&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: left;&quot;&gt;CHAMONIX Taichung Dalong Branch&lt;/span&gt; &lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/SxmUSMA3grAi35SH7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/SxmUSMA3grAi35SH7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;사이 시간&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 17px;&quot;&gt;과일가게 (호텔 근처)&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/WoEyNmpfmcuyu3Ng7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/WoEyNmpfmcuyu3Ng7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;사이 시간&lt;/td&gt;
&lt;td style=&quot;width: 27.8681%; height: 21px;&quot;&gt;BAR&lt;/td&gt;
&lt;td style=&quot;width: 53.5659%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/zoXD3X34nphUaExHA&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/zoXD3X34nphUaExHA&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12일&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 235px;&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: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 17px;&quot;&gt;시간&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 17px;&quot;&gt;할 일&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 17px;&quot;&gt;링크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 24px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 24px;&quot;&gt;10시?&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 24px;&quot;&gt;곱창국수, 오징어튀김&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 24px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: left;&quot;&gt;台中麻辣大腸麵線香雞排花枝丸&lt;/span&gt; &lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/m8aSXZ9iPpPqG4KW6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/m8aSXZ9iPpPqG4KW6&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 17px;&quot;&gt;11시&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 17px;&quot;&gt;타이중 역쪽으로 버스 타고 이동&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 21px;&quot;&gt;11시&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 21px;&quot;&gt;추천마사지 (워크인으로 시간만 걸기)&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/wsBiw1qQmEf63ejh6&quot;&gt;https://maps.app.goo.gl/wsBiw1qQmEf63ejh6&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 17px;&quot;&gt;11시&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 17px;&quot;&gt;심원춘 몸통박치기&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/2BwYyXfe3pHVZBAm6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/2BwYyXfe3pHVZBAm6&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 17px;&quot;&gt;백업&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 17px;&quot;&gt;(심원춘 안되면) 고기완자&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/jPq6KaqgZiyCKwEw5&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/jPq6KaqgZiyCKwEw5&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 21px;&quot;&gt;백업&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 21px;&quot;&gt;(심원춘 안되면) 홍야햄버거&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 21px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: left;&quot;&gt;3번 세트에 이름은 모르는 부침개 추가&lt;/span&gt; &lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/GYmeahyvSkgkqUiL8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/GYmeahyvSkgkqUiL8&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 21px;&quot;&gt;2시&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 21px;&quot;&gt;신용합작소, 궁원안과&lt;br /&gt;1개씩 나눠먹기&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 21px;&quot;&gt;신용합작소&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/NHtragyJ3nqN7czj7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/NHtragyJ3nqN7czj7&lt;/a&gt;&lt;br /&gt;궁원안과&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/qHUVv4a4VGzm9hzE9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/qHUVv4a4VGzm9hzE9&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 21px;&quot;&gt;백업&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 21px;&quot;&gt;마사지&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/wsBiw1qQmEf63ejh6&quot;&gt;https://maps.app.goo.gl/wsBiw1qQmEf63ejh6&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 21px;&quot;&gt;백업&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 21px;&quot;&gt;까르푸 방문 (타로코몰)&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/JXGz4fBJriE6yV4b6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/JXGz4fBJriE6yV4b6&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.6821%; height: 21px;&quot;&gt;6시&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%; height: 21px;&quot;&gt;이중지에 야시장&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/1uCzz3BNP6qQSQQF8&quot;&gt;https://maps.app.goo.gl/1uCzz3BNP6qQSQQF8&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.6821%;&quot;&gt;미리 예약해두기&lt;/td&gt;
&lt;td style=&quot;width: 29.9612%;&quot;&gt;천세월 마사지&lt;/td&gt;
&lt;td style=&quot;width: 51.3566%;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/yLSJmkJaGSVuFXxP9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/yLSJmkJaGSVuFXxP9&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;13일&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 190px;&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: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;시간&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 21px;&quot;&gt;할 일&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 21px;&quot;&gt;링크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;7시 오픈런&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;Whisker&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 17px;&quot;&gt;딴삥, 무떡&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/h9rxnssPoyKLzAhs8&quot;&gt;https://maps.app.goo.gl/h9rxnssPoyKLzAhs8&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;10시&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 17px;&quot;&gt;춘수당&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 17px;&quot;&gt;박치기&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/5J6MKhbCywAKYV7K8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/5J6MKhbCywAKYV7K8&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.5659%;&quot;&gt;11시&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%;&quot;&gt;만화박물관&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/NxepzvdM7YgH1MhS7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/NxepzvdM7YgH1MhS7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;11시&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 17px;&quot;&gt;빙수 (용과빙수)&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/HjdWuKEALjtjY4Cv7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/HjdWuKEALjtjY4Cv7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;12시&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 17px;&quot;&gt;홍루이젠&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 17px;&quot;&gt;구입, 아끼바리 가능하면 먹기.&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/wXfog9n4Th248J919&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/wXfog9n4Th248J919&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;백업&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 21px;&quot;&gt;레몬빵 구입 - 일복당&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/MDRAszNkgW1wpB64A&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/MDRAszNkgW1wpB64A&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;백업&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 21px;&quot;&gt;돌아다니면서 살거 없나 보기&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/pGLSGLiFTuDdz2JV7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/pGLSGLiFTuDdz2JV7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;2시&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 21px;&quot;&gt;위스키 사기&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/zDBw7qybwqkdLY9m7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/zDBw7qybwqkdLY9m7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 21px;&quot;&gt;3시&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 21px;&quot;&gt;숙소 귀환&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 21px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/vA6L5wwSqfBmJfVT7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/vA6L5wwSqfBmJfVT7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 18.5659%; height: 17px;&quot;&gt;저녁즘&lt;/td&gt;
&lt;td style=&quot;width: 25.8914%; height: 17px;&quot;&gt;펑지아야시장&lt;/td&gt;
&lt;td style=&quot;width: 55.5426%; height: 17px;&quot;&gt;&lt;a href=&quot;https://maps.app.goo.gl/hPphNnPEVpBtE5us8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/hPphNnPEVpBtE5us8&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;14일&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.4496%;&quot;&gt;시간&lt;/td&gt;
&lt;td style=&quot;width: 48.217%;&quot;&gt;할 일&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.4496%;&quot;&gt;7시&lt;/td&gt;
&lt;td style=&quot;width: 48.217%;&quot;&gt;숙소 조식&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.4496%;&quot;&gt;8시&lt;/td&gt;
&lt;td style=&quot;width: 48.217%;&quot;&gt;체크아웃 - 공항가기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.4496%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 48.217%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/355</guid>
      <comments>https://likecode.tistory.com/355#entry355comment</comments>
      <pubDate>Sun, 7 Dec 2025 19:09:47 +0900</pubDate>
    </item>
    <item>
      <title>[일본 여행] 스케줄표</title>
      <link>https://likecode.tistory.com/353</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;- 설화(雪の花) : 맛있음, 변수는 모츠나베 &amp;lt;&amp;lt; 안 좋아하시면 제외해야할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 야키니꾸집 (&lt;span&gt;肉と酒 十べぇ) : 가장 화려한 편의 음식이라 출국전날이나 전전날에 먹는 것이 좋을 것 같음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 교자집 (아사히켄) : 하카타 호텔에 근처에 있던 교자집, 현지인 맛집으로 보임, 메뉴 공부 필요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 이치란 : 라멘&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 덴뿌라 히라오 : 텐진, 하카타에도 있는 튀김집&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 에비스야 우동 : 갈비우동 맛집&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 히키니쿠토코메 : 함바그&lt;/span&gt;&lt;/p&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;/p&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;- 설화 / 니쿠토사케 주베 / 히키니쿠토코메(19일 밤에 예약해야함)&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;lt;-&amp;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;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.7132%;&quot;&gt;날짜&lt;/td&gt;
&lt;td style=&quot;width: 19.2249%;&quot;&gt;필수 일정&lt;/td&gt;
&lt;td style=&quot;width: 18.062%;&quot;&gt;선택 일정&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;참고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.7132%;&quot;&gt;3월 27일 목요일&lt;/td&gt;
&lt;td style=&quot;width: 19.2249%;&quot;&gt;6시 출발&lt;br /&gt;8시 30분 도착&lt;br /&gt;9시 아침 식사 (한식)&lt;br /&gt;10시 입국 수속&lt;br /&gt;11시-12시 면세점 구경&lt;br /&gt;13시 10분 출발&lt;br /&gt;15시 도착&lt;br /&gt;16시 체크인&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;17:15 히키니쿠토코메(함바그)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.062%;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;- 텐진 지하상가 구경&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; * 크레미아&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; * 링고&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; * 고구마과자&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;- 텐진 지하상가 칼디 (~21시)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;- 요도바시 카메라(하카타역)&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;- 21시 교자집&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;- 걸어오면서 편의점&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #001d35; text-align: start;&quot;&gt;아사히켄 에키마에(교자)&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;아뮤플라자 9F 하치&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/vwSHzsjvPcgpuHYaA&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/vwSHzsjvPcgpuHYaA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;요도바시 로피아 ~20시&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.7132%;&quot;&gt;3월 28일 금요일&lt;/td&gt;
&lt;td style=&quot;width: 19.2249%;&quot;&gt;&lt;b&gt;09:30&lt;br /&gt;야나가와&amp;lt;-&amp;gt;다자이후 코스&lt;/b&gt;&lt;br /&gt;야나가와 뱃놀이 이후&lt;br /&gt;점심 야냐가와&lt;br /&gt;장어 덮밥&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;20시 설화* (오마카세)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.062%;&quot;&gt;아침 샌드위치나 도시락 구매&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&lt;a href=&quot;https://youtu.be/2lxDb3i7Uzw?si=sfMxhL5fIAMrd7nq&quot;&gt;https://youtu.be/2lxDb3i7Uzw?si=sfMxhL5fIAMrd7nq&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;동선&lt;br /&gt;&lt;a href=&quot;https://m.blog.naver.com/ulov_e/223101747724&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://m.blog.naver.com/ulov_e/223101747724&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;다자이후 말차젤라또&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/jcTcGUBuTi7S248Y7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/jcTcGUBuTi7S248Y7&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.7132%;&quot;&gt;3월 29일 토요일&lt;/td&gt;
&lt;td style=&quot;width: 19.2249%;&quot;&gt;&lt;b&gt;유후인 패키지 09:00 ~ 18:40&lt;br /&gt;&lt;br /&gt;시간 : 09:10&lt;br /&gt;장소 :&amp;nbsp;&lt;br /&gt;&lt;a href=&quot;https://www.google.co.jp/maps/place/%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3+%E3%82%AA%E3%83%AA%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%9B%E3%83%86%E3%83%AB%E7%A6%8F%E5%B2%A1%E5%BA%97/@33.5903637,130.4221537,19.75z/data=!3m1!5s0x354191c861490c9b:0xdb78b1e18234580!4m6!3m5!1s0x354191c86159784b:0x8872340c1b2300b5!8m2!3d33.5905739!4d130.4222477!16s%2Fg%2F1ttp822p?hl=ja&amp;amp;entry=ttu&amp;amp;g_ep=EgoyMDI1MDMxOS4yIKXMDSoJLDEwMjExNDUzSAFQAw%3D%3D&quot;&gt;ローソン オリエンタルホテル福岡店 - Google マップ&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.062%;&quot;&gt;유후인 넨린에서 점심 먹기&lt;br /&gt;삿포로 생맥주 시키고&lt;br /&gt;토리덴 정식 추천&lt;br /&gt;&lt;br /&gt;유후인 놀거리&lt;br /&gt;- 금상 고로케&lt;br /&gt;- 플로랄 빌리지 들려서 구경&lt;br /&gt;- 유후인 뮤직박스 포레스트&lt;br /&gt;- 미피모리노 키친&lt;br /&gt;- 긴린코 호수&lt;br /&gt;&lt;br /&gt;- 버스 돌아가기&lt;br /&gt;&lt;br /&gt;- 저녁&amp;nbsp;이치란&lt;br /&gt;&lt;br /&gt;호텔에서 쉬다가&lt;br /&gt;인뽑가거나&lt;br /&gt;10시 바-코다&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유후인 넨린 대체제 필요&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;저녁 이치란 대체재&lt;br /&gt;- 야키토리&lt;br /&gt;- 덴푸라&lt;br /&gt;- 스시&lt;br /&gt;- 쿠시카츠&lt;br /&gt;- 가오가오 (저녁만)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.7132%;&quot;&gt;3월 30일 일요일&lt;/td&gt;
&lt;td style=&quot;width: 19.2249%;&quot;&gt;오전에&lt;br /&gt;오호리공원 / 마이즈루공원&lt;br /&gt;&lt;br /&gt;점심 시나리 우동(11시오픈)&lt;br /&gt;&lt;br /&gt;후쿠오카시 미술관&lt;br /&gt;&lt;br /&gt;다이묘 구경&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;20시 니쿠토사케 주베(야키니꾸)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.062%;&quot;&gt;캐널시티구경&lt;br /&gt;&lt;br /&gt;나카스 구경&lt;br /&gt;&lt;br /&gt;돈키호테 쇼핑&lt;br /&gt;24시라 아무때나 &lt;br /&gt;나와도 됨&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;점심 시나리우동&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/smuhsosdKUjZhuj39&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/smuhsosdKUjZhuj39&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;점심 시나리 대체재&lt;br /&gt;- 가오가오 오호리점(점,저)&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/YUxizNc2Tgv95wPZ9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/YUxizNc2Tgv95wPZ9&lt;/a&gt;&lt;br /&gt;- 고한야 한스케&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/6ru7XQFJmnL9LJFT9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/6ru7XQFJmnL9LJFT9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;앤로컬스(카페) / 스타벅스&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;저녁 니쿠토사케 주베&lt;br /&gt;&lt;a href=&quot;https://maps.app.goo.gl/gpy4bMmXjTKxBwYNA&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://maps.app.goo.gl/gpy4bMmXjTKxBwYNA&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.7132%;&quot;&gt;3월 31일 월요일&lt;/td&gt;
&lt;td style=&quot;width: 19.2249%;&quot;&gt;7시 출발 (체크아웃)&lt;br /&gt;8시 도착&lt;br /&gt;8시 10분 식사&lt;br /&gt;9시 체크인 시작&lt;br /&gt;10시 10분 비행기&lt;/td&gt;
&lt;td style=&quot;width: 18.062%;&quot;&gt;공항 4층에 &lt;br /&gt;수속 전에 먹을 수 있는 &lt;br /&gt;식당가가 있다고 함.&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&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;</description>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/353</guid>
      <comments>https://likecode.tistory.com/353#entry353comment</comments>
      <pubDate>Sun, 2 Mar 2025 13:33:00 +0900</pubDate>
    </item>
    <item>
      <title>MST와 DIJKSTRA를 구분하는 방법</title>
      <link>https://likecode.tistory.com/348</link>
      <description>&lt;p&gt;MST는 무조건 양방향 그래프다.&lt;/p&gt;
&lt;p&gt;양방향 그래프가 주어지면 MST로 풀 수 있는가를 의심하면 된다.&lt;/p&gt;
&lt;p&gt;간적크간많프&lt;/p&gt;
&lt;p&gt;개인적으로 PQ를 직접 구현할 수 있는 수준이면 prim을,&lt;/p&gt;
&lt;p&gt;DisjointSet을 구분하는 로직을 잘 짜면 Kruskal을 추천하신다고 하셨다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;DIJKSTRA의 경우에는 상황에 따라 양방향/단방향으로 주어지는데&lt;/p&gt;
&lt;p&gt;대부분의 시험 문제는 단방향으로 주어지는 경우가 많다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/ALGO</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/348</guid>
      <comments>https://likecode.tistory.com/348#entry348comment</comments>
      <pubDate>Fri, 16 Apr 2021 19:35:13 +0900</pubDate>
    </item>
    <item>
      <title>[Backend] JSP, 세션의 기본 지식</title>
      <link>https://likecode.tistory.com/344</link>
      <description>&lt;p&gt;&lt;b&gt;  JSP의 지시자&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;지시문의 종류는 3가지이다.&lt;br /&gt;그 중에 가장 대표적인 지시문은 페이지의 속성과 값을 표현한다.&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;속성=&quot;값&quot;&lt;/span&gt; 형태로 주어진다.&lt;br /&gt;&lt;br /&gt;일반적으로 페이지 지시문은 이클립스가 알아서 코딩하고,&lt;br /&gt;코드의 맨 상단에 적혀있는 경우가 많다.&lt;br /&gt;&lt;br /&gt;한글을 쓰기 위해서는 contentType는 무조건 재설정해주어야 한다.&lt;br /&gt;pageEncoding과 contentType의 형식을 맞추어주어야 편리하다.&lt;br /&gt;&lt;br /&gt;import의 경우, 콤마로 연결해서 여러 개의 import를 한 줄에 사용할 수 있다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  XML 문법&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;✔ 속성과 속성 사이에는 공백이 반드시 존재해야 한다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  세션&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;세션의 기본값은 true이다.&lt;br /&gt;사용자 인증 처리를 담당한다.&lt;br /&gt;false로 바꾸지 않는 경우, 아무 데에서나 쓸 수 있다. &amp;harr; Exception의 경우와 정 반대이다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  에러 페이지&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;errorPage&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;isErrorPage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;에러 발생 시 에러 페이지로 지정&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;현재 페이지가 에러 페이지인지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/344</guid>
      <comments>https://likecode.tistory.com/344#entry344comment</comments>
      <pubDate>Tue, 30 Mar 2021 10:25:50 +0900</pubDate>
    </item>
    <item>
      <title>[Backend] Servlet, JSP의 기본 지식</title>
      <link>https://likecode.tistory.com/343</link>
      <description>&lt;p&gt;&lt;b&gt;  Web Architecture&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPFex9/btq1la2wYbz/mimKu4Q07d8ViSOUE0UeLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPFex9/btq1la2wYbz/mimKu4Q07d8ViSOUE0UeLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPFex9/btq1la2wYbz/mimKu4Q07d8ViSOUE0UeLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPFex9%2Fbtq1la2wYbz%2FmimKu4Q07d8ViSOUE0UeLk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;  클라이언트&amp;harr;웹 서버&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;클라이언트와 웹 서버 사이에서는 요청과 응답이 이루어진다.&lt;br /&gt;1. 클라이언트(브라우저)에서 데이터를 발생하여 웹 서버로 요청(request)&lt;br /&gt;2. 웹 서버에서 클라이언트의 접속을 처리한다.&lt;br /&gt;...&lt;br /&gt;3. 서버의 정보를 받아 응답(response)를 하여 클라이언트에 전달한다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  &lt;span style=&quot;color: #666666;&quot;&gt;웹 서버&lt;b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;harr;어플리케이션 서버&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;웹 서버에서 클라이언트 접속이 처리되면, 클라이언트에게서 받은 데이터는 디비에 저장하고, 디비에서 원하는 데이터를 꺼내와서 응답할 내용을 웹 서버에 전달하여야 한다.&lt;br /&gt;그 과정을 어플리케이션 서버에서 담당한다.&lt;br /&gt;&lt;br /&gt;사람들은 웹과 어플리케이션 서버를 분리하지 않고 동시에 사용할 수 있도록 하는 방법을 찾았는데,&lt;br /&gt;그렇게 등장한 것이 WAS이다.&lt;br /&gt;&lt;br /&gt;WAS(Web Application Server)는 기존 웹 서버와 다르게 동적인 서버 콘텐츠를 이용할 수 있는 방법으로 제안되었다.&lt;br /&gt;&lt;br /&gt;원래는 대부분의 연산을 프론트에서 수행하였는데, 디비, 클라우드의 발전으로 연산 처리 속도가 빨라져 웹 브라우저를 화면으로 사용하고, 서버에서 어플리케이션을 수행하는 방식으로 바뀌어 가며 등장하였다.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt; &lt;b&gt; 어플리케이션 서버&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;harr;데이터베이스&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;어플리케이션 서버에서 데이터베이스의 값을 추가, 업데이트, 삭제하고&lt;br /&gt;데이터베이스의 값을 조회하여 다시 클라이언트로 전달할 수 있도록 한다.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  서블릿(Servlet)이란?&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;자바 서블릿은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램이다.&lt;br /&gt;웹 서버의 성능을 향상시키고, JSP와 비슷한 점이 있지만, &lt;br /&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;서블릿은 자바 코드 안에 HTML 코드를 포함&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;JSP는 HTML 코드 안에 자바코드를 포함&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  서블릿의 동작&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 데이터를 클라이언트로부터 얻는다.&lt;br /&gt;2. 데이터를 로직에 따라 가공한다.&lt;br /&gt;3. 응답 페이지를 생성한다.(응답 페이지로 넘긴다)&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  서블릿 API&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;MyServlet &amp;gt; HttpServlet &amp;gt; GenericServlet &amp;gt; Servlet&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  서블릿 생명주기(LifeCycle)&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;main 메서드가 없음&lt;br /&gt;클라이언트가 요청을 하게 되면 서블릿 객체는 최초 한번만 생성되고, 초기화 된다.&lt;br /&gt;그리고 요청이 이루어질 때마다 서비스 메서드만 반복한다.&lt;br /&gt;서블릿 객체가 필요 없게 되면 제거하는 일까지 진행한다.&lt;br /&gt;* 단, 서블릿 코드가 수정되면 다시 생성되고, 초기화된다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  Get 방식과 Post 방식의 차이&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;GET&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;POST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;특징&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터가 URL 뒤 쿼리스트링으로 전송&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;body에 입력 스트림 데이터로 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;장점&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;빠르다&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 길이 제한 없다&lt;br /&gt;최소한의 보안&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;단점&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 양에 제한(브라우저마다 다름)&lt;br /&gt;보안이 안됨&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터의 양이 같다 가정하면, GET 보다&lt;br /&gt;느린 속도&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;  URI 분석&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* 하단의 링크는 내가 지금 글을 쓰고 있는 링크를 그대로 복사한 것이다.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEFaph/btq1ca3N1xd/Sijwc50BmsgccUSRSaMmu0/img.png&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/bEFaph/btq1ca3N1xd/Sijwc50BmsgccUSRSaMmu0/img.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  자바 서버 페이지(JSP)란?&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;자바 서버 페이지(JSP: Java Server Page)는 HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다.&lt;br /&gt;&lt;br /&gt;실행 시 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  JSP의 동작&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. JSP가 서블릿 자바 파일로 변환됨&lt;br /&gt;2. 서블릿 클래스 컴파일이 이루어짐&lt;br /&gt;3. 서블릿 클래스가 메모리에 적재됨&lt;br /&gt;4. 클라이언트로부터 요청 받음(request)&lt;br /&gt;5. 데이터를 로직에 따라 변환&lt;br /&gt;6. 변환된 데이터를 응답(response)&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  JSP의 용법&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 선언&lt;br /&gt;&amp;lt;%! 멤버 변수와 메서드를 작성하는 부분%&amp;gt;&lt;br /&gt;2. 스크립트릿&lt;br /&gt;&amp;lt;% 클라이언트 요청 시 매번 호출되는 영역 %&amp;gt;&lt;br /&gt;3. 표현식&lt;br /&gt;&amp;lt;%= 브라우저에 출력할 데이터 %&amp;gt;&lt;br /&gt;4. 주석&lt;br /&gt;&amp;lt;%-- 주석할 부분 --&amp;gt;&lt;br /&gt;* html 주석의 경우, 브라우저 상에서 html 코드를 통해 열람 가능하지만, JSP의 주석은 서블릿으로 변환되면서 가져오지 않으므로 브라우저 상에서 열람할 수 없다.&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  JSP 지시자&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 해당 페이지를 어떻게 처리할 것인지에 대한 정보 제공&lt;br /&gt;&amp;lt;%@ page attr1=&quot;val1&quot; .... %&amp;gt;&lt;br /&gt;2. 특정 jsp 파일을 페이지에 포함&lt;br /&gt;&amp;lt;%@ include file=&quot;/hello.jsp&quot; %&amp;gt;&lt;br /&gt;3. 커스텀 태그, JSTL 이용 시 사용&lt;br /&gt;&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&amp;gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  JSP 지시자 속성 정리&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 260px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;속성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;기본값&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;language&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;java&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;스크립트 언어 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;info&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;JSP 페이지 설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;contentType&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;text/html;charset=ISO-8859-1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;문자 집합 지정(브라우저)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;pageEncoding&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ISO-8859-1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;문자 집합 지정(JSP 페이지)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;import&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;자바 패키지, 클래스 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;session&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;세션 사용 유무&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;errorPage&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;에러 시 처리될 페이지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;isErrorPage&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;이 페이지가 에러 처리 페이지인지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;buffer&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;8KB&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;버퍼의 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;autoflush&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;버퍼 자동 전송 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;isThreadsafe&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;멀티 스레드 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;extends&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;javax.servlet.jsp.HttpJspPage&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;클래스 상속 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;  JSP 기본 객체&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 181px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;객체 명&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;타입&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;request&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;javax.servlet.http.httpServletRequest&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;사용자 입력 정보(클라이언트 정보) 읽기 시 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;response&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;javax.servlet.http.httpServletResponse&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;응답 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;pageContext&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;javax.servlet.jsp.PageContext&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;기본 객체 얻을 때, forward, include&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;session&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;javax.servlet.http.HttpSession&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;클라이언트 세션 정보 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;application&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;javax.servlet.ServletContent&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;어플리케이션 처리 관련 정보 레퍼런스&lt;br /&gt;(사실상 프로젝트라고 생각하면 된다.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;out&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;javax.servlet.jsp.JspWriter&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;output 스트림 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;config&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;javax.servlet.ServletConfig&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;초기화 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;page&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;java.lang.Object&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;참조 변수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;exception&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;java.&lt;span style=&quot;color: #333333;&quot;&gt;lang&lt;/span&gt;.Exception&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;오류 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;  set, get&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;메서드&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;setAttribute(name, value)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;name이라는 곳에 value 데이터 set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;getAttribute(name)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;속성 값 있으면 get 없으면 null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;getAttributeNames()&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;속성들의 이름들을 Enumeration 형태로 get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;removeAttribute(name)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;해당 속성을 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/343</guid>
      <comments>https://likecode.tistory.com/343#entry343comment</comments>
      <pubDate>Mon, 29 Mar 2021 23:10:25 +0900</pubDate>
    </item>
    <item>
      <title>[JSP] 웹 구조와 백엔드 기초 - 2</title>
      <link>https://likecode.tistory.com/342</link>
      <description>&lt;p&gt;&lt;b&gt;  html에서 사용하는 언어가 다국어인 경우.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yiF1O/btq1beK83PA/991oYbDQonEK7H8LE4DEhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yiF1O/btq1beK83PA/991oYbDQonEK7H8LE4DEhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yiF1O/btq1beK83PA/991oYbDQonEK7H8LE4DEhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyiF1O%2Fbtq1beK83PA%2F991oYbDQonEK7H8LE4DEhK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;둘 중 하나만 사용해도 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  서블릿의 구동 순서&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. 데이터를 받는다.&lt;/p&gt;
&lt;p&gt;2. 로직을 통해 처리한다.&lt;/p&gt;
&lt;p&gt;3. 응답페이지로 응답한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  응답 페이지의 html 코드를 편리하게 만들기 위한 방법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;jsp를 이용하여 여기에 자바 코드를 넣는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Servlet API&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;내가 만든 서블릿 &amp;gt; HttpServlet &amp;gt; GenericServlet &amp;gt; Servlet&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpServletRequest&amp;gt; ServletRequest&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  LifeCycle 작업 순서&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. 생성자 생성&lt;/p&gt;
&lt;p&gt;2. init&lt;/p&gt;
&lt;p&gt;----------------&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;-----최초 호출(코드가 수정되는 경우)-----------------------&lt;/p&gt;
&lt;p&gt;3. Service(doGet, doPost : 새로고침을 하는 경우 doGet, doPost만 호출된다.)&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;------&lt;/span&gt;-새로고침을 하는 경우-------------&lt;span style=&quot;color: #333333;&quot;&gt;--&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;-----&lt;/span&gt;---&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;4. destroy&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;--------&lt;span style=&quot;color: #333333;&quot;&gt;------&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;--코드가 수정되는 경우----------&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;--&lt;span style=&quot;color: #333333;&quot;&gt;-------&lt;/span&gt;----&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  파라미터 전송 방식&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;get 방식 : 노출이 되어도 문제가 없는 경우 빠르게 전송 가능하므로 사용.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;post 방식 : 노출이 되지 않고 데이터의 양이 긴 경우 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  URI의 구조&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;url : 주소&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;? : 쿼리 스트링의 시작&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;? = 사이 : 파라미터의 이름&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;= 뒤 : 파라미터의 값&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp; : 쿼리 스트링의 구분자&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  JSP&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;java server page&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;html내에 자바 코드를 삽입하여 동적으로 웹 페이지를 만드는 서블릿과 동급의 구동방식&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;자바 서블릿으로 변환된 후 실행되므로 서블릿과 유사하다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  JSP 스크립팅 요소&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 선언&lt;br /&gt;멤버변수 선언이나 메서드를 선언하는 영역&lt;br /&gt;&amp;lt;%! %&amp;gt;&lt;br /&gt;&lt;br /&gt;2. 스크립트릿&amp;nbsp;&lt;br /&gt;클라이언트 호출시에 매번 호출 영역으로 서블릿의&amp;nbsp;서비스 메서드 안에 사용할 부분들을 쓰면 된다.&lt;br /&gt;&amp;lt;% %&amp;gt;&lt;br /&gt;&lt;br /&gt;3. 표현식&lt;br /&gt;데이터를 브라우저에 출력할 때 사용한다&lt;br /&gt;&amp;lt;%= %&amp;gt;&lt;br /&gt;println과 같고, 세미콜론은 절대 사용하면 안된다.&lt;br /&gt;&lt;br /&gt;4. 주석&lt;br /&gt;&amp;lt;%-- --%&amp;gt;&lt;br /&gt;html 주석은 &amp;lt;!-- --&amp;gt;&lt;br /&gt;자바, 자바스크립트 주석은 //&lt;/blockquote&gt;
&lt;p&gt;html 주석과 jsp 주석의 차이점은&lt;/p&gt;
&lt;p&gt;jsp 주석은 서블릿으로 포함시킬 때, java 주석 내부에 jsp 주석이 포함되지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  서블릿의 역할&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;처음: 브라우저의 화면구성&lt;/p&gt;
&lt;p&gt;현재: controller의 역할&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 분석&lt;/li&gt;
&lt;li&gt;데이터 받아오기&lt;/li&gt;
&lt;li&gt;모델 호출&lt;/li&gt;
&lt;li&gt;결과물 보일 응답 페이지 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/342</guid>
      <comments>https://likecode.tistory.com/342#entry342comment</comments>
      <pubDate>Mon, 29 Mar 2021 11:31:03 +0900</pubDate>
    </item>
    <item>
      <title>[JSP] 웹 구조와 백엔드 기초 - 1</title>
      <link>https://likecode.tistory.com/341</link>
      <description>&lt;p&gt;&lt;b&gt;  Web Server&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Web Server 클라이언트의 접속을 처리해준다.&lt;/p&gt;
&lt;p&gt;HTML이나, CSS, JavaScript만을 인식한다.&lt;/p&gt;
&lt;p&gt;DB 등은 처리할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Application Server&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;로직처리를 해준다.&lt;/p&gt;
&lt;p&gt;DB와의 연결을 위해 사용한다.&lt;/p&gt;
&lt;p&gt;Presentation : 화면에 보이는 역할&lt;/p&gt;
&lt;p&gt;Business Logic : 응답을 위해&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  WAS&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;웹 서버와 어플리케이션 서버를 합쳐놓은 서버&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Application Server에서 사용하는 자바&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Java SE 를 기반으로 하는 ServerSide Program -&amp;gt; &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Java EE&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Servlet -&amp;gt; 웹에서 돌아가는 자바&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JSP&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Java Server Page : 서블릿의 문법을 따른다.&lt;/p&gt;
&lt;p&gt;코드 상에서 약간의 Servlet과 다른 특징이 존재한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Deployment Descriptor&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;서블린 3.0보다 적은 버전은 web.xml을 사용한다.&lt;/p&gt;
&lt;p&gt;서블릿 3.0 이상부터는 Annotation을 이용한다.&lt;/p&gt;
&lt;p&gt;웹 페이지를 만들기 위해서 사용하는 설명서 같은 것이다.&lt;/p&gt;
&lt;p&gt;하나의 기능을 가지고 있는 주석(설정값)을 말한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQe406/btq1bfJ4pqA/WBCABNXRdNfFawKD4KzRx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQe406/btq1bfJ4pqA/WBCABNXRdNfFawKD4KzRx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQe406/btq1bfJ4pqA/WBCABNXRdNfFawKD4KzRx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQe406%2Fbtq1bfJ4pqA%2FWBCABNXRdNfFawKD4KzRx1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;구조는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Destroy&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;서블릿이 메모리에서 내려갈 때 최종적으로 호출되는 함수&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Init&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;서블릿이 메모리에 올라갈 때 생성자가 메모리에 올리는 작업을 하면, 객체의 초기화 작업을 진행.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Service&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;클라이언트의 요청(request), 서버의 응답(response)를 다룬다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Generic Servlet&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;서비스 메서드만 override할 수 있는 간단한 인터페이스&lt;/p&gt;
&lt;p&gt;Servlet을 extend하게 되면 상속하기 싫은 메서드를 모두 구현하거나 abstract 클래스로 선언해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  데이터를 전송하는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;get : url에 포함되어 넘어간다. 노출의 위험이 높다. 길이의 제한이 있다.&lt;/p&gt;
&lt;p&gt;post : 바디에 포함되어 넘어간다. 노출의 위험이 낮다. 길이의 제한이 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  데이터를 처리하는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;get과 post의 방식이 다르므로, HttpRequest를 사용해서&amp;nbsp;&lt;/p&gt;
&lt;p&gt;doGet이나 doPost를 이용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  이클립스에서 서블릿을 만들어보자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5zZ5U/btq1dy3qnkN/DoTz3I4hcfyqcCTyHBYmxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5zZ5U/btq1dy3qnkN/DoTz3I4hcfyqcCTyHBYmxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5zZ5U/btq1dy3qnkN/DoTz3I4hcfyqcCTyHBYmxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5zZ5U%2Fbtq1dy3qnkN%2FDoTz3I4hcfyqcCTyHBYmxk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  웹 페이지를 이동하는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. url을 직접 입력하는 방법&lt;/p&gt;
&lt;p&gt;2. link를 이용하는 방법&lt;/p&gt;
&lt;p&gt;3. form - get을 이용하는 방법&lt;/p&gt;
&lt;p&gt;-----------get 방식--------------&lt;/p&gt;
&lt;p&gt;4. form - post를 이용하는 방법&lt;/p&gt;
&lt;p&gt;----------post 방식--------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  자바 코드에 html 코드를 작성하면 에러가 난다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;서블릿은 서버에서 구동하는 코드이기 때문에, 서블릿에서 작성하는 html은 출력해주어야 프론트에서 해석할 수 있다.&lt;/p&gt;
&lt;p&gt;클라이언트의 응답과 관련있는 response를 이용하여 HttpServletResponse의 상위 클래스가 가지고 있는&lt;/p&gt;
&lt;p&gt;getWriter()라는 메서드 -&amp;gt; printWriter()를 이용하여 출력할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  url Pattern&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZJIhf/btq1dzVzFJy/eHNx9UC2pdXjsESHlftyA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZJIhf/btq1dzVzFJy/eHNx9UC2pdXjsESHlftyA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZJIhf/btq1dzVzFJy/eHNx9UC2pdXjsESHlftyA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZJIhf%2Fbtq1dzVzFJy%2FeHNx9UC2pdXjsESHlftyA0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ssfay : root context&lt;/p&gt;
&lt;p&gt;HelloSsafy : 대소문자를 일반적으로 섞으면 안되므로&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nJhGN/btq1dAAbdWF/aRxxXo4ZCh89ZLB8ouaOLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nJhGN/btq1dAAbdWF/aRxxXo4ZCh89ZLB8ouaOLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nJhGN/btq1dAAbdWF/aRxxXo4ZCh89ZLB8ouaOLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnJhGN%2Fbtq1dAAbdWF%2FaRxxXo4ZCh89ZLB8ouaOLk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xnNUQ/btq091Z74fC/5uDLjO31GdARqFlT0xMq70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xnNUQ/btq091Z74fC/5uDLjO31GdARqFlT0xMq70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xnNUQ/btq091Z74fC/5uDLjO31GdARqFlT0xMq70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxnNUQ%2Fbtq091Z74fC%2F5uDLjO31GdARqFlT0xMq70%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 바꾸어준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  코드의 html 내용 수정 결과&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;자바 파일은 destroy -&amp;gt; init 과정을 통해 업데이트가 진행되므로, 다시 로드하는 과정을 거쳐서 로딩 시간이 걸린다.&lt;/p&gt;
&lt;p&gt;언제 창이 뜰 지 알 수 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bijmQ8/btq1aRbCYcr/EXLmsZCJcmgZYw0G6DUwv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bijmQ8/btq1aRbCYcr/EXLmsZCJcmgZYw0G6DUwv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bijmQ8/btq1aRbCYcr/EXLmsZCJcmgZYw0G6DUwv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbijmQ8%2Fbtq1aRbCYcr%2FEXLmsZCJcmgZYw0G6DUwv0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/341</guid>
      <comments>https://likecode.tistory.com/341#entry341comment</comments>
      <pubDate>Mon, 29 Mar 2021 10:03:31 +0900</pubDate>
    </item>
    <item>
      <title>요새 하고 있는 것들</title>
      <link>https://likecode.tistory.com/340</link>
      <description>&lt;p&gt;요샌 머신러닝 공부는 오픈 카톡에 있는 머신러닝 스터디 키워드를 주말마다 혼자 보면서 공부중이고&lt;/p&gt;
&lt;p&gt;내일은 latent space랑 MobileNet에 대해서 공부해 볼 예정이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR9pXW/btq0Y34JZzX/v53zbTHcEnuKdzuu5dKTg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR9pXW/btq0Y34JZzX/v53zbTHcEnuKdzuu5dKTg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR9pXW/btq0Y34JZzX/v53zbTHcEnuKdzuu5dKTg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR9pXW%2Fbtq0Y34JZzX%2Fv53zbTHcEnuKdzuu5dKTg0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;싸피에서 하는 깃랩인데 과제도 거의 매일 하고있고&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;최근에 깃 계정을 다시 개설했는데 알고보니 내가 업로드 하는 깃허브가&lt;/p&gt;
&lt;p&gt;내 컴퓨터에 연동된 계정이 아니라는 불상사가....&lt;/p&gt;
&lt;p&gt;여튼 그래서 깃허브와 연동된 계정이 아니라 잔디는 여전히 하얗지만(바꾸기가 귀찮아서 그냥 놔두었다..)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kWw2n/btq0Y4Jmv3B/9yJB5tLmTmefZYU86QFEk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kWw2n/btq0Y4Jmv3B/9yJB5tLmTmefZYU86QFEk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kWw2n/btq0Y4Jmv3B/9yJB5tLmTmefZYU86QFEk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkWw2n%2Fbtq0Y4Jmv3B%2F9yJB5tLmTmefZYU86QFEk0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이런식으로 계속 커밋을 하는 중이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 최근에는 매일 싸피 끝나고 8-10시 사이에 각자 자습을 하는 스터디를 참여해서&lt;/p&gt;
&lt;p&gt;매일 유의미한 활동들을 하고, 되도록이면 1일 1알고리즘을 할 수 있도록 노력하는 중이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9tVAZ/btq05o0q0Cd/5L68sFOPSpUC2Ebx0rCb40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9tVAZ/btq05o0q0Cd/5L68sFOPSpUC2Ebx0rCb40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9tVAZ/btq05o0q0Cd/5L68sFOPSpUC2Ebx0rCb40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9tVAZ%2Fbtq05o0q0Cd%2F5L68sFOPSpUC2Ebx0rCb40%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;오늘 드디어 BFS를 이해했다.&lt;/p&gt;
&lt;p&gt;BFS에 대한 개념은 알고있지만 그걸 구현하기 위해서 약간 용기가 필요해서 재귀로 짰는데&lt;/p&gt;
&lt;p&gt;나는 그걸 그동안 DFS가 아니라 BFS로 알고있었다는 바보같은 사실을 어제 자율학습 스터디 때&lt;/p&gt;
&lt;p&gt;깨닫게 되어서, 연구소 문제를 풀이할 때 오늘 그냥 큐 레퍼런스 문서를 보면서 큐를 써봤는데&lt;/p&gt;
&lt;p&gt;생각보다 어렵지 않았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다행이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여튼 최근 공부하고 있는 내용들에 대해서는 다 정리한 것 같다.&lt;/p&gt;
&lt;p&gt;끝.&lt;/p&gt;</description>
      <category>2021 이전 자료들/잡설</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/340</guid>
      <comments>https://likecode.tistory.com/340#entry340comment</comments>
      <pubDate>Fri, 26 Mar 2021 12:41:02 +0900</pubDate>
    </item>
    <item>
      <title>[BOJ-14502] 연구소</title>
      <link>https://likecode.tistory.com/339</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccFcQH/btq03vTIohv/2Lkl5zUlOPvTBK14h4mI5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccFcQH/btq03vTIohv/2Lkl5zUlOPvTBK14h4mI5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccFcQH/btq03vTIohv/2Lkl5zUlOPvTBK14h4mI5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccFcQH%2Fbtq03vTIohv%2F2Lkl5zUlOPvTBK14h4mI5K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.acmicpc.net/problem/14502&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;벽은 완탐으로 배치하고, 저번에 치즈를 엄하게 DFS로 풀었던게 생각이 나서 BFS 큐 생성하는 로직을 참고하여 BFS로 코드를 만들었다. 벽을 새로 배치할 때마다, 큐에 넣어주어야 하는 바이러스와 맵을 초기화해주어야 한다는 부분이 핵심인것 같다.&lt;/p&gt;
&lt;p&gt;메모리 줄이는 방법도 있을것같은데, 일단 구현했다.&lt;/p&gt;
&lt;pre id=&quot;code_1616729229353&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class BOJ_14502_Main {
	static int N, M, ans;
	static int[] dx = {-1, 1, 0, 0};
	static int[] dy = {0, 0, -1, 1};
	static int[][] mapInit, wall, map;
	static ArrayList&amp;lt;Pos&amp;gt; wallList;
	static ArrayList&amp;lt;Pos&amp;gt; virusList;
	static Queue&amp;lt;Pos&amp;gt; virus;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		M = sc.nextInt();
		mapInit = new int[N][M];
		wallList = new ArrayList&amp;lt;&amp;gt;();
		virusList = new ArrayList&amp;lt;&amp;gt;();
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; M; j++) {
				mapInit[i][j] = sc.nextInt();
				if (mapInit[i][j] == 0) {
					Pos pos = new Pos(i, j);
					wallList.add(pos);
				} else if (mapInit[i][j] == 2) {
					Pos pos = new Pos(i, j);
					virusList.add(pos);
				}
			}
		}
		wall = new int[3][2];
		ans = Integer.MIN_VALUE;
		combination(0, 0);
		System.out.println(ans);
		sc.close();
	}

	private static void combination(int cnt, int start) {
		if (cnt == 3) {
			initMap();
			spreadVirus(0, 0);
			return;
		}
		for (int i = start; i &amp;lt; wallList.size(); i++) {
			wall[cnt][0] = wallList.get(i).x;
			wall[cnt][1] = wallList.get(i).y;
			combination(cnt + 1, i + 1);
		}
	}

	private static void initMap() {
		map = new int[N][M];
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; M; j++) {
				map[i][j] = mapInit[i][j];
			}
		}
		for(int i = 0; i &amp;lt; 3; i++) {
			map[wall[i][0]][wall[i][1]] = 1;
		}
		
		virus = new LinkedList&amp;lt;&amp;gt;();
		for(int i = 0;i &amp;lt; virusList.size(); i++) {
			virus.offer(virusList.get(i));
		}
	}

	private static void spreadVirus(int x, int y) {
		while(!virus.isEmpty()) {
			Pos p = virus.poll();
			for(int d = 0; d &amp;lt; 4; d++) {
				if(p.x + dx[d] &amp;gt; -1 &amp;amp;&amp;amp; p.y + dy[d] &amp;gt; -1 &amp;amp;&amp;amp; 
						p.x + dx[d] &amp;lt; N &amp;amp;&amp;amp; p.y + dy[d] &amp;lt; M) {
					if(map[p.x + dx[d]][p.y + dy[d]] == 0) {
						Pos newVirus = new Pos(p.x + dx[d], p.y + dy[d]);
						map[newVirus.x][newVirus.y] = 2;
						virus.offer(newVirus);
					}
				}
			}
		}
		countSafeZone();
	}

	private static void countSafeZone() {
		int temp = 0;
		for (int i = 0; i &amp;lt; N; i++) {
			for (int j = 0; j &amp;lt; M; j++) {
				if(map[i][j] == 0) {
					temp++;
				}
			}
		}
		ans = Math.max(temp, ans);
	}
}

class Pos {
	int x;
	int y;

	public Pos(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append(&quot;Pos [x=&quot;);
		builder.append(x);
		builder.append(&quot;, y=&quot;);
		builder.append(y);
		builder.append(&quot;]&quot;);
		return builder.toString();
	}

}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2021년 자료/ALGO</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/339</guid>
      <comments>https://likecode.tistory.com/339#entry339comment</comments>
      <pubDate>Fri, 26 Mar 2021 12:27:25 +0900</pubDate>
    </item>
    <item>
      <title>[BOJ-2636] 치즈</title>
      <link>https://likecode.tistory.com/338</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YOywS/btq0Vn9bRSm/uw4OeYcYgHaeidYpHKxEv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YOywS/btq0Vn9bRSm/uw4OeYcYgHaeidYpHKxEv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YOywS/btq0Vn9bRSm/uw4OeYcYgHaeidYpHKxEv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYOywS%2Fbtq0Vn9bRSm%2Fuw4OeYcYgHaeidYpHKxEv1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2636&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.acmicpc.net/problem/2636&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이거는 사실 녹일 영역만 큐에 넣어서 풀면 되는데, 큐에 넣는 것이 아직 익숙하지 않아서 완탐 재귀로 풀었다.&lt;/p&gt;
&lt;p&gt;공기와 접촉하지 않은 영역이 존재하는 경우, 공기와의 접촉 여부를 위해 영역 계산을 한다.&lt;/p&gt;
&lt;p&gt;공기와 접촉한 영역에 대해 치즈를 녹여서 2라는 영역으로 바꾼다음에, 그 다음 턴에서는 -1로 적용될 수있도록 한다.&lt;/p&gt;
&lt;p&gt;중간에 치즈를 세는 countOne이라는 메서드를 잘 못 작성해서 오래 헤맸었는데,&lt;/p&gt;
&lt;p&gt;팀원들과 코드리뷰를 하다가 발견해서 해결했다.&lt;/p&gt;
&lt;pre id=&quot;code_1616590045635&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
	
	static Scanner sc;
	static int[][] map;
	static boolean[][] visited;
	static int row, col, ans;
	static int[] dx = {-1, 1, 0, 0};
	static int[] dy = {0, 0, -1, 1};	//상하좌우
	
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		
		row = sc.nextInt();
		col = sc.nextInt();
		ans = 0;
		
		makeMap(row, col);
		changeMap(0, 0);
		sc.close();
	}

	private static void changeMap(int x, int y) {
		visited = new boolean[row][col];
		if(countZero() &amp;gt; 0) {
			checkMap(0, 0); // 공기 접촉 영역을 -1로 변경
		}
		int temp = countOne();
		ans++;
		visited = new boolean[row][col];
		checkPixel(x, y);
		changePixel();
		
		if(countOne() &amp;gt; 0) {
			changeMap(x, y);
		}else {
			System.out.println(ans);
			System.out.println(temp);
		}
	}
	
	private static void changePixel() {
		for(int i = 0; i &amp;lt; row; i++) {
			for(int j = 0; j &amp;lt; col; j++) {
				if(map[i][j] == 2) {
					map[i][j] = -1;
				}
			}
		}
	}

	private static void checkPixel(int x, int y) {
		// 치즈 내부의 구멍이 공기와 접촉하는지 영역 확인
		visited[x][y] = true;
		if(map[x][y] == -1) {
			for(int d = 0; d &amp;lt; 4; d++) {
				int nx = dx[d] + x;
				int ny = dy[d] + y;
				if(nx &amp;gt; -1 &amp;amp;&amp;amp; ny &amp;gt; -1 &amp;amp;&amp;amp; nx &amp;lt; row &amp;amp;&amp;amp; ny &amp;lt; col &amp;amp;&amp;amp; !visited[nx][ny]) {
					if(map[nx][ny] == 1) {
						map[nx][ny] = 2;
					} else if(map[nx][ny] == -1) {
						checkPixel(nx, ny);
					}
				}
			}
		}
	}
	
	private static int countOne() {
		int count = 0;
		for(int i = 0; i &amp;lt; row; i++) {
			for(int j = 0; j &amp;lt; col; j++) {
				if(map[i][j] == 1) {
					count++;
				}
			}
		}
		return count;
	}

	private static int countZero() {
		for(int i = 0; i &amp;lt; row; i++) {
			for(int j = 0; j &amp;lt; col; j++) {
				if(map[i][j] == 0) {
					return 1;
				}
			}
		}
		return 0;
	}

	private static void checkMap(int x, int y) {
		// 치즈 내부의 구멍이 공기와 접촉하는지 영역 확인
		visited[x][y] = true;
		for(int d = 0; d &amp;lt; 4; d++) {
			int nx = dx[d] + x;
			int ny = dy[d] + y;
			if(nx &amp;gt; -1 &amp;amp;&amp;amp; ny &amp;gt; -1 &amp;amp;&amp;amp; nx &amp;lt; row &amp;amp;&amp;amp; ny &amp;lt; col) {
				if(map[nx][ny] != 1 &amp;amp;&amp;amp; !visited[nx][ny]) {
					map[nx][ny] = -1;
					checkMap(nx, ny);
				}
			}
		}
	}

	private static void makeMap(int row, int col) {
		map = new int[row][col];
		for(int i = 0; i &amp;lt; row; i++) {
			for(int j = 0; j &amp;lt; col; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		for(int i = 0; i &amp;lt; row; i++) {
			map[i][0] = -1;
			map[i][col-1] = -1;
		}
		for(int i = 0; i &amp;lt; col; i++) {
			map[0][i] = -1;
			map[row-1][i] = -1;
		}
	}
	
	private static void printMap() {
	for(int i= 0; i &amp;lt; row; i++) {
		for(int j = 0; j &amp;lt;col; j++) {
			System.out.print(map[i][j] + &quot;\t&quot;);
		}
		System.out.println();
	}
}
//private static void printBooleanMap() {
//	for(int i= 0; i &amp;lt; row; i++) {
//		for(int j = 0; j &amp;lt;col; j++) {
//			System.out.print(visited[i][j] + &quot;\t&quot;);
//		}
//		System.out.println();
//	}
//}

	
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2021년 자료/ALGO</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/338</guid>
      <comments>https://likecode.tistory.com/338#entry338comment</comments>
      <pubDate>Wed, 24 Mar 2021 21:50:01 +0900</pubDate>
    </item>
    <item>
      <title>[BOJ-1342] 행운의 문자열</title>
      <link>https://likecode.tistory.com/337</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brZqX8/btq0Tvehf8n/gV2EmSZdS4g7GEo1U46nuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brZqX8/btq0Tvehf8n/gV2EmSZdS4g7GEo1U46nuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brZqX8/btq0Tvehf8n/gV2EmSZdS4g7GEo1U46nuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrZqX8%2Fbtq0Tvehf8n%2FgV2EmSZdS4g7GEo1U46nuK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1342&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.acmicpc.net/problem/1342&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;처음에는 중복을 신경써서 풀어야 하는거 아닌가 생각했지만.&lt;/p&gt;
&lt;p&gt;중복은 마지막에 제외해주면 되는 것이고, worst의 경우에는 중복이 일어나는 상황이 아니라&lt;/p&gt;
&lt;p&gt;모든 문자열이 다 처음 보는 문자인 경우라서, 시간 복잡도에 영향을 주지 않는다는 것을 깨달았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616506883866&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package boj.day0323;

import java.util.Arrays;
import java.util.Scanner;

public class BOJ_1342_Main {
	static char[] input;
	static char[] output;
	static boolean[] visited;
	static int ans;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String s = sc.next();
		input = new char[s.length()];
		int[] alpha = new int[26];
		for (int i = 0; i &amp;lt; s.length(); i++) {
			input[i] = s.charAt(i);
			alpha[s.charAt(i) - 'a']++;
		}
		visited = new boolean[input.length];
		output = new char[s.length()];

		ans = 0;
		permutation(0);
		for (int i = 0; i &amp;lt; alpha.length; i++) {
			if (alpha[i] &amp;gt; 1) {
				ans = ans / factorial(alpha[i]);
			}
		}
		System.out.println(ans);
		sc.close();

	}

	private static int factorial(int n) {
		int r = 1;
		for (int i = n; i &amp;gt;= 1; i--) {
			r = r * i;
		}
		return r;
	}

	private static void permutation(int cnt) {
		if (cnt &amp;gt;= input.length) {
			// if(output[input.length-1]!=output[input.length-2]) {
			for (int j = 1; j &amp;lt; input.length; j++) {
				if (output[j] == output[j - 1]) {
					return;
				}
			}
			ans++;
			System.out.println(Arrays.toString(output));
			return;
		}
		for (int i = 0; i &amp;lt; input.length; i++) {

			if (visited[i])
				continue;

			// if(cnt &amp;gt; 0) {if(input[i] == output[cnt - 1]) continue;}

			visited[i] = true;
			output[cnt] = input[i];
			permutation(cnt + 1);
			visited[i] = false;
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2021년 자료/ALGO</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/337</guid>
      <comments>https://likecode.tistory.com/337#entry337comment</comments>
      <pubDate>Tue, 23 Mar 2021 22:41:29 +0900</pubDate>
    </item>
    <item>
      <title>[FrontEnd] 시험 대비용 자료 정리 링크</title>
      <link>https://likecode.tistory.com/336</link>
      <description>&lt;p&gt;월요일 시험 대비용으로 티스토리에 정리한 내역들을 답이랑 같이 정리해서 노션에 올렸는데 공유합니다^^&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.notion.so/210322-b206514d91d94993a7739021dc40a5ee&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.notion.so/210322-b206514d91d94993a7739021dc40a5ee&lt;/a&gt;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/336</guid>
      <comments>https://likecode.tistory.com/336#entry336comment</comments>
      <pubDate>Sat, 20 Mar 2021 19:17:41 +0900</pubDate>
    </item>
    <item>
      <title>[DBMS] 데이터베이스 기본 - 1</title>
      <link>https://likecode.tistory.com/335</link>
      <description>&lt;p&gt;&lt;b&gt;  TABLE&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;연속성을 가진 데이터.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;파일로 관리하기 힘든 대용량의 데이터를 관리하기 위해서 필요하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ex) 회원 테이블을 텍스트로 바꾸는 경우, 회원 한 명당 하나의 텍스트 파일이 필요하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;row와 column으로 이루어져 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ex) row : 회원 한 명의 정보&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;column : 회원 전체의 이름(속성)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ex) 로그인: 회원의 아이디 column과 패스워드 column이 필요하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 회원 탈퇴 : 로그인하고 있는 회원의 row를 삭제&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  SQL&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;새로운 정보를 얻거나 지우거나, 변경하는 등의 과정을 위해 사용하는 언어&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;database에 있는 정보를 사용할 수 있도록 지원하는 언어&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;모든 DBMS에서 사용가능.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;쿼리문의 대소문자는 구별하지 않음 (단, 데이터의 대소문자는 구분)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  DBMS&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;데이터베이스를 관리하는 매니지먼트 시스템&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  스키마&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;데이터베이스의 테이블에 저장될 뎅터의 구조와 형식을 정의&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  테이블 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;create table 테이블 이름{&lt;/p&gt;
&lt;p&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;null 여부나 자동 순서 매김 등 설정&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  조건에 따라 변경되거나 삭제될 수 있도록 where절을 꼭 사용할 것&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JDBC&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바프로그래밍 언어로 만들어진 클래스와 인터페이스로 이루어진 API로서&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;SQL문을 실행할 수 있는 함수 호출 인터페이스&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JDBC 특징&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;DBMS 종류에 독립적인 자바 프로그래밍 가능&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;데이터베이스가 달라지더라도 동일한 API를 사용하게 해준다. (드라이버와 url만 수정)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바가 가지는 플랫폼에 독립적이라는 특성과 DBMS에 독립적인 특성을 가진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JDBC 기능&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;데이터베이스에 연결, SQL 문장을 DBMS에 전송, SQL&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;create update delete는 row의 개수를 리턴한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;select일 경우에는 집합이 넘어온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JDBC API / driver&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JDBC API : 자바를 제공하는 쪽에서 제공(오라클)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JDBC driver : 데이터베이스를 만드는 쪽에서 제공(mysql, mariadb) =&lt;b&gt; Vendor API&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바를 만드는 곳에서는 인터페이스만 만들어두고,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;디비 내부의 기능이 각각 다르므로, 그거를 연동할 수 있게 실제 기능 구현은 데이터베이스 회사 측에서 제공.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/335</guid>
      <comments>https://likecode.tistory.com/335#entry335comment</comments>
      <pubDate>Thu, 11 Mar 2021 10:44:46 +0900</pubDate>
    </item>
    <item>
      <title>[BootStrap] 부트스트랩 이용해보기 - 1</title>
      <link>https://likecode.tistory.com/334</link>
      <description>&lt;p&gt;&lt;b&gt;  실생활에서의 AJAX&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;지역별 선택에 따른 날씨 RSS를 다르게 보여준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;+ RSS를 이용해서 XML을 받아서, 파싱하게 되면 현재 시점에서 백엔드를 몰라도 데이터 처리가 가능하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  BootStrap이란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◾ &lt;/b&gt;빠르고 쉬운 웹 개발을 위한 무료 frontend 프레임워크.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;디자인을 보다 편리하게 해주기 위해 모아둔 라이브러리&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HTML 및 CSS 기반 디자인 템플릿과 선택적 JavaScript 플러그인이 포함되어 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;반응형 디자인을 쉽게 만들 수 있는 기능을 제공한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  BootStrap CDN&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;공식 사이트에 있는 URL을 받아서 연결하면 되고, 라이브러리 다운로드를 받아서 사용하기도 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Container&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;반응형 고정 너비 컨테이너를 제공하여, container-fluid 클래스는 꽉찬 영역을 제공한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Grid System&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;부트 스트랩의 그리드 시스템은 플렉스 박스로 구성되어, 페이지에 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;최대 12개의 열&lt;/span&gt;을 허용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;클래스를 결합하여 보다 동적이고, 유연한 레이아웃을 만들 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  BootStrap을 이용해서 웹 페이지를 만들어 봅시다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;a href=&quot;https://www.w3schools.com/bootstrap/bootstrap_ver.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.w3schools.com/bootstrap/bootstrap_ver.asp&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &amp;lt;---&amp;nbsp; 여기서 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;p&gt;$.ajax({ key:value });&lt;/p&gt;
&lt;p&gt;&amp;lt;ajax함수에 사용되는 key&amp;gt; url: //요청url type: //HTTP요청 방식 서술. ('GET','POST') data: //서버에 전달할 파라미터 데이터의 의미. dataType: //서버가 전달받는(출력한) 데이터의 자료형을 명시. (xml, json, script, or html) success: 콜백함수 ( Anything data, String textStatus, jqXHR jqXHR ) error:콜백함수 ( jqXHR jqXHR, String textStatus, String errorThrown )&lt;/p&gt;
&lt;p&gt;==&amp;gt; 가장많이 사용되는 key : url, data, success콜백&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/334</guid>
      <comments>https://likecode.tistory.com/334#entry334comment</comments>
      <pubDate>Tue, 9 Mar 2021 16:37:42 +0900</pubDate>
    </item>
    <item>
      <title>[AJAX] Asynchronous Javascript and XML 기초 - 2</title>
      <link>https://likecode.tistory.com/333</link>
      <description>&lt;p&gt;&lt;b&gt;  AJAX를 사용하는 이유?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;화면 전환, 화면 갱신이 없는 것은 JavaScript의 특성.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JavaScript를 사용하는 이유(접은글)&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;&lt;b&gt;  JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HTML 문서 내에서 동적 페이지를 구성하는 용도로 사용.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1. 페이지 조작&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2. 유효성 검사&lt;/p&gt;
&lt;pre id=&quot;code_1615261874554&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;d1&quot;&amp;gt; 여기 영역이 innerHTML &amp;lt;/div&amp;gt;
&amp;lt;script&amp;gt;
	var data = &quot;홍길동&quot;;
    d1.innerHTML = data;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;결론적으로는 화면 전환을 위해서 AJAX를 사용하는 것이 아니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;사용자가 입력한 데이터가 프로그램에 적합한 데이터인지 검사하고, 서버에 넘기기 전에 사전 검사를 진행.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;서버에서도 유효성 검사를 진행하지만, 서버의 부하를 줄이기 위한 유효성 검사도 필요하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;페이지 조작에 필요한 데이터가 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;문서 안에 있으면&lt;/span&gt; &lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;페이지 조작에 필요한 데이터가 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;문서 밖에 있으면&lt;/span&gt; &lt;b&gt;AJAX&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;GET/POST의 차이점&lt;/span&gt;&lt;/b&gt;에 대해서 서술하거나, 특징을 정리해둘 것!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;◾&amp;nbsp; 개발하면서 유념해야 하는 사항&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;내가 브라우저를 열고 있다면 ===&amp;gt; Client (유저)&lt;/li&gt;
&lt;li&gt;내가 이클립스를 열고 있다면 ===&amp;gt; Server(개발자)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;  AJAX(Asynchronous JavaScript and XML)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바 스크립트&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;비동기 서버 통신&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc1k9F/btqZGnaCXEN/h3MMOFs9IDJd6KXI8GhVpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc1k9F/btqZGnaCXEN/h3MMOFs9IDJd6KXI8GhVpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc1k9F/btqZGnaCXEN/h3MMOFs9IDJd6KXI8GhVpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc1k9F%2FbtqZGnaCXEN%2Fh3MMOFs9IDJd6KXI8GhVpk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;데이터를 받고, 그 데이터에 대한 내용을 서버에서 확인하여 다시 클라이언트에 응답하는 과정이 비동기적.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;HTML을 표현하는 텍스트를 전달해줄 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;조작에 필요한 데이터가 현재 페이지가 아닌 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;다른 페이지&lt;/span&gt;에 있을 때 사용한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;ajax의 요청 페이지는 웹 브라우저에 보여지는 전체 페이지가 아닌, 특정 영역인 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;부분 HTML&lt;/span&gt;이다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  XMlHttpRequest&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;서버 통신 객체&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;XMLHttpRequest를 통해 서버에게 필요한 데이터를 요청할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;AJAX를 사용하겠다는 의미와 같다.(비동기적으로 서버통신을 할 수 있는 객체)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;onreadystatechange : 이벤트 속성 (readyState 값이 변경되었을 때의 이벤트)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;아래 그림은 readyState 값을 정리한 그림이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTUIsx/btqZFtWx5fP/Tz7NkOCejkgXoUPLftL4H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTUIsx/btqZFtWx5fP/Tz7NkOCejkgXoUPLftL4H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTUIsx/btqZFtWx5fP/Tz7NkOCejkgXoUPLftL4H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTUIsx%2FbtqZFtWx5fP%2FTz7NkOCejkgXoUPLftL4H0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;status&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;서버의 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;200&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;정상 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;403&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;요청 권한 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;404&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;요청 페이지 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;405&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;요청한 메소드가 준비되지 않았음(doGet, doPost)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;500&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;요청한 페이지가 서버에서 실행 중에 에러 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1615263105465&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;open('HTTP요청방식'. '요청URL'. '비동기방식')
send('요청URL에 전달할 데이터')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Ajax 핵심 코드&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;클라이언트&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;JavaScript&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;JSP, Servlet(자바)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;데이터 요청&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;데이터 준비, 데이터 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1. open(URL 요청과 get 방식의 데이터)&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;클라이언트 ------&amp;gt; 서버&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;2. send(post방식의 데이터)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;클라이언트 ------&amp;gt; 서버&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;3. responseText 또는 responseXML&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;클라이언트 &amp;lt;------ 서버&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;✔ 해당 방식으로 통신을 위해서는, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;new XMLHttpRequest(); 를 꼭!! 해주어야 한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JSP&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;js파일과 같으나, java코드가 들어갈 수 있는 형태이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  참고할 수 있는 페이지&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;https://www.w3schools.com/&quot;&gt;www.w3schools.com/&lt;/a&gt;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/333</guid>
      <comments>https://likecode.tistory.com/333#entry333comment</comments>
      <pubDate>Tue, 9 Mar 2021 13:00:49 +0900</pubDate>
    </item>
    <item>
      <title>[AJAX] Asynchronous Javascript and XML 기초 - 1</title>
      <link>https://likecode.tistory.com/332</link>
      <description>&lt;p&gt;&lt;b&gt;  AJAX란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;비동기 방식의 자바 스크립트, xml를 의미한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  비동기란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;회원 가입을 한다고 가졍했을 때, 회원 가입 버튼을 누르면 약간의 시간이 흐르고 회원 가입 완료 페이지가 나온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;즉, 응답 페이지가 나온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;네이버가 가지고 있는 서버가 존재한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;아이디 중복 체크가 없는 폼인 경우, 서버에 동일한 아이디는 존재할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;그 경우, 응답 페이지가 다르게 될 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;결과적으로, 사용자의 입력에 따라 응답 페이지의 화면이 달라져야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;html이 reloading될 때, html 정보를 뿌리는 것이 될 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  ajax와 일반 요청의 차이&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;일반 요청&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;ajax 요청&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;data를 입력 후 이벤트 발생&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;data를 입력 후 이벤트 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;서버에서 데이터를 이용하여 로직처리&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;서버에서 요청을 처리한 후, text, XML, JSON으로 응답&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;logic 처리 결과에 따라 응답 페이지를 생성, client에 전송&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;화면 전환 없이 응답 페이지를 구성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  서버와 클라이언트의 상호 작용&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;모바일로 들어갔을 때의 문제점&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;많은 것을 로딩하게 되면 그만큼 더 많은 데이터 요금이 빠져나간다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Javascript AJAX&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;XMLHttpRequest : 자바스크립트가 Ajax 방식으로 통신할 때 사용하는 객체.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;실제 서버와의 통신은 브라우저의 Ajax 엔진에서 수행.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;직접 자바스크립트로 Ajax를 프로그래밍할 경우 브라우저 별로 통신 방식이 달라 코드 복잡.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  GET, POST, PUT, DELETE&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전달 방식&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;CRUD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;POST&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;GET&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;PUT&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;U&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;DELETE&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;D&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  AJAX 함수&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;옵션 속성 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;설명&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;자료형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;async&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;동기, 비동기를 지정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Boolean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;url&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;대상 url을 지정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;String&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;data&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;요청 매개 변수를 지정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Object. String&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;type&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;GET 또는 POST 등을 지정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;String&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;success(data, status, xhr)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Ajax 성공 이벤트 리스너를 지정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Function, Array&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  $.get(), $.post()&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;type: GET 이렇게 지정하는 것이 아니라, $.get() 이렇게 지정해주고,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;url을 $.get(url, function(response){}); 이런식으로 진행하면 된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;GET 방식의 특징&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;POST 방식의 특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;url에 데이터를 포함시킨다.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;url에 변수를 노출하지 않고 요청한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;url에 데이터가 노출되어, 보안에 취약하다.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;url에 데이터가 노출되지 않아서 보안이 되어있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전송하는 길이에 제한이 있다.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전송하는 길이에 제한이 없다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;캐싱할 수 있다.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;캐싱할 수 없다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;데이터를 헤더에 포함하여 전송한다.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;데이터를 바디에 포함하여 전송한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Node와 Ajax와의 차이점(정확하지 않음)&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Node: 필요한 내용을 html에 그대로 적는다.&lt;br /&gt;Ajax ; 실제 실행에 필요한 페이지를 만들어낸다.&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  데이터 전송 형식 : CSV&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Comma Seperated Values&lt;/li&gt;
&lt;li&gt;각 항목을 쉼표로 구분해 데이터를 표현하는 방법&lt;/li&gt;
&lt;li&gt;다른 두 형식에 비해 굉장히 짧다.&lt;/li&gt;
&lt;li&gt;많은 양의 데이터 전송 시에 유리&lt;/li&gt;
&lt;li&gt;단, 각 데이터가 어떤 내용인지 파악하기 어렵고, 완벽한 데이터 구조를 공유할 경우 가능하다.&lt;/li&gt;
&lt;li&gt;누락된 데이터가 있는 경우 망가지기 쉬운 형태&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;  데이터 전송 형식 : XML&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;eXtensible Markup Lanaguage&lt;/li&gt;
&lt;li&gt;xml은 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;tag&lt;/span&gt;로 data를 표현함&lt;/li&gt;
&lt;li&gt;tag를 보면 각 data가 무엇을 의미하는지 파악 가능&lt;/li&gt;
&lt;li&gt;tag에 사용자 정의 속성을 넣을 수 있으므로 복잡한 data 전달 가능&lt;/li&gt;
&lt;li&gt;서버와 클라이언트가 주고 받을 데이터의 형식을 일치시켜야 한다.&lt;/li&gt;
&lt;li&gt;실제 데이터보다 표현하기 위한 데이터가 더 많아질 수 있는 문제가 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;  데이터 전송 형식 : JSON&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;xml에 많은 데이터가 전달되어야 한다는 단점을 극복한 방식&lt;/li&gt;
&lt;li&gt;CSV와 XML의 단점을 극복한 형식&lt;/li&gt;
&lt;li&gt;JavaScript에서 사용하는 객체의 형식으로 데이터 표현&lt;/li&gt;
&lt;li&gt;string형태로 data를 표현함.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/332</guid>
      <comments>https://likecode.tistory.com/332#entry332comment</comments>
      <pubDate>Tue, 9 Mar 2021 09:20:14 +0900</pubDate>
    </item>
    <item>
      <title>[jQuery] jQuery : javaScript 라이브러리 기초 - 2</title>
      <link>https://likecode.tistory.com/330</link>
      <description>&lt;p&gt;&lt;b&gt;  jQuery 이벤트 처리&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 이벤트 핸들러를 할당, 해제할 수 있는 통합 메소드 제공.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; DOM Element의 이벤트 타입마다 여러 핸들로 할당 가능.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 버튼을 누르게 되면, div 자체가 사라지게끔 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  bind(), unbind()&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; bind라는 함수를 이용하게 되면 핸들러 연결이 가능한데, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;동적으로 생성한 객체에는 적용되지 않는다&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; (되도록 사용하지 않는 것이 좋다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  on()&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 이벤트 핸들러에 연결, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;동적으로 생성한 객체도 적용할 수 있어서&lt;/span&gt; bind() 대신 사용하기를 권장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; delegate selector를 적용하여, 동적으로 생성한 것의 선택자를 명시하도록 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 동적으로 생성한 것에 대한 선택자를 매번 동적인 작용이 이루어지면 그때마다 검사하는 것으로 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/330</guid>
      <comments>https://likecode.tistory.com/330#entry330comment</comments>
      <pubDate>Mon, 8 Mar 2021 15:50:34 +0900</pubDate>
    </item>
    <item>
      <title>[jQuery] jQuery  :  JavaScript 라이브러리 기초 - 1</title>
      <link>https://likecode.tistory.com/329</link>
      <description>&lt;p&gt;jQuery는 요즘 잘 사용하지 않지만, 유지 보수 팀에 들어가게 되면 사용할 수 있는 기초 지식.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;크로스 플랫폼을 지원 (당시 브라우저 춘추전국시대 때, 표준이 없을 때도 브라우저에 상관없이 표준화)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JavaScript에서 사용하던 코드를 축약해서 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;배포용으로 만들게 되면 더 공유하기 쉬워지기 때문에, 더 보편화되어 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;경량 라이브러리이기 때문에, 복잡한 화면 관리 시 분리 등이 더 용이하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;https://trends.builtwith.com/javascript/javascript-library&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jQuery는 트렌디하지 못하다, 하지만 아직 사용하는 회사가 있기 때문에, 알고는 있어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ActiveX 같은 경우에는 익스플로러만 가능했었던 시절이 있었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DOM 탐색과 조작&lt;/li&gt;
&lt;li&gt;이벤트 바인딩과 처리&lt;/li&gt;
&lt;li&gt;Ajax 프로그래밍&lt;/li&gt;
&lt;li&gt;다양한 효과 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Ajax&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;서버와의 통신을 지원함.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery 다운로드&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;https://jquery.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;jquery.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;1. 직접 홈페이지에서 다운로드&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;2. 주변에 있는 네트워크 상에서 Jquery를 다운로드 받을 수 있는 CDN 방식&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;3. Git에서 가져오는 방법&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;API를 보고, 사용하는 것이 좋다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;https://api.jquery.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;api.jquery.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery 기본 구문&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;기본 구문은 Selector를 사용하여, DOM 객체를 탐색하고, 반환된 래퍼세트를 통해 함수를 수행.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$(selector).action() 형태로 구문을 작성한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;DOM을 탐색하기 전에 문서가 모두 로드되어있어야 한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;방법 1&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;방법 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;$(document).ready(function(){&lt;br /&gt;&lt;br /&gt;});&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;$(function(){&lt;br /&gt;&lt;br /&gt;});&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery의 Selector&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;b&gt; &lt;/b&gt;&lt;/b&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;$&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(&quot;h1&quot;) .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ss(&quot;color&quot;, &quot;blue&quot;);&lt;/span&gt;
&lt;p&gt;&amp;nbsp; jQuery&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selector&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Selector의 종류&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;선택자&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;all selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;element&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;element selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;#idname&lt;br /&gt;tagname#idname&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;id selector&lt;br /&gt;한 번 찾으면 이후는 탐색하지 않기 때문에,&lt;br /&gt;DOM 객체를 가장 빨리 탐색할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;.classname&lt;br /&gt;tagname.classname&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;class selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;en1, en2, en3&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;multiple selector&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 100px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;selector 종류&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;표현 방법&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;Child Selector&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;$(&quot;parent &amp;gt; child&quot;) 바로 아래 후손 하나&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;Decendant Selector&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;$(&quot;ancestor descendant&quot;) 모든 후손&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;Next Adjacent Selector&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;$(&quot;previous + next&quot;) 바로 다음의 형제수준의 요소 하나&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;Next Siblings Selector&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;$(&quot;previous ~ siblings&quot;) 형제 수준의 모든 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 자바스크립트 라이브러리&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  라이브러리와 프레임워크의 차이점&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 80px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&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: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;다양한 함수들을 제공해주는 것&lt;br /&gt;많은 기능들 중에서 필요한 부분을 가져와서 사용한다.&lt;br /&gt;같은 일을 하지만, 더 적은 코드로 수행할 수 있도록 한다.&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;뼈대, 템플릿을 제공해주는 것&lt;br /&gt;프레임워크를 기반으로 해서 구동을 한다.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery의 기본 문법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; Element Object를 선택하기 위해서 선택자를 사용.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; NodeList에 있는 노드를 return.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;&lt;b&gt;// let $ = jQuery&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$(선택자).action(할일);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; action = 이벤트 함수&lt;br /&gt;&lt;br /&gt;$(선택자).action(function(&amp;nbsp; ) {&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ElementList, NodeList에 해당하는 배열을 리턴하기 때문에, 그 리턴한 것에 대해서 실행하자는 내용이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  jQuery&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;스크립트 양이 많고, 이미지가 많고, 로딩해야 할 내용이 많을 때,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;스크립트 코드를 아래에 두어서 속도를 빠르게 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  CDN&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;content delivery network&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;CDN 스크립트 코드를 맨 위에 써준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/329</guid>
      <comments>https://likecode.tistory.com/329#entry329comment</comments>
      <pubDate>Mon, 8 Mar 2021 12:24:10 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] JavaScript 정리 - 4 (기존 내용 복습)</title>
      <link>https://likecode.tistory.com/328</link>
      <description>&lt;p&gt;&lt;b&gt;  자바스크립트란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자료형을 명시하지 않는 동적 타이밍 언어&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  자바스크립트를 어디서 사용하는가?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;html에 포함되어져서 브라우저에 로딩, 메모리 할당한 다음에 실행해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  정적 페이지 -&amp;gt; 동적 페이지&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;html -&amp;gt; JavaScript&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력 데이터를 얻어오고 문서 조작, 유효성 검사를 위해서 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;  JavaScript와 Java의 비교&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JavaScript는 브라우저에서 실행, Jsp(Java)는 JVM에서 실행&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JavaScript의 위치&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HTML문서 내에 포함되어서 실행.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;스크립트 태그로 구분되어서 사용되어진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;스크립트 태그의 위치는 어디라도 상관이 없다. (일반적으로는 head와 body 내부에 넣어준다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;만약 외부에서 JS 파일을 가져오고 싶으면 src를 통해서 가져온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JS의 길이가 길어질 수록, 브라우저의 속도를 위해서&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JS파일은 되도록 body쪽에 넣어주어야 빠르게 동작하도록 하여 좋을 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JavaScript의 변수 선언&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1614905732840&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String name = &quot;홍길동&quot; (X)

       name = &quot;홍길동&quot; (O) --&amp;gt; 전역변수 (다른 js 파일에서 접근 가능)
   var name = &quot;홍길동&quot; (O) --&amp;gt; 지역변수 (다른 js파일에서 접근 불가능, 선언된 스코프 내에서만 사용 가능)
   
     다른 파일에서 접근하는 경우, 다른 파일의 스크립트가 로딩되기 전에 해당 변수가 사용되어야 한다.
   
   var su;  선언을 여러 번 할 수 있음(overwrite)
   let su;  선언을 두 번 이상 할 수 없음&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  원시형 데이터 타입의 종류&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;number , String , boolean , null , undefined&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;  호이스팅&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;선언 시 영역의 최상단으로 올라가는 것. (영역 내 끌어 올림)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;let과 const도 적용되나, TDZ(temporal deadline zone)가 적용되어 초기화 하지 않은 변수에 대해 접근 시&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ReferenceError를 발생.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;같은 영역에서 let, const 변수를 동일 변수명으로 사용할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;또한 var과는 달리 단순한 {} 중괄호도 영역으로 인식하여&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;선언한 영역을 벗어나는 경우에는 호출하여 사용할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;let과 const는 거의 동일하나, let은 변수 const는 상수&lt;/p&gt;
&lt;pre id=&quot;code_1614907423542&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 1번 case (정상 동작: 출력 10)
var su = 10;
document.write(su);

// 2번 case (에러 발생 : su is not defined)
document.write(su);

// 3번 case (정상 동작: 출력은 undefined)
document.write(su);
var su = 10;	// 호이스팅 발생(변수 선언이 영역의 맨 위로 올라감)

/*
호이스팅이 되면 다음 동작 과정과 같다.
var su;
document.write(su);
su = 10;
*/


// 4번 case (에러 발생: 호이스팅이 되었으나, 초기화하지 않은 변수에 대해서는 Reference에러 발생)
document.write(su);
let su = 10;

/*
다음 동작 과정과 같다.
let su;
document.write(su);  let 변수가 초기화되지 않았는데 접근하여 에러 발생!
su = 10;
*/&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 0%; height: 173px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 173px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 173px; text-align: center;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yWawT/btqY90hOXJO/4WJrzFKLzkkQEnxg9cHX1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yWawT/btqY90hOXJO/4WJrzFKLzkkQEnxg9cHX1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yWawT/btqY90hOXJO/4WJrzFKLzkkQEnxg9cHX1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyWawT%2FbtqY90hOXJO%2F4WJrzFKLzkkQEnxg9cHX1k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 49.7684%; height: 173px; text-align: center;&quot;&gt;&lt;figure class=&quot;imageblock alignRight&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjwr9L/btqZkpzRBqP/Dkjid7pMlSqcaUtMmMjdRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjwr9L/btqZkpzRBqP/Dkjid7pMlSqcaUtMmMjdRk/img.png&quot; data-alt=&quot;var와 let의 차이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjwr9L/btqZkpzRBqP/Dkjid7pMlSqcaUtMmMjdRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjwr9L%2FbtqZkpzRBqP%2FDkjid7pMlSqcaUtMmMjdRk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;var와 let의 차이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;
&lt;p&gt;function{ }의 영역이 아닌 영역 괄호{ }만 있다면&lt;br /&gt;그 밖의 영역을 자기 영역으로 호이스팅&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 49.7684%; text-align: center;&quot;&gt;function{ }의 영역 뿐만 아니라&lt;br /&gt;단순 영역 괄호{ }도 자기 영역으로해서 호이스팅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;var과 let의 차이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  브라우저에 html 출력하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1614907352533&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;document.write(&quot;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&quot;);
document.write(&quot;브라우저에 출력할 html&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  백틱 ( ` ` )&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 멀티라인 지원&lt;br /&gt;2. ${expression}을 사용하여 '+' 기호를 줄일 수 있다&lt;/blockquote&gt;
&lt;pre id=&quot;code_1614908931119&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var name = `김예진`;
console.log(&quot;이름은 &quot; + name + &quot;입니다&quot;);
console.log(`이름은 ${name} 입니다`);	//백틱을 쓰면 이렇게 표현이 가능해진다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  자바스크립트의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바스크립트는 구분자, 종결자 역할을 하는 ' ; ' 를 생략가능&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;구분자가 없는 경우, 한 줄을 문장이라고 인식한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #333333;&quot;&gt;(있는 경우에는 한 줄 내에도 문장이 여러개인지 검사한다)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  엄격한 등가 연산자 사용&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 48.3721%; height: 133px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;==, !=&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;===, !==&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;값이 일치하는 지 확인&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;값이 일치하는 지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;타입은 일치 안해도 됨&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;타입도 일치하는 지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  조건문 if&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. boolean&amp;nbsp; &amp;nbsp; true,&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;false&lt;br /&gt;2. 숫자&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0이 아닌 경우,&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0인 경우&lt;br /&gt;3. 객체&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;객체가 존재하는 경우,&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 객체가 존재하지 않는 경우&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  빈 문자열 체크&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. str.length == 0&lt;br /&gt;2. str == ''&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;&lt;b&gt;  함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1614909541490&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  정상 작동하는 예시

&amp;lt;script&amp;gt;
	function hello(){
    	alert('안녕~~!!');
    }
&amp;lt;/script&amp;gt;

...


&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
	hello();
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1614909629045&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  주의해야 하는 예시

&amp;lt;script&amp;gt;
	function hello(){
    	alert('안녕~~!!');
    }
    function hello(var name){
    	alert('안녕~~!! ' + name);
    }
&amp;lt;/script&amp;gt;

...

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
	hello();	//안녕~!!! undefined 출력
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1614909698571&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  주의해야 하는 예시2

&amp;lt;script&amp;gt;
	function hello(){
    	alert('안녕~~!!');
    }
    function hello(name){
    	alert('안녕~~!! ' + name);
    }
&amp;lt;/script&amp;gt;

...

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
	hello();	//안녕~!!! undefined 출력
    hello('김예진');	//안녕~!!! 김예진 출력
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  주의해야 하는 상황&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◾ src 속성을 사용하는 경우, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;외부 자바스크립트 참조 전용&lt;/span&gt;이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 내부에 아무리 좋은 기능을 넣어도 인식되지 않으므로,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; src를 넣지 않은 script 내부에서만 코드를 작성하도록 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◾ 만약 함수명이 여러 참조 파일을 통해 중복되는 경우(내부 스크립트도 포함해서)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 가장 마지막으로 초기화된 함수로 호출된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  변수에 함수 넣기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1614912590402&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 방법 1
var s = function(){
	alert('안녕');
};

// 방법 2
var s2 = new Function(인자, 인자, ... , &quot;동작코드&quot;);	// 비권장
var s3 = new Function(&quot;alert('안녕~~');&quot;);	          // 비권장


// 호출 방법
&amp;lt;button onclick=&quot;s()&quot;&amp;gt;버튼&amp;lt;/button&amp;gt;

// 방법 3
var s4 = function(add){
	add(100, 300);
    alert(add);
}

&amp;lt;script&amp;gt;
s4(function(a, b){ return a + b; });	// 일급 객체(함수도 일급 객체)는 인자로 전달하는 것이 가능
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/328</guid>
      <comments>https://likecode.tistory.com/328#entry328comment</comments>
      <pubDate>Fri, 5 Mar 2021 10:31:40 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] JavaScript 정리 - 3 (브라우저, 윈도우 객체)</title>
      <link>https://likecode.tistory.com/327</link>
      <description>&lt;p&gt;&lt;b&gt;  Window 객체&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;윈도우 객체는 웹 브라우저에서 작동하는 JavaScript의 최상위 전역객체.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;BOM(Browser Object Model)으로 불리기도 함.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;요새는 alert()나 prompt() 같은 경우는 모달창, 다이얼로그 등으로 대체되는 추세이다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 54.186%; height: 130px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot; colspan=&quot;2&quot;&gt;window 객체 (브라우저의 창을 open)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;alert()&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;브라우저의 알림 창&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;confirm()&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;브라우저의 확인/취소 선택 창&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;prompt()&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;브라우저의 입력 창&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 53.9534%; height: 115px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot; colspan=&quot;2&quot;&gt;window 객체 (navigator)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot; colspan=&quot;2&quot;&gt;브라우저의 정보가 내장된 객체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot; colspan=&quot;2&quot;&gt;서로 다른 브라우저를 구분할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 62.921%; height: 218px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot; colspan=&quot;2&quot;&gt;window 객체 (페이지의 주소, 이력)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;location.href&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;현재 url 조회 또는 할당된 url로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;location.reload()&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;현재 페이지를 새로고침. &lt;br /&gt;디비의 정보를 가져와서 &lt;br /&gt;화면을 업데이트 시에 사용.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;history.back()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;브라우저의 뒤로가기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;history.forward()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;브라우저의 앞으로 가기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  새 창 열기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;window.open('페이지 url', '창이름', '특성', 히스토리 대체여부);&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;창 이름(string): open할 대상 지정 혹은 창의 이름&lt;/li&gt;
&lt;li&gt;특성(string): 새로 열릴 창의 너비, 높이 등의 특성 지정&lt;/li&gt;
&lt;li&gt;히스토리 대체 여부(boolean): 현재 페이지 히스토리에 덮어 쓸지 여부&lt;/li&gt;
&lt;li&gt;새 창을 연 놈: opener / 새 창 : self&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;브라우저는 내부적으로 캐시 메모리를 이용하기 때문에, 다음에 같은 주소를 요청하는 경우에 예전 데이터를 보낼 수 있다. 따라서, 브라우저를 닫고 다시 열거나, 모든 창을 새로고침하거나, 캐싱을 못하도록 갱신할 수 있게 캐싱 메모리를 막아둘 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  문서 객체 만들기&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 58.6047%; height: 135px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;함수명&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;createElement(tagName)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;element 노드를 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;createTextNode(text)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;text 노드를 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;appendChild(node)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;객체에 노드를 child로 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  문서 객체 속성 설정하기&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 86.2125%; height: 131px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 49.8377%;&quot;&gt;함수명&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 49.8377%;&quot;&gt;setAttribute(name, value)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;객체의 속성을 지정&lt;br /&gt;(웹 브라우저가 지원하지 않는 태그의 속성도 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 49.8377%;&quot;&gt;getAttribute(name)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;객체의 속성값을 가져옴&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  문서 객체 삽입하기&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 43.4524%; height: 130px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;함수명&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;innerHTML&lt;/td&gt;
&lt;td&gt;HTML 태그로 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;innerText&lt;/td&gt;
&lt;td&gt;text로 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  문서 객체 가져오기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;702&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XCeQS/btqZfg4koQE/OzP54OqTvcm2PsKkraKdr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XCeQS/btqZfg4koQE/OzP54OqTvcm2PsKkraKdr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XCeQS/btqZfg4koQE/OzP54OqTvcm2PsKkraKdr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXCeQS%2FbtqZfg4koQE%2FOzP54OqTvcm2PsKkraKdr1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;702&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;id의 경우만 고유한 1개의 엘리먼트를 가져오기 때문에 element다음에 s가 들어가지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  문서 객체 제거&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;removeChild(childnode)&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  이벤트&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;DOM에서 발생하는 이벤트를 감지하여 이벤트에 대응하는 여러 작업 수행&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이벤트가 발생되기 전에는 실행되지 않다가 이벤트가 발생할 경우 실행&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;이벤트 핸들러&lt;/span&gt; 또는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;이벤트 리스너&lt;/span&gt; 라고 한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 37.3256%; height: 293px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;이벤트가 발생하는 상황&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;웹 페이지가 로딩됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;페이지를 스크롤함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;마우스를 클릭함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;키보드로 키를 입력함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;form이 submit됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;input의 내용이 변경됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; text-align: center;&quot;&gt;마우스를 움직여서 element를 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  키보드 이벤트&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 64.186%; height: 155px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;이벤트&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;onkeypress&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;키보드가 눌러 졌을 때 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;onkeydown&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;키보드를 누르는 순간 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;onkeyup&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;키보드의 누르고 있던 키를 뗄 때 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Frame 이벤트&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 62.2093%; height: 98px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;이벤트&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;onload()&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;document, image, frame 등이 &lt;br /&gt;모두 로딩 되었을 때 발생.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  Form 이벤트&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 82px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&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: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;onsubmit&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;form이 전송될 때 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  이벤트 핸들러 등록(inline)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;초기) html 요소의 내부에서 직접 이벤트 핸들러를 등록&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;javascript만 사용하는 경우) 인라인 이벤트 핸들러를 사용하지 않았음.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Angular, React, Vue.js 같은 걸 사용하는 경우) inline 이벤트 핸들러를 이용해서 이벤트를 처리.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;장점은 HTML과 JavaScript 코드를 분리할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  이벤트 핸들러 등록(property)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;하나의 이벤트 핸들러만을 바인딩 가능하기 때문에, 여러 핸들러가 나오는 경우 마지막에 선언된 핸들러를 실행&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  이벤트 핸들러 등록(addEventListener 방식)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;전달 인자&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;1. 이벤트 이름&amp;nbsp; &amp;nbsp; &amp;nbsp;2. 이벤트 핸들러&amp;nbsp; &amp;nbsp; 3. 캡처링 여부&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*IE9 이전 버전에서는 사용 불가(attachEvent 사용)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;하나의 이벤트에 대해서 여러 개의 핸들러를 지정할 수 있음&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HTML 말고도 모든 DOM(XML, SVG)에 대해서 동작&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;만약 이벤트 핸들러가 다양한 태그에 대해서 동작해야 하는 경우&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이벤트 핸들러 내부에 함수를 호출하여 해결할 수 있도록 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  이벤트 캡처링, 버블링&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;따로 검색해서 알아보기&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  웹 스토리지&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;데이터를 저장할 수 있는 공간(localStorage)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;getItem(), setItem(), removeItem(), clear()&lt;/span&gt;&amp;nbsp;만 기억하자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;지우라고 명령하기 전까지는 지워지지 않음&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;같은 세션에서만 저장되는 세션 스토리지도 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/327</guid>
      <comments>https://likecode.tistory.com/327#entry327comment</comments>
      <pubDate>Thu, 4 Mar 2021 14:58:17 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript]  JavaScript 정리 - 2 (Java와 차이, 기본 특징)</title>
      <link>https://likecode.tistory.com/326</link>
      <description>&lt;p&gt;&lt;b&gt;  동적 타이핑 언어 JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자료형을 명시하지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HTML 문서 내에 존재하고, 웹 브라우저에서 실행되는 프로그램이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HTML 문서에 대한 조작과 유효성 검사를 위해 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  JavaScript 와 Java의 차이&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 75.3334%; height: 144px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;JavaScript&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;Java&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;클라이언트 스크립트&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;서버 스크립트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;브라우저에서 실행&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;JVM에서 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;html&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;jsp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;동적 타이핑 언어&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;정적 타이핑 언어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;; 생략 가능&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;; 생략 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;문자열을 표현 시 &quot;, '를 구분없이 사용&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;문자열을 표현시 &quot;만 사용함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;char가 없음&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 18px;&quot;&gt;char가 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;문자열 비교 시 == 사용&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;문자열 비교 시 .equals 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;값 비교 시 === 사용&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;값 비교 시 == 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  파일에 따라 사용하는 웹 요소들&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;.html(CSS, JS)&lt;br /&gt;.jsp (HTML+Java)&amp;nbsp;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; jsp파일에 java 코드를 먼저 실행하고, 브라우저에 전달된 후에 메모리 로딩을 거친 후에 script 코드를 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; JS는 html 파일 내부의 어디서나 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; but... 한줄씩 읽어들이는 인터프리터 언어 특성 상&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 태그의 선언부보다 앞에 함수를 선언하면서 getElement 등을 사용하게 되면 실행되지 않는 문제가 있을 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  호이스팅&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;영역 끌어올림(업캐스팅)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;모든 선언들을 해당 스코프의 최상단에 선언하는 것&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;영역 내의 맨 위로 끌어 올리는 것&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;일단 선언하는 부분이 있긴해야한다. 단지 아래에 선언되어도 윗 부분에서 사용은 할 수 있으며,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;대신 값이 초기화가 되지 않은 undefined라고 되는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;그리고 새 영역에서 또 호이스팅이 되는 경우에는 기존 영역에서 사용되던 변수더라도 undefined된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  let과 const&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;let과 const는 동일하게 영역 내 변수로만 선언할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;const의 경우 값을 변경할 수 없다는 상수의 특징이 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  백틱&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;멀티 라인을 지원해 줌&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 공백까지도 하나의 문자열로 인식&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; (&quot;로 줄바꿈을 진행했을 때는 한 문장이 끝나는 것으로 인식, 자동으로 ; 가 추가됨)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  구분자, 종결자 역할&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;다음 문장으로 띄우기&lt;/li&gt;
&lt;li&gt;&amp;nbsp;; 를 사용하기(이 경우에는 다음 문장으로 이동하지 않아도 다음 문장으로 인식)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;  주석에 &amp;lt;!-- --&amp;gt;를 사용하는 이유&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;원래 자바 스크립트의 주석은 자바와 같지만, 저렇게 주석을 쓰는 경우를 발견했다면,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;그것은 구식 브라우저가 자바 스크립트의 주석 처리를 인식하지 못할 경우에&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;브라우저에 뿌려지는 것을 방지하기 위해서 만드는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  조건문과 반복문&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;대부분의 경우는 자바와 동일함&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if 문 내부에 boolean, 숫자, 객체가 들어갈 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;존재하는 객체인지 아닌지 등을 판별하기 위한 방식으로도 사용한다. (null, undefined면 false)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  빈 문자열 체크&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바스크립트에서는 length를 사용하여 빈 문자열인지 확인한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;str.length == 0&lt;/li&gt;
&lt;li&gt;str==''&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;  함수(메소드 정의)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;자바 case)&lt;/p&gt;
&lt;pre id=&quot;code_1614832808386&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void hello(String name, int age){}
int hello(String name, int age){return 100;}

//오버로딩
void hello(String name, int age){}
void hello(String name, int age){return 100;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;자바스크립트 case)&lt;/p&gt;
&lt;pre id=&quot;code_1614833042682&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/*case 1*/
hello(); //호출
function hello(){
}
// ==&amp;gt; 에러가 발생하지 않는다

/*case 2*/
hello(); //호출
function hello(i){
}
// ==&amp;gt; 에러가 발생하지 않는다(i은 undefined)

/*case 3*/
function hello(){
	alert(&quot;안녕&quot;);
}
function hello(name){
//같은 이름의 함수가 정의되는 경우, 오버로딩이 되는 것이 아니라, 아래쪽에 있는 함수로 overwrite
	alert(&quot;안녕안녕&quot; + name);	
}
hello();	// 안녕안녕undefined
hello(&quot;나길동&quot;);	// 안녕안녕나길동&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/326</guid>
      <comments>https://likecode.tistory.com/326#entry326comment</comments>
      <pubDate>Thu, 4 Mar 2021 13:53:48 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] tern 플러그인 이클립스에 적용하기.</title>
      <link>https://likecode.tistory.com/325</link>
      <description>&lt;pre id=&quot;code_1614829986240&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Help메뉴
 - Install New Software 선택
 - Work with 
     ==&amp;gt; http://oss.opensagres.fr/tern.repository/1.2.0/ 입력
 - Tern - Embed Node.js 체크
   Tern IDE      체크
   Tern Tooling 체크
- 설치
- 재시작&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/325</guid>
      <comments>https://likecode.tistory.com/325#entry325comment</comments>
      <pubDate>Thu, 4 Mar 2021 12:53:58 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] JavaScript 정리 - 1 (ES6 이전 표준 모음)</title>
      <link>https://likecode.tistory.com/323</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  웹 구성 요소&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;letter-spacing: 0px; border-collapse: collapse; width: 32.4419%; height: 108px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 구성 요소&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;담당&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹의 구조&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹의 표현&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹의 기능&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML과 CSS만으로는 시각적인 웹을 만들 수 있지만, 웹의 기능을 만들기는 어렵다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript는 웹 브라우저에서 HTML과 함께 다운로드하여 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저에서만 실행될 수 있다. (* node.js는 예외)&lt;/p&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;  최초의 브라우저 : Netscape&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; &amp;nbsp; &amp;nbsp;자사의 브라우저에 해당하는 규격으로 중구난방하게 만들었지만, 웹 표준이 1998년에 개정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  Java와 JavaScript의 차이점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 77.2093%; height: 125px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차이점&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일을 통해 해석&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터프리터 언어 (별도의 컴파일 과정 없음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일 과정보다 느리고, 한 줄씩 수행한다.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  JavaScript의 선언&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;1. HTML 내부에서 선언하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;2. 외부에서 선언하고, src 속성을 통해 가져오는 것&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: #666666;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&amp;lt;script&amp;gt; 태그는 &amp;lt;head&amp;gt;&amp;lt;body&amp;gt;안 어느 곳에서나 선언이 가능&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;head에 넣어야 할 기능과 넣지 말아야 할 기능이 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;메서드처럼 생겼지만, 일급 객체라서 메서드와는 다른 점이 있다고 한다.&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size16&quot; data-ke-style=&quot;style3&quot;&gt;생성되기 이전에 실행되면 수행되지 않는 경우에는 태그 이후에 선언&lt;br /&gt;미리 로딩을 하는 것이 좋으면 head에 선언.&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;&lt;b&gt;  static dynamic의 차이&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; &amp;nbsp; &amp;nbsp;사용자가 입력하는 대로 변화 :&amp;nbsp; dynamic&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;정적 웹 : static&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Java를 제외한 웹 파일들은 다 WebContent안에 들어간다.&lt;/p&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;  script 예시 1&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;window : 창을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;setInterval : 함수(일급 객체)를 호출할 주기를 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;setTimeout : 함수를 1회로 호출할 주기를 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;document : html 파일(body) 내부&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;getElement : document 파일 내에 있는 태그를 가져온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  주석&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &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;&lt;b&gt;  변수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;var 라는 변수라고 선언하는데, 타입을 따로 명시하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자동으로 변수의 타입이 결정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;변수 이름은 함수 이름과 혼동되지 않도록 유일한 이름을 사용한다. (&lt;span style=&quot;color: #333333;&quot;&gt;변수 : 형용사/명사, 함수 : 동사)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(덮어쓰기하기 때문에 위험하고, 헷갈릴 수 있게 된다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &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;&lt;b&gt;  자료형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;원시 타입(primitive type) 객체 타입(object type)으로 분류&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 57.8566%; height: 234px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;자료형&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;출력 값&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 10px;&quot;&gt;숫자형&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 10px;&quot;&gt;number&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 10px;&quot;&gt;정수 또는 실수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;문자열형&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;string&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;문자, ' 또는 &quot;로 표기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;boolean형&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;boolean&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;참과 거짓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;undefined&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;undefined&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;변수가 선언되었지만, &lt;br /&gt;초기화가 되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;null&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;object&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 18px;&quot;&gt;값이 존재하지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  이클립스에서 script 자동완성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;configure -&amp;gt; tern project -&amp;gt; browser 체크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  에러가 안나는 대신 나오는 경우 모음&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1614820355865&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(0 / 0);	    // Nan
console.log(parseInt('1A')  // 1 (숫자인 부분까지만 읽고 문자가 나오면 읽지 않음
console.log(parseInt('A')   // NaN (not a number)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  문자열&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;자바스크립트는 한글자도 문자열로 표현 (char가 없음)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\도 사용가능(따옴표를 사용하거나, 줄바꿈을 이용하는 등)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(* 백틱 : ` 을 이용해서 문자열 표현도 가능 - ES6부터)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;작은 따옴표와 큰 따옴표 둘 다 사용가능하지만, 하나의 문장에 혼용은 불가.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  boolean, null, undefined&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;null : 값이 없음 (비어있음)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;undefined : 값이 초기화되지 않았음&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;코드에서 명시적으로 값이 없음을 나타낼 때는 null을 사용.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  자동 형 변환&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;어떤 자료형이든 전달할 수 있고, 그 값을 필요에 따라 변환 가능.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;문자열의 40에서 5를 빼면 자동으로 숫자를 바꾸어준다. (빼기연산이 문자열에서는 사용되지 않음)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;하지만, 문자열의 40에서 5를 더하면 405가 되어버린다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;그 경우에는 parseInt/parseFloat를 이용하여 숫자로 변환해주어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;만약 parseInt 같은거를 쓰기 싫으면 앞에 단항 연산자를 붙여버리면 숫자로 인식하게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  변수 호이스팅&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;모든 선언문이 해당 스코프의 처음으로 옮겨진 것처럼 동작하는 특성&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;선언 단계 : 객체에 변수를 등록&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;초기화 단계 : 변수 객체에 등록된 변수를 메모리에 할당&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;할당 단계 : undefined된 변수에 실제 값을 할당&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(* const, let 을 이용하여 협업 시 변수 사용할 때, 중복되는 경우를 방지 - ES6 부터)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  상수&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;변수의 값을 변경하면 상수와 일반 변수를 구분하고자 명명 규칙을 다르게 하여 사용.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;모든 변수 이름을 대문자로 작성하고, 언더바로 연결&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(상수라는 개념은 ES6부터 도입이 되었다)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 51.0465%; height: 167px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;키워드&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;선언 위치&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;재선언&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;var&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;변수&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;전역 스코프&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;let&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;변수&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;해당 스코프&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;const&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;상수&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;해당 스코프&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; let은 지역변수의 느낌, var은 전역변수의 느낌으로 접근하는 것이 좋다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 둘은 같은 변수명으로 사용할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  연산자&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 69.7674%; height: 338px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;연산자&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;===&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;값이 일치하는지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;!==&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;값이 일치하지 않는지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;&amp;amp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;비트 단위 연산자로 AND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;^&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;비트 단위 연산자로 XOR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;|&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;비트 단위 연산자로 OR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;&amp;amp;&amp;amp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;AND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;||&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;OR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;?:&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;조건에 해당하는 구문을 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;=&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;변수 또는 프로퍼티에 값을 할당&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;.&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;1번째 구문은 버리고 다음 구문 값을 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  반복문&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;for in / for each&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;  객체 생성 방법&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. 객체 리터럴&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가장 일반적인 방법&lt;/li&gt;
&lt;li&gt;{} 를 사용하여 객체를 생성, {} 내에 1개 이상의 프로퍼티를 추가하여 객체를 생성.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1614822840741&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var obj = {}; // empty obejct
      console.log(typeof obj);

var student = {
        name: '김예진',
        area: '서울',
        classNum: 11,
        info: function () {
          console.log(this.name + '은 ' + this.area + this.classNum + '반');
     },
};&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lory2/btqY5Mjj3bm/za1fDtyepVa57gj5U1KFuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lory2/btqY5Mjj3bm/za1fDtyepVa57gj5U1KFuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lory2/btqY5Mjj3bm/za1fDtyepVa57gj5U1KFuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLory2%2FbtqY5Mjj3bm%2Fza1fDtyepVa57gj5U1KFuK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Object 생성자 함수&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;new 연산자와 Object 생성자 함수를 호출하여 빈 객체를 생성.&lt;/li&gt;
&lt;li&gt;빈 객체 생성 후 프로퍼티 메소드 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1614823351442&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var student = new Object(); // empty obejct
      // property 추가
student.name = '김예진';
student.area = '서울';
student.classNum = 11;
student.info = function () {
	console.log(this.name + '은 ' + this.area + this.classNum + '반');
};&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lory2/btqY5Mjj3bm/za1fDtyepVa57gj5U1KFuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lory2/btqY5Mjj3bm/za1fDtyepVa57gj5U1KFuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lory2/btqY5Mjj3bm/za1fDtyepVa57gj5U1KFuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLory2%2FbtqY5Mjj3bm%2Fza1fDtyepVa57gj5U1KFuK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. &lt;span style=&quot;color: #333333;&quot;&gt;생성자 함수&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로퍼티가 동일한 여러 개의 객체를 생성 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1614823423215&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 함수
function Student(name, area, classNum) {
     this.name = name;
     this.area = area;
     this.classNum = classNum;
     this.info = function () {
          console.log(this.name + '은 ' + this.area + this.classNum + '반');
     };
}

      // 객체 생성.
var student1 = new Student('김예진1', '서울1', 11);
var student2 = new Student('김예진2', '서울2', 12);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caMnLB/btqZefjZXsf/35r5a8gPuwE1TR8llkJ5Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caMnLB/btqZefjZXsf/35r5a8gPuwE1TR8llkJ5Y1/img.png&quot; data-alt=&quot;해당 방법을 이용하여 만들면 중복 코드를 제외할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caMnLB/btqZefjZXsf/35r5a8gPuwE1TR8llkJ5Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaMnLB%2FbtqZefjZXsf%2F35r5a8gPuwE1TR8llkJ5Y1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;해당 방법을 이용하여 만들면 중복 코드를 제외할 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  속성 값 조회&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;this.속성이름 또는 [&quot;속성이름&quot;] 이런 식으로 접근이 가능하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;접근하는 속성의 이름은 반드시 문자열이어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이름에 연산자가 들어가게 되면, 문자열로 인식하지 않으므로 대괄호 내에 &quot;&quot; 문자열로 넣어 접근하여야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1614823818456&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(member.age);		//O
console.log(member['age']); 		//O
console.log(member.user-name);		//X
console.log(member[&quot;user-name&quot;]);	//O&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  속성 값 변경, 추가, 제거&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1614823935087&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 속성의 값 변경
member.age = 30;
member['city'] = '경기도';

console.log(member['age']); // 30
console.log(member.city); // 경기도

// 속성 추가
member.tel = '010-1234-5678';
console.log(member.tel); //010-1234-5678

// 속성 제거
delete member.tel;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  객체 참조&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;값을 복사하는 것이 아니라, 주소를 복사함!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  객체의 분류&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;684&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/omXWp/btqZcsYr0r5/4HyLouYgmP00dfUbbWA8sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/omXWp/btqZcsYr0r5/4HyLouYgmP00dfUbbWA8sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/omXWp/btqZcsYr0r5/4HyLouYgmP00dfUbbWA8sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FomXWp%2FbtqZcsYr0r5%2F4HyLouYgmP00dfUbbWA8sk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;684&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;document를 관리할 수 있는 것으로 DOM script라고 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  함수의 선언, 호출, 호이스팅&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;일급 객체의 선언, 선언 위치와 상관 없이 어느 곳이든지 호출이 가능.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;함수 선언문으로 작성된 함수는 변수 객체 저장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;함수 선언, 초기화, 할당이 한 번에 이루어진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;함수 표현식의 경우 함수 호이스팅이 아니라 변수 호이스팅이 발생하므로 호출 시 문제 발생 가능.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;  콜백 함수&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;매개 변수를 통해 전달되고, 전달 받음 함수의 내부에서 어느 특정 시점에 실행됨.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이벤트 핸들러에서 리스너가 감시하고 있다가 이벤트가 발생하면 function 호출&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;setTimeout()에서는 일정 시간이 경과하면 함수를 호출한다.&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/323</guid>
      <comments>https://likecode.tistory.com/323#entry323comment</comments>
      <pubDate>Thu, 4 Mar 2021 11:32:03 +0900</pubDate>
    </item>
    <item>
      <title>[HTML5] HTML 태그와 요소 정리</title>
      <link>https://likecode.tistory.com/322</link>
      <description>&lt;p&gt;  태그와 요소&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style3&quot;&gt;태그 : HTML 에서 객체를 만들 때 사용하는 것&lt;br /&gt;요소 : 태그를 사용해 만들어진 것&lt;/blockquote&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;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style3&quot;&gt;태그에 추가 정보를 부여할 때 사용.&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  주석&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style3&quot;&gt;유지 보수 ---&amp;gt; 가독성을 위한 코드의 설명.&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;  글자 태그&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style3&quot;&gt;제목을 입력할 때 사용하는 제목 글자 태그&amp;nbsp;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 61.5117%; height: 291px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;h1&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;첫 번째로 큰 제목 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;h2&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;두 번째로 큰 제목 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;h3&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;세 번째로 큰 제목 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;h4&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;네 번째로 큰 제목 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;h5&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;다섯 번째로 큰 제목 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;h6&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;여섯 번째로 큰 제목 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style3&quot;&gt;본문을 입력할 때 사용하는 본문 글자 태그&amp;nbsp;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 44.0698%; height: 165px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;p&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;본문 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;br&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;줄바꿈 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;br&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;수평 줄 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;웹 페이지 사이를 이동하거나 내부에서 특정 위치로 이동하는 앵커 태그&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 43.4884%; height: 74px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;a&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;앵커 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;글자 형태 태그를 사용해 글자의 형태나 의미를 부여&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 60.6977%; height: 314px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;굵은 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;i&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;기울어진 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;small&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;작은 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;sub&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;아래에 달라 붙은 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;sup&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;위에 달라 붙는 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;ins&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;밑줄 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;del&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;가운데 줄이 그어진 글자 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;  목록 태그&lt;/p&gt;
&lt;blockquote data-ke-size=&quot;size18&quot; data-ke-style=&quot;style3&quot;&gt;기본 목록을 만들 때는 목록 태그를 사용&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 42.5581%; height: 95px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;ul&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;순서가 없는 목록 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 25px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 25px; text-align: center;&quot;&gt;ol&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 25px; text-align: center;&quot;&gt;순서가 있는 목록 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 24px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 24px; text-align: center;&quot;&gt;li&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 24px; text-align: center;&quot;&gt;목록 요소&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;정의 목록을 만들 때는 정의 목록 태그를 사용&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 40.4651%; height: 161px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;dl&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px; text-align: center;&quot;&gt;정의 목록 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 25px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 25px; text-align: center;&quot;&gt;dt&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 25px; text-align: center;&quot;&gt;정의 용어 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 24px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 24px; text-align: center;&quot;&gt;dd&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 24px; text-align: center;&quot;&gt;정의 설명 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  테이블 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;테이블을 만들기 위한 태그 &amp;lt;table&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 42.093%; height: 132px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;태그(속성) 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;tr&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; 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: 33.3333%; text-align: center; height: 20px;&quot;&gt;th&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;행 내부의 제목 셀 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 10px;&quot;&gt;td&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 10px;&quot;&gt;행 내부의 일반 셀 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;border&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;표의 테두리 두께 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;rowspan&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;셀의 높이 지정(병합)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;colspan&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;셀의 너비 지정(병합)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  이미지 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이미지를 삽입하기 위한 태그 &amp;lt;img&amp;gt;&amp;lt;/img&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 62.4419%; height: 184px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;src&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;이미지의 경로 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;alt&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;이미지가 없을 때 나오는 글자 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;width&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;이미지의 너비 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;height&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;이미지의 높이 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  오디오 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;오디오를 삽입하기 위한 태그 &amp;lt;audio&amp;gt;&amp;lt;/audio&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 71.7442%; height: 212px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;src&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;음악 파일의 경로 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;preload&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;음악을 재생하기 전에 모두 불러올지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;autoplay&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;음악을 자동 재생할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;loop&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;음악을 반복할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;controls&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;음악 재생 도구를 출력할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  비디오 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;비디오를 삽입하기 위한 태그 &amp;lt;video&amp;gt;&amp;lt;/video&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 81.5116%; height: 318px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;src&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오 파일의 경로 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;poster&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오 준비 중일 때의 이미지 파일 경로 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;preload&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오를 재생하기 전에 모두 불러올지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;autoplay&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오를 자동 재생할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;loop&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오를 반복할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;controls&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오 재생 도구를 출력할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;width&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오의 너비 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;height&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비디오의 높이 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  입력 양식 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;form 태그를 이용하여 서버에 내용을 전달&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 80.5814%; height: 209px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;action&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;입력 데이터의 전달 위치를 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;method&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;입력 데이터의 전달 방식을 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;method=&quot;get&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;입력 데이터의 전달 방식을 주소에 넣기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;method=&quot;post&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;입력 데이터의 전달 방식을 비밀스럽게 전달하기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;input 태그를 이용하여 내용을 입력 (HTML4 기준)&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 46.1628%; height: 398px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;button&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;버튼을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;checkbox&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;체크박스를 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;file&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;파일 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;hidden&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;보이지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;image&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;이미지 형태를 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;password&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;비밀번호 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;radio&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;라디오 버튼을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;reset&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;초기화 버튼을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;submit&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;제출 버튼을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;text&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;글자 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;input 태그를 이용하여 내용을 입력 (HTML5)&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 53.7209%; height: 485px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;color&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;색상 선택 양식 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;date&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;일 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: center;&quot;&gt;datetime&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: center;&quot;&gt;날짜 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;datetime-local&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;지역 날짜 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;email&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;이메일 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;month&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;월 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;number&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;숫자 생성 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;range&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;범위 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;search&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;검색어 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;tel&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;전화번호 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;time&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;시간 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;url&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;주소 입력 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;week&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;주 선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;글자를 입력할 때 사용하는 태그 &amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 40.1403%; height: 124px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;속성 이름&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;cols&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;태그의 너비를 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;rows&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;태그의 높이를 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;select 태그를 이용하여 드롭박스 형태의 선택 입력 &amp;lt;select&amp;gt;&amp;lt;/select&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 45.1163%; height: 164px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;select&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;선택 양식을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;optgroup&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;옵션을 그룹화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;option&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;옵션을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  입력 양식을 설명하는 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;입력 양식을 구분할 수 있도록 설명하는 태그&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 52.2094%; height: 137px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;fieldset&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;입력 양식을 감싸는 형태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;legend&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;fieldset을 설명하는 태그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  공간 분할 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;block 형식으로 공간을 분할 / inline 형식으로 공간을 분할&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 57.5581%; height: 125px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;div&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;block 형식으로 공간을 분할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;span&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;inline 형식으로 공간을 분할&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;  시맨틱 구조 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;시맨틱 웹을 구현하기 위해 만들어진 태그&lt;/span&gt;&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 57.2093%; height: 242px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;태그 이름&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;header&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;헤더&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;nav&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;내비게이션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;aside&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;사이드에 위치하는 공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;section&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;여러 중심 내용을 감싸는 공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;article&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;글자가 많이 들어가는 공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;footer&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 20px;&quot;&gt;푸터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021년 자료/WEB</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/322</guid>
      <comments>https://likecode.tistory.com/322#entry322comment</comments>
      <pubDate>Thu, 4 Mar 2021 08:51:09 +0900</pubDate>
    </item>
    <item>
      <title>...이전 계획 취소합니다</title>
      <link>https://likecode.tistory.com/319</link>
      <description>&lt;p&gt;이동하자니 새로 써야하는 글들이 너무 많아져서 옛날 글들을 다른 카테고리로 옮기고 다시 여기서 작성하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;s&gt;블로그에 있는 글들을 이동하려고 합니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;이유는 너무 잡다해서, 예쁘게 정리해서 새로 블로그를 운영하고 싶은 생각이 들었습니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;사견도 너무 많고, 그림이나 코딩과 관계 없는 내용들이 간간히 보이는 블로그라&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;개인적으로 글 관리도 어렵다는 생각이 들어서 리뉴얼을 결정하였습니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;여기는 추억으로 남기고..&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;리뉴얼 이후에 기존 데이터를 모두 삭제할지는 고민중에 있습니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;여전히 블로그를 방문해주시는 분들께는 감사의 말을 드립니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;글을 안쓰는데도 따로 검색해주시는 분들이 많아서&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;매일 100분 정도는 방문해주시는데,&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;빨리 이동을 완료해보겠습니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;이동할 블로그의 주소는 다음과 같습니다.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;&lt;a href=&quot;https://log-mylife.tistory.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;log-mylife.tistory.com/&lt;/a&gt;&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들/잡설</category>
      <category>블로그_이전_계획보다_지금_해야할게_더_많아서_유지예정</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/319</guid>
      <comments>https://likecode.tistory.com/319#entry319comment</comments>
      <pubDate>Wed, 1 Jul 2020 15:33:44 +0900</pubDate>
    </item>
    <item>
      <title>오늘 한 재미난 일 정리</title>
      <link>https://likecode.tistory.com/317</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;IMG_20200529_222357_982.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;2733&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXex96/btqEvxMIbmK/GYikiKAVNsF1LokeapFbNK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXex96/btqEvxMIbmK/GYikiKAVNsF1LokeapFbNK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXex96/btqEvxMIbmK/GYikiKAVNsF1LokeapFbNK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXex96%2FbtqEvxMIbmK%2FGYikiKAVNsF1LokeapFbNK%2Fimg.jpg&quot; data-filename=&quot;IMG_20200529_222357_982.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;2733&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/317</guid>
      <comments>https://likecode.tistory.com/317#entry317comment</comments>
      <pubDate>Fri, 29 May 2020 22:28:27 +0900</pubDate>
    </item>
    <item>
      <title>우분투 최적화, 최근 하는 일</title>
      <link>https://likecode.tistory.com/315</link>
      <description>&lt;p&gt;오늘은 우분투 최적화를 하는 날이다.&lt;/p&gt;
&lt;p&gt;요새 뭐 하지도 않았는데 뭐 실행할 때마다 2-3초 이상의 딜레이 및 렉이 걸려서&lt;/p&gt;
&lt;p&gt;그 딜레이를 좀 줄일 수 있지 않을까 싶어서 해보는 과정이다.&lt;/p&gt;
&lt;p&gt;참고한 사이트는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://kor.4meahc.com/how-speed-up-ubuntu-1804-21100&quot;&gt;https://kor.4meahc.com/how-speed-up-ubuntu-1804-21100&lt;/a&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1590555632554&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install preload -y&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이거를 해서 라이브러리 로딩을 좀더 빠르게 해주겠다.&lt;/p&gt;
&lt;p&gt;lUbuntu 그거는 내가 사용해보지 않았지만,&lt;/p&gt;
&lt;p&gt;나중에 정식 우분투로만 실행할 수 있는 과정이 있을때를 대비하여 하지 않았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;최근에는 논문 개요를 쓰는 중이다.&lt;/p&gt;
&lt;p&gt;죽이되든 밥이되든 호텔 뷔페가 되든 일단 써야겠다 싶어서 쓰고 있는 중이다.&lt;/p&gt;
&lt;p&gt;리뷰어가 랩에 없다는 치명적인 문제가 있지만, 스스로와 많은 참고자료들을 읽으면서&lt;/p&gt;
&lt;p&gt;해결해나가려고 한다.&lt;/p&gt;
&lt;p&gt;제발 멀쩡한 논문이 되길 바라면서&lt;/p&gt;
&lt;p&gt;우분투최적화 시도 이후 달라진 점은 추후에 실행해보면서 리뷰하겠다.&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/315</guid>
      <comments>https://likecode.tistory.com/315#entry315comment</comments>
      <pubDate>Wed, 27 May 2020 14:03:55 +0900</pubDate>
    </item>
    <item>
      <title>우분투 USB 인식이 잘 안될 때(해결)</title>
      <link>https://likecode.tistory.com/313</link>
      <description>&lt;p&gt;파일 뭐 작성해야 할 것이 있어서,&lt;/p&gt;
&lt;p&gt;USB로 윈도우와 우분투 pc를 왔다갔다 꽂다보니,&lt;/p&gt;
&lt;p&gt;어느 순간 우분투 pc에서 USB에 파일 저장이 안되는 현상이 발생했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmZp9d/btqEmp8b9DR/1GWFgKErvwt7fGkDA5CqBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmZp9d/btqEmp8b9DR/1GWFgKErvwt7fGkDA5CqBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmZp9d/btqEmp8b9DR/1GWFgKErvwt7fGkDA5CqBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmZp9d%2FbtqEmp8b9DR%2F1GWFgKErvwt7fGkDA5CqBK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;뭐 이런식으로 뜬다&lt;/p&gt;
&lt;p&gt;나는 우분투 20.04를 사용하고 있기 때문에,&lt;/p&gt;
&lt;p&gt;버전이 낮아서 이런 문제가 생기는 것은 아니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 그냥 내가 수동으로 mount를 해줄까 한다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot;&gt;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1590128672470&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How to Manually Mount/UnMount a USB Device on Ubuntu&quot; data-og-description=&quot;When you plug in a USB drive on our system, it usually mounts automatically; creating a directory by your username under the media folder. You can also access it through the file manager running on your system. Unfortunately, this is&quot; data-og-host=&quot;vitux.com&quot; data-og-source-url=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot; data-og-url=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bpp5Mr/hyF8Oc5BXb/KQQtuI8bbOYVoikT9GbNfk/img.jpg?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512&quot;&gt;&lt;a href=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bpp5Mr/hyF8Oc5BXb/KQQtuI8bbOYVoikT9GbNfk/img.jpg?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to Manually Mount/UnMount a USB Device on Ubuntu&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;When you plug in a USB drive on our system, it usually mounts automatically; creating a directory by your username under the media folder. You can also access it through the file manager running on your system. Unfortunately, this is&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;vitux.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;사실 mount 는 이미 되어 있어서 껐다 키면 되는데&lt;/p&gt;
&lt;p&gt;그냥 끄기가 귀찮아서 해보는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/utNDJ/btqEjPU2P9f/bPppaEVrz3jDe7Awt59BKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/utNDJ/btqEjPU2P9f/bPppaEVrz3jDe7Awt59BKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/utNDJ/btqEjPU2P9f/bPppaEVrz3jDe7Awt59BKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FutNDJ%2FbtqEjPU2P9f%2FbPppaEVrz3jDe7Awt59BKK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 USB의 위치를 찾기위한 명령어를 입력해준다.&lt;/p&gt;
&lt;p&gt;sudo fdisk -l&lt;/p&gt;
&lt;p&gt;내 USB는 대략 63기가바이트이므로, 찾기가 쉽다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj4bAA/btqElGCA4FG/SvXQ6BAxv2aDFIXDmgogY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj4bAA/btqElGCA4FG/SvXQ6BAxv2aDFIXDmgogY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj4bAA/btqElGCA4FG/SvXQ6BAxv2aDFIXDmgogY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj4bAA%2FbtqElGCA4FG%2FSvXQ6BAxv2aDFIXDmgogY1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;뒤로 구르기 해서 봐도 얘가 USB이다.&lt;/p&gt;
&lt;p&gt;그래서 얘를 mount해보려고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/upuKb/btqElkT3NSf/mXVWBYS63PRLNikMDKnFV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/upuKb/btqElkT3NSf/mXVWBYS63PRLNikMDKnFV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/upuKb/btqElkT3NSf/mXVWBYS63PRLNikMDKnFV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FupuKb%2FbtqElkT3NSf%2FmXVWBYS63PRLNikMDKnFV0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;sudo mkdir /media/myUSB&lt;/p&gt;
&lt;p&gt;이름은 아무거나 해도 되니까 myUSB에 자기가 원하는 글자 넣으면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nIQmu/btqEmwTzroS/1OAKOv3gOhxExP5KrGebX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nIQmu/btqEmwTzroS/1OAKOv3gOhxExP5KrGebX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nIQmu/btqEmwTzroS/1OAKOv3gOhxExP5KrGebX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnIQmu%2FbtqEmwTzroS%2F1OAKOv3gOhxExP5KrGebX1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 입력해준다.&lt;/p&gt;
&lt;p&gt;혹시 이렇게 했는데 마운트가 안되면,&lt;/p&gt;
&lt;p&gt;일단 umount를 이용해서 기존 sdc1이 이미 마운트가 된 것인지는 아닌지 확인해야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx4jZi/btqEliWhXRy/4KvsNfx7GTy2d6k8JB9blk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx4jZi/btqEliWhXRy/4KvsNfx7GTy2d6k8JB9blk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx4jZi/btqEliWhXRy/4KvsNfx7GTy2d6k8JB9blk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx4jZi%2FbtqEliWhXRy%2F4KvsNfx7GTy2d6k8JB9blk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;근데 웃긴일이 일어났다.&lt;/p&gt;
&lt;p&gt;mount를 다시 시도했는데도,&lt;/p&gt;
&lt;p&gt;파일 저장을 못하게 막아놨다.&lt;/p&gt;
&lt;p&gt;이거 뭐 내가 사용자로 인식이 안된건가 의아하다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 그냥 권한을 바꿔주는 원초적인 방식으로 접근해보기로 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kYLaS/btqElXjMSUg/0iqkk4cMIGSPot9h1pa5pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kYLaS/btqElXjMSUg/0iqkk4cMIGSPot9h1pa5pK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kYLaS/btqElXjMSUg/0iqkk4cMIGSPot9h1pa5pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkYLaS%2FbtqElXjMSUg%2F0iqkk4cMIGSPot9h1pa5pK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;먼저 해당 mount된 창에서 터미널을 열어준다.&lt;/p&gt;
&lt;p&gt;****제가 접은 글은 시도하지 마세요.. 참고용으로 내버려둔건데 쓰시면 안돼요 에러나요&lt;/p&gt;
&lt;p&gt;맨 아래줄 사진처럼 하시면 됩니다****&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;***이거 하지 마시고 맨 아래 사진 하세요...****&lt;/p&gt;
&lt;p&gt;이거하면 root 계정 뭐할 때마다 lock 되는 오류생길수도 있어요...&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Axkd1/btqEmpNU0fd/yNLUoDL4eEVRKld6d66Ci1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Axkd1/btqEmpNU0fd/yNLUoDL4eEVRKld6d66Ci1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Axkd1/btqEmpNU0fd/yNLUoDL4eEVRKld6d66Ci1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAxkd1%2FbtqEmpNU0fd%2FyNLUoDL4eEVRKld6d66Ci1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;그리고 이렇게 권한 설정을 해준다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0wNbm/btqEmv8bSPy/uHKUtQd0cDYNf0lvyOCnq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0wNbm/btqEmv8bSPy/uHKUtQd0cDYNf0lvyOCnq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0wNbm/btqEmv8bSPy/uHKUtQd0cDYNf0lvyOCnq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0wNbm%2FbtqEmv8bSPy%2FuHKUtQd0cDYNf0lvyOCnq0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;그리고 copy로 파일이동을 해주려는데,&lt;/p&gt;
&lt;p&gt;이미 있는 파일이라는 에러가 있고, 내가 하려는 것과 뭔가 다른 방향으로 흘러가고 있는 것 같아서,&lt;/p&gt;
&lt;p&gt;그만두었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caFhRw/btqElj1W9C6/A411oaAPG8umiNOkkBNH2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caFhRw/btqElj1W9C6/A411oaAPG8umiNOkkBNH2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caFhRw/btqElj1W9C6/A411oaAPG8umiNOkkBNH2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaFhRw%2FbtqElj1W9C6%2FA411oaAPG8umiNOkkBNH2K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;아 반대로 한 것 같다.&lt;/p&gt;
&lt;p&gt;그래서 해주었는데,&lt;/p&gt;
&lt;p&gt;일전에 한 구문에 의해서 뭔가 파일 이동이 이미 잘못되어서, 나중에 추가 보강을 해서 정리하도록 하겠다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcsKdl/btqEk2M4RZr/u5SCtgolH82GS0NOf6uhwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcsKdl/btqEk2M4RZr/u5SCtgolH82GS0NOf6uhwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcsKdl/btqEk2M4RZr/u5SCtgolH82GS0NOf6uhwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcsKdl%2FbtqEk2M4RZr%2Fu5SCtgolH82GS0NOf6uhwK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 해당 USB가 mount되었을 때, 그 폴더를 입력해서 remount해주면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://werft2.tistory.com/6&quot;&gt;https://werft2.tistory.com/6&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1590136180347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;리눅스에서 외장하드 혹은 USB로 파일 복사가 안될때- Read-only system&quot; data-og-description=&quot;출처: http://askubuntu.com/questions/47538/how-to-make-read-only-file-system-writable http://blog.naver.com/PostView.nhn?blogId=dangtong76&amp;amp;logNo=140165517361 eject한 후에 다시 마운팅하는게 정답이다...&quot; data-og-host=&quot;werft2.tistory.com&quot; data-og-source-url=&quot;https://werft2.tistory.com/6&quot; data-og-url=&quot;https://werft2.tistory.com/6&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wuXQz/hyF8JXjvpF/uwSiqRkKkW5rAP5NEWO1n1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dgbQFU/hyF8DJzy9e/gfVJYzHzAFOx9ZL8iETKMK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ydhWr/hyF8KIG0kX/kGwrcQ6Ez9OjVJZdob6esk/img.jpg?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640&quot;&gt;&lt;a href=&quot;https://werft2.tistory.com/6&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://werft2.tistory.com/6&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wuXQz/hyF8JXjvpF/uwSiqRkKkW5rAP5NEWO1n1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dgbQFU/hyF8DJzy9e/gfVJYzHzAFOx9ZL8iETKMK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ydhWr/hyF8KIG0kX/kGwrcQ6Ez9OjVJZdob6esk/img.jpg?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;리눅스에서 외장하드 혹은 USB로 파일 복사가 안될때- Read-only system&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;출처: http://askubuntu.com/questions/47538/how-to-make-read-only-file-system-writable http://blog.naver.com/PostView.nhn?blogId=dangtong76&amp;amp;logNo=140165517361 eject한 후에 다시 마운팅하는게 정답이다...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;werft2.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참고한 블로그입니다.&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/313</guid>
      <comments>https://likecode.tistory.com/313#entry313comment</comments>
      <pubDate>Fri, 22 May 2020 15:46:48 +0900</pubDate>
    </item>
    <item>
      <title>[해결]이번에도 어김없이 발생한 우분투 무한 로그인 ubuntu 20.04</title>
      <link>https://likecode.tistory.com/310</link>
      <description>&lt;p&gt;버전 20.04 무한 로그인이 발생했다.&lt;/p&gt;
&lt;p&gt;18.04에서는 발생 안했어서 방심하고 잇었는데,&lt;/p&gt;
&lt;p&gt;글을 미리 작성해두어서 다행이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;16.04에서와 달라진 점을 적어보려고 한다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://askubuntu.com/questions/1229933/login-freeze-after-update-to-20-04&quot;&gt;https://askubuntu.com/questions/1229933/login-freeze-after-update-to-20-04&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589551463564&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Login freeze after update to 20.04&quot; data-og-description=&quot;I have just upgraded from 18.04 to 20.04 on a Dell XPS 9560. The login screen was frozen and with no response on input from the mouse or keyboard. I have booted using a recovery mode option and pu...&quot; data-og-host=&quot;askubuntu.com&quot; data-og-source-url=&quot;https://askubuntu.com/questions/1229933/login-freeze-after-update-to-20-04&quot; data-og-url=&quot;https://askubuntu.com/questions/1229933/login-freeze-after-update-to-20-04&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/HUQwJ/hyF3S1cmBs/BEIAmCwT7BErdz8QFwNNYK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://askubuntu.com/questions/1229933/login-freeze-after-update-to-20-04&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://askubuntu.com/questions/1229933/login-freeze-after-update-to-20-04&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/HUQwJ/hyF3S1cmBs/BEIAmCwT7BErdz8QFwNNYK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Login freeze after update to 20.04&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;I have just upgraded from 18.04 to 20.04 on a Dell XPS 9560. The login screen was frozen and with no response on input from the mouse or keyboard. I have booted using a recovery mode option and pu...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;askubuntu.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;일단 나는 여기서 참고를 하였다.&lt;/p&gt;
&lt;p&gt;구글 원격을 해보겠다고 그래픽 드라이버 건드렸다고 또 망가졌나보다.&lt;/p&gt;
&lt;p&gt;여러분 display 관련 코드는 함부로 건드리는 것이 아닙니다.&lt;/p&gt;
&lt;p&gt;그리고 듀얼 모니터? 윈도우 아니면 우분투라면 이런 잔고장은 감수해야합니다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://likecode.tistory.com/253&quot;&gt;https://likecode.tistory.com/253&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589551531808&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;우분투 무한 로그인, nvidia-smi 관련 거지같은 상황 해결 방법&quot; data-og-description=&quot;내가 나중에 에러가 났을 때 빠르게 대처하기 위해서 정리해두는 글. 혹시 이 글을 읽는 분이 계시다면 편히 답글 남겨주시면 기쁘게 답해드릴게요. (저도 리눅스/우분투 초보인데 3일만에 nvidia &quot; data-og-host=&quot;likecode.tistory.com&quot; data-og-source-url=&quot;https://likecode.tistory.com/253&quot; data-og-url=&quot;https://likecode.tistory.com/253&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c0unGL/hyF36E8GOl/LSDDvN6XApPIw7W0UZdzH1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dVHTYb/hyF33BDmX3/p68mVHRNkhBe14b2v4P6OK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/OL1gW/hyF37cZ3DG/kkafl7FrRpVGOJI0p5FDG0/img.jpg?width=774&amp;amp;height=255&amp;amp;face=0_0_774_255&quot;&gt;&lt;a href=&quot;https://likecode.tistory.com/253&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://likecode.tistory.com/253&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c0unGL/hyF36E8GOl/LSDDvN6XApPIw7W0UZdzH1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dVHTYb/hyF33BDmX3/p68mVHRNkhBe14b2v4P6OK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/OL1gW/hyF37cZ3DG/kkafl7FrRpVGOJI0p5FDG0/img.jpg?width=774&amp;amp;height=255&amp;amp;face=0_0_774_255');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;우분투 무한 로그인, nvidia-smi 관련 거지같은 상황 해결 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;내가 나중에 에러가 났을 때 빠르게 대처하기 위해서 정리해두는 글. 혹시 이 글을 읽는 분이 계시다면 편히 답글 남겨주시면 기쁘게 답해드릴게요. (저도 리눅스/우분투 초보인데 3일만에 nvidia&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;likecode.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;예전 글은 이거다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;달라진 부분은 음&lt;/p&gt;
&lt;p&gt;부팅할 때, recovery mode가 아니라 그냥 ubuntu를 누르지않고 그냥 커서를 올린 상태에서&lt;/p&gt;
&lt;p&gt;f10을 누른다.&lt;/p&gt;
&lt;p&gt;그러면 뭔 문서가 vi같은 형태로 등장하는데, 그냥 방향키로 쭉 내려서&lt;/p&gt;
&lt;p&gt;nouveau.modeset=0&lt;span&gt;&lt;span&gt; 를 추가하고 저장하고 부팅한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;그리고 ctrl alt f3을 누르고 로그인을 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;그러면 로그인이 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;나는 그래픽 드라이버가 고장난 것이 확실하였기 떄문에,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1589551794051&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-graphics-drivers-440
sudo reboot&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 코드를 수행해보았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;근데 웃긴 것은 nvidia-smi를 수행해보면 440이 멀쩡히 검색이 된다.&lt;/p&gt;
&lt;p&gt;그리고 driver깔린 목록을 보면 잘 있다.&lt;/p&gt;
&lt;p&gt;뭐가 문제인지를 잘 모르겠다. 지금으로써는...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;repository 한번 더 만들었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그냥 reboot 해보겠다.&lt;/p&gt;
&lt;p&gt;하&lt;/p&gt;
&lt;p&gt;될꺼야...&lt;/p&gt;
&lt;p&gt;아자&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/@satyabratbhol/how-to-get-rid-of-login-screen-loop-in-ubuntu-feead4cb2302&quot;&gt;https://medium.com/@satyabratbhol/how-to-get-rid-of-login-screen-loop-in-ubuntu-feead4cb2302&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589553979806&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How to get rid of Login Screen Loop in Ubuntu ?&quot; data-og-description=&quot;Login Screen Loop is no new issue in Ubuntu Platform with the latest LTS version 18.04 have been reported to have such issues.&quot; data-og-host=&quot;medium.com&quot; data-og-source-url=&quot;https://medium.com/@satyabratbhol/how-to-get-rid-of-login-screen-loop-in-ubuntu-feead4cb2302&quot; data-og-url=&quot;https://medium.com/@satyabratbhol/how-to-get-rid-of-login-screen-loop-in-ubuntu-feead4cb2302&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ciozIU/hyF314XzJc/PIT7GkhDvdv32FmBkkLlCk/img.jpg?width=60&amp;amp;height=47&amp;amp;face=0_0_60_47,https://scrap.kakaocdn.net/dn/cjggDr/hyF3VczzD3/GmLWOS2R5g7DDuGyM56aI1/img.png?width=60&amp;amp;height=33&amp;amp;face=0_0_60_33,https://scrap.kakaocdn.net/dn/ihnFD/hyF32Jxf87/wHyXAoepKB3wL8y6EHfE1k/img.jpg?width=60&amp;amp;height=33&amp;amp;face=0_0_60_33&quot;&gt;&lt;a href=&quot;https://medium.com/@satyabratbhol/how-to-get-rid-of-login-screen-loop-in-ubuntu-feead4cb2302&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://medium.com/@satyabratbhol/how-to-get-rid-of-login-screen-loop-in-ubuntu-feead4cb2302&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ciozIU/hyF314XzJc/PIT7GkhDvdv32FmBkkLlCk/img.jpg?width=60&amp;amp;height=47&amp;amp;face=0_0_60_47,https://scrap.kakaocdn.net/dn/cjggDr/hyF3VczzD3/GmLWOS2R5g7DDuGyM56aI1/img.png?width=60&amp;amp;height=33&amp;amp;face=0_0_60_33,https://scrap.kakaocdn.net/dn/ihnFD/hyF32Jxf87/wHyXAoepKB3wL8y6EHfE1k/img.jpg?width=60&amp;amp;height=33&amp;amp;face=0_0_60_33');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to get rid of Login Screen Loop in Ubuntu ?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Login Screen Loop is no new issue in Ubuntu Platform with the latest LTS version 18.04 have been reported to have such issues.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;여기 보고 성공했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;lightdm을 지웠다가 깔면 되는 것이었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HPrKd/btqEcTV2rwY/I6AlzYPARNeAEu4k9Q0MC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HPrKd/btqEcTV2rwY/I6AlzYPARNeAEu4k9Q0MC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HPrKd/btqEcTV2rwY/I6AlzYPARNeAEu4k9Q0MC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHPrKd%2FbtqEcTV2rwY%2FI6AlzYPARNeAEu4k9Q0MC1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이건데,&lt;/p&gt;
&lt;p&gt;dpkg-reconfigure앞에도 sudo를 붙여주어야 하고,&lt;/p&gt;
&lt;p&gt;어떤 화면 뜨면 gdm3인가 그거 선택하지 말고&lt;/p&gt;
&lt;p&gt;lightdm을 선택하고 ok누르고 reboot 입력하면 된다.&lt;/p&gt;
&lt;p&gt;개꿀!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/310</guid>
      <comments>https://likecode.tistory.com/310#entry310comment</comments>
      <pubDate>Fri, 15 May 2020 23:31:04 +0900</pubDate>
    </item>
    <item>
      <title>다시 가상환경 만들기</title>
      <link>https://likecode.tistory.com/309</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y5kPU/btqEcnpzPPO/OSPnLGMRHi5fEbE9MFaH6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y5kPU/btqEcnpzPPO/OSPnLGMRHi5fEbE9MFaH6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y5kPU/btqEcnpzPPO/OSPnLGMRHi5fEbE9MFaH6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy5kPU%2FbtqEcnpzPPO%2FOSPnLGMRHi5fEbE9MFaH6k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 다시 만들어줍니다.&lt;/p&gt;
&lt;p&gt;주말 근무각이네요&lt;/p&gt;
&lt;p&gt;ㅎㅎ&lt;/p&gt;
&lt;p&gt;까이꺼 주말에 더 하면 됩니다&lt;/p&gt;
&lt;p&gt;일단 오늘 목표는 제가 만든 간단한 loss함수가 돌아가도록 하는 것입니다.&lt;/p&gt;
&lt;p&gt;그러기 위해서는 가상환경 빨리 설치하고 pytorch또 새로 깔아야합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nOgs4/btqEdlkhHWi/mMek0QZKbZkRBRWPBu2SqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nOgs4/btqEdlkhHWi/mMek0QZKbZkRBRWPBu2SqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nOgs4/btqEdlkhHWi/mMek0QZKbZkRBRWPBu2SqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnOgs4%2FbtqEdlkhHWi%2FmMek0QZKbZkRBRWPBu2SqK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이거는 똑같습니다.&lt;/p&gt;
&lt;p&gt;3.5가 아니라 3.6으로 했을 때 어떻게 나오는지를 보아야겠습니다.&lt;/p&gt;
&lt;p&gt;안되면 아나콘다도 갈아야합니다.&lt;/p&gt;
&lt;p&gt;아니면 파이토치 버전을 조금 낮추는 수밖에 없습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;뭐든 일단 오늘 안으로 끝낼겁니다. 아자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아악 된다!!!!!@!@@!#!@#@!#@!#@!#$@!#@!#!@#!@#&lt;/p&gt;
&lt;p&gt;아 너무 신나서 흥을 주체할 수 없다&lt;/p&gt;
&lt;p&gt;춤춰야지&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/309</guid>
      <comments>https://likecode.tistory.com/309#entry309comment</comments>
      <pubDate>Fri, 15 May 2020 19:05:17 +0900</pubDate>
    </item>
    <item>
      <title>pytorch 설치 이후 해야하는 것들</title>
      <link>https://likecode.tistory.com/308</link>
      <description>&lt;p&gt;자&lt;/p&gt;
&lt;p&gt;이제 pytorch가 다 설치되어서, 나머지를 해결해야하는데&lt;/p&gt;
&lt;p&gt;torchvision을 설치해할것이다.&lt;/p&gt;
&lt;p&gt;한번 확인해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crXP4H/btqEalT4y4f/p8ctocwZEB7yuOCTX17Yt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crXP4H/btqEalT4y4f/p8ctocwZEB7yuOCTX17Yt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crXP4H/btqEalT4y4f/p8ctocwZEB7yuOCTX17Yt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrXP4H%2FbtqEalT4y4f%2Fp8ctocwZEB7yuOCTX17Yt0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그렇다.&lt;/p&gt;
&lt;p&gt;torchvision이 설치되지 않았다.&lt;/p&gt;
&lt;p&gt;음 torchvision버전이 어떤것을 설치해야하는지 모르는 상황이라서 좀더 서치를 해보겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WS610/btqEaZDc8Bo/00VbCq83dvohUZvagdKZN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WS610/btqEaZDc8Bo/00VbCq83dvohUZvagdKZN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WS610/btqEaZDc8Bo/00VbCq83dvohUZvagdKZN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWS610%2FbtqEaZDc8Bo%2F00VbCq83dvohUZvagdKZN0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;pip로 torchvision을 이미 설치하였다는 것을 확인하였는데, 어떤 것이 문제일지 더 알아보도록 하겠다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pytorch/vision/issues/2132&quot;&gt;https://github.com/pytorch/vision/issues/2132&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589536696415&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Torchvision 0.6.0 doesn't work on Ubuntu 16.04.3 with Python 3.5.2 &amp;middot; Issue #2132 &amp;middot; pytorch/vision&quot; data-og-description=&quot;  Bug To Reproduce Steps to reproduce the behavior: Create a virtual environment python -m venv venv Activate the virtual environment pip install torchvision Run the following line: import torchvis...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/pytorch/vision/issues/2132&quot; data-og-url=&quot;https://github.com/pytorch/vision/issues/2132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxhcVI/hyF3T6zFEt/P3WiidI62W6RP9x02m63Y0/img.jpg?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://github.com/pytorch/vision/issues/2132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/pytorch/vision/issues/2132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxhcVI/hyF3T6zFEt/P3WiidI62W6RP9x02m63Y0/img.jpg?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Torchvision 0.6.0 doesn't work on Ubuntu 16.04.3 with Python 3.5.2 &amp;middot; Issue #2132 &amp;middot; pytorch/vision&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;  Bug To Reproduce Steps to reproduce the behavior: Create a virtual environment python -m venv venv Activate the virtual environment pip install torchvision Run the following line: import torchvis...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아니나 다를까 같은 문제제기가 들어왔다.&lt;/p&gt;
&lt;p&gt;사람들은 또 다운그레이드를 하라고 한다.&lt;/p&gt;
&lt;p&gt;그래 뭐 그래픽 드라이버도 갈아엎은 마당에 이게 뭐가 어렵겠어&lt;/p&gt;
&lt;p&gt;한번 시도해보기로 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FhOoV/btqEcnJRf7s/kfS73Fr6QIskUOREb5BERK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FhOoV/btqEcnJRf7s/kfS73Fr6QIskUOREb5BERK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FhOoV/btqEcnJRf7s/kfS73Fr6QIskUOREb5BERK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFhOoV%2FbtqEcnJRf7s%2FkfS73Fr6QIskUOREb5BERK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;어차피 파이토치를 새로 깔아야하나보다...ㅎㅎ&lt;/p&gt;
&lt;p&gt;가상환경 하나더 만들어주기로 하자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/308</guid>
      <comments>https://likecode.tistory.com/308#entry308comment</comments>
      <pubDate>Fri, 15 May 2020 19:00:40 +0900</pubDate>
    </item>
    <item>
      <title>가상환경 생성, pytorch 설치</title>
      <link>https://likecode.tistory.com/307</link>
      <description>&lt;p&gt;&lt;s&gt;1. cuda 9,0&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;2. cudnn 7.1 설치&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. cuda 10.2&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. cudnn 7.6.5 설치&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;3. conda 4.2.0 설치&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;4. 가상환경 생성 aod&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;4. 가상환경 생성 aod1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;5. requirements.sh 구동&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;5. pytorch 설치&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;6. matplotlib&lt;/p&gt;
&lt;p&gt;7. scipy&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SNgES/btqD9u4Gv76/aR8T9Yx87DlIjmSSsZCl51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SNgES/btqD9u4Gv76/aR8T9Yx87DlIjmSSsZCl51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SNgES/btqD9u4Gv76/aR8T9Yx87DlIjmSSsZCl51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSNgES%2FbtqD9u4Gv76%2FaR8T9Yx87DlIjmSSsZCl51%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;파이썬과 아나콘다는 이미 깔려잇는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;지금 구축 새로하는거 아닙니다.&lt;/p&gt;
&lt;p&gt;cuda 충돌로 인해서 엔비디아 날리고 하는거라 아나콘다는 멀쩡합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(딥러닝 하시는 분들 초심자면 우분투 20.04로는 업뎃 비추입니다.&lt;/p&gt;
&lt;p&gt;아직 때가 아니에요... 작성 일자 보시고 고려 잘 해보세요..&lt;/p&gt;
&lt;p&gt;제가 이 글을 남긴 시점과 별 차이가 없다면 진짜 진지하게 고민하세요.&lt;/p&gt;
&lt;p&gt;진짜 우분투 18.04쓰세요 고생 많이 했어요..&lt;/p&gt;
&lt;p&gt;드라이버 아주 가끔 삐끗삐긋하는거 말고는 진짜 18.04가 훨씬 좋아요.&lt;/p&gt;
&lt;p&gt;16.04도 솔직히 느려서 고생인데 20.04는 빠른거를 제외하면 장점이 아직 없습니다.&lt;/p&gt;
&lt;p&gt;gcc 9에 대한 cuda가 아직 정식으로 출시된 것이 없기 때문에 모든 cuda는 18.04에 맞는 것을 그것도 커맨드로 해결하여야 하고, 그게 귀찮아서 gcc 버전을 바꿨을 때 apt 크랙도 생길 수 있습니다.&lt;/p&gt;
&lt;p&gt;그렇다고 이미 업그레이드를 한 상태에서 우분투 버전 다운그레이드를 하면 bios 건드려야 할 가능성도 있어서 진짜 비추...&lt;/p&gt;
&lt;p&gt;엔비디아도 cuda toolkit 개발할 시간을 줘야하니.. 8월쯤 바꾸는건 ㄱㅊ..5월은 절대 ㄴㄴㄴㄴㄴ)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;바뀐 것&lt;/p&gt;
&lt;p&gt;- 우분투 버전 20.04 gcc 9&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- cuda 버전 10.2&lt;/p&gt;
&lt;p&gt;- cudnn 버전 7.6.5&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;원래는 우분투 18.04였고, gcc 8&lt;/p&gt;
&lt;p&gt;cuda는 9.0&lt;/p&gt;
&lt;p&gt;cudnn은 7.1이었을 겁니다.&lt;/p&gt;
&lt;p&gt;바꾸는 이유는 하나.&lt;/p&gt;
&lt;p&gt;loss함수 커스텀을 9.0에서 하면&lt;/p&gt;
&lt;p&gt;답도 없이 에러가 많이 납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;제 예전글을 보시면 에러 해결 과정이 있는데,&lt;/p&gt;
&lt;p&gt;그 에러를 손쉽게 해결할 수 없는 것이라는 걸 깨닫고 업글을 했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;9.2만 되어도 괜찮았을 것 같은데,(정식 버전이기 떄문에,)&lt;/p&gt;
&lt;p&gt;그냥 욕심 부려서 다 업글한 내용이니,&lt;/p&gt;
&lt;p&gt;나중에 10.2가 자주 쓰이는 버전이 될 때를 위해서 미리 남겨놓는 글이라고 생각해주셨으면 좋겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bz37uw/btqEcmYeEOQ/4sAV1voxqn2fNOdCXV2Jgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bz37uw/btqEcmYeEOQ/4sAV1voxqn2fNOdCXV2Jgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bz37uw/btqEcmYeEOQ/4sAV1voxqn2fNOdCXV2Jgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz37uw%2FbtqEcmYeEOQ%2F4sAV1voxqn2fNOdCXV2Jgk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 가상환경을 만들어줍니다.&lt;/p&gt;
&lt;p&gt;그리고 그 가상환경 안에서 pip 업글이랑 pytorch를 깔아주어야겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pytorch.org/&quot;&gt;https://pytorch.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589527876586&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;PyTorch&quot; data-og-description=&quot;An open source deep learning platform that provides a seamless path from research prototyping to production deployment.&quot; data-og-host=&quot;pytorch.org&quot; data-og-source-url=&quot;https://pytorch.org/&quot; data-og-url=&quot;https://www.pytorch.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bSBeNX/hyF305vqt6/ZHctBdnMkJuxk7OuPMvoXK/img.png?width=2500&amp;amp;height=2500&amp;amp;face=0_0_2500_2500&quot;&gt;&lt;a href=&quot;https://pytorch.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pytorch.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bSBeNX/hyF305vqt6/ZHctBdnMkJuxk7OuPMvoXK/img.png?width=2500&amp;amp;height=2500&amp;amp;face=0_0_2500_2500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;PyTorch&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;An open source deep learning platform that provides a seamless path from research prototyping to production deployment.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;pytorch.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;여기를 보시면 되는데,&lt;/p&gt;
&lt;p&gt;저는 이렇게 하면 된다네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FwPv8/btqEbb4dWee/iqPlpK0bkrzF0hK4hdKz71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FwPv8/btqEbb4dWee/iqPlpK0bkrzF0hK4hdKz71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FwPv8/btqEbb4dWee/iqPlpK0bkrzF0hK4hdKz71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFwPv8%2FbtqEbb4dWee%2FiqPlpK0bkrzF0hK4hdKz71%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;가상환경 만들어주고 activate하면 이렇게 해보아야겠습니다.&lt;/p&gt;
&lt;p&gt;최신 버전의 pytorch니까 아마 큰 문제는 없을 것같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caBInE/btqEcmRt5z6/WpHwkoElqKUwQrWGxvP4V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caBInE/btqEcmRt5z6/WpHwkoElqKUwQrWGxvP4V1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caBInE/btqEcmRt5z6/WpHwkoElqKUwQrWGxvP4V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaBInE%2FbtqEcmRt5z6%2FWpHwkoElqKUwQrWGxvP4V1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 설정해주었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kERRz/btqEaZpssMJ/1WkiGWtckne4XjAWcXrku1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kERRz/btqEaZpssMJ/1WkiGWtckne4XjAWcXrku1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kERRz/btqEaZpssMJ/1WkiGWtckne4XjAWcXrku1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkERRz%2FbtqEaZpssMJ%2F1WkiGWtckne4XjAWcXrku1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 많은 것을 알아서 설치해줍니다.&lt;/p&gt;
&lt;p&gt;이거해서 트레이닝 잘 돌아가면 기존 aod 가상환경을 삭제해줄 예정입니다.&lt;/p&gt;
&lt;p&gt;그 가상환경은 파이토치가 쿠다 9.0에 맞춰진 친구라서 오류가 많기 때문입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCAmqS/btqEbREaFBA/3klldqxIU4RcBPgnabiPn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCAmqS/btqEbREaFBA/3klldqxIU4RcBPgnabiPn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCAmqS/btqEbREaFBA/3klldqxIU4RcBPgnabiPn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCAmqS%2FbtqEbREaFBA%2F3klldqxIU4RcBPgnabiPn0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;컴파일러가 새삥으로 바뀌어서 그런지, 설치 속도가 매우 빠릅니다.&lt;/p&gt;
&lt;p&gt;좋아요&lt;/p&gt;
&lt;p&gt;앗 그런데 pytorch는 시간이 좀 걸리네요&lt;/p&gt;
&lt;p&gt;참고해야겠습니다&lt;/p&gt;
&lt;p&gt;kB단위로 설치가 된다는 것은 조금 아쉽네요..&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;혹시 몰라서 리부트도 해보았는데 그대롭니다.&lt;/p&gt;
&lt;p&gt;그냥 버티기가 답인것같아 일단 기다려보고, 경과를 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czToqI/btqEcmYvq3s/QTsncxM7Idb2uOmZH8CnWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czToqI/btqEcmYvq3s/QTsncxM7Idb2uOmZH8CnWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czToqI/btqEcmYvq3s/QTsncxM7Idb2uOmZH8CnWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczToqI%2FbtqEcmYvq3s%2FQTsncxM7Idb2uOmZH8CnWK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설치가 다 될때까지 버티니까 잘 되었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/307</guid>
      <comments>https://likecode.tistory.com/307#entry307comment</comments>
      <pubDate>Fri, 15 May 2020 16:37:00 +0900</pubDate>
    </item>
    <item>
      <title>CUDNN 설정</title>
      <link>https://likecode.tistory.com/306</link>
      <description>&lt;p&gt;&lt;s&gt;1. cuda 9,0&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;2. cudnn 7.1 설치&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. cuda 10.2&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;2. cudnn 7.6.5 설치&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. conda 4.2.0 설치&lt;/p&gt;
&lt;p&gt;4. 가상환경 생성 aod&lt;/p&gt;
&lt;p&gt;5. requirements.sh 구동&lt;/p&gt;
&lt;p&gt;6. matplotlib&lt;/p&gt;
&lt;p&gt;7. scipy&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;출처:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://likecode.tistory.com/263&quot;&gt;https://likecode.tistory.com/263&lt;/a&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;[For Beginners]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1594785340442&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[우분투 업그레이드 기념] 딥러닝 세팅 A to Z&quot; data-og-description=&quot;우분투를 업그레이드했더니 쿠다랑 그래픽 드라이버가 다 날라간듯하다(추정) (어쩐지 짱빠르드라 아니 근데 가상환경은 안날라갔는데 왜 드라이버는 날라갔지 드라이버자체는 사실 가상환경�&quot; data-og-host=&quot;likecode.tistory.com&quot; data-og-source-url=&quot;https://likecode.tistory.com/263&quot; data-og-url=&quot;https://likecode.tistory.com/263&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/3SLxn/hyGMrnH9kd/cLB8pcLyZlKOze0cq1rRRk/img.png?width=734&amp;amp;height=200&amp;amp;face=0_0_734_200,https://scrap.kakaocdn.net/dn/FeXvk/hyGK8cenNW/HolkfLrYM19Lh1ZJQYLPFK/img.png?width=734&amp;amp;height=200&amp;amp;face=0_0_734_200,https://scrap.kakaocdn.net/dn/XcdJP/hyGK9oINnH/uc0karQVV3oIpiUeymMjc0/img.png?width=812&amp;amp;height=417&amp;amp;face=0_0_812_417&quot;&gt;&lt;a href=&quot;https://likecode.tistory.com/263&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://likecode.tistory.com/263&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/3SLxn/hyGMrnH9kd/cLB8pcLyZlKOze0cq1rRRk/img.png?width=734&amp;amp;height=200&amp;amp;face=0_0_734_200,https://scrap.kakaocdn.net/dn/FeXvk/hyGK8cenNW/HolkfLrYM19Lh1ZJQYLPFK/img.png?width=734&amp;amp;height=200&amp;amp;face=0_0_734_200,https://scrap.kakaocdn.net/dn/XcdJP/hyGK9oINnH/uc0karQVV3oIpiUeymMjc0/img.png?width=812&amp;amp;height=417&amp;amp;face=0_0_812_417');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[우분투 업그레이드 기념] 딥러닝 세팅 A to Z&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;우분투를 업그레이드했더니 쿠다랑 그래픽 드라이버가 다 날라간듯하다(추정) (어쩐지 짱빠르드라 아니 근데 가상환경은 안날라갔는데 왜 드라이버는 날라갔지 드라이버자체는 사실 가상환경�&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;likecode.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기서 일단 내가 한 것은 cuda 10.2로 변경한 것이다.&lt;/p&gt;
&lt;p&gt;그러면 cudnn을 다른 버전을 설치해야하는데 일단은 cudnn이 있는지 없는지부터 확인을 해야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmGhzr/btqD9OPnvRV/ak3bH8KjgP92DNPNChNvdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmGhzr/btqD9OPnvRV/ak3bH8KjgP92DNPNChNvdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmGhzr/btqD9OPnvRV/ak3bH8KjgP92DNPNChNvdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmGhzr%2FbtqD9OPnvRV%2Fak3bH8KjgP92DNPNChNvdK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;없다.&lt;/p&gt;
&lt;p&gt;혹시 몰라서 10.2 라고 적힌 폴더 내부도 확인했는데 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCS0j7/btqEanD2Lb4/F1CzamqMzmxgYwDPqotKmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCS0j7/btqEanD2Lb4/F1CzamqMzmxgYwDPqotKmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCS0j7/btqEanD2Lb4/F1CzamqMzmxgYwDPqotKmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCS0j7%2FbtqEanD2Lb4%2FF1CzamqMzmxgYwDPqotKmK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;자 이제 조금 신중해져야할 시기가 왔다.&lt;/p&gt;
&lt;p&gt;cudnn 경로를 10.2로 설정하거나 symbolic link를 설정해야할 시기가 온 것이다.&lt;/p&gt;
&lt;p&gt;일단은 cudnn경로를 10.2로 설정해보고, 안되면 symbolic link를 설정하는 방향으로 해보겠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qa7oI/btqEcGWpDHG/KH6CzCT2melY1LTjqIEvUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qa7oI/btqEcGWpDHG/KH6CzCT2melY1LTjqIEvUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qa7oI/btqEcGWpDHG/KH6CzCT2melY1LTjqIEvUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqa7oI%2FbtqEcGWpDHG%2FKH6CzCT2melY1LTjqIEvUk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;일단 리눅스 전용으로 다운로드를 할까한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v3Uwj/btqD9tSa7Pj/0Fzi0sbr4bv1QeZN3kdyg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v3Uwj/btqD9tSa7Pj/0Fzi0sbr4bv1QeZN3kdyg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v3Uwj/btqD9tSa7Pj/0Fzi0sbr4bv1QeZN3kdyg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv3Uwj%2FbtqD9tSa7Pj%2F0Fzi0sbr4bv1QeZN3kdyg1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;다운로드를 잘 받았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/exfhQW/btqEcHgIUKi/KRqiHehn4bsgU5Xof1L8zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/exfhQW/btqEcHgIUKi/KRqiHehn4bsgU5Xof1L8zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/exfhQW/btqEcHgIUKi/KRqiHehn4bsgU5Xof1L8zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FexfhQW%2FbtqEcHgIUKi%2FKRqiHehn4bsgU5Xof1L8zk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;압축해제 완료.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://igotit.tistory.com/entry/cuDNN-Ubuntu-%EC%97%90-%EC%84%A4%EC%B9%98&quot;&gt;https://igotit.tistory.com/entry/cuDNN-Ubuntu-%EC%97%90-%EC%84%A4%EC%B9%98&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589526659834&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;cuDNN. Ubuntu 에 설치.&quot; data-og-description=&quot;Overview cuDNN 을 운영체제 우분투에서 다운로드 받고 cuDNN 라이브러리 사용가능 상태 만들기. 참고 cuDNN 을 windows에서 다운로드하기 -&amp;gt; http://igotit.tistory.com/573 cuDNN 5.1 for CUDA 8.0 을 Ubuntu 16..&quot; data-og-host=&quot;igotit.tistory.com&quot; data-og-source-url=&quot;https://igotit.tistory.com/entry/cuDNN-Ubuntu-%EC%97%90-%EC%84%A4%EC%B9%98&quot; data-og-url=&quot;https://igotit.tistory.com/entry/cuDNN-Ubuntu-%EC%97%90-%EC%84%A4%EC%B9%98&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kPVSV/hyF3TL4WH6/5SeHyY1tlUT9yLtsdDjeX1/img.png?width=800&amp;amp;height=709&amp;amp;face=0_0_800_709,https://scrap.kakaocdn.net/dn/cw6p68/hyF2HT0ISs/5CKsZVc2zVmjqOj0b825ck/img.png?width=800&amp;amp;height=709&amp;amp;face=0_0_800_709,https://scrap.kakaocdn.net/dn/c8zEFa/hyF2F2YaH7/1iCWGGUkXPoLs1XtK3GIJk/img.png?width=800&amp;amp;height=709&amp;amp;face=0_0_800_709&quot;&gt;&lt;a href=&quot;https://igotit.tistory.com/entry/cuDNN-Ubuntu-%EC%97%90-%EC%84%A4%EC%B9%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://igotit.tistory.com/entry/cuDNN-Ubuntu-%EC%97%90-%EC%84%A4%EC%B9%98&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kPVSV/hyF3TL4WH6/5SeHyY1tlUT9yLtsdDjeX1/img.png?width=800&amp;amp;height=709&amp;amp;face=0_0_800_709,https://scrap.kakaocdn.net/dn/cw6p68/hyF2HT0ISs/5CKsZVc2zVmjqOj0b825ck/img.png?width=800&amp;amp;height=709&amp;amp;face=0_0_800_709,https://scrap.kakaocdn.net/dn/c8zEFa/hyF2F2YaH7/1iCWGGUkXPoLs1XtK3GIJk/img.png?width=800&amp;amp;height=709&amp;amp;face=0_0_800_709');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;cuDNN. Ubuntu 에 설치.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Overview cuDNN 을 운영체제 우분투에서 다운로드 받고 cuDNN 라이브러리 사용가능 상태 만들기. 참고 cuDNN 을 windows에서 다운로드하기 -&amp;gt; http://igotit.tistory.com/573 cuDNN 5.1 for CUDA 8.0 을 Ubuntu 16..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;igotit.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;그리고 이 글을 참고하여&lt;/p&gt;
&lt;p&gt;내가 붙여놓은 경로에 대하여 코드를 변형해서 이동했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1589526721393&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo cp ./cudnn.h /usr/local/cuda-10.2/include
sudo cp ./libcudnn* /usr/local/cuda-10.2/lib64

sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h /usr/local/cuda-10.2/lib64/libcudnn*&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ra5TQ/btqEal7fnA3/MME72b86xdC1eelt9Cfa5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ra5TQ/btqEal7fnA3/MME72b86xdC1eelt9Cfa5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ra5TQ/btqEal7fnA3/MME72b86xdC1eelt9Cfa5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRa5TQ%2FbtqEal7fnA3%2FMME72b86xdC1eelt9Cfa5k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이제 cudnn도 준비되었다&lt;/p&gt;
&lt;p&gt;그러면 이제 aod가상환경은 내버려두고 새로운 가상환경을 만들어보아야겠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/306</guid>
      <comments>https://likecode.tistory.com/306#entry306comment</comments>
      <pubDate>Fri, 15 May 2020 16:16:19 +0900</pubDate>
    </item>
    <item>
      <title>또 그 쿠다 오늘은 해결하자(우분투 20.04에서 쿠다 깔기)+수정</title>
      <link>https://likecode.tistory.com/305</link>
      <description>&lt;p&gt;&lt;b&gt;+ 7월 9일자 추가 글)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;이 당시에는 엔비디아에서 우분투 20.04 에 대한 cuda 파일을 제공하지 않던 시기였고,&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;그래서 제가 찾은 내용을 정리해둔 글이었는데,&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;댓글을 보니 업데이트가 된 모양이더라구요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;릴리즈 노트 링크를 가져왔습니다. 7월에 릴리즈 되었네요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;당시에 cmd 명령어로 설치하는 경우에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;sudo apt install nvidia-cuda-toolkit 이거만 설치하는 경우에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;설치가 덜 되고 nvcc에서 드라이버가 잡히지 않는 문제가 있었어서 정리한 글이었습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;우분투 사용자들 기뻐하는 소리가 들립니다~~~&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;https://docs.nvidia.com/cuda/pdf/CUDA_Toolkit_Release_Notes.pdf&quot;&gt;https://docs.nvidia.com/cuda/pdf/CUDA_Toolkit_Release_Notes.pdf&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;글을 수정하긴 했는데, 저는 수정 전 방식으로 해서 성공하였고, 수정한 내용은 1804를 2004로 수정한 것이 다입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;그래서 수정 후의 제 글을 보시고 나서는 제가 직접 해본 내용이 아니기 때문에 잘 안되실 수도 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;이점 유의해주시고 읽어주시길 바랍니다. 감사합니다.&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;음 어제 오랜만에 와인 아니고 다른 술을 먹고 왔더니 속이 좀 쓰리당&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래도 오늘도 화이팅&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오늘은 nvidia관련 파일들을 싹 밀어보겠다&lt;/p&gt;
&lt;p&gt;gcc가 nvidia안에 설치되는 것인지... 잘 모르겠지만 경로 파악을 해보니&amp;nbsp;&lt;/p&gt;
&lt;p&gt;잘 설치되지 않았던 cuda 10-2 디렉토리 안에 bin안에 gcc가 존재하는 것을 확인했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단 더 공부하면서 해결해야겠다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H27Mz/btqEcmwGG6T/aJs72TVsH3fbD36rtyhg91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H27Mz/btqEcmwGG6T/aJs72TVsH3fbD36rtyhg91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H27Mz/btqEcmwGG6T/aJs72TVsH3fbD36rtyhg91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH27Mz%2FbtqEcmwGG6T%2FaJs72TVsH3fbD36rtyhg91%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;폴더와 내용물을 지웠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://linuxconfig.org/how-to-install-cuda-on-ubuntu-20-04-focal-fossa-linux&quot;&gt;https://linuxconfig.org/how-to-install-cuda-on-ubuntu-20-04-focal-fossa-linux&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589515206448&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;How to install CUDA on Ubuntu 20.04 Focal Fossa Linux - LinuxConfig.org&quot; data-og-description=&quot;Setup Nvida CUDA repository. NOTEAt the time of writing the Ubuntu 20.04 Cuda driver version is not yet available. From this reason we will resort to the the latest stable version which made for Ubuntu 18.04. Execute the following commands to enable CUDA r&quot; data-og-host=&quot;linuxconfig.org&quot; data-og-source-url=&quot;https://linuxconfig.org/how-to-install-cuda-on-ubuntu-20-04-focal-fossa-linux&quot; data-og-url=&quot;https://linuxconfig.org/how-to-install-cuda-on-ubuntu-20-04-focal-fossa-linux&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://linuxconfig.org/how-to-install-cuda-on-ubuntu-20-04-focal-fossa-linux&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://linuxconfig.org/how-to-install-cuda-on-ubuntu-20-04-focal-fossa-linux&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to install CUDA on Ubuntu 20.04 Focal Fossa Linux - LinuxConfig.org&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Setup Nvida CUDA repository. NOTEAt the time of writing the Ubuntu 20.04 Cuda driver version is not yet available. From this reason we will resort to the the latest stable version which made for Ubuntu 18.04. Execute the following commands to enable CUDA r&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;linuxconfig.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;정말 다행히도&lt;/p&gt;
&lt;p&gt;리눅스 20.04버전을 위한 친구를 찾았따&lt;/p&gt;
&lt;p&gt;5월 4일 글이므로 그 전 사람들은 이미 고통을 받았을 것이라고 생각한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단 이 구문을 그대로 쳐주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1589515665919&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt update
$ sudo apt install nvidia-cuda-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o8dfw/btqEbQdJzyi/3VJ67yi1Y3AAvofKb16Mi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o8dfw/btqEbQdJzyi/3VJ67yi1Y3AAvofKb16Mi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o8dfw/btqEbQdJzyi/3VJ67yi1Y3AAvofKb16Mi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo8dfw%2FbtqEbQdJzyi%2F3VJ67yi1Y3AAvofKb16Mi1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설치중... 과연 오늘은 할 수 있을까?&lt;/p&gt;
&lt;p&gt;할수있게 밤을 새서라도 완료하고 집가자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7ZJg8/btqEa0g4gtQ/uaZFI9fjoJ4J3gpZf4Vg31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7ZJg8/btqEa0g4gtQ/uaZFI9fjoJ4J3gpZf4Vg31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7ZJg8/btqEa0g4gtQ/uaZFI9fjoJ4J3gpZf4Vg31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7ZJg8%2FbtqEa0g4gtQ%2FuaZFI9fjoJ4J3gpZf4Vg31%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;일단 엔비디아 드라이버는 다운로드 받았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lCiH5/btqEbaX4iMt/4tY6vkgRvFJzs4VWXJxNI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lCiH5/btqEbaX4iMt/4tY6vkgRvFJzs4VWXJxNI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lCiH5/btqEbaX4iMt/4tY6vkgRvFJzs4VWXJxNI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlCiH5%2FbtqEbaX4iMt%2F4tY6vkgRvFJzs4VWXJxNI1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 설정을 바꾸어주고,&lt;/p&gt;
&lt;p&gt;리부트 해야겠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;리부트 하고,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;수정 전 내용--글 펼치시면 수정 전 내용이 나옵니다.&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;이거는 우분투 20.04를 엔비디아에서 제공 안했을 때의 상황입니다. 참고해주세요.&lt;/p&gt;
&lt;pre id=&quot;code_1594276848939&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이걸로 깔아주시면 됩니다.(댓글을 보고 수정하였습니다. AIresearcher님 감사합니다.)&lt;/p&gt;
&lt;pre id=&quot;code_1594276829369&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RTLvW/btqEbu9SngB/2ya9E9mlhSs1EoBtKn5Id1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RTLvW/btqEbu9SngB/2ya9E9mlhSs1EoBtKn5Id1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RTLvW/btqEbu9SngB/2ya9E9mlhSs1EoBtKn5Id1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRTLvW%2FbtqEbu9SngB%2F2ya9E9mlhSs1EoBtKn5Id1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 입력해주자.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;수정 전 내용--글 펼치시면 수정 전 내용이 나옵니다.&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1594277013277&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo add-apt-repository &quot;deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;수정 후 내용 &lt;span style=&quot;color: #333333;&quot;&gt;(댓글을 보고 수정하였습니다. AIresearcher님 감사합니다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1594277036507&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
$ sudo add-apt-repository &quot;deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqGxHC/btqD9Oareiu/FnbT99kGhCm8VVvkc6NO80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqGxHC/btqD9Oareiu/FnbT99kGhCm8VVvkc6NO80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqGxHC/btqD9Oareiu/FnbT99kGhCm8VVvkc6NO80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqGxHC%2FbtqD9Oareiu%2FFnbT99kGhCm8VVvkc6NO80%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 하면 이렇게 나온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1589517764475&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt install cuda&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그리고 이렇게 입력을 해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pgVFG/btqEbb3Rhy4/hrCowSN7j4IFOsbiJDFmX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pgVFG/btqEbb3Rhy4/hrCowSN7j4IFOsbiJDFmX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pgVFG/btqEbb3Rhy4/hrCowSN7j4IFOsbiJDFmX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpgVFG%2FbtqEbb3Rhy4%2FhrCowSN7j4IFOsbiJDFmX0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;아니 잠만요.. 19시간 실화?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ㅎㅎ...일단 모든 프로세스를 설치에 집중할 수 있게 다 끄고 해봐야겠다.&lt;/p&gt;
&lt;p&gt;음... 이게 최선인것같다&lt;/p&gt;
&lt;p&gt;wget을 빨리 받는 회선 설정에는 성공하였지만, install은 아무리 빠르게 해봤자 이게 최선이구나...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;RAM을 새걸로 낄수도 없고.. ㅠㅠ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기다림밖에 답이 없는 듯하다&lt;/p&gt;
&lt;p&gt;기다리는 중에 로스 함수 디자인과 논문 읽기를 해야겠다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa&quot;&gt;https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1589523119777&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;How to switch between multiple GCC and G++ compiler versions on Ubuntu 20.04 LTS Focal Fossa - LinuxConfig.org&quot; data-og-description=&quot;Conventions # - requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command $ - requires given linux commands to be executed as a regular non-privileged user&quot; data-og-host=&quot;linuxconfig.org&quot; data-og-source-url=&quot;https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa&quot; data-og-url=&quot;https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to switch between multiple GCC and G++ compiler versions on Ubuntu 20.04 LTS Focal Fossa - LinuxConfig.org&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Conventions # - requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command $ - requires given linux commands to be executed as a regular non-privileged user&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;linuxconfig.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;요거를 보고,&lt;/p&gt;
&lt;p&gt;다시 재부팅을 해서&lt;/p&gt;
&lt;p&gt;지금은 잘 설치되는지를 보아야겠다&lt;/p&gt;
&lt;p&gt;아니 설치가 어지간 해야지 점점 느려져서 26일이 걸린다고 하니까 그냥 껐다 일단은.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;생각을 계속 해보았다,&lt;/p&gt;
&lt;p&gt;뭐가 문제일까.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 gcc 버전을 바꾸어서&lt;/p&gt;
&lt;p&gt;apt-get을 업데이트하고, 업그레이드를 했는데도&lt;/p&gt;
&lt;p&gt;성능이 뭔가 잘 안나오는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;알고보니 ppa repository 설정이 아직 7로만 되어있어서(어제의 삽질)&lt;/p&gt;
&lt;p&gt;그런 것이었다.&lt;/p&gt;
&lt;p&gt;그래서 9로도 설정해주었더니&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdjVpM/btqEcTnCn3q/e8g8dcGEv0410tRgKRvIdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdjVpM/btqEcTnCn3q/e8g8dcGEv0410tRgKRvIdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdjVpM/btqEcTnCn3q/e8g8dcGEv0410tRgKRvIdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdjVpM%2FbtqEcTnCn3q%2Fe8g8dcGEv0410tRgKRvIdk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;빠른거보소.. 아까는 이거 26일까지 걸린다고 나오던 다운로드입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;설치가 잘 안된다 &amp;gt; apt -get을 업뎃, 업그레이드로 건드리면 됩니다.&lt;/p&gt;
&lt;p&gt;근데 그것도 안된다, 그러면 컴파일러 버전이 구버전은 아닌지 확인하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;음 중간에 apt-get이 crack되어서&lt;/p&gt;
&lt;p&gt;그냥 bash상에서 추천해주는 복구 command썼더니 잘 복구되었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MyWQx/btqEa0u1nTP/Nyq6m9o4nBoCkkfZrXAZh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MyWQx/btqEa0u1nTP/Nyq6m9o4nBoCkkfZrXAZh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MyWQx/btqEa0u1nTP/Nyq6m9o4nBoCkkfZrXAZh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMyWQx%2FbtqEa0u1nTP%2FNyq6m9o4nBoCkkfZrXAZh0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;bashrc의 path까지 수정하고 나니, 아주 예쁘게 설치가 완료 되었다!!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/305</guid>
      <comments>https://likecode.tistory.com/305#entry305comment</comments>
      <pubDate>Fri, 15 May 2020 13:22:27 +0900</pubDate>
    </item>
    <item>
      <title>THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp에러 해결과정</title>
      <link>https://likecode.tistory.com/302</link>
      <description>&lt;p&gt;loss 함수를 만들고 디자인하는 과정에서 제목과 같은 에러가 생겼다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 뭐지? 하고 찾아보니까&lt;/p&gt;
&lt;p&gt;torch를 업데이트 하라는 의견이 많았다.&lt;/p&gt;
&lt;p&gt;그래서 이렇게 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwDga2/btqD1pOLfB8/VQVjHNDmr9kRr3adcwGCzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwDga2/btqD1pOLfB8/VQVjHNDmr9kRr3adcwGCzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwDga2/btqD1pOLfB8/VQVjHNDmr9kRr3adcwGCzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwDga2%2FbtqD1pOLfB8%2FVQVjHNDmr9kRr3adcwGCzk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;나중에 연구할 때 참고하도록하자!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아 근데 RuntimeError: CuDNN error: CUDNN_STATUS_SUCCESS 이런 에러가 떠서 찾아보니까 cuda를 9.2로 업데이트를 하고 pytorch도 9.2버전으로 업데이트를 하라고 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어렵고 험난하구나...&lt;/p&gt;
&lt;p&gt;일단 해보자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아 당떨어진다ㅎㅎ 일단 오늘은 다운로드 먼저 해보자.&lt;/p&gt;
&lt;p&gt;새로운 환경셋팅을 다시 해야겠다...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GfOYL/btqD0h4NbdV/Kd4Wj7kSou0CxNFl0DCsn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GfOYL/btqD0h4NbdV/Kd4Wj7kSou0CxNFl0DCsn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GfOYL/btqD0h4NbdV/Kd4Wj7kSou0CxNFl0DCsn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGfOYL%2FbtqD0h4NbdV%2FKd4Wj7kSou0CxNFl0DCsn0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그냥 9.0인데 9.2로 돌리면 이렇게 나온다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;conda install pytorch torchvision cudatoolkit&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;9.2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;c pytorch&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;nightly &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;c defaults &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;c conda&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;forge &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;c numba&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;dev&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참고한 곳은 여기다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/61068181/anaconda-update-pytorch-to-the-latest-version-1-5&quot;&gt;https://stackoverflow.com/questions/61068181/anaconda-update-pytorch-to-the-latest-version-1-5&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1588941731546&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Anaconda, update Pytorch to the latest version 1.5&quot; data-og-description=&quot;How could I update PyTorch from 1.4 -&amp;gt; 1.5 using Anaconda either through terminal or navigator? Updating Anaconda with conda update --all updated some of the packages, not all, PyTorch included.&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/61068181/anaconda-update-pytorch-to-the-latest-version-1-5&quot; data-og-url=&quot;https://stackoverflow.com/questions/61068181/anaconda-update-pytorch-to-the-latest-version-1-5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/miTMo/hyFYKBFdGe/TTmDgKwJlulVr8T6jAFKEK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/61068181/anaconda-update-pytorch-to-the-latest-version-1-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/61068181/anaconda-update-pytorch-to-the-latest-version-1-5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/miTMo/hyFYKBFdGe/TTmDgKwJlulVr8T6jAFKEK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Anaconda, update Pytorch to the latest version 1.5&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;How could I update PyTorch from 1.4 -&amp;gt; 1.5 using Anaconda either through terminal or navigator? Updating Anaconda with conda update --all updated some of the packages, not all, PyTorch included.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;스트레스 받아서 뭔가를 먹고와야겠다.&lt;/p&gt;
&lt;p&gt;잊어버리지 않게 적어두는 건데,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;돌아와서 여기&lt;a href=&quot;https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-together-with-9-2-on-Ubuntu-18-04-with-support-for-NVIDIA-20XX-Turing-GPUs-1236/&quot;&gt;https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-together-with-9-2-on-Ubuntu-18-04-with-support-for-NVIDIA-20XX-Turing-GPUs-1236/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1588941756325&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How To Install CUDA 10 (together with 9.2) on Ubuntu 18.04 with support for NVIDIA 20XX Turing GPUs&quot; data-og-description=&quot;NVIDIA recently released version 10.0 of CUDA. This is an upgrade from the 9.x series and has support for the new Turing GPU architecture. This CUDA version has full support for Ubuntu 18.4 as well as 16.04 and 14.04. The CUDA 10.0 release is bundled with &quot; data-og-host=&quot;www.pugetsystems.com&quot; data-og-source-url=&quot;https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-together-with-9-2-on-Ubuntu-18-04-with-support-for-NVIDIA-20XX-Turing-GPUs-1236/&quot; data-og-url=&quot;https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-together-with-9-2-on-Ubuntu-18-04-with-support-for-NVIDIA-20XX-Turing-GPUs-1236/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bs0Ur6/hyFXgoFi9L/uI1WaQXkUI8LbA63bP6oMk/img.jpg?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/7jX99/hyFXd6xSFJ/liaILnyTTx1nHRjokP29X0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/cuyeMc/hyFYwQV95T/cgWX7pR0JE6wOyYUrYLMZK/img.jpg?width=1115&amp;amp;height=1032&amp;amp;face=0_0_1115_1032&quot;&gt;&lt;a href=&quot;https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-together-with-9-2-on-Ubuntu-18-04-with-support-for-NVIDIA-20XX-Turing-GPUs-1236/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-together-with-9-2-on-Ubuntu-18-04-with-support-for-NVIDIA-20XX-Turing-GPUs-1236/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bs0Ur6/hyFXgoFi9L/uI1WaQXkUI8LbA63bP6oMk/img.jpg?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/7jX99/hyFXd6xSFJ/liaILnyTTx1nHRjokP29X0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/cuyeMc/hyFYwQV95T/cgWX7pR0JE6wOyYUrYLMZK/img.jpg?width=1115&amp;amp;height=1032&amp;amp;face=0_0_1115_1032');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How To Install CUDA 10 (together with 9.2) on Ubuntu 18.04 with support for NVIDIA 20XX Turing GPUs&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;NVIDIA recently released version 10.0 of CUDA. This is an upgrade from the 9.x series and has support for the new Turing GPU architecture. This CUDA version has full support for Ubuntu 18.4 as well as 16.04 and 14.04. The CUDA 10.0 release is bundled with&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.pugetsystems.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;이거랑&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/&quot;&gt;https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1588941810489&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How to install CUDA 9.2 on Ubuntu 18.04&quot; data-og-description=&quot;If you are wanting to use Ubuntu 18.04 and also want a CUDA install this post should help you get that working.&quot; data-og-host=&quot;www.pugetsystems.com&quot; data-og-source-url=&quot;https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/&quot; data-og-url=&quot;https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mtY9d/hyFXkxOtpd/1XLdwHL2DT94mbj1uPdrwk/img.jpg?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Ao9va/hyFXpy6Zdk/Gr0Bq7xgD2KtIs3my3Dvvk/img.jpg?width=1102&amp;amp;height=964&amp;amp;face=0_0_1102_964,https://scrap.kakaocdn.net/dn/AuGRf/hyFXrcDE4P/DDw2QTWZZlmIIFjU2OZ2Ak/img.jpg?width=987&amp;amp;height=309&amp;amp;face=0_0_987_309&quot;&gt;&lt;a href=&quot;https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mtY9d/hyFXkxOtpd/1XLdwHL2DT94mbj1uPdrwk/img.jpg?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Ao9va/hyFXpy6Zdk/Gr0Bq7xgD2KtIs3my3Dvvk/img.jpg?width=1102&amp;amp;height=964&amp;amp;face=0_0_1102_964,https://scrap.kakaocdn.net/dn/AuGRf/hyFXrcDE4P/DDw2QTWZZlmIIFjU2OZ2Ak/img.jpg?width=987&amp;amp;height=309&amp;amp;face=0_0_987_309');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to install CUDA 9.2 on Ubuntu 18.04&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;If you are wanting to use Ubuntu 18.04 and also want a CUDA install this post should help you get that working.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.pugetsystems.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;이거 읽어봐서 9.2랑 9.0 동시에 설치하도록 한다.&lt;/p&gt;
&lt;p&gt;이거 동시에 설치하는 거 정리해서 블로그에 올려둬야 하니까 이번에 대규모로 기왕하는거 드라이브 정리도 싹하고&lt;/p&gt;
&lt;p&gt;코드 정리도 싹해서 결과로 정리해두자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주말의 나 화이팅..&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/302</guid>
      <comments>https://likecode.tistory.com/302#entry302comment</comments>
      <pubDate>Fri, 8 May 2020 21:30:04 +0900</pubDate>
    </item>
    <item>
      <title>[우분투] USB access안될 때</title>
      <link>https://likecode.tistory.com/301</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot;&gt;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1588840179609&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How to Manually Mount/UnMount a USB Device on Ubuntu&quot; data-og-description=&quot;When you plug in a USB drive on our system, it usually mounts automatically; creating a directory by your username under the media folder. You can also access it through the file manager running on your system. Unfortunately, this is&quot; data-og-host=&quot;vitux.com&quot; data-og-source-url=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot; data-og-url=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qUpq0/hyFXjkgKpK/FTPo5s06mNqzzfwvHy9qcK/img.jpg?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512&quot;&gt;&lt;a href=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://vitux.com/how-to-manually-mount-unmount-a-usb-device-on-ubuntu/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qUpq0/hyFXjkgKpK/FTPo5s06mNqzzfwvHy9qcK/img.jpg?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to Manually Mount/UnMount a USB Device on Ubuntu&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;When you plug in a USB drive on our system, it usually mounts automatically; creating a directory by your username under the media folder. You can also access it through the file manager running on your system. Unfortunately, this is&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;vitux.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이거 참고하면 된다.&lt;/p&gt;
&lt;p&gt;무조건 된다.&lt;/p&gt;
&lt;p&gt;그냥 하란대로 하면 된다.&lt;/p&gt;
&lt;p&gt;내 usb 경로는 sdc1이었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들/잡설</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/301</guid>
      <comments>https://likecode.tistory.com/301#entry301comment</comments>
      <pubDate>Thu, 7 May 2020 17:30:14 +0900</pubDate>
    </item>
    <item>
      <title>[opencv] 에서 사용할 수 있는 이미지 conversion 종류</title>
      <link>https://likecode.tistory.com/300</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html&quot;&gt;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1588319239645&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OpenCV: Color conversions&quot; data-og-description=&quot;See cv::cvtColor and cv::ColorConversionCodes Todo:document other conversion modes RGB \(\leftrightarrow\) GRAY Transformations within RGB space like adding/removing the alpha channel, reversing the channel order, conversion to/from 16-bit RGB color (R5:G6&quot; data-og-host=&quot;docs.opencv.org&quot; data-og-source-url=&quot;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html&quot; data-og-url=&quot;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;OpenCV: Color conversions&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;See cv::cvtColor and cv::ColorConversionCodes Todo:document other conversion modes RGB \(\leftrightarrow\) GRAY Transformations within RGB space like adding/removing the alpha channel, reversing the channel order, conversion to/from 16-bit RGB color (R5:G6&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.opencv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기를 확인하면 알 수 있다.&lt;/p&gt;
&lt;p&gt;이미지 비트수에 따라 다른 conversion을 사용한다고 하는데,&lt;/p&gt;
&lt;p&gt;통상적으로 사용하는 코드의 경우, 8bit 짜리 이미지의 해당하는 자료형을 사용하는 것 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;개인적으로 관심있는 Hue관련 자료형들은 hue를 대부분 절반을 자른 0-179의 range로 구성되어있어서&lt;/p&gt;
&lt;p&gt;기존 실험을 진행하는 사람들이 cv2나 cv 라이브러리르 사용한다면,&lt;/p&gt;
&lt;p&gt;라이브러리간 이미지를 전달할 때 해당 라이브러리에 맞는 normalization을 진행해주지 않으면&lt;/p&gt;
&lt;p&gt;잘 인식이 되지 않을 수있어 조심해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;진짜 앞이 하나도 안보이지만&lt;/p&gt;
&lt;p&gt;언젠가는 해결할 수 있을 것이라고 생각한다.&lt;/p&gt;
&lt;p&gt;계속 하다보면 제대로 된 것이 얻어걸릴거라는 믿음을 가지고 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아 그리고 요새 다이어리 꾸미기를 하고 있다.&lt;/p&gt;
&lt;p&gt;다이어리에 좋은 내용을 채우기 위해서&lt;/p&gt;
&lt;p&gt;더 좋은 연구를 하려고 하는 편이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;화이팅!&lt;/p&gt;</description>
      <category>2021 이전 자료들/Multimedia</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/300</guid>
      <comments>https://likecode.tistory.com/300#entry300comment</comments>
      <pubDate>Fri, 1 May 2020 16:48:25 +0900</pubDate>
    </item>
    <item>
      <title>[Deep Learning] Normalization에 대해서 알아봅시다.</title>
      <link>https://likecode.tistory.com/296</link>
      <description>&lt;p&gt;먼저 Normalization에 대한 설명을 들어가기 전에 이걸 알아봅시다.&lt;/p&gt;
&lt;p&gt;Normalization은 왜 사용하는 것일까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;학습 데이터가 중복이 있는 것도 아닌데 데이터베이스마냥 정규화를 사용하니&lt;/p&gt;
&lt;p&gt;왜 사용하는지 이해가 잘 안되어서 저도 궁금했습니다.&lt;/p&gt;
&lt;p&gt;제가 이해한 대로 적었지만, 정확한 책의 내용을 가져온 것은 아니고&lt;/p&gt;
&lt;p&gt;영어 잘 못하는 제가 해석해서 쉽게 제 스스로 이해할 수 있게 분석한 것이니,&lt;/p&gt;
&lt;p&gt;혹시 읽으시면서 음 아닌데? 싶은 부분이 있으시다면 언제든지 태클을 걸어주세요!&lt;/p&gt;
&lt;p&gt;환영입니다~&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;학습이 진행되면서 데이터의 분포가 어떤 분포를 띄게 됩니다.&lt;/p&gt;
&lt;p&gt;고등학교 때 통계를 배울 때 가우시안 함수 분포에 대해서 배웠듯이&lt;/p&gt;
&lt;p&gt;특정 함수 모양으로 데이터가 분포하게 될 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어서, 고양이와 강아지 사진을 분류한다고 했을 때,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;고양이 사진은 x요소값이 크고,&lt;/p&gt;
&lt;p&gt;강아지 사진은 y요소값이 큰 분포가 나올 수 있다고 해봅시다.&lt;/p&gt;
&lt;p&gt;그러면 어떤 사진을 입력 받는다고 가정했을 때&lt;/p&gt;
&lt;p&gt;x요소 값이 크다면 고양이 사진일 것이다! 라고 가정하는 것이 기계학습의 예시가 되겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 말입니다.&lt;/p&gt;
&lt;p&gt;단순히 고양이와 강아지를 분류하게 되는 기준이 이렇게 간단하지는 않습니다.&lt;/p&gt;
&lt;p&gt;예시를 쉽게 들어서 그렇지 사실은 더 많고 많은 기준에 따라서 고양이와 강아지를 분류하게 될 것입니다.&lt;/p&gt;
&lt;p&gt;그러면 그 기준들 모두에 부합하는 고양이 사진이 있을 수 있고,&lt;/p&gt;
&lt;p&gt;일부는 고양이 사진인데도 강아지 사진으로 분류될 수 있는 특징을 가지고 있을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;뭐 고양이는 물을 싫어한다는 특징이 있어서 주변에 물로 추정되는 것이 있으면&lt;/p&gt;
&lt;p&gt;고양이 사진이 아니다, 이런 기준이 고양이 사진을 분류하는 요소 중 하나라고 가정해봅시다.&lt;/p&gt;
&lt;p&gt;만약 물에서 놀고 있는 변종 고양이 사진으로 학습을 진행하게 되면 어떻게 될까요?&lt;/p&gt;
&lt;p&gt;그러면 물에 들어간 강아지 사진을 고양이 사진이라고 분류할 수 있는 문제가 생겨버립니다.&lt;/p&gt;
&lt;p&gt;이 문제를 과적합이라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;과적합: 학습된 모델이 기존 데이터는 잘 동작하였지만, 새로운 데이터에 대해서는 잘 동작하지 않는 현상&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;이 문제를 해결하기 위해서는 여러 방법들이 있는데,&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. 데이터를 많이 집어넣는 방법이 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;물에 들어간 고양이 사진은 하나이고, 물에 들어간 강아지 사진은 100개라면,&lt;/p&gt;
&lt;p&gt;물에 들어간 강아지 사진을 보았을 때, 강아지 사진이라고 분류하는 기준의 가중치가 더 높겠죠?&lt;/p&gt;
&lt;p&gt;또한, 엄청 많은 데이터를 기준으로 학습하게 되면,&lt;/p&gt;
&lt;p&gt;물에 들어간 고양이 사진을 보게 되어도, 무조건 강아지! 라고 분류하진 않고, 고양이일수도 있다!&lt;/p&gt;
&lt;p&gt;비중도 존재하게 될 것입니다.&lt;/p&gt;
&lt;p&gt;그런데 데이터가 많이 없는 실험이다 그러면,&lt;/p&gt;
&lt;p&gt;데이터를 확대시키고, 자르고 돌리고 흐리게 하고 등등 변형을 가해서 한 사진을 여러 버전으로 만들어서&lt;/p&gt;
&lt;p&gt;데이터를 증식 시키는 방법도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 데이터를 일부 잘라내는 방식도 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;심사위원들이 점수를 매길 때도 비슷한 원리를 적용하고 있는데,&lt;/p&gt;
&lt;p&gt;보통 극단적으로 점수를 낮게 주는 심사위원이 있고,&lt;/p&gt;
&lt;p&gt;극단적으로 점수를 후하게 주는 심사위원이 있는 경우를 대비해서&lt;/p&gt;
&lt;p&gt;가장 최고점과 최저점을 뺀 평균 점수를 심사에 반영하는 심사방식이 있습니다.&lt;/p&gt;
&lt;p&gt;이런 것을&lt;span&gt;&amp;nbsp;&lt;/span&gt;데이터의 탈락으로 데이터를 정규화한 예시가 될 수 있습니다.&lt;/p&gt;
&lt;p&gt;결국 아까 든 물에 든 고양이 사진을 탈락시키는 경우,&lt;/p&gt;
&lt;p&gt;물과 고양이가 무조건 연관된 것이다 라고 학습하게 되는 일은 줄어들게 되는 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. 데이터를 부드럽게 만드는 방식도 있어야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;한국인은 김치를 좋아한다라는 가설을 만들기 위해서 여러 한국인들의 의견을 받아본다고 해봅시다.&lt;/p&gt;
&lt;p&gt;김치를 좋아하는 사람의 비율이 0.666666... 이런식으로 무한정으로 소수로 진행되는 경우도 있을 것이고,&lt;/p&gt;
&lt;p&gt;뭐 상황에 따라서 숫자가 0.248232498823749... 이렇게 알 수 없는 숫자의 나열들로 연산을 계속할 수도 있을 것입니다.&lt;/p&gt;
&lt;p&gt;이럴 때 이런 숫자들의 자릿수를 적당히 커트할 수 있는 방식도 존재해야 합니다.&lt;/p&gt;
&lt;p&gt;또한, 데이터 자체의 숫자로 따지면 백만명의 의견을 받았을 지라도 확률적으로 계산하여&lt;/p&gt;
&lt;p&gt;숫자 자체의 크고 작음에 의해 학습이 더뎌지는 문제를 해결할 수도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. 데이터의 범주를 줄이는 것도 필요합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;중고 차량의 거래 가격을 예측하는 시스템을 만든다고 가정했을 때,&lt;/p&gt;
&lt;p&gt;중고 차량의 주행 거리는 몇 km 로 끝나는 것이 아니라 몇 만 km까지도 갈 수 있습니다.&lt;/p&gt;
&lt;p&gt;그런데, 이 주행 거리와 엔진 효율 등의 수치는 각각 다르기 때문에 이 수치들을 모두 0과 1 사이의 값으로 바꾸어주어야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5. batch normalizaton&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;학습을 진행하는 동안 특정 데이터가 어떤 뉴런에 유달리 매우 큰 값을 전달하게 된다면 어떻게 될까요?&lt;/p&gt;
&lt;p&gt;예를 들어서 겁나 불 수능 문제가 나왔는데 이번 대입 결과를 예측하는 시스템을 만든다고 생각해봅시다.&lt;/p&gt;
&lt;p&gt;그런데 그 불 수능을 본 학생들의 시험 성적이 다 엉망이었는데&lt;/p&gt;
&lt;p&gt;한 영재가 수능을 만점을 받았다고 해봅시다.&lt;/p&gt;
&lt;p&gt;그리고 그 다음 타자가 만점이 아닌 80점 이하의 점수라고 가정&quot; 해봅시다.&lt;/p&gt;
&lt;p&gt;그러면 그 영재의 점수를 대입 예측 결과에 반영하게 되면 영재의 점수는&lt;/p&gt;
&lt;p&gt;다른 사람들과 달리 훤씬 높은 만점의 점수가 나왔기 때문에&lt;/p&gt;
&lt;p&gt;영재를 고려한 대입 예측 결과와 영재를 고려하지 않은 대입 예측 결과는 매우 다르게 나올 것입니다.&lt;/p&gt;
&lt;p&gt;그래서 인공지능에서 이러한 데이터가 존재한다는 것을 감안하기 위해서&lt;/p&gt;
&lt;p&gt;batch normalization 을 사용하는데,&lt;/p&gt;
&lt;p&gt;평균값과 분산으로 일단 normalize한 수를 변수로 하여, 임의의 수들로 곱하고 더하기 연산한 값을 생성하게 됩니다.&lt;/p&gt;
&lt;p&gt;이 임의의 수는 학습이 될 수 있습니다.&lt;/p&gt;
&lt;p&gt;그래서 이렇게 학습하는데 균형이 무너지게 되는 일을 방지할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 쉽게 설명하자면&lt;/p&gt;
&lt;p&gt;처음에 학습 데이터를 넣는데 정제하는 그냥 정규화가 있고,&lt;/p&gt;
&lt;p&gt;학습 데이터를 학습하는 중간중간에 삐죽삐죽하게 결과가 나오는 데이터들의 영향을 너무 받지 않게 조정해주는 batch normalization이라는 것이 있습니다.&lt;/p&gt;
&lt;p&gt;그래서 batch size라는 것이 중요해지게 되는데,&lt;/p&gt;
&lt;p&gt;그 이유는 이 batch normalization 을 진행하는 단위가 한 배치에서 이루어지기 때문입니다.&lt;/p&gt;
&lt;p&gt;그리고 여기서 중요한 것은 batch normalizaiton 을 진행하면서 설정해주어야 하는 것이 axis이다.&lt;/p&gt;
&lt;p&gt;이 axis는 이미지의 경우 channel dimension으로 설정한다.&lt;/p&gt;
&lt;p&gt;이게 무슨 말이냐면 nomalize를 진행하게 되면 어떤 부분은 독립되어야 하는 부분이 있다.&lt;/p&gt;
&lt;p&gt;channel의 경우 r g b 이렇게 세 가지의 채널이 있다고 하면 r은 이런 특징을 가지고 있고,&lt;/p&gt;
&lt;p&gt;g는 이런 특징을 가지고 있고가 확실히 다르기 때문에&lt;/p&gt;
&lt;p&gt;주로 이미지를 가지고 batch normalization을 진행하게 되면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;채널끼리는 분리해서 normalization 을 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정규화에 대한 정보 출처: &lt;a href=&quot;http://papers.nips.cc/paper/8440-positional-normalization.pdf&quot;&gt;http://papers.nips.cc/paper/8440-positional-normalization.pdf&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;og-loading&quot; contenteditable=&quot;false&quot;&gt;불러오는 중입니다...&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://brunch.co.kr/@kakao-it/137&quot;&gt;https://brunch.co.kr/@kakao-it/137&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1584510931930&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[카카오AI리포트]딥러닝과 데이터&quot; data-og-description=&quot;신정규 |&amp;nbsp;텍스트큐브 개발자 | 데이터는 기하급수적으로 늘어났다. 단위 연산당 비용은 엄청나게&amp;nbsp;줄어들었다. 그 결과 인공 신경망 기반의 기계 학습 분야가&amp;nbsp;각광받고 있다. 과거 인공 신경망은 다른 기계 학습 방법론들에&amp;nbsp;비해 여러 단점*1을 가지고 있었다. 그러나 21세기 들어 많은&amp;nbsp;문제들이 해결되었다. 다수의 은닉층(hidden layer) 기반 심층&amp;nbsp;인공 신경망*2은 1990년대에는 시도&quot; data-og-host=&quot;brunch.co.kr&quot; data-og-source-url=&quot;https://brunch.co.kr/@kakao-it/137&quot; data-og-url=&quot;https://brunch.co.kr/@kakao-it/137&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hH3rF/hyFkE3VUnL/BjZhD3KNpcbhBM3ni36TA1/img.jpg?width=1280&amp;amp;height=853&amp;amp;face=0_0_1280_853,https://scrap.kakaocdn.net/dn/qevrq/hyFkA8eV9N/8HXOVfMc8cCxYp8leVLmN0/img.jpg?width=1242&amp;amp;height=2208&amp;amp;face=0_0_1242_2208,https://scrap.kakaocdn.net/dn/bYPE47/hyFkJqA73U/U7hZDVXT7E2QackeMwiW20/img.jpg?width=1280&amp;amp;height=853&amp;amp;face=0_0_1280_853&quot;&gt;&lt;a href=&quot;https://brunch.co.kr/@kakao-it/137&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://brunch.co.kr/@kakao-it/137&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hH3rF/hyFkE3VUnL/BjZhD3KNpcbhBM3ni36TA1/img.jpg?width=1280&amp;amp;height=853&amp;amp;face=0_0_1280_853,https://scrap.kakaocdn.net/dn/qevrq/hyFkA8eV9N/8HXOVfMc8cCxYp8leVLmN0/img.jpg?width=1242&amp;amp;height=2208&amp;amp;face=0_0_1242_2208,https://scrap.kakaocdn.net/dn/bYPE47/hyFkJqA73U/U7hZDVXT7E2QackeMwiW20/img.jpg?width=1280&amp;amp;height=853&amp;amp;face=0_0_1280_853');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[카카오AI리포트]딥러닝과 데이터&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;신정규 |&amp;nbsp;텍스트큐브 개발자 | 데이터는 기하급수적으로 늘어났다. 단위 연산당 비용은 엄청나게&amp;nbsp;줄어들었다. 그 결과 인공 신경망 기반의 기계 학습 분야가&amp;nbsp;각광받고 있다. 과거 인공 신경망은 다른 기계 학습 방법론들에&amp;nbsp;비해 여러 단점*1을 가지고 있었다. 그러나 21세기 들어 많은&amp;nbsp;문제들이 해결되었다. 다수의 은닉층(hidden layer) 기반 심층&amp;nbsp;인공 신경망*2은 1990년대에는 시도&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;brunch.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;설명을 위해서 참고한 사이트: &lt;a href=&quot;https://wikidocs.net/61374&quot;&gt;https://wikidocs.net/61374&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1584435787183&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;wikidocs&quot; data-og-title=&quot;위키독스&quot; data-og-description=&quot;온라인 책을 제작 공유하는 플랫폼 서비스&quot; data-og-host=&quot;wikidocs.net&quot; data-og-source-url=&quot;https://wikidocs.net/61374&quot; data-og-url=&quot;https://wikidocs.net&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cOSU4P/hyFjsb2nBt/OCFYmxTkSpWhP0oSgY6oUk/img.png?width=99&amp;amp;height=129&amp;amp;face=0_0_99_129&quot;&gt;&lt;a href=&quot;https://wikidocs.net/61374&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wikidocs.net/61374&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cOSU4P/hyFjsb2nBt/OCFYmxTkSpWhP0oSgY6oUk/img.png?width=99&amp;amp;height=129&amp;amp;face=0_0_99_129');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;위키독스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;온라인 책을 제작 공유하는 플랫폼 서비스&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;wikidocs.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/296</guid>
      <comments>https://likecode.tistory.com/296#entry296comment</comments>
      <pubDate>Tue, 17 Mar 2020 18:31:39 +0900</pubDate>
    </item>
    <item>
      <title>오늘의 문제 해결</title>
      <link>https://likecode.tistory.com/293</link>
      <description>&lt;p&gt;오늘은 컴퓨터가 안켜지고 그래픽 드라이버가 고장났는지&lt;/p&gt;
&lt;p&gt;우분투 전원 종료 버튼이 생기지 않고 일시정지 버튼만 활성화되어있어서,&lt;/p&gt;
&lt;p&gt;이 버튼을 누르면 컴퓨터의 동작이 모두 마비되고, 모니터가 켜지지 않고 본체만 절전모드로 돌아가는 현상이 있어&lt;/p&gt;
&lt;p&gt;본체의 대기 전력을 아예 끄고 다시 재부팅을 하였다.&lt;/p&gt;
&lt;p&gt;그런데 재부팅 이후에 그래픽 드라이버 인식이 되지 않아, 컴퓨터를 그냥 다시 껐다 켰더니 동작하였다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아 그리고 텐서를 저장하는 과정에서 학습이 되고 잇는지,&lt;/p&gt;
&lt;p&gt;파라미터는 달라지는지 확인하는 과정을 해봣는데, 학습이 잘 되고 있는 것 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/293</guid>
      <comments>https://likecode.tistory.com/293#entry293comment</comments>
      <pubDate>Thu, 20 Feb 2020 13:36:38 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/292</link>
      <description>&lt;p&gt;자 일단 해보자&lt;/p&gt;
&lt;p&gt;ㅋㅋㅋㅋ 답이 없는 것 같아도 언젠가는 답이 나올거고 그렇게 할거다!&lt;/p&gt;
&lt;p&gt;월요일 할일&lt;/p&gt;
&lt;p&gt;dehaze.py 파일 경로랑 snapshot 에포크 설정 변경하고&lt;/p&gt;
&lt;p&gt;loss 변화량 파악 그래프로 그리고&lt;/p&gt;
&lt;p&gt;vdsr 적용 안되고 gan으로 해야한다고 말씀드리기&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단 기존 파일 경로 다 바꾸고 에포크 설정 변경도 하고 로스 파악은 아직 안했지만 0.009에서 0.02사이를 진동한다는 것을&lt;/p&gt;
&lt;p&gt;파악하였고, 기존 VDSR 방식의 논문은 bicubic 방식을 이용해서 사용한 것이고 labeling방식이 내가 사용할 네트워크의 아이디어와는 다르다는 것을 설명드려야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 지금 하고 있는 것은 각종 network 들의 논문들인데&lt;/p&gt;
&lt;p&gt;음 이거는 내 착각일 수 있겠지만 예전에 비해 굉장히 쉽게 읽힌다.&lt;/p&gt;
&lt;p&gt;왜일까?&lt;/p&gt;
&lt;p&gt;아이패드로 읽다가 페이퍼로 읽어서 그런가&lt;/p&gt;
&lt;p&gt;모르겠지만 여튼 잘 읽힌다. 그래서 좋다.&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/292</guid>
      <comments>https://likecode.tistory.com/292#entry292comment</comments>
      <pubDate>Fri, 14 Feb 2020 17:59:20 +0900</pubDate>
    </item>
    <item>
      <title>노트북에서 마우스 패드 on/off가 안 될때</title>
      <link>https://likecode.tistory.com/291</link>
      <description>&lt;p&gt;부제: fn + f5키가 먹통일 때 하는 방법&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사용 환경: windows 10 / LG GRAM&lt;/p&gt;
&lt;p&gt;사용 환경이 다른 분들은 융통성 있게 비슷한 방법을 찾아서 성공하시길 바랍니다..&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.lgservice.co.kr/simple/selectSimpleSearchDetail.do?gubun=SCS&amp;amp;type=keyword&amp;amp;seq=27284&amp;amp;itemId=20150375974850&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.lgservice.co.kr/simple/selectSimpleSearchDetail.do?gubun=SCS&amp;amp;type=keyword&amp;amp;seq=27284&amp;amp;itemId=20150375974850&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1594275245917&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[LG전자서비스] 터치패드 클릭 시 동작이 안돼요.&quot; data-og-description=&quot;터치패드 클릭 시 동작이 안돼요.&quot; data-og-host=&quot;www.lgservice.co.kr&quot; data-og-source-url=&quot;https://www.lgservice.co.kr/simple/selectSimpleSearchDetail.do?gubun=SCS&amp;amp;type=keyword&amp;amp;seq=27284&amp;amp;itemId=20150375974850&quot; data-og-url=&quot;https://www.lgservice.co.kr/simple/selectSimpleSearchDetail.do?itemId=20150375974850&amp;amp;gubun=SCS&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cjPWvV/hyGHp515gp/KM4xBtjUVgQGIdp6aPV7k0/img.png?width=212&amp;amp;height=56&amp;amp;face=0_0_212_56,https://scrap.kakaocdn.net/dn/bj5Okx/hyGHkwResv/zI9w82if6FgxykFxVkuEg1/img.jpg?width=1600&amp;amp;height=240&amp;amp;face=1185_20_1300_145&quot;&gt;&lt;a href=&quot;https://www.lgservice.co.kr/simple/selectSimpleSearchDetail.do?gubun=SCS&amp;amp;type=keyword&amp;amp;seq=27284&amp;amp;itemId=20150375974850&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.lgservice.co.kr/simple/selectSimpleSearchDetail.do?gubun=SCS&amp;amp;type=keyword&amp;amp;seq=27284&amp;amp;itemId=20150375974850&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cjPWvV/hyGHp515gp/KM4xBtjUVgQGIdp6aPV7k0/img.png?width=212&amp;amp;height=56&amp;amp;face=0_0_212_56,https://scrap.kakaocdn.net/dn/bj5Okx/hyGHkwResv/zI9w82if6FgxykFxVkuEg1/img.jpg?width=1600&amp;amp;height=240&amp;amp;face=1185_20_1300_145');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[LG전자서비스] 터치패드 클릭 시 동작이 안돼요.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;터치패드 클릭 시 동작이 안돼요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.lgservice.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;엘지는 다 좋은데 공식 홈페이지 qna 찾기가 너무 어렵게 되어있다.&lt;/p&gt;
&lt;p&gt;제가 해결한 방법 굳이 보시지 마시고 이걸로 시도해보시고 안되면 아래꺼 시도하세요&lt;/p&gt;
&lt;p&gt;참고로 나는 밝기 조정은 되는데 이상하게 마우스 패드 부분과 절전 모드 부분만 에러가 나서&lt;/p&gt;
&lt;p&gt;그냥 수동으로 on/off를 하는데 성공하였다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G4vmr/btqBVMeJHVG/lKzwf5lufI0nvWGzs2kRMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G4vmr/btqBVMeJHVG/lKzwf5lufI0nvWGzs2kRMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G4vmr/btqBVMeJHVG/lKzwf5lufI0nvWGzs2kRMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG4vmr%2FbtqBVMeJHVG%2FlKzwf5lufI0nvWGzs2kRMK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;요약하자면 다음과 같은 스마트패드라는 것을 사용 -&amp;gt; 사용 안함으로 바꿔주면서 마우스 패드를 사용안하는 것으로 바꾸었다.&lt;/p&gt;
&lt;p&gt;마우스 고장나면 이제 큰일난당..^^&lt;/p&gt;
&lt;p&gt;근데 웃긴거는 이렇게 바꾸어도 f5에 불은 안꺼진다.&lt;/p&gt;
&lt;p&gt;더 웃긴거는 비주얼스튜디오에서 f5는 디버깅 모드로 잘 동작하는 걸로 봐서 입력은 들어가는데&lt;/p&gt;
&lt;p&gt;f5를 눌렀을 때 마우스 패드 on/off하는 프로그램이 이상해진것 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다른 후기들을 봤는데 업데이트 해라, 새로운 프로그램을 깔아라 뭐가 많아서&lt;/p&gt;
&lt;p&gt;(사실 고장난 프로그램이 뭔지 아는데, 그 프로그램을 깔려면 할게 많다.)&lt;/p&gt;
&lt;p&gt;나는 그냥 이렇게 딱 하고 싶은거만 진행하는 방식으로 했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;**이제 방법 안내 시작**&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/820E9/btqBXF6J8mL/jkVEuskbPVaOM92mDsUDgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/820E9/btqBXF6J8mL/jkVEuskbPVaOM92mDsUDgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/820E9/btqBXF6J8mL/jkVEuskbPVaOM92mDsUDgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F820E9%2FbtqBXF6J8mL%2FjkVEuskbPVaOM92mDsUDgk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;자 이렇게 윈도우에 패드라는 것을 검색하면 터치패드 설정이라는 것이 뜬다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XxtqB/btqBXVnXwzn/iuRjcEd6rajAqEN4DW16Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XxtqB/btqBXVnXwzn/iuRjcEd6rajAqEN4DW16Jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XxtqB/btqBXVnXwzn/iuRjcEd6rajAqEN4DW16Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXxtqB%2FbtqBXVnXwzn%2FiuRjcEd6rajAqEN4DW16Jk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그러면 이렇게 설정 창이 뜨는데&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기서 추가 설정을 눌러준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u6HOl/btqBXUo3t9i/fulRzYZq37bZ3ayqkgNlY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u6HOl/btqBXUo3t9i/fulRzYZq37bZ3ayqkgNlY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u6HOl/btqBXUo3t9i/fulRzYZq37bZ3ayqkgNlY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu6HOl%2FbtqBXUo3t9i%2FfulRzYZq37bZ3ayqkgNlY1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그러면 이렇게 마우스 속성을 바꿀 수 있는 창이 뜨는데,&lt;/p&gt;
&lt;p&gt;여기서 ELAN을 눌러준다.&lt;/p&gt;
&lt;p&gt;노트북 기종에 따라서 다르게 나올 수 있으니까,&lt;/p&gt;
&lt;p&gt;여기서부터는 좀 다를 수 있다는 것을 참고해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4oXLy/btqBVgmLzE6/zpmA0afdghqEMizw5C4yk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4oXLy/btqBVgmLzE6/zpmA0afdghqEMizw5C4yk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4oXLy/btqBVgmLzE6/zpmA0afdghqEMizw5C4yk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4oXLy%2FbtqBVgmLzE6%2FzpmA0afdghqEMizw5C4yk1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;여기서 장치 사용 또는 장치 중지를 하면&lt;/p&gt;
&lt;p&gt;마우스 패드를 사용/중지할 수 있게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;단축키가 잘 동작하면 좋겠지만,&lt;/p&gt;
&lt;p&gt;특정 이유로 잘 안되는데 업데이트나 수리 맡기기 귀찮은 사람들은 이 방법을 이용하면 좋다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;****&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하 일단 설정 해제 하긴 햇는데 단축키 안되니까 불편해서 드라이버 다운로드 하실 분들은 이거 받으시라고 링크 올립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;제어판에 같은 이름으로 프로그램 하나 있는데 제거해주시고 다음 링크에서 드라이버 재 다운로드 받아주세요.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.lgservice.co.kr/search/driverSoftTotalSearchPage.do?searchKeyWord=%5B%ED%84%B0%EC%B9%98%ED%8C%A8%EB%93%9C%2FWin10_64bit%5D%20Elan%20TouchPad%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%20Ver%2015.9.2.1&amp;amp;oneCateCode=P1011&amp;amp;twoCateCode=1011&quot;&gt;https://www.lgservice.co.kr/search/driverSoftTotalSearchPage.do?searchKeyWord=%5B%ED%84%B0%EC%B9%98%ED%8C%A8%EB%93%9C%2FWin10_64bit%5D%20Elan%20TouchPad%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%20Ver%2015.9.2.1&amp;amp;oneCateCode=P1011&amp;amp;twoCateCode=1011&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1581564516144&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;통합검색결과 드라이버/소프트웨어 | LG전자서비스&quot; data-og-description=&quot;&amp;quot;[터치패드/Win10_64bit] Elan TouchPad 드라이버 Ver 15.9.2.1&amp;quot; 검색결과입니다.&quot; data-og-host=&quot;www.lgservice.co.kr&quot; data-og-source-url=&quot;https://www.lgservice.co.kr/search/driverSoftTotalSearchPage.do?searchKeyWord=%5B%ED%84%B0%EC%B9%98%ED%8C%A8%EB%93%9C%2FWin10_64bit%5D%20Elan%20TouchPad%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%20Ver%2015.9.2.1&amp;amp;oneCateCode=P1011&amp;amp;twoCateCode=1011&quot; data-og-url=&quot;https://www.lgservice.co.kr/search/driverSoftTotalSearchPage.do?searchKeyWord=%5B%ED%84%B0%EC%B9%98%ED%8C%A8%EB%93%9C%2FWin10_64bit%5D%20Elan%20TouchPad%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%20Ver%2015.9.2.1&amp;amp;oneCateCode=P1011&amp;amp;twoCateCode=1011&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4Z8P7/hyEVprEpeN/S7ckqYealYiJzNk6I7tqCk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/dwvQZe/hyET4inm1m/VG2YwluLHEJEMaTCvR46p0/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/bIVqMo/hyEVpyqIpI/jQuZCN694WdzMRvD7okiV0/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://www.lgservice.co.kr/search/driverSoftTotalSearchPage.do?searchKeyWord=%5B%ED%84%B0%EC%B9%98%ED%8C%A8%EB%93%9C%2FWin10_64bit%5D%20Elan%20TouchPad%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%20Ver%2015.9.2.1&amp;amp;oneCateCode=P1011&amp;amp;twoCateCode=1011&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.lgservice.co.kr/search/driverSoftTotalSearchPage.do?searchKeyWord=%5B%ED%84%B0%EC%B9%98%ED%8C%A8%EB%93%9C%2FWin10_64bit%5D%20Elan%20TouchPad%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%20Ver%2015.9.2.1&amp;amp;oneCateCode=P1011&amp;amp;twoCateCode=1011&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4Z8P7/hyEVprEpeN/S7ckqYealYiJzNk6I7tqCk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/dwvQZe/hyET4inm1m/VG2YwluLHEJEMaTCvR46p0/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/bIVqMo/hyEVpyqIpI/jQuZCN694WdzMRvD7okiV0/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;통합검색결과 드라이버/소프트웨어 | LG전자서비스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&quot;[터치패드/Win10_64bit] Elan TouchPad 드라이버 Ver 15.9.2.1&quot; 검색결과입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.lgservice.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;그램 사용하시는 64bit 유저들은 윈도우 버전만 맞으면 이거 까시면 됩니다.&lt;/p&gt;
&lt;p&gt;물론 저는 2017년 형이라서 드라이버 이름이 같은지만 확인해주세요.&lt;/p&gt;
&lt;p&gt;마우스 설정 할 때 ELAN이라고 뜨거나 제어판 상에 이거랑 같은 이름이 있으면 이거 맞습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아 그리고 이거 깔면 그 hot key manager인가 그거 자꾸 에러뜨는거 창 안뜹니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CFMVm/btqBYd3lbFf/jFxL33krzoVMf9Bs7momK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CFMVm/btqBYd3lbFf/jFxL33krzoVMf9Bs7momK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CFMVm/btqBYd3lbFf/jFxL33krzoVMf9Bs7momK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCFMVm%2FbtqBYd3lbFf%2FjFxL33krzoVMf9Bs7momK0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;zip 파일 받으시고 zip 파일 압축 푸시고 setup exe파일 실행하시면 이렇게 설치가 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/291</guid>
      <comments>https://likecode.tistory.com/291#entry291comment</comments>
      <pubDate>Wed, 12 Feb 2020 18:24:04 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/290</link>
      <description>&lt;p&gt;요새 딥러닝 실험에 진전이 안되고 잇는 중이다.&lt;/p&gt;
&lt;p&gt;음 내 생각에는 중첩으로 레이어를 겹쳐서 하는 것이 뭔가 문제가 생기는 것 같다.&lt;/p&gt;
&lt;p&gt;그래서 일단은 concat을 이용해서 해보는 것은 어떨까 싶다.&lt;/p&gt;
&lt;p&gt;지금 residual layer에 대해서는 잘 안되는 것 같기도 해서,&lt;/p&gt;
&lt;p&gt;이 residual layer를 바꾸어 보고 싶다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;loss값이 줄어들듯 안줄어드니까 미치것다^^&lt;/p&gt;
&lt;p&gt;하&lt;/p&gt;
&lt;p&gt;일단은 될때까지 한다!!!!!&lt;/p&gt;
&lt;p&gt;물리모델을 벗어나서 진행하는 것이라서 이렇게 되는 것인지..&lt;/p&gt;
&lt;p&gt;loss가 0.009 아래로 떨어질때까지 시도한다!!!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/290</guid>
      <comments>https://likecode.tistory.com/290#entry290comment</comments>
      <pubDate>Wed, 12 Feb 2020 15:45:49 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/289</link>
      <description>&lt;p&gt;레이어를 아예 뜯어고쳐봣는데 에러가 난다.&lt;/p&gt;
&lt;p&gt;역시 기존 이론에서 조금 벗어난 방식으로 딥러닝을 하는지 궁금했는데, 안되는 것 같다.&lt;/p&gt;
&lt;p&gt;기존 이론에서 약간의 아이디어를 더해서 re-training을 해보아야할것같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/289</guid>
      <comments>https://likecode.tistory.com/289#entry289comment</comments>
      <pubDate>Tue, 11 Feb 2020 15:04:34 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/288</link>
      <description>&lt;p&gt;에포크 수를 늘리는 것 까지는 어떻게 햇는데,&lt;/p&gt;
&lt;p&gt;지금 아웃풋 레이어 수를 단일화했는데도 결과가 같아서,&lt;/p&gt;
&lt;p&gt;무슨 영문인지 모르겠지만, 일단 기존 파일들과 뭐가 달라졌는지를 알아보아야할듯 싶다.&lt;/p&gt;
&lt;p&gt;음 그리고 기존 파일에 레지듀얼 파일을 더했는데 아예 색상이 달라지는 상황이 생겨서&lt;/p&gt;
&lt;p&gt;이 상황을 타개하기 위해 조금 더 고민을 해야 할 듯 하다.&lt;/p&gt;
&lt;p&gt;일단은 레이어 상황을 이렇게 하지 말고 다르게 해보고 싶다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;특이한 점은 어떻게 해도 이 loss 값이 down 되지 않고, 일정 부분에서 머무른다는 것이다.&lt;/p&gt;
&lt;p&gt;솔직히 말해서 loss 가 0에 가까우면 좋긴한데, 이 경우에서는&amp;nbsp;&lt;/p&gt;
&lt;p&gt;loss가 일정 부분에 머무르면서 계속 파동하는 형태로 가고 있다.&lt;/p&gt;
&lt;p&gt;근데 이 네트워크가 결과가 어떻게 나오는지에 따라서 달라질 것 같다.&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/288</guid>
      <comments>https://likecode.tistory.com/288#entry288comment</comments>
      <pubDate>Sat, 8 Feb 2020 14:59:12 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/287</link>
      <description>&lt;p&gt;에포크 수를 늘리니까 사진이 안정적으로 나오는 것을 확인했다.&lt;/p&gt;
&lt;p&gt;그렇지만, 배치 사이즈 같은거는 늘리면 쿠다가 터져버려서 아직 하지 못했다.&lt;/p&gt;
&lt;p&gt;아무래도 장비 업그레이드를 하고 나서야 가능할것 같다.ㅠㅠ&lt;/p&gt;
&lt;p&gt;그래서 지금은 기본 레이어 수만 중첩으로 해서 사진 전반에 어떤 영향이 가는지를 비교해보려고 한다.&lt;/p&gt;
&lt;p&gt;이따가는 30레이어 돌려봐야겠다.&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/287</guid>
      <comments>https://likecode.tistory.com/287#entry287comment</comments>
      <pubDate>Fri, 7 Feb 2020 16:07:39 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/286</link>
      <description>&lt;p&gt;오늘 테스트 해보아야 하는 것들&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;1. 레이어 개수 증가 8 -&amp;gt; 16&amp;nbsp;&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;2. 배치사이즈 증가 8 -&amp;gt; 128 ( 안되면 16 부터 2씩 곱해가면서 시도)&lt;/p&gt;
&lt;p&gt;3. clipping 조건 바꾸기 0.1 -&amp;gt; 0.01 또는 0.05로 바꿔보기&lt;/p&gt;
&lt;p&gt;4. 에포크 수 증가 10 -&amp;gt; 50 ( 이거는 꼭 해야함 )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;torch.nn.utils.clip_grad_norm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.nn.utils.clip_grad_norm&lt;/a&gt;&amp;nbsp;is&amp;nbsp;now&amp;nbsp;deprecated&amp;nbsp;in&amp;nbsp;favor&amp;nbsp;of&amp;nbsp;&lt;a href=&quot;torch.nn.utils.clip_grad_norm_.&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.nn.utils.clip_grad_norm_.&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;torch.nn.utils.clip_grad_norm(dehaze_net.parameters(),config.grad_clip_norm)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.nn.utils.clip_grad_norm(dehaze_net.parameters(),config.grad_clip_norm)&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;og-loading&quot; contenteditable=&quot;false&quot;&gt;불러오는 중입니다...&lt;/figure&gt;
&lt;p&gt;이런 얘기가 나와서 코드를 조금 고쳐두었다&lt;/p&gt;
&lt;p&gt;\&lt;a href=&quot;https://stackoverflow.com/questions/54716377/how-to-do-gradient-clipping-in-pytorch&quot;&gt;https://stackoverflow.com/questions/54716377/how-to-do-gradient-clipping-in-pytorch&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1580976870944&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;How to do gradient clipping in pytorch?&quot; data-og-description=&quot;What is the correct way to perform gradient clipping in pytorch? I have an exploding gradients problem, and I need to program my way around it.&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/54716377/how-to-do-gradient-clipping-in-pytorch&quot; data-og-url=&quot;https://stackoverflow.com/questions/54716377/how-to-do-gradient-clipping-in-pytorch&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RA6bX/hyEQfje79j/aEYkdgbL8BXkUlqBFpkkuK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/54716377/how-to-do-gradient-clipping-in-pytorch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/54716377/how-to-do-gradient-clipping-in-pytorch&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RA6bX/hyEQfje79j/aEYkdgbL8BXkUlqBFpkkuK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to do gradient clipping in pytorch?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;What is the correct way to perform gradient clipping in pytorch? I have an exploding gradients problem, and I need to program my way around it.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;이거 보고 이렇게 수정하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1580976892335&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#torch.nn.utils.clip_grad_norm(dehaze_net.parameters(),config.grad_clip_norm)
torch.nn.utils.clip_grad_norm(dehaze_net.parameters(),args.clip)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;일단 에포크 50으로 하고, 배치 사이즈도 128로 했으니까 크롬 다 꺼두어야겠다.&lt;/p&gt;
&lt;p&gt;아 근데 터진다.ㅠ&lt;/p&gt;
&lt;p&gt;하 램이 쫌 딸리네 슬프다..&lt;/p&gt;
&lt;p&gt;일단 배치 사이즈를 64로 줄여보아야겠다.&lt;/p&gt;
&lt;p&gt;안되면 또 올릴테니 일단 인터넷들 끄고 생각하자.&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/286</guid>
      <comments>https://likecode.tistory.com/286#entry286comment</comments>
      <pubDate>Thu, 6 Feb 2020 15:21:08 +0900</pubDate>
    </item>
    <item>
      <title>윈도우와 리눅스 사용 시 장단점 정리(개인적 견해 포함)</title>
      <link>https://likecode.tistory.com/284</link>
      <description>&lt;p&gt;이번에 리눅스를 사용하면서 느낀점들을 정리해보겠다.&lt;/p&gt;
&lt;p&gt;단순 머신러닝 조금 시도하고 있는 학생의 입장에서 사용한 글이다.&lt;/p&gt;
&lt;p&gt;윈도우 5년동안 쓰다가(대학교+대학원) 요번에 4개월 정도 우분투 사용하면서 쓰는 후기라&lt;/p&gt;
&lt;p&gt;신빙성이 쪼금 떨어질 수 있다.&lt;/p&gt;
&lt;p&gt;간단히 정리하자면 리눅스는 가벼운 대신 너무 가벼워서 자꾸 불편한게 생기고, 윈도우는 무거워서 넘 느려서 속터진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;리눅스 장점 (윈도우 단점)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 빠르다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;확실히 딥러닝 돌릴 때 속도부터가 다르다&lt;/p&gt;
&lt;p&gt;윈도우에서 파이참까지 얹는다? 그러면 속도 거의 4배 빨라졌다고 본다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 깃헙에서 코드 받아서 바로 돌렸을 때 생기는 에러가 확실히 줄어든다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;대부분의 딥러닝 코드들은 다 리눅스 기반 또는 맥 기반이라서&lt;/p&gt;
&lt;p&gt;윈도우에서 주로 겪은 경로 설정이나 문자열 파싱같은 장난 안쳐도 된다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- text editor가 메모장 겸 코드 작성이 되어서 좋다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;윈도우에서는 코드를 수정할 때 가독성을 위해서 sublime이나 기타 코드를 읽기 편하게 하는 프로그램을 깔아야했는데,&lt;/p&gt;
&lt;p&gt;리눅스는 걍 text editor로 열어도 알아서 파이썬 형태로 저장만 하면 파이썬 코드 읽기를 잘 할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;리눅스 단점 (윈도우 장점)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 프린터, 모니터 연결이 자주 끊어진다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;음 이건 나만 그런 걸 수 있는데 그래픽 드라이버가 자주 망가져서 재설치를 자주 해주거나 재설정해주어야 하고,&lt;/p&gt;
&lt;p&gt;어제까지 잘되던 프린터가 갑자기 오늘 프린트가 안되어서 이거땜에 글쓰고 있다. 아오&lt;/p&gt;
&lt;p&gt;프린터 연결 솔직히 이제 눈감고도 하는데 귀찮다 증말 원데이투데이도 아니고 os 바꾸니까 거의 맨날 연결해야 함&lt;/p&gt;
&lt;p&gt;아 근데 프린터랑 모니터도 다 신형이면 솔직히 거의 잘될거다. 프린터가 우리꺼가 2013년도꺼인가 그렇다&lt;/p&gt;
&lt;p&gt;아 근데 그래픽 드라이버 망가지는거는 좀 짜증날때 많다. 껏다가 켜면 드라이버가 날라가있어서 항상 재설정해주어야 하는데 그거 드라이버 설정 명령어 저장해도 안되는 경우 많고 되려 자동로그인에 빠져서 그냥 요새는 수동으로 걍 설정해둔다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 한글, 워드 포기하는거 쉽지 않다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;뭐 말그대로 리눅스 전용 문서 프로그램이 있는데 생각보다 구리다.&lt;/p&gt;
&lt;p&gt;개인적으로 파워포인트를 사랑하는 정도로 발표 자료 만들기를 좋아하고 (자칭 타칭 쫌 만드는데)&lt;/p&gt;
&lt;p&gt;근데 여기는 비슷하지만 기능적 면에서 확실히 윈도우보다 떨어지는 경향이 있다.&lt;/p&gt;
&lt;p&gt;뷰어로 여차저차 열어보고 인쇄만 하는 상황. 세컨 컴퓨터가 없다면 리눅스 깔 때 이부분을 가장 염두에 두어야 한다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 피씨 카카오톡. 안된다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이건 장점이자 단점이다.&lt;/p&gt;
&lt;p&gt;문서나 파일 주고받을 때 친구들은 편히 카톡하나로 보내는데 나는 메일로 받는다.&lt;/p&gt;
&lt;p&gt;대신 카톡이 안되니까 연구하면서 딴짓 못한다.(뭐 유툽도 볼수야 있긴한데 나는 유튜브는 음악 위주로 듣는다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/284</guid>
      <comments>https://likecode.tistory.com/284#entry284comment</comments>
      <pubDate>Wed, 5 Feb 2020 15:47:56 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험 일지</title>
      <link>https://likecode.tistory.com/282</link>
      <description>&lt;p&gt;RuntimeError: CUDA out of memory. Tried to allocate 600.00 MiB (GPU 0; 7.80 GiB total capacity; 5.92 GiB already allocated; 255.12 MiB free; 5.21 MiB cached)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 에러가 났다.&lt;/p&gt;
&lt;p&gt;네트워크 별로 넣는 input의 형태가 다른데, 1채널이었던 것을 3채널로 증가시켰더니 이렇게 나왔다.&lt;/p&gt;
&lt;p&gt;에러를 해결하기 위해서 네트워크의 처리 사이즈를 조금 줄였다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;음 그리고 트레이닝을 돌렸는데, 결과는 가봐야 알 수 있을 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chLRJG/btqBGYtcE9u/g9vYkyrJLsPF9FZQ2NaQI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chLRJG/btqBGYtcE9u/g9vYkyrJLsPF9FZQ2NaQI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chLRJG/btqBGYtcE9u/g9vYkyrJLsPF9FZQ2NaQI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchLRJG%2FbtqBGYtcE9u%2Fg9vYkyrJLsPF9FZQ2NaQI1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/282</guid>
      <comments>https://likecode.tistory.com/282#entry282comment</comments>
      <pubDate>Tue, 4 Feb 2020 16:34:01 +0900</pubDate>
    </item>
    <item>
      <title>딥러닝 실험일지라고 하고 일기 쓰기</title>
      <link>https://likecode.tistory.com/281</link>
      <description>&lt;p&gt;&lt;b&gt;인덱싱은 이제 안하기로 하자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;앞으로 계속 이거 써야하는데 인덱싱하기 시작하면 끝이없다ㅠ&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;배가 진짜 아프다ㅠ&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;ㅎㅏ&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;약 먹었는데도 아프다&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;걍 배속을 누가 칼로 이리저리 휘두르는 것 같다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;약 기운이 떨어진것 같기도 하다&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;일단 오늘은 쭉 자야지.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;실험 결과가 나올듯 안나온다&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;개빡쳐진짜&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;그래도 그동안 성과가 아예 없지는 않았다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUEuoz/btqBLkapj7h/2uHR197cg6LPLZnm4uAeeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUEuoz/btqBLkapj7h/2uHR197cg6LPLZnm4uAeeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUEuoz/btqBLkapj7h/2uHR197cg6LPLZnm4uAeeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUEuoz%2FbtqBLkapj7h%2F2uHR197cg6LPLZnm4uAeeK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;내가 생각한 딥러닝 모델로 구연한 dehaze 사진이다.&lt;/p&gt;
&lt;p&gt;다른 사진에 비하면 뭔가 산맥의 결이 뚜렷하다.&lt;/p&gt;
&lt;p&gt;물론 이미지로만 비교를 해야해서 좀 다른 부분이 있을지도 모르겠지만.&lt;/p&gt;
&lt;p&gt;만족스럽다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5CcEM/btqBGfa05qs/aep28q1rMlGioMq0vsYHb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5CcEM/btqBGfa05qs/aep28q1rMlGioMq0vsYHb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5CcEM/btqBGfa05qs/aep28q1rMlGioMq0vsYHb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5CcEM%2FbtqBGfa05qs%2Faep28q1rMlGioMq0vsYHb0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;여기 지붕 부분 뚜렷한 것도 맘에 든다.&lt;/p&gt;
&lt;p&gt;이거 구현한 거는 안올리겠다.&lt;/p&gt;
&lt;p&gt;내 스스로 잘 기억하기를 바래야지&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;요새 맨날 까먹어서 다이어리를 쓴다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래 사진은 원본과 내가 참고한 연구의 코드 결과물들이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct3jMW/btqBLHXvkSY/QEXe37PPSdPBseoaKpmBXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct3jMW/btqBLHXvkSY/QEXe37PPSdPBseoaKpmBXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct3jMW/btqBLHXvkSY/QEXe37PPSdPBseoaKpmBXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct3jMW%2FbtqBLHXvkSY%2FQEXe37PPSdPBseoaKpmBXk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0Bvvc/btqBJ8nIPA2/3oPZWq0HYbEclo43B7RtIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0Bvvc/btqBJ8nIPA2/3oPZWq0HYbEclo43B7RtIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0Bvvc/btqBJ8nIPA2/3oPZWq0HYbEclo43B7RtIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0Bvvc%2FbtqBJ8nIPA2%2F3oPZWq0HYbEclo43B7RtIk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2021 이전 자료들/AI</category>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/281</guid>
      <comments>https://likecode.tistory.com/281#entry281comment</comments>
      <pubDate>Mon, 3 Feb 2020 17:09:56 +0900</pubDate>
    </item>
    <item>
      <title>[딥러닝] 실험 일지 4</title>
      <link>https://likecode.tistory.com/280</link>
      <description>&lt;p&gt;음 오늘은 대부분의 에러를 고쳤지만, 자꾸 차원 문제로 골머리를 앓고 있다.&lt;/p&gt;
&lt;p&gt;솔직히 이렇게 해서 결과가 좋으면 다행인데, 자꾸 안될 것 같은데 일단 실험의 결과가 나올 때 까지는 보아야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;206&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs[&amp;nbsp;,&amp;nbsp;,&amp;nbsp;:]&amp;nbsp;=&amp;nbsp;image_int&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;SyntaxError:&amp;nbsp;invalid&amp;nbsp;syntax&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;208&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs[&amp;nbsp;,&amp;nbsp;,&amp;nbsp;:]&amp;nbsp;=&amp;nbsp;image_int&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;SyntaxError:&amp;nbsp;invalid&amp;nbsp;syntax&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;208&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs[&amp;nbsp;,&amp;nbsp;,&amp;nbsp;:]&amp;nbsp;=&amp;nbsp;image_int&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;SyntaxError:&amp;nbsp;invalid&amp;nbsp;syntax&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;202,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;image&amp;nbsp;in&amp;nbsp;dirs:&lt;br /&gt;NameError:&amp;nbsp;name&amp;nbsp;'dirs'&amp;nbsp;is&amp;nbsp;not&amp;nbsp;defined&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;206,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs&amp;nbsp;=&amp;nbsp;RGB_To_HSI(hs_path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;96,&amp;nbsp;in&amp;nbsp;RGB_To_HSI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;np.mean(rgb)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;np.mean(rgb)&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&amp;lt;__array_function__&amp;nbsp;internals&amp;gt;&quot;,&amp;nbsp;line&amp;nbsp;6,&amp;nbsp;in&amp;nbsp;mean&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/numpy/core/&lt;a href=&quot;fromnumeric.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;fromnumeric.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;3257,&amp;nbsp;in&amp;nbsp;mean&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out=out,&amp;nbsp;**kwargs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/numpy/core/&lt;a href=&quot;_methods.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;_methods.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;151,&amp;nbsp;in&amp;nbsp;_mean&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret&amp;nbsp;=&amp;nbsp;umr_sum(arr,&amp;nbsp;axis,&amp;nbsp;dtype,&amp;nbsp;out,&amp;nbsp;keepdims)&lt;br /&gt;TypeError:&amp;nbsp;cannot&amp;nbsp;perform&amp;nbsp;reduce&amp;nbsp;with&amp;nbsp;flexible&amp;nbsp;type&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;209,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs&amp;nbsp;=&amp;nbsp;RGB_To_HSI(hs_path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;101,&amp;nbsp;in&amp;nbsp;RGB_To_HSI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(r==g==b):&lt;br /&gt;ValueError:&amp;nbsp;The&amp;nbsp;truth&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;array&amp;nbsp;with&amp;nbsp;more&amp;nbsp;than&amp;nbsp;one&amp;nbsp;element&amp;nbsp;is&amp;nbsp;ambiguous.&amp;nbsp;Use&amp;nbsp;a.any()&amp;nbsp;or&amp;nbsp;a.all()&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;209,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs&amp;nbsp;=&amp;nbsp;RGB_To_HSI(hs_path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;106,&amp;nbsp;in&amp;nbsp;RGB_To_HSI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;min(rgb)&lt;br /&gt;ValueError:&amp;nbsp;The&amp;nbsp;truth&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;array&amp;nbsp;with&amp;nbsp;more&amp;nbsp;than&amp;nbsp;one&amp;nbsp;element&amp;nbsp;is&amp;nbsp;ambiguous.&amp;nbsp;Use&amp;nbsp;a.any()&amp;nbsp;or&amp;nbsp;a.all()&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;dehaze_int.py:109:&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py:109:&lt;/a&gt;&amp;nbsp;RuntimeWarning:&amp;nbsp;invalid&amp;nbsp;value&amp;nbsp;encountered&amp;nbsp;in&amp;nbsp;true_divide&lt;br /&gt;&amp;nbsp;&amp;nbsp;temp&amp;nbsp;=&amp;nbsp;((r-g)&amp;nbsp;+&amp;nbsp;(r-b))&amp;nbsp;/&amp;nbsp;(2*&lt;a href=&quot;np.sqrt(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;np.sqrt(&lt;/a&gt;&amp;nbsp;(r-g)*(r-g)&amp;nbsp;+&amp;nbsp;(r-b)*(g-b)))&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;209,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs&amp;nbsp;=&amp;nbsp;RGB_To_HSI(hs_path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;112,&amp;nbsp;in&amp;nbsp;RGB_To_HSI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;b&amp;nbsp;&amp;gt;&amp;nbsp;g:&lt;br /&gt;ValueError:&amp;nbsp;The&amp;nbsp;truth&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;array&amp;nbsp;with&amp;nbsp;more&amp;nbsp;than&amp;nbsp;one&amp;nbsp;element&amp;nbsp;is&amp;nbsp;ambiguous.&amp;nbsp;Use&amp;nbsp;a.any()&amp;nbsp;or&amp;nbsp;a.all()&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;99&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;GetHue(fi)&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;^&lt;br /&gt;SyntaxError:&amp;nbsp;invalid&amp;nbsp;syntax&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;163,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cv2.imwrite(savepath+image,&amp;nbsp;hs)&lt;br /&gt;TypeError:&amp;nbsp;Expected&amp;nbsp;Ptr&amp;nbsp;for&amp;nbsp;argument&amp;nbsp;'%s'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;164,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2638,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr&amp;nbsp;=&amp;nbsp;obj.__array_interface__&lt;br /&gt;AttributeError:&amp;nbsp;'list'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'__array_interface__'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;167,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cv2.imwrite(savepath+image,&amp;nbsp;hs)&lt;br /&gt;TypeError:&amp;nbsp;Expected&amp;nbsp;Ptr&amp;nbsp;for&amp;nbsp;argument&amp;nbsp;'%s'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;254,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(hs_path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;190,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;TypeError:&amp;nbsp;string&amp;nbsp;indices&amp;nbsp;must&amp;nbsp;be&amp;nbsp;integers&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;258,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(hs_path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;194,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;1.0&amp;nbsp;-&amp;nbsp;min_rgb/(intensity+me)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/torch/&lt;a href=&quot;tensor.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tensor.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;366,&amp;nbsp;in&amp;nbsp;__rdiv__&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;self.reciprocal()&amp;nbsp;*&amp;nbsp;other&lt;br /&gt;TypeError:&amp;nbsp;mul():&amp;nbsp;argument&amp;nbsp;'other'&amp;nbsp;(position&amp;nbsp;1)&amp;nbsp;must&amp;nbsp;be&amp;nbsp;Tensor,&amp;nbsp;not&amp;nbsp;numpy.ndarray&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(hs_path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;191,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;TypeError:&amp;nbsp;'PngImageFile'&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;subscriptable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;191,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;TypeError:&amp;nbsp;'PngImageFile'&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;subscriptable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;257,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;192,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;IndexError:&amp;nbsp;too&amp;nbsp;many&amp;nbsp;indices&amp;nbsp;for&amp;nbsp;array&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;image_int.reshape(480,640)&lt;br /&gt;RuntimeError:&amp;nbsp;shape&amp;nbsp;'[480,&amp;nbsp;640]'&amp;nbsp;is&amp;nbsp;invalid&amp;nbsp;for&amp;nbsp;input&amp;nbsp;of&amp;nbsp;size&amp;nbsp;810000&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;image_int.reshape(8,&amp;nbsp;640,&amp;nbsp;480)&lt;br /&gt;RuntimeError:&amp;nbsp;shape&amp;nbsp;'[8,&amp;nbsp;640,&amp;nbsp;480]'&amp;nbsp;is&amp;nbsp;invalid&amp;nbsp;for&amp;nbsp;input&amp;nbsp;of&amp;nbsp;size&amp;nbsp;810000&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;image_int.reshape(640,&amp;nbsp;480)&lt;br /&gt;RuntimeError:&amp;nbsp;shape&amp;nbsp;'[640,&amp;nbsp;480]'&amp;nbsp;is&amp;nbsp;invalid&amp;nbsp;for&amp;nbsp;input&amp;nbsp;of&amp;nbsp;size&amp;nbsp;810000&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;image_int.reshape(3,&amp;nbsp;640,&amp;nbsp;480)&lt;br /&gt;RuntimeError:&amp;nbsp;shape&amp;nbsp;'[3,&amp;nbsp;640,&amp;nbsp;480]'&amp;nbsp;is&amp;nbsp;invalid&amp;nbsp;for&amp;nbsp;input&amp;nbsp;of&amp;nbsp;size&amp;nbsp;810000&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;257,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;192,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;IndexError:&amp;nbsp;too&amp;nbsp;many&amp;nbsp;indices&amp;nbsp;for&amp;nbsp;array&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;257,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;192,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;IndexError:&amp;nbsp;too&amp;nbsp;many&amp;nbsp;indices&amp;nbsp;for&amp;nbsp;array&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(I.shape())&lt;br /&gt;NameError:&amp;nbsp;name&amp;nbsp;'I'&amp;nbsp;is&amp;nbsp;not&amp;nbsp;defined&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(&lt;a href=&quot;image_int.shape())&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;image_int.shape())&lt;/a&gt;&lt;br /&gt;TypeError:&amp;nbsp;'&lt;a href=&quot;torch.Size'&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size'&lt;/a&gt;&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;callable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;256,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(image_int.dimension())&lt;br /&gt;AttributeError:&amp;nbsp;'Tensor'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'dimension'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;255,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image_int&amp;nbsp;=&amp;nbsp;dehaze_image(path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;227,&amp;nbsp;in&amp;nbsp;dehaze_image&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(&lt;a href=&quot;data_hazy.shape())&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;data_hazy.shape())&lt;/a&gt;&lt;br /&gt;TypeError:&amp;nbsp;'tuple'&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;callable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;257,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(image_int.get_shape())&lt;br /&gt;AttributeError:&amp;nbsp;'Tensor'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'get_shape'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;259,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;192,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;IndexError:&amp;nbsp;too&amp;nbsp;many&amp;nbsp;indices&amp;nbsp;for&amp;nbsp;array&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;258&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;image_int[:,,&amp;nbsp;:,&amp;nbsp;:]&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;br /&gt;SyntaxError:&amp;nbsp;invalid&amp;nbsp;syntax&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;259,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;192,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;TypeError:&amp;nbsp;'PngImageFile'&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;subscriptable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;259,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;192,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;TypeError:&amp;nbsp;'Image'&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;subscriptable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;259,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;194,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;1.0&amp;nbsp;-&amp;nbsp;min_rgb/(intensity+me)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/torch/&lt;a href=&quot;tensor.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tensor.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;366,&amp;nbsp;in&amp;nbsp;__rdiv__&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;self.reciprocal()&amp;nbsp;*&amp;nbsp;other&lt;br /&gt;TypeError:&amp;nbsp;mul():&amp;nbsp;argument&amp;nbsp;'other'&amp;nbsp;(position&amp;nbsp;1)&amp;nbsp;must&amp;nbsp;be&amp;nbsp;Tensor,&amp;nbsp;not&amp;nbsp;numpy.ndarray&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;271,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;204,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_rgb&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;cv2.min(cv2.min(&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cv2.min(cv2.min(&lt;/a&gt;&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;0],&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;1]),&amp;nbsp;fi[:,&amp;nbsp;:,&amp;nbsp;2])&lt;br /&gt;TypeError:&amp;nbsp;'PngImageFile'&amp;nbsp;object&amp;nbsp;is&amp;nbsp;not&amp;nbsp;subscriptable&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;269,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;200,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;Image.load(image_path).convert('RGB')&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.load(image_path).convert('RGB')&lt;/a&gt;&lt;br /&gt;AttributeError:&amp;nbsp;module&amp;nbsp;'&lt;a href=&quot;PIL.Image'&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PIL.Image'&lt;/a&gt;&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'load'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;269,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;204,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;1.0&amp;nbsp;-&amp;nbsp;min_rgb/(intensity+me)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/torch/&lt;a href=&quot;tensor.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tensor.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;366,&amp;nbsp;in&amp;nbsp;__rdiv__&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;self.reciprocal()&amp;nbsp;*&amp;nbsp;other&lt;br /&gt;TypeError:&amp;nbsp;mul():&amp;nbsp;argument&amp;nbsp;'other'&amp;nbsp;(position&amp;nbsp;1)&amp;nbsp;must&amp;nbsp;be&amp;nbsp;Tensor,&amp;nbsp;not&amp;nbsp;numpy.ndarray&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;269,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;=&amp;nbsp;torch.from_numpy(I)&lt;br /&gt;TypeError:&amp;nbsp;expected&amp;nbsp;np.ndarray&amp;nbsp;(got&amp;nbsp;Tensor)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;269,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I_tens&amp;nbsp;=&amp;nbsp;torch.from_numpy(I)&lt;br /&gt;TypeError:&amp;nbsp;expected&amp;nbsp;np.ndarray&amp;nbsp;(got&amp;nbsp;Tensor)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;270,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;204,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;1.0&amp;nbsp;-&amp;nbsp;min_rgb/(intensity+me)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/torch/&lt;a href=&quot;tensor.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tensor.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;366,&amp;nbsp;in&amp;nbsp;__rdiv__&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;self.reciprocal()&amp;nbsp;*&amp;nbsp;other&lt;br /&gt;TypeError:&amp;nbsp;mul():&amp;nbsp;argument&amp;nbsp;'other'&amp;nbsp;(position&amp;nbsp;1)&amp;nbsp;must&amp;nbsp;be&amp;nbsp;Tensor,&amp;nbsp;not&amp;nbsp;numpy.ndarray&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'&lt;a href=&quot;torch.Tensor'&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Tensor'&lt;/a&gt;&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;274,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;GetSaturation(path+image,&amp;nbsp;I)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;208,&amp;nbsp;in&amp;nbsp;GetSaturation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S&amp;nbsp;=&amp;nbsp;1.0&amp;nbsp;-&amp;nbsp;min_rgb/(intensity+me)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/torch/&lt;a href=&quot;tensor.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tensor.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;366,&amp;nbsp;in&amp;nbsp;__rdiv__&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;self.reciprocal()&amp;nbsp;*&amp;nbsp;other&lt;br /&gt;TypeError:&amp;nbsp;mul():&amp;nbsp;argument&amp;nbsp;'other'&amp;nbsp;(position&amp;nbsp;1)&amp;nbsp;must&amp;nbsp;be&amp;nbsp;Tensor,&amp;nbsp;not&amp;nbsp;numpy.ndarray&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;274,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I_num&amp;nbsp;=&amp;nbsp;I.numpy()&lt;br /&gt;TypeError:&amp;nbsp;can't&amp;nbsp;convert&amp;nbsp;CUDA&amp;nbsp;tensor&amp;nbsp;to&amp;nbsp;numpy.&amp;nbsp;Use&amp;nbsp;&lt;a href=&quot;Tensor.cpu()&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tensor.cpu()&lt;/a&gt;&amp;nbsp;to&amp;nbsp;copy&amp;nbsp;the&amp;nbsp;tensor&amp;nbsp;to&amp;nbsp;host&amp;nbsp;memory&amp;nbsp;first.&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;274,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I_num&amp;nbsp;=&amp;nbsp;I.numpy().argmax()&lt;br /&gt;TypeError:&amp;nbsp;can't&amp;nbsp;convert&amp;nbsp;CUDA&amp;nbsp;tensor&amp;nbsp;to&amp;nbsp;numpy.&amp;nbsp;Use&amp;nbsp;&lt;a href=&quot;Tensor.cpu()&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tensor.cpu()&lt;/a&gt;&amp;nbsp;to&amp;nbsp;copy&amp;nbsp;the&amp;nbsp;tensor&amp;nbsp;to&amp;nbsp;host&amp;nbsp;memory&amp;nbsp;first.&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;274,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I_num&amp;nbsp;=&amp;nbsp;I.cpu().numpy()&lt;br /&gt;RuntimeError:&amp;nbsp;Can't&amp;nbsp;call&amp;nbsp;numpy()&amp;nbsp;on&amp;nbsp;Variable&amp;nbsp;that&amp;nbsp;requires&amp;nbsp;grad.&amp;nbsp;Use&amp;nbsp;&lt;a href=&quot;var.detach().numpy()&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;var.detach().numpy()&lt;/a&gt;&amp;nbsp;instead.&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;276,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;H&amp;nbsp;=&amp;nbsp;GetHue(path)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;212,&amp;nbsp;in&amp;nbsp;GetHue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;Image.open(image_path)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.open(image_path)&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2766,&amp;nbsp;in&amp;nbsp;open&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fp&amp;nbsp;=&amp;nbsp;&lt;a href=&quot;builtins.open(filename,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;builtins.open(filename,&lt;/a&gt;&amp;nbsp;&quot;rb&quot;)&lt;br /&gt;IsADirectoryError:&amp;nbsp;[Errno&amp;nbsp;21]&amp;nbsp;Is&amp;nbsp;a&amp;nbsp;directory:&amp;nbsp;'./test_images_int/'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;276,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;H&amp;nbsp;=&amp;nbsp;GetHue(hs_path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;213,&amp;nbsp;in&amp;nbsp;GetHue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hsv_img&amp;nbsp;=&amp;nbsp;cv2.cvtColor(fi,&amp;nbsp;cv2.COLOR_BGR2HSV)&lt;br /&gt;TypeError:&amp;nbsp;Expected&amp;nbsp;Ptr&amp;nbsp;for&amp;nbsp;argument&amp;nbsp;'%s'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;284,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cv2.imwrite(savepath+image,&amp;nbsp;hs)&lt;br /&gt;TypeError:&amp;nbsp;Expected&amp;nbsp;Ptr&amp;nbsp;for&amp;nbsp;argument&amp;nbsp;'%s'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2645,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode,&amp;nbsp;rawmode&amp;nbsp;=&amp;nbsp;_fromarray_typemap[typekey]&lt;br /&gt;KeyError:&amp;nbsp;((1,&amp;nbsp;1),&amp;nbsp;'|O')&lt;br /&gt;&lt;br /&gt;During&amp;nbsp;handling&amp;nbsp;of&amp;nbsp;the&amp;nbsp;above&amp;nbsp;exception,&amp;nbsp;another&amp;nbsp;exception&amp;nbsp;occurred:&lt;br /&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;282,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2647,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raise&amp;nbsp;TypeError(&quot;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&quot;)&lt;br /&gt;TypeError:&amp;nbsp;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;280,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hsi2rgb(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;154,&amp;nbsp;in&amp;nbsp;hsi2rgb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;{}&quot;.format(&lt;a href=&quot;hsi.shape)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hsi.shape)&lt;/a&gt;&lt;br /&gt;AssertionError:&amp;nbsp;'hsi'&amp;nbsp;has&amp;nbsp;incomplete&amp;nbsp;shape.Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;(3,)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(1,&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;(3,)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;284,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hsi2rgb(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;154,&amp;nbsp;in&amp;nbsp;hsi2rgb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;{}&quot;.format(&lt;a href=&quot;hsi.shape)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hsi.shape)&lt;/a&gt;&lt;br /&gt;AssertionError:&amp;nbsp;'hsi'&amp;nbsp;has&amp;nbsp;incomplete&amp;nbsp;shape.Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;(3,)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(1,&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600)&lt;br /&gt;(1,&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600)&lt;br /&gt;(3,)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;284,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hsi2rgb(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;154,&amp;nbsp;in&amp;nbsp;hsi2rgb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;{}&quot;.format(&lt;a href=&quot;hsi.shape)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hsi.shape)&lt;/a&gt;&lt;br /&gt;AssertionError:&amp;nbsp;'hsi'&amp;nbsp;has&amp;nbsp;incomplete&amp;nbsp;shape.Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;(3,)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;277,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;I_num.shape&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;I_num.shape&lt;/a&gt;&amp;nbsp;=&amp;nbsp;(450,&amp;nbsp;600)&lt;br /&gt;ValueError:&amp;nbsp;cannot&amp;nbsp;reshape&amp;nbsp;array&amp;nbsp;of&amp;nbsp;size&amp;nbsp;810000&amp;nbsp;into&amp;nbsp;shape&amp;nbsp;(450,600)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;278,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S.shape&amp;nbsp;=&amp;nbsp;(450,&amp;nbsp;600)&lt;br /&gt;ValueError:&amp;nbsp;cannot&amp;nbsp;reshape&amp;nbsp;array&amp;nbsp;of&amp;nbsp;size&amp;nbsp;810000&amp;nbsp;into&amp;nbsp;shape&amp;nbsp;(450,600)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;280&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs&amp;nbsp;=&amp;nbsp;[H,&amp;nbsp;S[&amp;nbsp;,&amp;nbsp;,0],&amp;nbsp;I_num[&amp;nbsp;,&amp;nbsp;,0]]&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;^&lt;br /&gt;SyntaxError:&amp;nbsp;invalid&amp;nbsp;syntax&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;281,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;hs.shape&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hs.shape&lt;/a&gt;&amp;nbsp;=&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&lt;br /&gt;AttributeError:&amp;nbsp;'list'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'shape'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(3,&amp;nbsp;450,&amp;nbsp;600)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;287,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hsi2rgb(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;154,&amp;nbsp;in&amp;nbsp;hsi2rgb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;{}&quot;.format(&lt;a href=&quot;hsi.shape)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hsi.shape)&lt;/a&gt;&lt;br /&gt;AssertionError:&amp;nbsp;'hsi'&amp;nbsp;has&amp;nbsp;incomplete&amp;nbsp;shape.Expected&amp;nbsp;(...,&amp;nbsp;...,&amp;nbsp;3)&amp;nbsp;got&amp;nbsp;(3,&amp;nbsp;450,&amp;nbsp;600)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;283,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs.permute(1,2,0)&lt;br /&gt;AttributeError:&amp;nbsp;'numpy.ndarray'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'permute'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;282,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hs.permute(1,2,0)&lt;br /&gt;AttributeError:&amp;nbsp;'list'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'permute'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;281,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;hs.shape&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hs.shape&lt;/a&gt;&amp;nbsp;=&amp;nbsp;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;AttributeError:&amp;nbsp;'list'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'shape'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2645,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode,&amp;nbsp;rawmode&amp;nbsp;=&amp;nbsp;_fromarray_typemap[typekey]&lt;br /&gt;KeyError:&amp;nbsp;((1,&amp;nbsp;1,&amp;nbsp;3),&amp;nbsp;'&amp;lt;f8')&lt;br /&gt;&lt;br /&gt;During&amp;nbsp;handling&amp;nbsp;of&amp;nbsp;the&amp;nbsp;above&amp;nbsp;exception,&amp;nbsp;another&amp;nbsp;exception&amp;nbsp;occurred:&lt;br /&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;290,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2647,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raise&amp;nbsp;TypeError(&quot;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&quot;)&lt;br /&gt;TypeError:&amp;nbsp;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2645,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode,&amp;nbsp;rawmode&amp;nbsp;=&amp;nbsp;_fromarray_typemap[typekey]&lt;br /&gt;KeyError:&amp;nbsp;((1,&amp;nbsp;1,&amp;nbsp;3),&amp;nbsp;'&amp;lt;f8')&lt;br /&gt;&lt;br /&gt;During&amp;nbsp;handling&amp;nbsp;of&amp;nbsp;the&amp;nbsp;above&amp;nbsp;exception,&amp;nbsp;another&amp;nbsp;exception&amp;nbsp;occurred:&lt;br /&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;290,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2647,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raise&amp;nbsp;TypeError(&quot;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&quot;)&lt;br /&gt;TypeError:&amp;nbsp;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2645,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode,&amp;nbsp;rawmode&amp;nbsp;=&amp;nbsp;_fromarray_typemap[typekey]&lt;br /&gt;KeyError:&amp;nbsp;((1,&amp;nbsp;1,&amp;nbsp;3),&amp;nbsp;'&amp;lt;f8')&lt;br /&gt;&lt;br /&gt;During&amp;nbsp;handling&amp;nbsp;of&amp;nbsp;the&amp;nbsp;above&amp;nbsp;exception,&amp;nbsp;another&amp;nbsp;exception&amp;nbsp;occurred:&lt;br /&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;290,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2647,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raise&amp;nbsp;TypeError(&quot;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&quot;)&lt;br /&gt;TypeError:&amp;nbsp;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2645,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode,&amp;nbsp;rawmode&amp;nbsp;=&amp;nbsp;_fromarray_typemap[typekey]&lt;br /&gt;KeyError:&amp;nbsp;((1,&amp;nbsp;1,&amp;nbsp;3),&amp;nbsp;'&amp;lt;f8')&lt;br /&gt;&lt;br /&gt;During&amp;nbsp;handling&amp;nbsp;of&amp;nbsp;the&amp;nbsp;above&amp;nbsp;exception,&amp;nbsp;another&amp;nbsp;exception&amp;nbsp;occurred:&lt;br /&gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;291,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(hs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2647,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raise&amp;nbsp;TypeError(&quot;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&quot;)&lt;br /&gt;TypeError:&amp;nbsp;Cannot&amp;nbsp;handle&amp;nbsp;this&amp;nbsp;data&amp;nbsp;type&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;291,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;svhs=hs.fromarray(&lt;a href=&quot;data.astype('uint8'))&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;data.astype('uint8'))&lt;/a&gt;&lt;br /&gt;AttributeError:&amp;nbsp;'numpy.ndarray'&amp;nbsp;object&amp;nbsp;has&amp;nbsp;no&amp;nbsp;attribute&amp;nbsp;'fromarray'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;292,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im&amp;nbsp;=&amp;nbsp;Image.fromarray(svhs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2666,&amp;nbsp;in&amp;nbsp;fromarray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;frombuffer(mode,&amp;nbsp;size,&amp;nbsp;obj,&amp;nbsp;&quot;raw&quot;,&amp;nbsp;rawmode,&amp;nbsp;0,&amp;nbsp;1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2609,&amp;nbsp;in&amp;nbsp;frombuffer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;frombytes(mode,&amp;nbsp;size,&amp;nbsp;data,&amp;nbsp;decoder_name,&amp;nbsp;args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;2542,&amp;nbsp;in&amp;nbsp;frombytes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im.frombytes(data,&amp;nbsp;decoder_name,&amp;nbsp;args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;/home/yejin/.local/lib/python3.5/site-packages/PIL/&lt;a href=&quot;Image.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Image.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;826,&amp;nbsp;in&amp;nbsp;frombytes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s&amp;nbsp;=&amp;nbsp;d.decode(data)&lt;br /&gt;TypeError:&amp;nbsp;a&amp;nbsp;bytes-like&amp;nbsp;object&amp;nbsp;is&amp;nbsp;required,&amp;nbsp;not&amp;nbsp;'Image'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;294,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cv2.imwrite(savepath+image,&amp;nbsp;svhs)&lt;br /&gt;TypeError:&amp;nbsp;Expected&amp;nbsp;Ptr&amp;nbsp;for&amp;nbsp;argument&amp;nbsp;'%s'&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;test.png&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;test.png&lt;/a&gt;&amp;nbsp;done!&lt;br /&gt;(442,&amp;nbsp;622)&lt;br /&gt;(442,&amp;nbsp;622,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;442,&amp;nbsp;622])&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;277,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;I_num.shape&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;I_num.shape&lt;/a&gt;&amp;nbsp;=&amp;nbsp;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;ValueError:&amp;nbsp;cannot&amp;nbsp;reshape&amp;nbsp;array&amp;nbsp;of&amp;nbsp;size&amp;nbsp;824772&amp;nbsp;into&amp;nbsp;shape&amp;nbsp;(450,600,3)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;test.png&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;test.png&lt;/a&gt;&amp;nbsp;done!&lt;br /&gt;(442,&amp;nbsp;622)&lt;br /&gt;(442,&amp;nbsp;622,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;442,&amp;nbsp;622])&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;Traceback&amp;nbsp;(most&amp;nbsp;recent&amp;nbsp;call&amp;nbsp;last):&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;277,&amp;nbsp;in&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;I_num.shape&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;I_num.shape&lt;/a&gt;&amp;nbsp;=&amp;nbsp;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;ValueError:&amp;nbsp;cannot&amp;nbsp;reshape&amp;nbsp;array&amp;nbsp;of&amp;nbsp;size&amp;nbsp;824772&amp;nbsp;into&amp;nbsp;shape&amp;nbsp;(450,600,3)&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image_int&amp;nbsp;=&amp;nbsp;dehaze_image(path+image)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;IndentationError:&amp;nbsp;unexpected&amp;nbsp;indent&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;rgb2int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rgb2int.py&lt;/a&gt;&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;328&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;SyntaxError:&amp;nbsp;EOF&amp;nbsp;while&amp;nbsp;scanning&amp;nbsp;triple-quoted&amp;nbsp;string&amp;nbsp;literal&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&quot;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&quot;,&amp;nbsp;line&amp;nbsp;324&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;SyntaxError:&amp;nbsp;EOF&amp;nbsp;while&amp;nbsp;scanning&amp;nbsp;triple-quoted&amp;nbsp;string&amp;nbsp;literal&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;python&amp;nbsp;&lt;a href=&quot;dehaze_int.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dehaze_int.py&lt;/a&gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;torch.Size([1,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;torch.Size([1,&lt;/a&gt;&amp;nbsp;3,&amp;nbsp;450,&amp;nbsp;600])&lt;br /&gt;libpng&amp;nbsp;warning:&amp;nbsp;iCCP:&amp;nbsp;known&amp;nbsp;incorrect&amp;nbsp;sRGB&amp;nbsp;profile&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.float32'&amp;gt;&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&amp;lt;class&amp;nbsp;'numpy.ndarray'&amp;gt;&lt;br /&gt;(450,&amp;nbsp;600,&amp;nbsp;3)&lt;br /&gt;&lt;a href=&quot;test.png&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;test.png&lt;/a&gt;&amp;nbsp;done!&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Desktop/PyTorch-Image-Dehazing-master$&amp;nbsp;cd&amp;nbsp;..&lt;br /&gt;(aod)&amp;nbsp;yejin@yejin:~/Des&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>.log</author>
      <guid isPermaLink="true">https://likecode.tistory.com/280</guid>
      <comments>https://likecode.tistory.com/280#entry280comment</comments>
      <pubDate>Fri, 31 Jan 2020 17:09:21 +0900</pubDate>
    </item>
  </channel>
</rss>