<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>IT &amp;amp; CODE 이야기</title>
    <link>https://itncode.tistory.com/</link>
    <description>IT관련 이슈와 프로그래밍 언어에 대한 예제와 팁들을 소개하고 있습니다.
이 블로그는 HUHS 회원들과 공동 집필 될 예정입니다.</description>
    <language>ko</language>
    <pubDate>Thu, 16 Jul 2026 11:00:38 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Karoid</managingEditor>
    <image>
      <title>IT &amp;amp; CODE 이야기</title>
      <url>https://t1.daumcdn.net/cfile/tistory/234F503F56BDF8452C</url>
      <link>https://itncode.tistory.com</link>
    </image>
    <item>
      <title>Melting Talk</title>
      <link>https://itncode.tistory.com/105</link>
      <description>&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/992255395EBABC4611&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/ai.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;멜팅톡 게임.ai&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/994B393F5EBABC470D&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;멜팅톡.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/99F9C13E5EBABC450A&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/ai.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;아이스브레이킹 게임 개발문서.ai&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/994336445EBABC4516&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/ai.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;게임화면 디자인.ai&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>CODE/My Project</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/105</guid>
      <comments>https://itncode.tistory.com/105#entry105comment</comments>
      <pubDate>Wed, 13 May 2020 00:10:12 +0900</pubDate>
    </item>
    <item>
      <title>책 [1분 경영]을 읽고서..</title>
      <link>https://itncode.tistory.com/103</link>
      <description>&lt;h3 id=&quot;-1-&quot;&gt;책 [1분 경영]을 읽고서..&lt;/h3&gt;
&lt;p&gt;1분 경영이라는 책은 직원들에게 권한과 책임을 효과적으로 부여하는 방법에 대해서 설명하고 있다. 직원은 목표를 스스로 설정하고 목표를 성취할 경우 경영자에게 1분 칭찬을, 실패할 경우 1분 수정을 받는다. 이 방법론은 즉각적인 피드백을 이용해서 인간의 근본적인 성취욕구를 보다 적극적으로 이용한다.&lt;/p&gt;&lt;p&gt;1분 목표는 사전에 먼저 설정하고 관리자에게 연락해야 한다. 우선 사전에 한 문제당 1문단(3-4줄) 정도의 목표를 설정해야 한다. 그래서 &lt;strong&gt;&quot;명확한&quot;&lt;/strong&gt; 목표(수치적으로 확인 가능한)를 설정하고 그 목표를 수행하기 위한 방법을 1문단을 적어 놓는다. 이후 관리자와 연락하여 목표를 설명한다.&lt;/p&gt;&lt;p&gt;1분 칭찬은 목표를 성공적으로 수행했을 때 (일부라도) 잘한 점을 복돋아주는 방식이다.&lt;/p&gt;&lt;p&gt;1분 수정은 목표를 실패했을 때, 혹은 실수를 발견했을 때 해야한다. 잘못된 점을 지적하되 인격을 지적하는 것이 아니라 문제를 지적하고 더 잘할 수 있으리라 믿는다는 메시지를 줘야한다. 분노하지 않도록 주의해야하고 한번만 이야기해야한다.&lt;/p&gt;
&lt;h3 id=&quot;1-&quot;&gt;1분 경영의 장점&lt;/h3&gt;
&lt;p&gt;이 방법론은 본원적 성취욕을 이용해 책임과 권한을 동시에 이양한다. 이 방법론은 경영자의 스트레스를 줄이고 직원의 성취감을 높이는 부분이 긍정적으로 보인다. 창의성이 중요하고 매번 변화하는 문제를 해결해야 하는 직군에 잘 어울리는 방법론이라고 생각한다.&lt;/p&gt;
&lt;h3 id=&quot;1-&quot;&gt;1분 경영의 주의할 점&lt;/h3&gt;
&lt;p&gt;이 방법을 수행하는 경영자는 다음과 같은 기질을 가지길 요구한다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;경영자는 참을성이 많고 직원을 아끼는 마음을 항상 진심으로 유지해야 한다. 그렇지 않으면 형식에 얽매인 칭찬을 진심으로 받아들이지 않는 직원이 생기기 쉽다. 또한 화를 더디게 내야 하기 때문에 인내심이 매우 필요하다. 직원이 성과를 내도록 그 사람의 마음을 관리해 성과로 이어지려면 경영자가 의심을 걷어내고 믿어야 하기 때문이다.&lt;/li&gt;
&lt;li&gt;관리자는 문제의 본질을 빠르게 파악하는 능력이 있거나, 이를 파악하는 사람을 데리고 있어야 한다. 물론 이 능력은 당연히 모든 관리고에게 필요한 능력이지만, 이 방법론을 사용한다면 특히 더 이 부분을 신경써야 한다. 문제 자체를 파악하지 않으면 성과가 안나고 사람만 좋고 끝나고, 문제를 잘못 파악하게 되면 직원은 칭찬을 위선으로 받아들이고 권위는 추락한다.&lt;/li&gt;
&lt;li&gt;이 방법은 관리자가 문제를 정확하게 파악하기 힘들게 한다. 기존의 방식은 관리자가 일일히 지시를 해서 전체적인 상황을 이미 알고 있을 수 밖에 없지만, 이 방법은 책임과 권한을 맡기기 때문에 받은 문서로 행동을 파악하게 되고 어쩔 수 없이 문제 파악이 늦는다. 따라서 항상 상황에 대한 이해를 높이기 위한 노력을 게을리 해선 안되고 직원들에게 자주 질문해서 문제를 파악해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;1-&quot;&gt;1분 경영의 문제점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;제조업과 같은 단순 업무 작업의 경우 (혁신의 가치가 낮은 작업)은 이 방법론이 더 낮은 효율을 낸다.&lt;/li&gt;
&lt;li&gt;전부 믿기 힘든 직원을 데리고 있는 경우(조직 내 사조직, 경영자에게 정직하지 않은 직원이 다수) 이 방법을 사용하면 엄청난 비효율성과 함께 파국을 맞을 수 있다. 건강한 조직에 시도할 수 있다.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>기타 잡담</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/103</guid>
      <comments>https://itncode.tistory.com/103#entry103comment</comments>
      <pubDate>Mon, 24 Jun 2019 12:56:52 +0900</pubDate>
    </item>
    <item>
      <title>rbenv로 연결한 ruby를 sudo 명령에도 사용하는 방법</title>
      <link>https://itncode.tistory.com/101</link>
      <description>&lt;div style=&quot;text-align: left;&quot;&gt;먼저 로컬 계정으로 rbenv를 설치한다.&lt;br&gt;이후 루비가 설치된 디렉토리를 찾아야한다.&lt;br&gt;&lt;span style=&quot;color:#dea214;&quot;&gt;which ruby&lt;/span&gt;&lt;br&gt;위 명령으로 나오는 주소를 기억한다.&lt;br&gt;이제 root 계정으로 접속한다&lt;br&gt;&lt;span style=&quot;color:#dea214;&quot;&gt;su root&lt;/span&gt;&lt;br&gt;root 계정의 bash script를 수정해서 환경변수 경로에 설치한 루비가 잡히게 해야한다.&lt;br&gt;&lt;span style=&quot;color:#dea214;&quot;&gt;vi ~/.bashrc&lt;/span&gt;&lt;br&gt;다음줄을 추가한다&lt;br&gt;&lt;span style=&quot;color:#dea214;&quot;&gt;export RBENV_ROOT=&quot;로컬 홈경로/.rbenv&quot;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color:#dea214;&quot;&gt;eval &quot;$(rbenv init -)&quot;&lt;/span&gt;&lt;br&gt;이제 설정한 값을 불러온다&lt;br&gt;&lt;span style=&quot;color:#dea214;&quot;&gt;source ~/.bashrc&lt;/span&gt;&lt;br&gt;&lt;/div&gt;</description>
      <category>CODE/Ruby on rails</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/101</guid>
      <comments>https://itncode.tistory.com/101#entry101comment</comments>
      <pubDate>Wed, 5 Jun 2019 14:52:54 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu 서버의 상태를 체크하는 법</title>
      <link>https://itncode.tistory.com/100</link>
      <description>&lt;div style=&quot;text-align: left;&quot;&gt;top 명령어를 이용하면 서버의 상태를 한번에 볼 수 있다.&lt;br&gt;숫자키를 눌러서 해당 번호의 코어의 상태를 볼 수 있고 m키를 눌러서 메모리 상태 위주로 볼 수 있다.&lt;br&gt;y키로 정렬의 상태를 변경할 수 있다.&lt;br&gt;&lt;br&gt;또한 나는 postgresql을 사용하기 때문에 데이터베이스의 상태를 살피기 위해 pg_activity를 이용한다. 어떤 쿼리가 블로킹을 하는지 살펴볼 수 있다.&lt;br&gt;&lt;/div&gt;</description>
      <category>CODE/Server</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/100</guid>
      <comments>https://itncode.tistory.com/100#entry100comment</comments>
      <pubDate>Wed, 5 Jun 2019 14:45:10 +0900</pubDate>
    </item>
    <item>
      <title>루비코인 수업 강의교안</title>
      <link>https://itncode.tistory.com/99</link>
      <description>&lt;div style=&quot;text-align: left;&quot;&gt;[[벌금제도]]&lt;br /&gt;온라인, 오프라인 지각시 5천원, 결석시 1만원의 벌금이 부과된다&lt;br /&gt;시험 / 가족 행사(결혼, 장례)를 제외한 사유에 대해서 전혀 인정되지 않는다.(선약 있다고 빠지는건 당연히 벌금낸다)&lt;br /&gt;&lt;br /&gt;온라인 지각은 오프라인 수업후 4일 안에 강의를 수강하지 않으면 발생한다.&lt;br /&gt;온라인 결석은 다음 오프라인 강의 전까지 강의를 들어오지 않으면 발생한다&lt;br /&gt;&lt;br /&gt;만약 수강생이 수강을 못한 경우 과거에는 보강을 해주었다. 한번 빠지면 절대 못따라오는 구조이기 때문.&lt;br /&gt;&lt;br /&gt;[[커리큘럼]]&lt;br /&gt;1주차: HTML/Ruby&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Ruby: https://opentutorials.org/course/2834&lt;br /&gt;HTML 강의: https://youtu.be/sYA9spTg_GY?list=PLEBQPmkNcLCIE9ERi4k_nUkGgJoBizx6s&lt;br /&gt;오프라인: 나를 소개하는 페이지 만들기&lt;br /&gt;&lt;br /&gt;2주차: Rails 파악하기&lt;br /&gt;https://opentutorials.org/course/2835&lt;br /&gt;온라인: 기본구조 파악하기 / 페이지 생성하기 / POST와 GET로 정보 전달하기&lt;br /&gt;오프라인: 퀴즈 만들기&lt;br /&gt;&lt;br /&gt;3주차: Create와 Read 게시판 만들기&lt;br /&gt;https://opentutorials.org/course/2835&lt;br /&gt;온라인: Create 와 Read 만들기&lt;br /&gt;오프라인: 나에 대한 익명 게시판 만들기&lt;br /&gt;&lt;br /&gt;4주차: Update와 Delete 게시판 만들기&lt;br /&gt;https://opentutorials.org/course/2835&lt;br /&gt;온라인: CRUD가 가능한 게시판 만들기&lt;br /&gt;오프라인: 화분키우기 게임 만들기&lt;br /&gt;&lt;br /&gt;[[[강의 교안]]]&lt;br /&gt;[[1주차]]&lt;br /&gt;[실습과제]&lt;br /&gt;나만의 페이지 만들기때 사용할 무료 템플릿 사이트&lt;br /&gt;https://html5up.net/&lt;br /&gt;&lt;br /&gt;위 URL에 들어가서 마음에 드는 템플릿을 다운받아서 나를 소개하는 페이지를 만들어보자!&lt;br /&gt;&lt;br /&gt;실습을 진행하기 전에 public 폴더에 템플릿을 그대로 넣는 설명은 해줘야한다. 모니터 큰 컴퓨터로 보여주는게 맘편하다. 페이지를 수정하는건 개인의 자유로 두자.&lt;br /&gt;&lt;br /&gt;[진행 포인트]&lt;br /&gt;실습에 들어가기 전에 꼭 복습을 해줘야한다. 1주차의 복습 포인트는 태그에 대한 리뷰와 루비의 조건문 반복문 복습이다. 종이에 적어가면 좋음&lt;br /&gt;&lt;br /&gt;만든 후 각자 돌아가면서 자신이 만든 결과물을 이용해 자기소개를 한다. 그러기 위해서는 구름ide나 cloud ide를 써야한다&lt;br /&gt;&lt;br /&gt;1주차에 벌금제를 설명하고 선입금 3만원 다음주까지 받는다고 한다. 드랍하면 당연히 안내도 된다&lt;br /&gt;&lt;br /&gt;[[2주차]]&lt;br /&gt;[실습과제]&lt;br /&gt;1번 싸이코패스 진단: http://blog.daum.net/sarlira_3/107&lt;br /&gt;2번 나의 무의식을 알아보자 :http://blog.daum.net/sarlira_3/105&lt;br /&gt;3번 나의 성격은 어떠할까? :http://silver_0124.blog.me/220805916834&lt;br /&gt;4번 무의식 심리 테스트(3문항): http://blog.naver.com/lemontea9/220366352021&lt;br /&gt;5번 소름돋는 심리테스트: http://blog.naver.com/jon4624/220471772181&lt;br /&gt;6번 사랑 심리 테스트: http://blog.naver.com/jon4624/220331486777&lt;br /&gt;&lt;br /&gt;if문을 이용해 성격검사 만드는 실습과제이다. 문제를 만들어 놓고 form태그를 이용해 정답을 제출하면 제출한 내용에 따라 다른 결과를 알려주는 웹사이트를 만들면 된다. 처음에는 한문제만 만들게 하고, 잘하는 사람에게는 다음단계로 질문을 하나 더 만들게 할 수 있다.&lt;br /&gt;&lt;br /&gt;꼭 실습하기 전에 복습을 하고 radio type과 hidden type의 input을 설명해줘야한다.(공부해가야겠죠?) 라디오 타입의 인풋이 객관식을 만들때 필요하기 때문이다. 히든 타입은 전에 푼 문제의 결과를 저장하기 위해 필요하다.&lt;br /&gt;&lt;br /&gt;복습의 경우 form태그의 필수속성 2가지와 input태그의 필수속성 2가지는 반드시 물어봐야한다. 그리고 컨트롤러 생성 명령어도 맨날 까먹는다. Post와 get타입의 차이점도 물어보고 시작하자.&lt;br /&gt;&lt;br /&gt;실습을 진행하다보면 잘 못하는 사람이 꼭 생겨난다. 일정 시간을 주고 난 후 칠판에 데이터가 어떻게 흘러갈지 url와 정보의 흐름을 도식으로 설명해주는 것이 좋다.&lt;br /&gt;&lt;br /&gt;[[3주차]]&lt;br /&gt;&amp;nbsp; - 컨트롤러 이름이 home이어야 한다&lt;br /&gt;&amp;nbsp; - 모델 이름이 article이어야 한다&lt;br /&gt;&amp;nbsp; - /article/new 에 글쓰는 페이지가 있어야한다&lt;br /&gt;&amp;nbsp; - / 에 글 목록을 보여주는 페이지가 있어야한다&lt;br /&gt;&amp;nbsp; - /article/:article_id 에 글 내용을 보는 페이지가 있어야한다&lt;br /&gt;&lt;br /&gt;3주차에는 배운 내용을 그대로 이용하여 나에 대한 익명게시판을 만들면 된다. 사실 말이 익명게시판이지 그냥 강의에 나온 게시판이다. 읽고 쓸수 있으면 된다&lt;br /&gt;&lt;br /&gt;3주차의 내용이 수강생들에게 급격하게 어렵다고 느껴지기 때문에 강의에서 했던 내용을&amp;nbsp; 다시 하는것 만으로 충분하다.&lt;br /&gt;&lt;br /&gt;복습할때 유의할점은 마이그레이션 명령어를 까먹고, 버그를 잘 내니까 쓰기 읽기에 썼던 save, find 명령어를 복습해줘야한다. 아 그리고 rake db:migrate:unsafe 를 이용해 데이터베이스를 초기화 하는 방법을 알아두고 가야한다. 가끔 마이그레이션을 잘못한경우 데이터베이스를 초기화 해야할 때가 있다.&lt;br /&gt;&lt;br /&gt;모델 이름 하나 바꿨다고 버그가 제일 많이 나는 주차 중 하나.&lt;br /&gt;&lt;br /&gt;[[4주차]]&lt;br /&gt;준비물: https://www.bgi-usa.com/wp-content/uploads/flower-growing.jpg&lt;br /&gt;이 이미지를 미리 성장 단계별로 잘라놓고 수업 시작할 때 수강생에게 제공해야한다&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - / 에 기르는 꽃 목록을 보여줘야한다. 이름을 누르면 꽃을 볼 수 있고 삭제 버튼이 있다&lt;br /&gt;&amp;nbsp; - /flower/new 에서 새로운 꽃을 등록한다. 이름을 설정할 수 있다.&lt;br /&gt;&amp;nbsp; - /flower/:flower_id 에서는 꽃을 볼 수 있다. 여기에서 물주기 버튼을 누르면 꽃이 성장한다.&lt;br /&gt;&amp;nbsp;[심화실습]&lt;br /&gt;고수가 스터디에 가끔있다. 고수를 위한 추가 퀘스트&lt;br /&gt;&amp;nbsp; - /flower/:flower_id 에서 꽃을 다 키우면 물주기 버튼이 안나오고 졸업시키기 버튼을 누르면 꽃이 삭제된다&lt;br /&gt;&amp;nbsp; - 꽃을 졸업시키면 점수가 추가되게 한다(이거 할 수 있으면 이미 익숙해진거다)&lt;br /&gt;&lt;br /&gt;대망의 4주차. 복습도 이제 뭘 할지 대충 알것이다ㅋㅋㅋㅋ 당연히 삭제와 수정에 관련한 추가된 명령어만 알려주면 된다. 만약 4주차에 버벅인다면 아직 2,3주차에 대한 이해가 부족한 케이스가 다수다. 사실 4주차가 스무스하다면 본인이 잘 가르친것이다. 스무스하지 않으면 수강생의 대부분이 스터디 끝나고 까먹을 확률이 높다.&lt;br /&gt;&lt;br /&gt;4주차에 끝낸다면 선입금한 돈을 돌려주고 회식을 하는게 좋다. 회원가입을 알려주는&amp;nbsp; 5주차를 한다면.. 당신은 열정맨&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Lecture/Ruby coin(강의)</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/99</guid>
      <comments>https://itncode.tistory.com/99#entry99comment</comments>
      <pubDate>Wed, 20 Feb 2019 00:16:39 +0900</pubDate>
    </item>
    <item>
      <title>실사용 서버 보안 문제 해결하기</title>
      <link>https://itncode.tistory.com/98</link>
      <description>&lt;p&gt;실사용 서버를 사용하다 보면 보안 문제를 무시할 수 없다.&lt;br /&gt;주기적인 검사를 통해 보안문제를 확인해봐야 한다.&lt;br /&gt;검사로 알게된 문제는 대게 소프트웨어 업데이트를 하면 해결 가능하다.&lt;/p&gt;
&lt;h3 id=&quot;des-3des-sweet32-&quot;&gt;DES/3DES (Sweet32) 이슈 해결하기&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://bobcares.com/blog/how-to-fix-sweet32-birthday-attacks-vulnerability-cve-2016-2183/&quot;&gt;https://bobcares.com/blog/how-to-fix-sweet32-birthday-attacks-vulnerability-cve-2016-2183/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;openssl-&quot;&gt;OpenSSL 업데이트 하기&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.yeon.me/goto/1205&quot;&gt;https://blog.yeon.me/goto/1205&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;nginx-&quot;&gt;Nginx 업데이트 하기&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tecklyfe.com/how-to-upgrade-nginx-to-latest-stable-version-on-ubuntu/&quot;&gt;https://www.tecklyfe.com/how-to-upgrade-nginx-to-latest-stable-version-on-ubuntu/&lt;/a&gt;&lt;/p&gt;</description>
      <category>CODE/Server</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/98</guid>
      <comments>https://itncode.tistory.com/98#entry98comment</comments>
      <pubDate>Wed, 2 Jan 2019 11:26:48 +0900</pubDate>
    </item>
    <item>
      <title>유니티 강의자료 모음</title>
      <link>https://itncode.tistory.com/97</link>
      <description>&lt;h1&gt;강의 PPT&lt;/h1&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/998802425BA5B6A705&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;0.강의 소개.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;a style=&quot;&quot; class=&quot;txc-file&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/993E3C4D5BA5B6A73B&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;1-1.유니티 설치 및 회원가입.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/9925BC455BA5B6A708&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;1-2.유니티 프로젝트의 구성.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/99C46C475BA5B6A634&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;1-3.유니티의 기초적인 뷰.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/997BFE505BA5B6A62B&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;1-4.충돌과 RigidBody.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/9925FD3B5BA5B6A710&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;1-5. 프리팹과 기본적인 오브젝트.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/99879D3A5BA5B6A72F&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;2-1. 스크립팅이란.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/998A89455BA5B6A723&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;2-2. 변수와 자료형.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/993C99435BA5B6A70A&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;2-3. 연산자.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/99F9D3375BA5B6A71A&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;2-4. 제어문.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/9991A0395BA5B6A70B&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;2-5. 함수의 정의와 기본 함수들.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/99786E425BA5B6A706&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;2-6. 기본 함수들 2.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/994573385BA5B6A707&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;3-1. 이벤트 함수와 기본 함수 3.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/99DA93335BA5B6A70D&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;3-2. 추가 자료형과 접근 한정자.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/993F474D5BA5B6A806&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;3-3. 형변환.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/998281425BA5B6A739&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/pptx.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;3-4. 데이터 저장.pptx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1&gt;이미지 자료&lt;/h1&gt;&lt;h2&gt;2강&lt;/h2&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 200px; width: 200px; height: 212px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9932E03C5BA5B68E0A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9932E03C5BA5B68E0A&quot; width=&quot;200&quot; height=&quot;212&quot; filename=&quot;market.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 200px; height: 212px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;3강&lt;/h2&gt;&lt;div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 200px; width: 200px; height: 334px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990921505BA5B68421&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990921505BA5B68421&quot; width=&quot;200&quot; height=&quot;334&quot; filename=&quot;궁수.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 200px; height: 334px;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 200px; width: 200px; height: 87px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990B8E365BA5B68404&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990B8E365BA5B68404&quot; width=&quot;200&quot; height=&quot;87&quot; filename=&quot;화살.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 200px; height: 87px;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;4강&lt;/h2&gt;&lt;div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 279px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9945A5375BA5B68412&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9945A5375BA5B68412&quot; width=&quot;400&quot; height=&quot;279&quot; filename=&quot;button.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 400px; height: 279px;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Lecture</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/97</guid>
      <comments>https://itncode.tistory.com/97#entry97comment</comments>
      <pubDate>Sat, 22 Sep 2018 12:30:48 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에 sftp 설정하기</title>
      <link>https://itncode.tistory.com/95</link>
      <description>&lt;p&gt;ftp로 정보를 주고받아야 하는 상황이 생겨서 웹사이트를 올린 서버에 ftp를 열어놔야 하는 상황이 생겼다. 아래 글은 Ubuntu 16.04LTS를 기준으로 작성되었다&lt;/p&gt;
&lt;h3 id=&quot;-&quot;&gt;설치하기&lt;/h3&gt;
&lt;p&gt;우선 openssh-server라는 프로그램이 설치되어 있어야 한다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-shell&quot;&gt;$ sudo apt-get install openssh-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;나의 환경에서는 이미 설치가 되어있었다. 이 상태에서 이제 내가 원하는 계정을 생성해보자. (이미 있다면 계정 생성은 패스해도 된다.)&lt;/p&gt;
&lt;h3 id=&quot;-&quot;&gt;계정 생성하기&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ sudo adduser guest
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ubuntu에 계정을 생성 및 비밀번호를 설정하고, 이 계정이 특정 폴더 외의 다른 폴더는 접근하지 못하도록 막아보겠다.&lt;/p&gt;
&lt;h3 id=&quot;sftp-&quot;&gt;sftp 설정 바꾸기&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ vi /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;그리고 다음 부분을&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Subsystem sftp /usr/lib/openssh/sftp-server
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;다음과 같이 바꾼다&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Subsystem sftp internal-sftp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;그리고 파일의 마지막 부분에 다음 코드를 넣는다&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Match Group filetransfer
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;그리고 ssh 데몬을 재시작한다&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ service ssh restart
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;-&quot;&gt;계정에 대한 권한 설정하기&lt;/h3&gt;
&lt;p&gt;제한을 걸 유저를 포함시킬 그룹을 생성한다&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo addgroup --system filetransfer
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;그리고 그 그룹안에 넣자&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;usermod -G filetransfer guest
chown root:root /home/guest
chmod 755 /home/guest
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;여기서 guest부분을 당신이 정한 유저명으로 바꾸면 된다.&lt;br /&gt;이제 생성한 폴더(request)에 대해 이 계정이 쓰기 권한을 갖게 해보자!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /home/guest
mkdir request respond
chown guest:filetransfer request
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이렇게 하면 /, /respond 두 폴더는 쓰기권한이 없고 보기권한만 있는 상태가 되고 /request 폴더에 쓰기 권한이 주어진다. 아래 코드 부분이 filetranfer 그룹에 권하는 주는 부분이기 때문에 꼭 이해하자&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chown guest&lt;/code&gt;:filetransfer request&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>CODE/Server</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/95</guid>
      <comments>https://itncode.tistory.com/95#entry95comment</comments>
      <pubDate>Wed, 20 Jun 2018 17:51:02 +0900</pubDate>
    </item>
    <item>
      <title>기존 Nginx 웹 서버에 Adminer 설치하기</title>
      <link>https://itncode.tistory.com/93</link>
      <description>&lt;h3 id=&quot;-nginx-adminer-&quot;&gt;기존 Nginx 웹 서버에 Adminer 설치하기&lt;/h3&gt;
&lt;p&gt;이미 nginx가 설치되어 있는 상태에서 Adminer를 설치해보도록 하겠습니다&lt;/p&gt;
&lt;h3 id=&quot;adminer-&quot;&gt;Adminer를 프로젝트에 추가하기&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.adminer.org/&quot;&gt;Adminer&lt;/a&gt;사이트에 접속하여 단일한 php 파일을 다운받아 프로젝트의 public 폴더에 추가합니다. 아래 내용은 /public/admin 폴더 안에 database.php라는 이름으로 넣었습니다.&lt;/p&gt;
&lt;h3 id=&quot;php-&quot;&gt;PHP 설치&lt;/h3&gt;
&lt;p&gt;저희 서버는 postgresql을 사용하므로 php-postgresql과 PHP 7 버젼을 설치합니다&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;lang-code&quot;&gt;$ sudo apt install php-fpm php-pgsql
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;설정파일을 수정해서 보안을 신경써줍니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo vi /etc/php/7.0/fpm/php.ini
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;cgi .fix_pathinfo 부분을 찾아 앞에 주석(;)을 삭제하고 값을 1에서 0으로 변경합니다. 1의 경우 PHP 파일을 찾을 수 없을 경우 근접한 파일을 찾아서 실행하게 되므로 보안이 취약하게 됩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cgi.fix_pathinfo=0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;저장 후 다음과 같이 입력하여 PHP FPM을 재시작합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart php7.0-fpm
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;php-nginx-&quot;&gt;PHP를 위한 Nginx 서버 설정&lt;/h3&gt;
&lt;p&gt;이제 Nginx 서버 설정을 위한 설정파일에 들어갑니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vi /etc/nginx/sites-available/default
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;주석을 풀어 php가 작동되도록 만듭니다&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;location ~ ^/admin/database\.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;제대로 설정된다면 /admin/database 을 켜게 되면 adminer가 실행되게 됩니다.&lt;/p&gt;
&lt;p&gt;수정된 설정파일에 {가 맞지 않는다던가 사소한 오타가 있으면 Nginx가 실행되지 않으므로 다음과 같이 입력하여 오류 여부를 확인합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo nginx -t
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이상이 없으면 다음과 같이 입력하여 서버를 재시작합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo service nginx restart
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>CODE/Server</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/93</guid>
      <comments>https://itncode.tistory.com/93#entry93comment</comments>
      <pubDate>Fri, 8 Jun 2018 12:31:00 +0900</pubDate>
    </item>
    <item>
      <title>웹페이지 속도 최적화</title>
      <link>https://itncode.tistory.com/92</link>
      <description>&lt;h3 id=&quot;-&quot;&gt;속도 최적화 왜 필요한가?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.akamai.com/us/en/about/news/press/2009-press/akamai-reveals-2-seconds-as-the-new-threshold-of-acceptability-for-ecommerce-web-page-response-times.jsp&quot;&gt;akamai.com&lt;/a&gt; 과 &lt;a href=&quot;http://www.mcrinc.com/Documents/Newsletters/201110_why_web_performance_matters.pdf&quot;&gt;Gomez&lt;/a&gt; 에서 다음과 같은 통계를 발표했습니다. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;웹 사용자의 절반은 웹 사이트가 2초 이내에 로딩될 것으로 예상합니다.&lt;/li&gt;
&lt;li&gt;페이지 로드 시간이 1초 지연되면 방문자 만족도가 16%감소할 수 있으며 전환율도 7%이상 떨어질 수 있습니다.&lt;/li&gt;
&lt;li&gt;로드 시간은 페이지 폐기에 주요한 기여 요인이며, 로드 시간의 1초마다 삭제 비율이 증가하며, 사용자의 40%가 3초 후 페이지를 포기합니다.&lt;/li&gt;
&lt;li&gt;모바일 인터넷 사용자의 73%가 기기에서 페이지 로드 시간에 문제가 있었다고 보고합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;배포를 할 때 웹페이지 속도 최적화 문제는 매우 중요합니다. 특히 모바일 환경이 늘어나면서 안정적인 연결상황이 아닌 경우도 종종 발생하기 때문에 속도에 신경쓸 수 밖에 없습니다. 제가 개인적으로 속도에 있어서 테스트/고려하는 부분을 살펴보겠습니다.&lt;/p&gt;
&lt;h3 id=&quot;-&quot;&gt;리소스 압축 여부&lt;/h3&gt;
&lt;p&gt;JS파일과 CSS파일을 작성하다보면 줄맞춤 때문에 빈 여백을 많이 생성하게 됩니다. 이런 빈 여백을 축소시키는 방식을 이용한다면, 보다 적은 용량으로 같은 효과를 낼 수 있습니다. 또한 웹상에서 데이터를 주고 받을 때 gzip이라는 방식을 이용하여 압축하여 데이터를 주고 받으면 웹사이트 로드 속도를 빠르게 만들 수 있습니다. 구글에서 제공하는 &lt;a href=&quot;https://developers.google.com/speed/pagespeed/insights/?hl=ko-KR&amp;amp;utm_source=PSI&amp;amp;utm_medium=incoming-link&amp;amp;utm_campaign=PSI&quot;&gt;PageSpeed 도구&lt;/a&gt;를 이용하면 쉽게 어떤 파일이 최적화되지 않았는지 확인할 수 있습니다&lt;/p&gt;
&lt;h3 id=&quot;-&quot;&gt;이미지 크기 최적화 여부&lt;/h3&gt;
&lt;p&gt;HTML 문서에 이미지를 나타내다 보면, 작은 아이콘 수준의 이미지를 로드하는데 큰 용량의 이미지를 불러오게 되는 상황이 종종 발생합니다. 업로드한 이미지 크기 그대로 사용하게 되는 경우인데요, 이런 경우 페이지 로드 속도가 느리다고 사용자가 느낄 수 밖에 없습니다. 저는 이미지 스토리지 서비스를 이용해서 이런 귀찮은 작업 (이미지 크기를 축소해서 로드하는 것)을 간편하게 하고 있습니다. 마찬가지로 구글에서 제공하는 &lt;a href=&quot;https://developers.google.com/speed/pagespeed/insights/?hl=ko-KR&amp;amp;utm_source=PSI&amp;amp;utm_medium=incoming-link&amp;amp;utm_campaign=PSI&quot;&gt;PageSpeed 도구&lt;/a&gt;를 이용하면 쉽게 어떤 파일이 최적화되지 않았는지 확인할 수 있습니다&lt;/p&gt;
&lt;h3 id=&quot;-&quot;&gt;캐싱&lt;/h3&gt;
&lt;p&gt;일반적으로 웹사이트를 사용하다 보면 필연적으로 같은 페이지를 다시 보게되는 경우가 발생하게 됩니다. 이럴 때 캐싱을 이용하면 효과적으로 페이지 로드 속도를 높일 수 있습니다. HTML 캐싱 / JS캐싱 / CSS 캐싱을 적극적으로 활용하기를 바랍니다.&lt;/p&gt;</description>
      <category>CODE/Server</category>
      <author>Karoid</author>
      <guid isPermaLink="true">https://itncode.tistory.com/92</guid>
      <comments>https://itncode.tistory.com/92#entry92comment</comments>
      <pubDate>Thu, 17 May 2018 11:04:57 +0900</pubDate>
    </item>
  </channel>
</rss>