<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>DevFlavor</title>
    <link>https://devflavor.tistory.com/</link>
    <description>개발자로 나아가기</description>
    <language>ko</language>
    <pubDate>Tue, 30 Jun 2026 05:43:15 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>데브플레이버</managingEditor>
    <image>
      <title>DevFlavor</title>
      <url>https://tistory1.daumcdn.net/tistory/6277952/attach/a8ed58a84ec14f43b4b6409e2761ec8a</url>
      <link>https://devflavor.tistory.com</link>
    </image>
    <item>
      <title>2026년 개발 분야의 압도적 흐름은 자동완성에서 자율 실행하는 AI 코딩 에이전트로의 전환</title>
      <link>https://devflavor.tistory.com/entry/2026%EB%85%84-%EA%B0%9C%EB%B0%9C-%EB%B6%84%EC%95%BC%EC%9D%98-%EC%95%95%EB%8F%84%EC%A0%81-%ED%9D%90%EB%A6%84%EC%9D%80-%EC%9E%90%EB%8F%99%EC%99%84%EC%84%B1%EC%97%90%EC%84%9C-%EC%9E%90%EC%9C%A8-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-AI-%EC%BD%94%EB%94%A9-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A1%9C%EC%9D%98-%EC%A0%84%ED%99%98</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd7zdj/dJMcaff7cRJ/ItcKjvIWqN3cclso4DdBNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd7zdj/dJMcaff7cRJ/ItcKjvIWqN3cclso4DdBNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd7zdj/dJMcaff7cRJ/ItcKjvIWqN3cclso4DdBNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd7zdj%2FdJMcaff7cRJ%2FItcKjvIWqN3cclso4DdBNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1064&quot; height=&quot;485&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
.devf{max-width:760px;margin:0 auto;line-height:1.85;color:#24292f;
  font-family:-apple-system,BlinkMacSystemFont,&quot;Apple SD Gothic Neo&quot;,&quot;Pretendard&quot;,&quot;Segoe UI&quot;,Roboto,&quot;Helvetica Neue&quot;,sans-serif;
  font-size:17px;word-break:keep-all;letter-spacing:-.01em}
.devf h2{font-size:25px;font-weight:800;margin:48px 0 16px;padding-left:14px;
  border-left:5px solid #2563eb;line-height:1.4}
.devf h3{font-size:20px;font-weight:700;margin:32px 0 10px;color:#111827}
.devf p{margin:0 0 18px}
.devf .lead{font-size:18px;color:#374151;background:#f8fafc;border:1px solid #e5e7eb;
  border-radius:12px;padding:20px 22px;margin:0 0 32px}
.devf strong{color:#1d4ed8;font-weight:700}
.devf ul{margin:0 0 22px;padding-left:0;list-style:none}
.devf ul li{position:relative;padding:6px 0 6px 26px;margin:0}
.devf ul li::before{content:&quot;▸&quot;;position:absolute;left:4px;top:6px;color:#2563eb;font-weight:700}
.devf .box{background:#eff6ff;border:1px solid #bfdbfe;border-radius:12px;
  padding:18px 22px;margin:0 0 26px}
.devf .box .t{font-weight:800;color:#1e40af;margin-bottom:6px;display:block}
.devf table{width:100%;border-collapse:collapse;margin:0 0 26px;font-size:15.5px}
.devf th,.devf td{border:1px solid #e5e7eb;padding:11px 13px;text-align:left;vertical-align:top}
.devf th{background:#f1f5f9;font-weight:700;color:#111827}
.devf td:first-child{font-weight:700;white-space:nowrap}
.devf blockquote{margin:0 0 26px;padding:14px 20px;border-left:4px solid #94a3b8;
  background:#f8fafc;color:#475569;font-style:normal}
.devf .src{font-size:13.5px;color:#6b7280;border-top:1px dashed #d1d5db;
  padding-top:16px;margin-top:40px}
.devf .tag{display:inline-block;background:#1e293b;color:#fff;font-size:13px;
  padding:3px 11px;border-radius:999px;margin:0 6px 6px 0}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;devf&quot;&gt;
&lt;p class=&quot;lead&quot; data-ke-size=&quot;size16&quot;&gt;2년 전만 해도 AI 코딩 도구라고 하면 &quot;다음 줄을 추천해 주는 자동완성&quot; 정도였다. 2026년 현재, 도구는 코드를 &lt;b&gt;대신 짜고, 테스트를 돌리고, 실패하면 스스로 고치는&lt;/b&gt; 단계로 넘어갔다. 도구의 성능보다 &quot;이걸 어떻게 다룰 것인가&quot;가 개발자의 실력을 가르는 시대가 됐다. 이 글에서는 2026년 AI 코딩의 큰 흐름과, 그래서 지금 무엇을 해야 하는지를 정리한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 자동완성에서 '에이전트'로&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 큰 변화는 AI가 단발성 질문-답변에서 벗어났다는 점이다. 이제 코딩 에이전트는 수 분에서 수 시간까지 혼자 돌아가며, 저장소 전체를 읽고 여러 파일을 수정하고 명령을 실행하고 결과를 보며 반복한다. 채팅으로 도움을 받던 방식에서 &lt;b&gt;자율 실행 루프&lt;/b&gt;로 넘어간 것이 2026년 코딩 도구를 정의하는 핵심 변화다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자로도 분명하다. 여러 개발자 설문을 보면 2026년 초 기준 대부분의 현업 개발자가 AI 도구를 일상적으로 쓰고 있고, 절반 이상이 매일 사용한다. 더 이상 &quot;AI를 쓸 것인가&quot;가 아니라 &quot;어떤 도구를 어디에 쓸 것인가&quot;가 질문이 됐다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 도구 지형: 단일 승자는 없다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흥미로운 점은, 시장이 하나의 도구로 수렴하지 않았다는 것이다. 개발자들은 보통 2~4개의 도구를 동시에 쓰면서, 상황에 따라 갈아탄다. 빠른 자동완성은 편집기 안에서, 복잡한 다단계 작업은 에이전트에게 맡기는 식이다.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;도구&lt;/th&gt;
&lt;th&gt;접근 방식&lt;/th&gt;
&lt;th&gt;강점&lt;/th&gt;
&lt;th&gt;약점&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;터미널 기반 에이전트&lt;/td&gt;
&lt;td&gt;전체 시스템 접근, 복잡한 작업&amp;middot;리팩터링에 강함, MCP&amp;middot;Skills로 확장&lt;/td&gt;
&lt;td&gt;GUI 디프 뷰 없음, 터미널 익숙함 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;AI 네이티브 IDE&lt;/td&gt;
&lt;td&gt;편집기 통합이 매끄럽고 멀티파일 수정(Composer) 가능&lt;/td&gt;
&lt;td&gt;구독&amp;middot;사용량 비용 부담&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;편집기 플러그인&lt;/td&gt;
&lt;td&gt;인지도&amp;middot;기업 도입률 1위, 자동완성 안정적&lt;/td&gt;
&lt;td&gt;전역 맥락 이해는 약한 편&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;에이전트형&lt;/td&gt;
&lt;td&gt;등장은 늦었지만 채택 속도 빠름&lt;/td&gt;
&lt;td&gt;생태계가 아직 정착 중&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&quot;box&quot;&gt;&lt;span class=&quot;t&quot;&gt;참고할 만한 지표&lt;/span&gt; JetBrains의 2026년 1월 AI Pulse 조사에서 Claude Code는 출시 약 8개월 만에 사용률을 6배 가까이 끌어올리며 만족도(CSAT) 1위를 기록했고, Cursor는 2026년 초 연 환산 매출 20억 달러를 넘겼다고 보도됐다. 어떤 도구든 &quot;내 워크플로에 자연스럽게 붙고, 첫 시도에 맞는 코드를 주는가&quot;가 선택 기준이 되고 있다.&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 다시 떠오른 MCP&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 초만 해도 MCP(Model Context Protocol)는 &quot;설정이 번거롭고 토큰을 너무 먹는다&quot;는 비판을 받았다. 그런데 중반으로 오면서 분위기가 바뀌었다. 공개된 MCP 서버가 2,000개를 넘어서고, GitHub&amp;middot;Slack&amp;middot;Jira&amp;middot;Sentry 같은 주요 플랫폼이 공식 MCP를 내놓으면서다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심 가치는 단순하다. &lt;b&gt;한 번 만든 연동이 여러 AI 클라이언트에서 재사용&lt;/b&gt;된다는 점이다. 예전에는 도구마다 전용 연동을 따로 만들어야 했지만, MCP를 쓰면 데이터베이스&amp;middot;클라우드 API&amp;middot;모니터링 도구를 표준 방식으로 한 번에 붙일 수 있다. 다만 모든 경우에 MCP가 정답은 아니다. 토큰 효율이 중요한 운영 파이프라인에서는 직접 CLI 호출이 훨씬 가벼운 경우가 많다. &lt;b&gt;&quot;연동 재사용이냐, 토큰 효율이냐&quot;&lt;/b&gt;를 기준으로 골라 쓰는 감각이 필요하다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 개발자의 역할이 바뀌고 있다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 곱씹어 볼 대목이다. AI 도구 경험을 요구하는 채용 공고는 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;b&gt;설계&lt;/b&gt;하고&lt;/li&gt;
&lt;li&gt;AI가 만든 코드를 &lt;b&gt;평가&amp;middot;검증&lt;/b&gt;하고&lt;/li&gt;
&lt;li&gt;여러 에이전트의 작업을 &lt;b&gt;오케스트레이션&lt;/b&gt;하는&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자의 수요가 높아지고 있다. 한 시니어 엔지니어는 이 변화를 &quot;모든 줄을 직접 쓰던 방식에서, 깊은 전문성이 필요한 부분에 집중하며 AI 에이전트들을 지휘하는 방식으로 옮겨갔다&quot;고 표현하기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 앞서 본 또 하나의 숫자를 기억하자. &lt;b&gt;AI 결과물을 정확하다고 신뢰하는 개발자 비율은 오히려 떨어졌다.&lt;/b&gt; 도구는 강력해졌지만, 그 결과를 판단할 책임은 여전히 사람에게 있다는 뜻이다. 검증이 쉬운 작업(스크립트, 테스트 통과 여부가 분명한 일)일수록 에이전트에게 맡기기 좋고, 개념적으로 어렵거나 설계 의존도가 높은 작업일수록 사람이 붙잡는 편이 낫다는 경험칙이 자리잡고 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 그래서 지금 무엇을 해야 하나&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흐름만 읽고 끝내면 의미가 없다. 2026년을 기준으로, 나라면 이렇게 접근하겠다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;① 에이전트 하나를 '제대로' 길들여라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 도구를 얕게 건드리기보다, 본인 스택에 맞는 에이전트 하나를 깊게 써보는 게 낫다. 프로젝트 규칙&amp;middot;구조를 정리한 컨텍스트 파일(예: 프로젝트 설명 문서)을 잘 갖춰 두면 에이전트의 결과 품질이 눈에 띄게 좋아진다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;② '검증 가능한 작업'부터 위임하라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트가 있는 코드, 결과를 즉시 확인할 수 있는 작업부터 맡겨라. 테스트가 없는 레거시 코드에 곧장 에이전트를 풀면 오히려 디버깅 비용이 늘어난다. AI 시대에 TDD가 다시 주목받는 이유가 여기 있다 &amp;mdash; 테스트가 곧 에이전트에게 주는 명세이자 가드레일이 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;③ '읽고 판단하는 힘'을 따로 키워라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 짜는 시간이 줄어든 만큼, 남이(혹은 AI가) 짠 코드를 빠르게 읽고 위험을 짚어내는 능력의 가치가 올라간다. 보안 결함, 하드코딩된 비밀값, 미묘한 로직 오류는 여전히 사람의 눈이 마지막 방어선이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;④ 비용 감각을 가져라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도구가 강력해질수록 사용량 기반 과금이 늘면서, &quot;얼마나 똑똑한가&quot;만큼 &quot;얼마나 토큰을 아끼는가&quot;가 실무의 화두가 됐다. 매번 재시도하게 만드는 도구보다, 첫 시도에 맞는 결과를 주는 도구가 결국 싸다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;정리하면 &amp;mdash; 2026년의 핵심은 &quot;AI가 개발자를 대체한다&quot;가 아니라, &lt;b&gt;&quot;코드를 쓰는 사람에서 시스템을 설계하고 AI를 지휘&amp;middot;검증하는 사람으로 무게중심이 옮겨간다&quot;&lt;/b&gt;는 것이다. 도구를 거부하면 뒤처지고, 맹신하면 망가진다. 그 사이에서 균형을 잡는 게 올해의 숙제다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span class=&quot;tag&quot;&gt;#AI코딩&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;#코딩에이전트&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;#개발트렌드2026&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;#MCP&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;#개발자커리어&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;src&quot; data-ke-size=&quot;size16&quot;&gt;참고 자료: JetBrains AI Pulse / State of Developer Ecosystem (2026&amp;middot;2025), Stack Overflow Developer Survey 2025, Anthropic 2026 Agentic Coding Trends Report, The Pragmatic Engineer AI Tooling Survey (2026), Hired.com 채용 데이터 (2026). 통계 수치는 위 출처를 재구성&amp;middot;요약한 것으로, 정확한 원문 수치는 각 보고서를 확인하시기 바랍니다.&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI코등</category>
      <category>MCP</category>
      <category>개발자커리어</category>
      <category>개발트랜드2026</category>
      <category>코딩에이전트</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/28</guid>
      <comments>https://devflavor.tistory.com/entry/2026%EB%85%84-%EA%B0%9C%EB%B0%9C-%EB%B6%84%EC%95%BC%EC%9D%98-%EC%95%95%EB%8F%84%EC%A0%81-%ED%9D%90%EB%A6%84%EC%9D%80-%EC%9E%90%EB%8F%99%EC%99%84%EC%84%B1%EC%97%90%EC%84%9C-%EC%9E%90%EC%9C%A8-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-AI-%EC%BD%94%EB%94%A9-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A1%9C%EC%9D%98-%EC%A0%84%ED%99%98#entry28comment</comments>
      <pubDate>Mon, 29 Jun 2026 23:00:37 +0900</pubDate>
    </item>
    <item>
      <title>hadoop with AWS - 01 (기초)</title>
      <link>https://devflavor.tistory.com/entry/hadoop-with-AWS-01-%EA%B8%B0%EC%B4%88</link>
      <description>&lt;h1&gt;&lt;b&gt;하둡이란?&lt;/b&gt;&lt;/h1&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;범용 하드웨어로 구축된 컴퓨터 클러스터의 방대한 데이터 세트를 분산해 저장하고 처리하는 오픈 소스 소프트웨어 플랫폼이다.&amp;nbsp;하둡은 Apache Software Foundation에서 개발된 분산 컴퓨팅 시스템으로, 수천 대 이상의 컴퓨터 클러스터를 활용하여 대용량 데이터를 효율적으로 저장하고 처리할 수 있다.&lt;/li&gt;
&lt;li&gt;현재 하둡 이외의 다양한 대규모 데이터 처리 기술과 플랫폼들이 나와있기 때문에 하둡의 파이가 줄어드는 추세이다. (하지만 아직은 하둡의 파이가 큰편이다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;하둡의 핵심&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장애 허용 (fault tolence)&lt;/b&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;/ul&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;h1&gt;&lt;b&gt;하둡 에코 시스템&lt;/b&gt;&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpHjyl/btskRNy8Yzr/KLJr9NzfRtHtm1lNhFHLF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpHjyl/btskRNy8Yzr/KLJr9NzfRtHtm1lNhFHLF0/img.png&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;368&quot; data-is-animation=&quot;false&quot; style=&quot;width: 37.6578%; margin-right: 10px;&quot; data-widthpercent=&quot;38.1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpHjyl/btskRNy8Yzr/KLJr9NzfRtHtm1lNhFHLF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpHjyl%2FbtskRNy8Yzr%2FKLJr9NzfRtHtm1lNhFHLF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;545&quot; height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKl7pp/btskQRoOXtL/Q8xGzngkSRzgAlKY8urqcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKl7pp/btskQRoOXtL/Q8xGzngkSRzgAlKY8urqcK/img.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;266&quot; data-is-animation=&quot;false&quot; style=&quot;width: 61.1794%;&quot; data-widthpercent=&quot;61.9&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKl7pp/btskQRoOXtL/Q8xGzngkSRzgAlKY8urqcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKl7pp%2FbtskQRoOXtL%2FQ8xGzngkSRzgAlKY8urqcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처 :&amp;nbsp; https://1004jonghee.tistory.com/m/entry/1004jonghee-하둡에코시스템Hadoop-Eco-System-Ver-10?category=419383&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;출처 : 클라우드데라 (하둡생태계)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb55e0/btskKlxXrG8/OiLQHQAjqmkVLbBigA9JMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb55e0/btskKlxXrG8/OiLQHQAjqmkVLbBigA9JMK/img.png&quot; data-alt=&quot;출처 : 시작하세요! 하둡 프로그래밍(위키북스)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb55e0/btskKlxXrG8/OiLQHQAjqmkVLbBigA9JMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb55e0%2FbtskKlxXrG8%2FOiLQHQAjqmkVLbBigA9JMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;455&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : 시작하세요! 하둡 프로그래밍(위키북스)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;하둡의 코어 프로젝트&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HDFS 분산데이터 저장&lt;/li&gt;
&lt;li&gt;MapReduce 분산 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;하둡의 서브 프로젝트&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;li&gt;직렬화 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;b&gt;하둡의 구성&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하둡은 주로 &lt;b&gt;두 가지 핵심 컴포넌트로 구성&lt;/b&gt;된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Hadoop Distributed File System (HDFS)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대용량 데이터를 여러 노드에 분산하여 저장하는 파일 시스템.&lt;/li&gt;
&lt;li&gt;데이터는 여러 노드로 나뉘어 저장되며, 각 노드는 데이터의 복제본을 가지고 있어 데이터의 안정성과 내결함성을 보장한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IxgCV/btskNfKyAP3/VkBDHSNZwD67yZtr0vcAx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IxgCV/btskNfKyAP3/VkBDHSNZwD67yZtr0vcAx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IxgCV/btskNfKyAP3/VkBDHSNZwD67yZtr0vcAx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIxgCV%2FbtskNfKyAP3%2FVkBDHSNZwD67yZtr0vcAx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;390&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MapReduc
&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;MapReduce는 데이터를 작은 조각으로 나누어 여러 노드에서 병렬로 처리하고, 결과를 다시 모아서 최종 결과를 생성한다.&lt;/li&gt;
&lt;li&gt;대규모 데이터 집합을 효율적으로 분석하고 처리할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>hadoop</category>
      <category>hadoop</category>
      <category>하둡</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/26</guid>
      <comments>https://devflavor.tistory.com/entry/hadoop-with-AWS-01-%EA%B8%B0%EC%B4%88#entry26comment</comments>
      <pubDate>Wed, 21 Jun 2023 22:54:16 +0900</pubDate>
    </item>
    <item>
      <title>실무로 배우는 빅데이터 기술-02 (빅데이터 구현기술)</title>
      <link>https://devflavor.tistory.com/entry/%EC%8B%A4%EB%AC%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B8%B0%EC%88%A0-02-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B5%AC%ED%98%84%EA%B8%B0%EC%88%A0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.62em; letter-spacing: -1px;&quot;&gt;1. 빅데이터 프로젝트&lt;/span&gt;&lt;/p&gt;
&lt;article id=&quot;866ded97-4bb2-4b71-b62a-194e9fc88924&quot; class=&quot;page sans&quot;&gt;
&lt;div class=&quot;page-body&quot;&gt;
&lt;ul id=&quot;b6064f56-c8e3-4559-9d6b-d67f79aaba53&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;플랫폼 구축형&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;빅데이터 분석&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;빅데이터 운영&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fa988c77-15d2-4ef2-ac5a-3a1a8fa22bc7&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;플랫폼 구축은 빅데이터 SI 구축형&lt;/h3&gt;
&lt;p id=&quot;de2c0367-31b6-4788-9fa6-2dc4931acb27&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;빅데이터의 하드웨어, 소프트웨어 설치 구성&lt;/p&gt;
&lt;p id=&quot;27dfe382-14f8-4e6f-aa85-e0f402b9dca9&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;수집 &amp;rarr; 적재 &amp;rarr; 처리 &amp;rarr; 탐색 &amp;rarr; 분석 기능을 구성&lt;/p&gt;
&lt;p id=&quot;24f02c0b-4ecd-460c-b4a4-629a3fb6c959&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;백업돼 있는 데이터의 마이그레이션, 주변 업무 시스템에서 발생하는 데이터의 양과 속성에 따라 프로젝트 기간이 변동&lt;/p&gt;
&lt;h2 id=&quot;72aee551-0139-483a-bae4-3ab74c20fa2f&quot; class=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;2. 빅데이터 기술의 변화&lt;/h2&gt;
&lt;p id=&quot;7fc87f35-0bd6-4a02-80b1-47df558162f1&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;초기 : 대용량 저장소와 배치 처리기술에 집중&lt;/p&gt;
&lt;p id=&quot;f58a013a-fe4d-4866-8e61-9d5d66affc15&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;중기 : 실시간 처리 및 온라인 분석 기술 개발&lt;/p&gt;
&lt;p id=&quot;ff9d7ad6-47f4-4f02-a121-0b9e0b9f1fd8&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;최근 : 데이터 마이닝 및 AI의 고급 분석을 위한 전처리와 분석 마트를 구성하는 기술&lt;/p&gt;
&lt;h3 id=&quot;e99f157f-5923-4a34-89fc-f9ee763a2692&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;빅데이터 기술의 핵심 하둡&lt;/h3&gt;
&lt;p id=&quot;4f76ce64-0bb8-4782-9db6-c850cc766fb4&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;2005년 하둡이 알려지며 빅데이터 기술들이 끊임없이 진화&lt;/p&gt;
&lt;p id=&quot;16c3c0c0-58ad-430d-a942-fab6158ab651&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;빅 3 기업 cloudera, hortonworks, mapr 업체들도 하둡을 중심으로 각자의 빅데이터 소프트웨어 스택을 개발하고 공개&lt;/p&gt;
&lt;h2 id=&quot;a668e2aa-ea3c-4ecd-b822-e8bde6ea2b18&quot; class=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;3. 빅데이터 구현기술&lt;/h2&gt;
&lt;p id=&quot;8bf3a720-1dd5-433b-b900-9576e0ffa958&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;빅데이터 아키텍처는 수집 &amp;rarr; 적재 &amp;rarr; 처리 &amp;rarr; 탐색 &amp;rarr; 분석 &amp;rarr; 응용&lt;/p&gt;
&lt;h3 id=&quot;55334e95-8d86-4a3a-9fc3-6901130e8e45&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;수집&lt;/h3&gt;
&lt;p id=&quot;8c5eec0e-096a-4833-b5e5-a5138d991070&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;내,외부 데이터 연동 및 통합&lt;/p&gt;
&lt;ul id=&quot;dca3fa69-ec3e-4694-bcf9-68cb58138e17&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;crawling&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;84c7b870-5ffb-4a09-8e61-858bbf11fb7c&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;ftp&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;260c8866-6185-4198-9a30-f5182c7d4c86&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;open api&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;885f669e-19b8-4852-900d-2cf965362248&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;rss&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;6fcc99b5-446f-401d-87c9-32f846be63ef&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;log aggretion&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;fbdea22e-0402-4d33-987c-ab0223005c10&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;db aggregation&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;f58bfccd-148a-4326-9ed7-b91319bfd067&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;streaming&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;f0027652-2809-4241-a402-fb37eb29aaa8&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;빅데이터 수집 기술은 원천데이터를 효과적으로 수집하는 기술&lt;/p&gt;
&lt;p id=&quot;3bc2c76f-7e28-4994-89d2-60e12e173e6e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;외부데이터 수집에는 SNS, 블로그, 포털 수집시 크롤링, NLP 등 비정형 처리를 위한 기술이 선택적으로 적용&lt;/p&gt;
&lt;p id=&quot;f7c3f63c-f3ab-4115-8a7b-e5e445abe9c0&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;수집 처리에는 대용량 파일 수집, 실시간 스트림 수집&lt;/p&gt;
&lt;p id=&quot;4e5ce1ae-d732-4cbe-b649-7a8febd3fb66&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;실시간 수집 : CEP(complex event processing), ESP(event stream processing)&lt;/p&gt;
&lt;p id=&quot;5a420289-d94c-4edf-ae5b-e2eacfbe9665&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;수집 데이터는 정제, 변환, 필터링 등의 작업을 추가로 진행하여 데이터 품질을 향상시킨 후 빅데이터 저장소에 적재한다.&lt;/p&gt;
&lt;p id=&quot;0c27c147-5154-42a5-9dae-713d32afa02e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;빅데이터 수집 관련 소프트웨어는 flume, fluented, scribe, logastash, chukwa, nifi, embulk등이 있다.&lt;/p&gt;
&lt;p id=&quot;28e933b1-0a66-4b8c-8dcc-f6ab41564228&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;파일럿 프로젝트에서는 flume 사용&lt;/p&gt;
&lt;p id=&quot;42213e3f-9c28-4a5e-bc29-9833d9c0131e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;실시간 스트림 데이터 처리 : 스톰(storm), 에스퍼(esper) 사용&lt;/p&gt;
&lt;h3 id=&quot;d66edc6e-ede7-4da2-a645-84e50be071c5&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;적재&lt;/h3&gt;
&lt;p id=&quot;2f4c282c-330b-41cc-9db9-3f6178ca8f1d&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;대용량/실시간 데이터 처리, 분산 파일 시스템 저장&lt;/p&gt;
&lt;ul id=&quot;001ca6eb-b986-47d7-908f-94b3ac003c1c&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;distributed file&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;757fb058-071c-4d8b-92eb-dfd46f94c6fd&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;No-SQL&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;a7aef091-de9a-4e36-8bcf-535b7eb160dd&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;Memory Cached&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;5188fee2-8cec-429b-a5c1-63ce8a916a2a&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;Message Que&lt;/li&gt;
&lt;/ul&gt;
&lt;ol id=&quot;0b897ece-369a-4d9f-ae44-ed68d95f8499&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;1&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대용량 파일 전체를 영구적 저장 : HDFS&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;3a721d5a-e44f-4a68-a741-f00962fe3e5f&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대규모 메시징 데이터 전체를 영구 저장 : NoSQL(HBase, MongoDB, Casandra 등)&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;aac4500d-8937-4f5e-b23f-7e997e75a3c2&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;3&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대규모 메시징 데이터 일부를 임시 저장 : 인메모리 캐시 (redis, memcached, infinispan 등)&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;296f4db9-6011-45fb-a171-ed89e3d3a324&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;4&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대규모 메시징 데이터 전체를 버퍼링 처리 : message oriented middleware (kafka, rabbitMQ, ActiveMQ 등)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ade21f43-a2e1-4657-8f2d-1ae57a2c0735&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;처리/탐색&lt;/h3&gt;
&lt;p id=&quot;38ffdb1a-b4e0-48a5-9c46-79f9505a41b9&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 선택, 변환, 통합, 축소 / 데이터 워크플로 및 자동화&lt;/p&gt;
&lt;ul id=&quot;2c31d7a6-6926-4419-af1d-fbc3a5a4e351&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;structured processing&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;203f338d-c8ce-45f9-9e33-ee4c748cb193&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;unstructured processing&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;c49feff5-49fa-4643-b54b-605360a1797f&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;c59542a0-b67c-4fb4-b500-cf7344986906&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;scheduler&lt;/li&gt;
&lt;/ul&gt;
&lt;ol id=&quot;a97e5f80-8547-468f-b0d5-d722aa5b14b7&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;1&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;SQL : 휴, 하이브 스파크&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;d19ddd80-5de2-425e-8640-ef0998d87e13&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;후처리 작업 자동화 : 우지&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;08cddcc1-4708-4344-b136-b39f7dec93ed&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;분석/ 응용기술&lt;/h3&gt;
&lt;p id=&quot;e782c78c-9557-4ef5-931e-edd1784e2b62&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;4차 산업혁명 이후 선형적 확장&lt;/p&gt;
&lt;p id=&quot;7d1f55a6-3333-408b-b2d0-8f11907598e2&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;분산환경 위에서 머신러닝 기술을 구현해 군집(clustering), 분류(classification), 회귀(regression), 추천(recommendation)&lt;/p&gt;
&lt;p id=&quot;d5c7a855-ba00-4a34-8599-385671ba89b9&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;분석/응용기술로는 임팔라, 제플린, 머하웃, R, 텐서플로를 다룬다&lt;/p&gt;
&lt;p id=&quot;baa40290-b0ca-4d30-9bb2-ec733506b4d9&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;스쿱을 응용해서 외부 RDBMS에 데이터를 제공한다.&lt;/p&gt;
&lt;h2 id=&quot;6f910eb9-554c-44dd-955a-a0496a2b7144&quot; class=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;4. 데이터 보안&lt;/h2&gt;
&lt;p id=&quot;95ccc04d-4a09-4f7b-b95b-6130c18607db&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;개인식별 정보는 비식별화 처리해 적재해야한다.&lt;/p&gt;
&lt;ul id=&quot;52f190ae-6fea-4b65-8ad8-8dc821d5013c&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;가명처리&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;ae924b4c-27bf-47df-9c37-c1b63d2242d3&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;총계처리&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;7377d8c3-0768-43cf-b77c-0edcfdf84534&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;데이터 값 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;e1091814-7cdf-4d10-9c9f-7c109dca5c76&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;범주화&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;19d29ee5-d6ea-4423-8735-772cd1438e2c&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;마스킹&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;7088f166-4ab3-475f-9fe6-da20f26aad36&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;정책과 보안으로는 아파치 녹스, 아파치 센트리, 아파치 레인저, 커베로스 등을 활용할 수 있다.&lt;/p&gt;
&lt;figure id=&quot;15d2d177-a64e-4daa-bac5-2fd94a8a0bc8&quot; class=&quot;image&quot;&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;808&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbyg9H/btsiuMcB3c4/152gGP29XdfSFcKkETRPJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbyg9H/btsiuMcB3c4/152gGP29XdfSFcKkETRPJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbyg9H/btsiuMcB3c4/152gGP29XdfSFcKkETRPJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdbyg9H%2FbtsiuMcB3c4%2F152gGP29XdfSFcKkETRPJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;808&quot; height=&quot;489&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;808&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p id=&quot;2ec6ea27-6767-4537-ba1c-c78393101820&quot; class=&quot;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;아파치 녹스&lt;/b&gt;&lt;/p&gt;
&lt;ul id=&quot;8ee072f8-2f20-46a4-863c-228f4e6cacef&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;네트워크 상의 DMZ에 위치&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;4bb908e5-8b03-4905-a728-0dd778d34b1f&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;외부 클라이언트가 하둡에코시스템에 직접 접근하는 것을 막음.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;3a4a4580-d14a-43aa-9a8c-0ffaec0b05cb&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;중간 게이트웨이 역할&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;85435b8a-c385-458b-8e18-d14d9c01b6a2&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;접근 인증 LDAP, KDC&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EqKPg/btsivSXGODm/YaCv0RtAHqLd4zkDcvSqh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EqKPg/btsivSXGODm/YaCv0RtAHqLd4zkDcvSqh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EqKPg/btsivSXGODm/YaCv0RtAHqLd4zkDcvSqh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEqKPg%2FbtsivSXGODm%2FYaCv0RtAHqLd4zkDcvSqh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;764&quot; height=&quot;427&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p id=&quot;5d79154d-4671-466a-a379-8c4a9d10cfcc&quot; class=&quot;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;아파치 센트리 서버&lt;/b&gt;&lt;/p&gt;
&lt;ul id=&quot;dfe64873-b806-4d19-96a6-72862c87bf76&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;하둡 파일 시스템에 상세한 접근 제어가 필요할 때 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;311b1196-bdac-4c02-94fe-f0c00dae36f6&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;센트리 에이전트를 반드시 설치해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;7b34998e-56a6-4cc9-a47e-9818eaa54c57&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;센트리 에이전트가 센트리 서버와 통신하면서 접근 권한을 획득하게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;7654132b-8b0b-4e5b-ba8b-975638bfad84&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;감사 로그를 편리하게 조회할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled 2.png&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHlPzz/btsivQljw2F/AapIADXFyvtntFkA2C6XT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHlPzz/btsivQljw2F/AapIADXFyvtntFkA2C6XT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHlPzz/btsivQljw2F/AapIADXFyvtntFkA2C6XT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHlPzz%2FbtsivQljw2F%2FAapIADXFyvtntFkA2C6XT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;358&quot; data-filename=&quot;Untitled 2.png&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p id=&quot;013f3fc5-b21b-4c09-99c3-fb6cea7e3692&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;533d23b0-9f76-416a-82c2-f211507e3a91&quot; class=&quot;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;아파치 레인저&lt;/b&gt;&lt;/p&gt;
&lt;ul id=&quot;0649df2e-fbf4-4376-bb8d-254c8c01ee73&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;아파치 센트리와 유사한 아키텍처&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;호튼웍스에서 지원&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;레인저가 지원하는 에코시스템이 많아 범용성이 좀 더 높다&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;레인저 플러그인을 통해 서버와 통신&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/article&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;&lt;/p&gt;</description>
      <category>Base</category>
      <category>빅데이터 구현 기술</category>
      <category>실무 프로젝트로 배우는 빅데이터 기술</category>
      <category>아파치</category>
      <category>아파치 녹스</category>
      <category>아파치 레인저</category>
      <category>아파치 센트리</category>
      <category>적재</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/25</guid>
      <comments>https://devflavor.tistory.com/entry/%EC%8B%A4%EB%AC%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B8%B0%EC%88%A0-02-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B5%AC%ED%98%84%EA%B8%B0%EC%88%A0#entry25comment</comments>
      <pubDate>Sun, 4 Jun 2023 17:12:58 +0900</pubDate>
    </item>
    <item>
      <title>실무로 배우는 빅데이터 기술-01 (with.분석인프라)</title>
      <link>https://devflavor.tistory.com/entry/%EC%8B%A4%EB%AC%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B8%B0%EC%88%A0-01-with%EB%B6%84%EC%84%9D%EC%9D%B8%ED%94%84%EB%9D%BC</link>
      <description>&lt;h1&gt;Beginning&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우여꼭절 끝에 얻어낸 ftp 설정과 파이썬3 버전 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 실무로 배우는 빅데이터 기술을 실습해보기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 서적에서는 가상환경에서 실행했지만 Cent OS 기반으로 구성된 인프라가 있으니 거기서 실행하도록 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실습 예외 부분&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;centos의 x-window 부팅을 해제하여 콘솔에 바로 아이디/패스워드 입력창이 나타난다.Password : adminuser &amp;harr; 비밀번호 입력id 5 : initdefault: &amp;harr; 5부분을 3으로 수정한다.&lt;/li&gt;
&lt;li&gt;reboot &amp;harr; 재시작한다.&lt;/li&gt;
&lt;li&gt;vi /etc/inittab &amp;harr; etc하위의 inittab을 vi 편집기로 수정한다.&lt;/li&gt;
&lt;li&gt;su root &amp;harr; root로 전환&lt;/li&gt;
&lt;li&gt;고정 ip와 네트워크 설정&amp;nbsp;HWADDR 설정 값은 다 다르게 입력해야할 값으로 가상머신의 MAC 주소이다.&lt;/li&gt;
&lt;li class=&quot;ini&quot;&gt;&lt;code&gt;DEVICE=eth0
HWADDR=08:00:27:97:F1:13
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADADDR=192.168.56.101
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
NETWORK=192.168.56.0
&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;버츄얼박스에서 설정&amp;rarr;네트워크&amp;rarr;어댑터2 에서 나온 MAC 주소 값을 두 자리숫자 단위로 잘라서 : 를 구분값으로 입력한다.&lt;/li&gt;
&lt;li&gt;vi /etc/sysconfig/network-scripts/ifcfg-eth0 &amp;harr; 이전에는 수정이었다면 ifcfg-eth0 파일을 생성한다.&lt;/li&gt;
&lt;li&gt;자동으로 만들어진 네트워크 룰을 모두 주석처리 또는 삭제처리하여 향후 발생할 수 있는 네트워크 충돌을 방지#PCI device 밑을 다 주석처리.&lt;/li&gt;
&lt;li&gt;vi etc/udev/rules.d/70-;erskstent-net.rules&lt;/li&gt;
&lt;li&gt;재시작후 제대로 설정되었는지 확인&lt;/li&gt;
&lt;li&gt;service network restart &amp;rarr; ifconfig eh0&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실습 시작&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 ssh로 서버를 접속한 상태이다. 하지만 해당 컨테이너를 구축한지 너무 오래되어 설치된 패키지도 제대로 되어있지 않을 확률이 높다. 따라서 ssh 접속부터 시작한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. ssh 접속을 위한 패키지 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yum install openssh*&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;service sshd restart&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chkconfig sshd on&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;reboot&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/47lLc/btsis1g2BlS/jkK1k0RIBTnleqfdPyMhfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/47lLc/btsis1g2BlS/jkK1k0RIBTnleqfdPyMhfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/47lLc/btsis1g2BlS/jkK1k0RIBTnleqfdPyMhfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F47lLc%2Fbtsis1g2BlS%2FjkK1k0RIBTnleqfdPyMhfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;642&quot; height=&quot;527&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MET4h/btsiuJ01hIv/kbwLlcmZAechNa54wpkVu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MET4h/btsiuJ01hIv/kbwLlcmZAechNa54wpkVu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MET4h/btsiuJ01hIv/kbwLlcmZAechNa54wpkVu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMET4h%2FbtsiuJ01hIv%2FkbwLlcmZAechNa54wpkVu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;623&quot; height=&quot;672&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;는&amp;hellip; service network restart 했더니 네트워크 에러 : 커넥션 타임아웃&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duCdNx/btsitS5grPN/aJcrrrRKNmojeEciDVPWV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duCdNx/btsitS5grPN/aJcrrrRKNmojeEciDVPWV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duCdNx/btsitS5grPN/aJcrrrRKNmojeEciDVPWV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduCdNx%2FbtsitS5grPN%2FaJcrrrRKNmojeEciDVPWV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;377&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;재시작되는데 5분이 걸렸다.&amp;gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 호스트 정보를 수정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi /etc/hosts&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi /etc/sysconfig/network&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스트네임에 &lt;a href=&quot;http://xn--server-8w4ys92f.hadoop.com&quot;&gt;server이름.hadoop.com&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;는&amp;hellip; 이책은 하둡을 하는 거고..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 하나로 하둡을 못하겠구나 깨달았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;centos 다운받고 버츄얼로 다시 실행하도록 하겠다.&lt;/p&gt;</description>
      <category>Base</category>
      <category>CentOS</category>
      <category>putty</category>
      <category>x-window부팅</category>
      <category>실무로 배우는 빅데이터기술</category>
      <category>호스트정보수정</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/24</guid>
      <comments>https://devflavor.tistory.com/entry/%EC%8B%A4%EB%AC%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B8%B0%EC%88%A0-01-with%EB%B6%84%EC%84%9D%EC%9D%B8%ED%94%84%EB%9D%BC#entry24comment</comments>
      <pubDate>Sat, 3 Jun 2023 22:59:36 +0900</pubDate>
    </item>
    <item>
      <title>dacon 버스 운행시간 예측 프로젝트 1</title>
      <link>https://devflavor.tistory.com/entry/dacon-%EB%B2%84%EC%8A%A4-%EC%9A%B4%ED%96%89%EC%8B%9C%EA%B0%84-%EC%98%88%EC%B8%A1-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dacon.io/edu/1003&quot;&gt;https://dacon.io/edu/1003&lt;/a&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;개요&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 기반의 데이터 분석 및 인공지능 기술을 활용하여 버스 운행 시간을 예측하는 프로젝트입니다.&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;데이터 분석 및 인공지능 기술을 활용하여 정확한 버스 운행 시간을 예측할 수 있는 능력을 갖춥니다. 데이터 전처리, 시각화, 통계적 분석, 머신러닝 및 딥러닝 모델링 등 다양한 기법을 배우고, 실제 데이터를 바탕으로 예측 모델을 개발하세요!&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;실제 교통 문제를 해결하는 데 도움이 되는 현실적인 응용 프로젝트입니다. 이를 통해 데이터 분석 및 인공지능 기술의 가치를 직접 체험하며 도시 교통 문제 개선을 위한 방법을 찾아 보세요! 인공지능 기술의 사회적 가치와 책임에 대한 인식을 높이고, 교통 문제를 해결함으로써 지속 가능한 도시 환경을 만드는 데 기여할 수 있습니다.&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;버스 운행 시간 예측 모델은 교통, 스마트 시티, 물류 유통 등 다양한 산업 분야에서 활용될 수 있습니다. 교통 체증을 개선하고, 대중교통의 효율성을 높이는 방안을 기획하는 교통 분석가, 도시 교통 인프라를 최적화하는 스마트 시티 기획자, 화물 및 배송/운송의 효율성을 높이고 최적의 경로를 계획하는 물류 유통 전문가로 성장할 기회를 얻을 수 있습니다.&lt;/p&gt;
&lt;h1&gt;stage 1&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. pandas 라이브러리를 불러온다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import pandas as pd : 자주 사용하는 라이브러리기 때문에 pd로 축약어를 설정해놓는다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 데이터 불러오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;판다스를 이용하여 데이터를 불러올 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공공데이터 포털도 그렇고 대부분의 자료들이 csv로 저장되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업무하면서도 관과 관련된 자료를 주고 받을때 csv파일로 받게되어 당황한 적도 있었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;판다스로 파일을 읽기&lt;/h3&gt;
&lt;pre class=&quot;subunit&quot;&gt;&lt;code&gt;train = pd.read_csv(&amp;rsquo;train.csv&amp;rsquo;)
test = pd.read_csv('test.csv')
submission = pd.read_csv('sample_submission.csv')
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 데이터 확인하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 불러올 때 모두 변수를 할당해놓았는데 submission변수의 데이터를 확인해본다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;submission.head()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;head() 메서드는 데이터프레임의 상위 5개의 행을 반환한다. 괄호안에 숫자를 기입하면 출력할 상위 행의 수를 지정할 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. CSV 파일 저장하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;read 이후 저장하는 방법도 알아본다. drop, reindex 등등 작업을 한뒤 저장을 하려면 내보내기와 같은 작업을 하면된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;.to_csv(&amp;rsquo;파일이름&amp;rsquo;, index 여부)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;submission.to_csv(&amp;rsquo;submission.csv&amp;rsquo;, index=False)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 데이터 프레임 정보 확인하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://train.info&quot;&gt;train.info&lt;/a&gt;() : 길이, 특성의 이름, 결측치의 수 등을 확인해볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tail() 매서드 : 데이터 프레임의 하위 일부 데이터를 반환하는 메서드, head()의 반대.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M2e1Q/btsh402pmcx/c15xo90xYu2zPS9Ssea7iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M2e1Q/btsh402pmcx/c15xo90xYu2zPS9Ssea7iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M2e1Q/btsh402pmcx/c15xo90xYu2zPS9Ssea7iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM2e1Q%2Fbtsh402pmcx%2Fc15xo90xYu2zPS9Ssea7iK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;439&quot; height=&quot;412&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 데이터 분석 중요 개념&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;feature / target&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;numerical Data / categorical data&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;regression / classification&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;feature : 예측을 위해 활용되는 데이터 ( 독립변수 x)&lt;/li&gt;
&lt;li&gt;target : 예측하고자 하는 대상 (종속변수 y)&lt;/li&gt;
&lt;li&gt;numerical data : 수치형 자료, 숫자로 측정할 수 있는 자료 ( 기온, 풍속, 체중)&lt;/li&gt;
&lt;li&gt;categoricla data : 범주형 자료, 숫자로 측정할 수 없는 자료 ( 날씨, 혈액형 성별)&lt;/li&gt;
&lt;li&gt;regression 회귀 : 수치형 데이터 예측에 사용&lt;/li&gt;
&lt;li&gt;classificatio 분류 : 범주형 데이터 예측에 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 회귀 문제인지 분류문제인지는 예측 target이 수치형인지 범주형인지에 따라 결정된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 데이터 셋 drop()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;drop() 메서드를 이용할때는 행을 없앨 것인지 열을 없앨 것인지 설정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;train = train.drop(['id','date','route_nm','now_station','now_arrive_time','next_station'],axis = 1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;axis=1 은 열을 없애려는 모양이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;8. 필요한 데이터만 변수에 할당하기&lt;/h2&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;리스트를 한번 더 묶어줘야하는 것을 빼먹었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;755&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wl271/btshWuLhYyZ/OUNSKB6eu2BtURiF2AIFYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wl271/btshWuLhYyZ/OUNSKB6eu2BtURiF2AIFYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wl271/btshWuLhYyZ/OUNSKB6eu2BtURiF2AIFYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwl271%2FbtshWuLhYyZ%2FOUNSKB6eu2BtURiF2AIFYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;755&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;755&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Base</category>
      <category>Dacon</category>
      <category>데이콘</category>
      <category>버스 운행시간 예측 프로젝트</category>
      <category>판다스</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/23</guid>
      <comments>https://devflavor.tistory.com/entry/dacon-%EB%B2%84%EC%8A%A4-%EC%9A%B4%ED%96%89%EC%8B%9C%EA%B0%84-%EC%98%88%EC%B8%A1-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-1#entry23comment</comments>
      <pubDate>Wed, 31 May 2023 01:17:09 +0900</pubDate>
    </item>
    <item>
      <title>Project04_장고 소셜 로그인 구현 allauth</title>
      <link>https://devflavor.tistory.com/entry/Project04%EC%9E%A5%EA%B3%A0-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84-allauth</link>
      <description>&lt;h1&gt;소셜로그인 구현 allauth&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장고에서 allauth라는 장고패키지를 이용하면 소셜로그인을 구현 할 수 있다.&lt;/p&gt;
&lt;pre style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot;&gt;&lt;code&gt;pip install djangorestframework
pip install djangorestframework-simplejwt
pip install django-allauth
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 사용하는 소셜로그인에는 네이버, 카카오, 구글이 있을것이며 코딩과 관련된 사이트라면 깃허브까지 범용성 있게 사용 가능하다고 생각된다. 이 소셜로그인들을 allauth 패키지 내에서 서비스 명을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장고에는 모델, 뷰, 템플릿 등이 있는데 이 중 views.py를 다음과 같이 추가해본다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #000000; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 소셜 로그인
BASE_URL = 'http://localhost:8000/api/v1/accounts/rest-auth/'
KAKAO_CALLBACK_URI = BASE_URL + 'kakao/callback/'
NAVER_CALLBACK_URI = BASE_URL + 'naver/callback/'
GOOGLE_CALLBACK_URI = BASE_URL + 'google/callback/'
GITHUB_CALLBACK_URI = BASE_URL + 'github/callback/'


class KakaoLogin(SocialLoginView):
    adapter_class = KakaoOAuth2Adapter
    callbakc_url = KAKAO_CALLBACK_URI
    client_class = OAuth2Client
    serializer_class = SocialLoginSerializer


class NaverLogin(SocialLoginView):
    adapter_class = NaverOAuth2Adapter
    callback_url = NAVER_CALLBACK_URI
    client_class = OAuth2Client
    serializer_class = SocialLoginSerializer


class GithubLogin(SocialLoginView):
    adapter_class = GitHubOAuth2Adapter
    callback_url = GITHUB_CALLBACK_URI
    client_class = OAuth2Client
    serializer_class = SocialLoginSerializer


class GoogleLogin(SocialLoginView):
    adapter_class = GoogleOAuth2Adapter
    callback_url = GOOGLE_CALLBACK_URI
    client_class = OAuth2Client
    serializer_class = SocialLoginSerializer&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이후 어떤 url을 통해 접근을 할 것인지를 매핑해줘야하는데 urls.py에서 수정을 한다.&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;urlpatterns =[
    path('rest-auth/kakao/', views.KakaoLogin.as_view(), name='kakao'),
    path('rest-auth/naver/', views.NaverLogin.as_view(), name='naver'),
    path('rest-auth/google/', views.GoogleLogin.as_view(), name='google'),
    path('rest-auth/github/', views.GithubLogin.as_view(), name='github'),
 ]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 아이디가 없는 사람이 없겠지만서도 요즘 카카오톡 안쓰는 사람 찾는게 더 어렵기 때문에 카카오 인증으로 추가한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvkyb0/btsgNWhMtOk/u2ASmXsz73YNKUYwKYyUY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvkyb0/btsgNWhMtOk/u2ASmXsz73YNKUYwKYyUY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvkyb0/btsgNWhMtOk/u2ASmXsz73YNKUYwKYyUY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvkyb0%2FbtsgNWhMtOk%2Fu2ASmXsz73YNKUYwKYyUY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;730&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동의항목 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플리케이션 이름, 사업자명, 아이콘등을 먼저 받으며 내 애플리케이션 &amp;rarr; 제품설정 &amp;rarr; 카카오로그인 &amp;rarr; 동의항목에서 제공받을 항목을 선택할 수가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdwcLh/btsgQpqHltV/rSOD4X2KPQo6ker4kzKtL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdwcLh/btsgQpqHltV/rSOD4X2KPQo6ker4kzKtL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdwcLh/btsgQpqHltV/rSOD4X2KPQo6ker4kzKtL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdwcLh%2FbtsgQpqHltV%2FrSOD4X2KPQo6ker4kzKtL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;907&quot; height=&quot;700&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;django admin 등록&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 설정해놓은 값들을 django admin에서 등록을 해주면 쉽게 진행을 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;127.0.0.1:8000/admin 또는 &lt;a href=&quot;http://localhost:8000/admin&quot;&gt;localhost:8000/admin&lt;/a&gt; 으로 접근하여 소셜계정 - 소셜 애플리케이션 에서 등록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스에서 발급한 클라이언트 아이디, 키 값을 넣어주면 되고, 카카오 로그인은 rest-api키를 등록해주면 완료.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;참고 블로그&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://velog.io/@heyoni/Django-Rest-Framework-소셜로그인-구현하기-google-naver-kakao-github&quot;&gt;https://velog.io/@heyoni/Django-Rest-Framework-소셜로그인-구현하기-google-naver-kakao-github&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Project/project1</category>
      <category>allauth</category>
      <category>django-allauth</category>
      <category>소셜로그인</category>
      <category>장고</category>
      <category>장고소셜로그인</category>
      <category>장고프로젝트</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/22</guid>
      <comments>https://devflavor.tistory.com/entry/Project04%EC%9E%A5%EA%B3%A0-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84-allauth#entry22comment</comments>
      <pubDate>Tue, 23 May 2023 10:01:43 +0900</pubDate>
    </item>
    <item>
      <title>nvidia cuda 좀비 프로세스 제거</title>
      <link>https://devflavor.tistory.com/entry/nvidia-cuda-%EC%A2%80%EB%B9%84-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A0%9C%EA%B1%B0</link>
      <description>&lt;h1&gt;nvidia SSH연결 우분투 모니터링&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ssh로 연결한 gpu 의 경우 모니터링을 하는게 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 우분투에서 해당메모리를 지속적으로 모니터링 하는 터미널을 열어두는게 좋다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;watch -d -n 0.5 nvidia-smi&lt;/li&gt;
&lt;li&gt;&amp;rarr; nvidia-smi를 0.5초마다 확인할게라는 의미이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVO7Mi/btsgNXlTZP6/lBWXoQYehEcc3HV6BhZHDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVO7Mi/btsgNXlTZP6/lBWXoQYehEcc3HV6BhZHDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVO7Mi/btsgNXlTZP6/lBWXoQYehEcc3HV6BhZHDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVO7Mi%2FbtsgNXlTZP6%2FlBWXoQYehEcc3HV6BhZHDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1230&quot; height=&quot;550&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;메모리 리셋&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 사용중인 프로세스가 없다고 뜨지만 메모리 할당은 되어있는 상태이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr;child process가 좀비상태로 남아 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D2dNN/btsgDJ3OlxF/Ls0gWGmAG8W20wYwalx2a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D2dNN/btsgDJ3OlxF/Ls0gWGmAG8W20wYwalx2a0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D2dNN/btsgDJ3OlxF/Ls0gWGmAG8W20wYwalx2a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD2dNN%2FbtsgDJ3OlxF%2FLs0gWGmAG8W20wYwalx2a0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;230&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ps aux | grep python을 실행&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kill -9 52131 : 52131은 해당 프로세스의 이름이라고 생각하면 된다. 즉 PID이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu8IpQ/btsgE8hWmii/WgFw6ypP1TnYUsTR0LKmDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu8IpQ/btsgE8hWmii/WgFw6ypP1TnYUsTR0LKmDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu8IpQ/btsgE8hWmii/WgFw6ypP1TnYUsTR0LKmDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu8IpQ%2FbtsgE8hWmii%2FWgFw6ypP1TnYUsTR0LKmDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;297&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행결과를 확인하면 깔끔해졌다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ ps -ef | grep defunct | grep -v grep&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ ps aux | egrep &quot;Z|defunct&quot;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;81&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uqaOi/btsgQqIlpMc/JJXeKxSUb7s5I6p07TYBhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uqaOi/btsgQqIlpMc/JJXeKxSUb7s5I6p07TYBhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uqaOi/btsgQqIlpMc/JJXeKxSUb7s5I6p07TYBhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuqaOi%2FbtsgQqIlpMc%2FJJXeKxSUb7s5I6p07TYBhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;81&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;81&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Base</category>
      <category>nvidia-smi</category>
      <category>ssh</category>
      <category>ubuntu</category>
      <category>우분투</category>
      <category>좀비프로세스</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/21</guid>
      <comments>https://devflavor.tistory.com/entry/nvidia-cuda-%EC%A2%80%EB%B9%84-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A0%9C%EA%B1%B0#entry21comment</comments>
      <pubDate>Mon, 22 May 2023 11:18:37 +0900</pubDate>
    </item>
    <item>
      <title>Project03_주제 선정 + 역할 분담</title>
      <link>https://devflavor.tistory.com/entry/djangopj03%EC%A3%BC%EC%A0%9C-%EC%84%A0%EC%A0%95-%EC%97%AD%ED%95%A0-%EB%B6%84%EB%8B%B4</link>
      <description>&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;size18&quot;&gt;따라서 목표하는 바를 어떤 서비스를 구현해서 이뤄내자보다는 현재까지 배운 내용을 조금 더 발전시켜보자라는 목표를 세우게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 수업 및 점프투 장고를 통해 배운 내용을 조금 더 활용하는 방안으로 구현하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 다른 프로젝트들은 어떻게 하였는지 보고 추가적으로 더 구현할 수 있는 방안을 모색하자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 서버 작업 및 배포를 경험해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 배운 내용을 활용하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;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; -&amp;gt; github를 이용한 팀원간 형상관리를 경험해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;git을 배우고 pybo 공부 내용을 그날그날 git push는 해보았으나 정확히 팀원들간 주고 받는 프로젝트를 해보지 않았기때문에 이번 프로젝트로 경험해보기 좋은 기회라고 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 실시간 채팅 기능 및 소셜 로그인을 구현해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&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;size18&quot;&gt;3. 서버 작업 및 배포를 경험해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;gt; 현재 이 포스팅을 작성하는 시점에서는 배포상 문제가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; a. 도커 컴포즈를 통해 서버 배포를 손쉽게 하고자 하였으나, 실시간 채팅기능에서 웹소켓 설정을 하고,&amp;nbsp; nginx를 사용하는 등의 복잡한 과정이 수반되기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; b. 장고 프로젝트를 도커 이미지를 생성하여 8000번 포트로 서버를 여는 것은 확인하였으며, 도커 컴포즈를 위한 작업을 남겨 놓고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; c. 현재 프로젝트는 금요일자로 끝났지만 추후 유지보수 개념으로 도커 컴포즈를 완성하여 서버 배포를 일주일 내에 완료하는 것을 목표로 하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;팀프로젝트에서 중점 관리 요소&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀프로젝트를 진행함에 있어서 PM과 팀원들의 호응이 매우 중요하다고 느껴진 프로젝트였다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;팀원들의 의견을 모으고자 slack방을 만들고, 단톡을 만들고 통일감 있는 주제를 만들고자 의견 공유를 바랐으나 hey9님과 나만 이야기하는 분위기였다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;결론적으로 어찌어찌 기능을 구현하였지만 구성이 완벽하다는 느낌을 받기는 힘들었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;역할 분담&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 어려웠던 역할 분담.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 hey9님과 내가 putty를 이용하여 AWS&amp;nbsp; EC2 서버의 우분투에 접속하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 도커 이미지를 생성, mariadb를 django_db라는 이름으로 생성해놓았다.&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;h4 data-ke-size=&quot;size20&quot;&gt;내가 맡은 기능 : 소셜 로그인 + html 작업 + 서버&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS EC2에 서버작업은 미리 해놓았다. 그다음은 소셜로그인.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;소셜로그인을 선택하게 된 이유&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 각 서비스를 이용해보면 소셜로그인으로 회원가입을 받는 경우가 매우 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 서비스를 구현해놓은 이유는 많겠지만 내가 생각한 이유는 3가지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 접근 장벽이 낮아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;소셜로그인이 있으면 가입을 하기도 쉬울 뿐더러 뭔가 모르게 내 정보를 다 넣지 않아도 되니 신뢰도가 높아지는 느낌이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 정보를 꽤 많이 가져올 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 사용자의 이메일, 성별, 연령대 등 소비자의 정보를 손쉽게 가져올 수 있다. 위에서 말한 이유와는 상반되는 개념이지만 이번 기능을 구현하면서 선택사항으로 연령대 성별 등등 꽤 많은 정보를 공유하고 있었다는 것을 알 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 보안상 편리하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 시장에서 많이 채택하는 건 그에 합당한 이유가 있다. 각 서비스에 토큰값을 주고 받는 과정을 거치기 때문에 보안상의 관리하기도 편하다는 점이 있었다.&lt;/p&gt;</description>
      <category>Project/project1</category>
      <category>EC2</category>
      <category>EC2 배포</category>
      <category>putty</category>
      <category>소셜로그인</category>
      <category>장고소셜로그인</category>
      <category>장고팀프로젝트</category>
      <category>팀프로젝트</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/20</guid>
      <comments>https://devflavor.tistory.com/entry/djangopj03%EC%A3%BC%EC%A0%9C-%EC%84%A0%EC%A0%95-%EC%97%AD%ED%95%A0-%EB%B6%84%EB%8B%B4#entry20comment</comments>
      <pubDate>Sat, 20 May 2023 16:24:04 +0900</pubDate>
    </item>
    <item>
      <title>Project02_AWS EC2 접속 및 파일 관리</title>
      <link>https://devflavor.tistory.com/entry/DjangoPJ02AWS-EC2-%EC%A0%91%EC%86%8D-%EB%B0%8F-%ED%8C%8C%EC%9D%BC-%EA%B4%80%EB%A6%AC</link>
      <description>&lt;h1&gt;AWS EC2&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아마존 웹 서비스에서 다양하고 유용한 기능들이 있는데, 그중 하나로 클라우드 컴퓨팅 서비스다.&lt;/li&gt;
&lt;li&gt;클라우드 컴퓨팅 서비스를 어떻게 활용하느냐에 따라서 시간과 비용을 절감할 수 있다. (직접 서버를 관리하려면 어려운 점이 많다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;AWS EC2 서비스를 활용하기 위한 도구 - PUTTY, FILEZILLA&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AWS EC2는 일종의 리눅스 컴퓨터를 한대 대여했다고 생각하면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;PuTTY&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 리눅스 기반의 서버에 접속하기위해서는 원격 접속(SSH)을 해야하는데 PuTTY를 이용하여 접속 가능하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 ip주소와 .ppk 파일을 이용하여 접속을 할 수 있다.&lt;/li&gt;
&lt;li&gt;.ppk 파일은 고유 비밀번호라고 생각하면 된다.&lt;/li&gt;
&lt;li&gt;putty 설치할때 설치한 putty key generator로 생성가능.&lt;/li&gt;
&lt;li&gt;ip 주소는 Session &amp;rarr; Host Name과 port번호를 넣고 saved sessions에 이름을 넣고 저장한다.혹시 모르니 다시 save하고 open&lt;/li&gt;
&lt;li&gt;ppk파일은 connection&amp;rarr;SSH&amp;rarr;Auth&amp;rarr;Credentials에 넣는다.&lt;/li&gt;
&lt;li&gt;login as : ubuntu 로 접속 -&amp;gt; 서버 접속이 완료되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ4ZtY/btsfOJaBl7w/osdRKkVWHkjo4iKnTaKtJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ4ZtY/btsfOJaBl7w/osdRKkVWHkjo4iKnTaKtJk/img.png&quot; data-alt=&quot;Putty session 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ4ZtY/btsfOJaBl7w/osdRKkVWHkjo4iKnTaKtJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ4ZtY%2FbtsfOJaBl7w%2FosdRKkVWHkjo4iKnTaKtJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;444&quot; height=&quot;438&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Putty session 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5b4nI/btsfehUFkOa/FEnpn6LRG9ppsjUmxy6My1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5b4nI/btsfehUFkOa/FEnpn6LRG9ppsjUmxy6My1/img.png&quot; data-alt=&quot;.pkk 파일 입력하는 곳&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5b4nI/btsfehUFkOa/FEnpn6LRG9ppsjUmxy6My1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5b4nI%2FbtsfehUFkOa%2FFEnpn6LRG9ppsjUmxy6My1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;444&quot; height=&quot;387&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;.pkk 파일 입력하는 곳&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu2sD6/btsfpdKCsDH/4ChpvZKvFPKF8qAkfovod0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu2sD6/btsfpdKCsDH/4ChpvZKvFPKF8qAkfovod0/img.png&quot; data-alt=&quot;login할 계정 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu2sD6/btsfpdKCsDH/4ChpvZKvFPKF8qAkfovod0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu2sD6%2FbtsfpdKCsDH%2F4ChpvZKvFPKF8qAkfovod0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;657&quot; height=&quot;391&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;login할 계정 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X2ZZy/btsfvnF7V7I/6OweLOF3bqflqz7692gK90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X2ZZy/btsfvnF7V7I/6OweLOF3bqflqz7692gK90/img.png&quot; data-alt=&quot;접속 완료 상태&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X2ZZy/btsfvnF7V7I/6OweLOF3bqflqz7692gK90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX2ZZy%2FbtsfvnF7V7I%2F6OweLOF3bqflqz7692gK90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;642&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;접속 완료 상태&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Filezilla&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2를 gui 형식으로 보여주는 프로그램으로 pem키와 주소 등을 입력하면 디렉토리 처럼 EC2 내부를 그려준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PuTTY와 마찬가지로 호스트, 키 파일을 넣어주면 접속이 가능하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn7Pgf/btsfdX3bAYb/0nWw1Wx0hAlsNbLYifycbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn7Pgf/btsfdX3bAYb/0nWw1Wx0hAlsNbLYifycbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn7Pgf/btsfdX3bAYb/0nWw1Wx0hAlsNbLYifycbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn7Pgf%2FbtsfdX3bAYb%2F0nWw1Wx0hAlsNbLYifycbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;694&quot; height=&quot;419&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdlDUO/btsfpdqjwZj/qLSgnImIYORLMTot8U4yA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdlDUO/btsfpdqjwZj/qLSgnImIYORLMTot8U4yA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdlDUO/btsfpdqjwZj/qLSgnImIYORLMTot8U4yA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdlDUO%2FbtsfpdqjwZj%2FqLSgnImIYORLMTot8U4yA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;539&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;539&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;까만 화면에서 파일을 cd, ls, ll, pwd 등으로 찾아가던 과정보다 훠어얼씬 직관적으로 찾아갈 수 있게되었다.&lt;/p&gt;</description>
      <category>Project/project1</category>
      <category>aws</category>
      <category>filezilla</category>
      <category>ppk파일</category>
      <category>putty</category>
      <category>리눅스</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/19</guid>
      <comments>https://devflavor.tistory.com/entry/DjangoPJ02AWS-EC2-%EC%A0%91%EC%86%8D-%EB%B0%8F-%ED%8C%8C%EC%9D%BC-%EA%B4%80%EB%A6%AC#entry19comment</comments>
      <pubDate>Sun, 14 May 2023 16:06:49 +0900</pubDate>
    </item>
    <item>
      <title>Project01_협업 레포지토리 생성 및 가상환경 설정</title>
      <link>https://devflavor.tistory.com/entry/djangoPJ01%ED%98%91%EC%97%85-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;협업레포지토리 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 협업을 하기위해서 github를 사용하여 형상관리를 하기로 결정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 팀원 한명의 깃허브에 레포지토리를 형성하여 git clone을 하는 방식으로 가져온다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레포지토리 및 가상환경 생성 과정&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저 협업을 할 파일들을 저장할 폴더를 생성한다.&lt;/li&gt;
&lt;li&gt;mkdir team1&amp;nbsp;&lt;/li&gt;
&lt;li&gt;가상환경을 만들어 내 컴퓨터 내에서도 관리를 용이하게 한다
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;(각각 모듈들의 버전관리 등을 깃으로 올려놓은 것과 맞추기 용이함)&lt;/li&gt;
&lt;li&gt;apt install python3.10-venv&lt;/li&gt;
&lt;li&gt;python -m venv 가상환경 이름&lt;/li&gt;
&lt;li&gt;쉘스크립트에 작성하여 가상환경으로 접속을 편하게 한다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;가상환경 접속을 할 수 있는 activate가 있는 위치로 가서 pwd를 통해 위치를 작성해놓는다.&lt;/li&gt;
&lt;li&gt;cd ~ (홈으로 간다)&lt;/li&gt;
&lt;li&gt;vim 가상환경이름.sh&lt;/li&gt;
&lt;li&gt;#!/bin/bash &lt;br /&gt;source /home/dev/venv/yolo/bin/activate (가상환경 접속 주소를 넣는다.)&lt;/li&gt;
&lt;li&gt;. ~/가상환경이름.sh (현재 내 위치가 어디에서나 바로 가상환경 접속을 할 수 있게 된다)&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;깃허브 레포지토리에 팀원들의 아이디를 접근 권한 등록한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;https://github.com/2hey9/playdata-django.git&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;https://github.com/2hey9/playdata-django.git&quot;&gt;https://github.com/2hey9/playdata-django.git&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1683853601971&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - 2hey9/playdata-django&quot; data-og-description=&quot;Contribute to 2hey9/playdata-django development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/2hey9/playdata-django.git&quot; data-og-url=&quot;https://github.com/2hey9/playdata-django&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/beZ1tq/hySz6AaYcj/ENOpP2vPcvZleN6rVvrge0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/2hey9/playdata-django.git&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/2hey9/playdata-django.git&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/beZ1tq/hySz6AaYcj/ENOpP2vPcvZleN6rVvrge0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - 2hey9/playdata-django&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to 2hey9/playdata-django development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lUbGz/btseSWWVg3J/Y95so1oAKpsv4ooL0vYeT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lUbGz/btseSWWVg3J/Y95so1oAKpsv4ooL0vYeT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lUbGz/btseSWWVg3J/Y95so1oAKpsv4ooL0vYeT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlUbGz%2FbtseSWWVg3J%2FY95so1oAKpsv4ooL0vYeT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;928&quot; height=&quot;650&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;깃 브랜치 만들기 및 푸시하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. git branch를 입력하면 현재 브랜치가 어떤게 있는지 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. git branch 브랜치명 새로운 브랜치를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 현재 브랜치에서 새로 만든 브랜치로 바꾸기 branch checkout 브랜치명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 깃 clone을 한 상태라 git init은 별도로 필요 없고, 형상관리를 할 파일들을 추가, 커밋, 푸시하는 과정을 거친다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. git add . / git commit -m &quot;메세지내용&quot; / git push origin 브랜치명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에서 테스트하면서 commit을 여러번 해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋 브랜치를 각각 다른 이름으로 하여 추후 형상관리시 편하게 설정해놓았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfbFn/btseV9uIs3R/gDTTCrdvxZQI9Mpt7JLmt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfbFn/btseV9uIs3R/gDTTCrdvxZQI9Mpt7JLmt0/img.png&quot; data-origin-width=&quot;1326&quot; data-origin-height=&quot;648&quot; data-is-animation=&quot;false&quot; style=&quot;width: 43.9763%; margin-right: 10px;&quot; data-widthpercent=&quot;44.49&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfbFn/btseV9uIs3R/gDTTCrdvxZQI9Mpt7JLmt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkfbFn%2FbtseV9uIs3R%2FgDTTCrdvxZQI9Mpt7JLmt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1326&quot; height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FYs38/btseQUMkClW/IuKYREVR9cLOpDHjNMwkwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FYs38/btseQUMkClW/IuKYREVR9cLOpDHjNMwkwk/img.png&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;360&quot; data-is-animation=&quot;false&quot; style=&quot;width: 54.8609%;&quot; data-widthpercent=&quot;55.51&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FYs38/btseQUMkClW/IuKYREVR9cLOpDHjNMwkwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFYs38%2FbtseQUMkClW%2FIuKYREVR9cLOpDHjNMwkwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;919&quot; height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Project/project1</category>
      <category>가상환경설정</category>
      <category>장고</category>
      <category>장고프로젝트</category>
      <category>터미널</category>
      <category>프로젝트</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/18</guid>
      <comments>https://devflavor.tistory.com/entry/djangoPJ01%ED%98%91%EC%97%85-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95#entry18comment</comments>
      <pubDate>Fri, 12 May 2023 10:18:51 +0900</pubDate>
    </item>
    <item>
      <title>Docker02. 도커 설치</title>
      <link>https://devflavor.tistory.com/entry/Docker02-%EB%8F%84%EC%BB%A4-%EC%84%A4%EC%B9%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article id=&quot;8a0057be-f790-408d-a53f-63d0ce7597e2&quot; class=&quot;page sans&quot;&gt;&lt;header&gt;
&lt;h1 class=&quot;page-title&quot;&gt;도커 설치&lt;/h1&gt;
&lt;/header&gt;
&lt;div class=&quot;page-body&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;903&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnHXeN/btsecuz6Llt/I7YQJIPlZDe4x69OTQczVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnHXeN/btsecuz6Llt/I7YQJIPlZDe4x69OTQczVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnHXeN/btsecuz6Llt/I7YQJIPlZDe4x69OTQczVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnHXeN%2Fbtsecuz6Llt%2FI7YQJIPlZDe4x69OTQczVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1908&quot; height=&quot;903&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;903&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;0227318a-6675-45c8-8d11-597d82c8dcb7&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;도커 홈페이지에서 설치 &lt;a href=&quot;https://www.docker.com/&quot;&gt;https://www.docker.com/&lt;/a&gt;&lt;/p&gt;
&lt;p id=&quot;4f07025f-bb8f-4570-b7bb-2b7f1b692bc5&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1005&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blbSUE/btsevl9XAD8/UmDhCArAwLsA1oLFcAVX1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blbSUE/btsevl9XAD8/UmDhCArAwLsA1oLFcAVX1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blbSUE/btsevl9XAD8/UmDhCArAwLsA1oLFcAVX1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblbSUE%2Fbtsevl9XAD8%2FUmDhCArAwLsA1oLFcAVX1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1940&quot; height=&quot;1005&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1005&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p id=&quot;6c3ee34c-9824-4f75-9930-9a4929a8c03c&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;명령프롬프트에서 docker를 검색해보면 관련된 사항들이 출력된다.&lt;/p&gt;
&lt;p id=&quot;98a183bf-04be-4a6f-b9db-6a07b2c038c8&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul id=&quot;3594e2eb-547b-45ad-87ec-8356157257a4&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;docker run -it &amp;mdash;name encore ubuntu:18.04&amp;rarr; docker라는 가상머신에서 encore라는 이름의 우분투 ver.18.04를 실행할 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;0fa2e107-814f-40ac-95d5-ebb2f8229a0d&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul id=&quot;9d7c7587-9d88-4ffc-b276-84d6500ba048&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;도커는 도커허브라는 사이트에서 패키지를 다운받아 와서 쉽게 실행가능하다.&amp;rarr; &lt;a href=&quot;https://hub.docker.com/&quot;&gt;https://hub.docker.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;55ac7735-222b-45a5-aa54-9e234eef093d&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;분석환경을 도커이미지로 담은다음 도커이미지로 가져가면 설치가 간편해진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;bd5c91c2-d231-473c-b0c6-aa7d09662d4c&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;7cb8cdf2-75f5-4e15-b89f-ad099db00811&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;도커에서 파이썬 실행&lt;/h3&gt;
&lt;p id=&quot;43ae083b-eb64-44c7-bcb4-23eeb6846434&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;도커허브에서 python3는 없기 때문에 아나콘다를 설치하여 파이썬을 실행해야한다.&lt;/p&gt;
&lt;p id=&quot;9684a350-0d9e-43f7-84f0-ed8fa3f40977&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;아나콘다는 무겁기때문에 미니콘다를 설치한다.&lt;/p&gt;
&lt;p id=&quot;84a54ebe-119a-4b77-858f-eeb5e24fa37e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;5af5c7fd-66c8-4884-851d-2a7b943a6d70&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;docker 에서 미니콘다 설치하는 방법&lt;/h3&gt;
&lt;ol id=&quot;51243166-ad2f-4388-a25f-f0077f299b19&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;1&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;apt update : 시스템 패키지 관리자에 대한 패키지 목록을 업데이트&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;ceb09813-ab99-4a31-bd98-1daed5a4c346&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;apt install wget : wget 패키지를 설치wget 패키지는 웹에서 파일을 다운로드하는데 사용되는 유틸리티이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;40dd0cf7-ff75-406a-bd8b-ecd7365462fc&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;3&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh: wget을 사용하여 Linux용 미니콘다3의 최신버전을 다운로드 (sh는 쉘스크립트 파일)&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpPveu/btseqvMR9an/jbyjl6uncOln1kIDKEm5t1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpPveu/btseqvMR9an/jbyjl6uncOln1kIDKEm5t1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpPveu/btseqvMR9an/jbyjl6uncOln1kIDKEm5t1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpPveu%2FbtseqvMR9an%2Fjbyjl6uncOln1kIDKEm5t1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1940&quot; height=&quot;1387&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;51f1b007-4efc-46bb-80d0-005cf206846b&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;설치된 파일 확인법&lt;/h3&gt;
&lt;ul id=&quot;171ecc24-73b1-4f75-8da9-10a87dca5cb4&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;ls를 입력해보면 현재 설치된 파일이 나온다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;466d2484-854c-4804-bf6d-391c39f618a5&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;ll도 현재 설치된 파일들을 보여주는데 ls와 ll의 차이는 정렬의 차이인듯하다&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;591f5dc5-aa05-4810-9fef-1dab4eec310f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;ddd2a594-82f1-46e4-b4f7-55547ac2d75e&quot; class=&quot;&quot; data-ke-size=&quot;size23&quot;&gt;미니콘다에서 파이썬 접속&lt;/h3&gt;
&lt;ol id=&quot;0079fd8b-fe3e-426b-b001-aa8d7967c898&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;1&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저 미니콘다로 접속해야한다.&amp;rarr; cd ~/miniconda3&lt;/li&gt;
&lt;/ol&gt;
&lt;figure id=&quot;c9348cdd-4f73-4393-a754-21de46718e9f&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%204.png&quot;&gt;&lt;img style=&quot;width: 397px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%204.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;ol id=&quot;5b573b79-268d-4456-8a93-c74d4bde3242&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;미니콘다에 파이썬이 있는지 확인&amp;rarr; bin&lt;/li&gt;
&lt;li id=&quot;abeb64e3-1830-4a47-9413-f2407d6e1b23&quot; class=&quot;&quot;&gt;&amp;rarr; ./python&lt;/li&gt;
&lt;/ol&gt;
&lt;figure id=&quot;3ff0b69a-8523-497c-a2b4-bca57bddf808&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%205.png&quot;&gt;&lt;img style=&quot;width: 598px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%205.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;ol id=&quot;90a3b202-6d4c-49b4-b284-fc7e16f7094a&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;3&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;파이썬 유무를 확인했다면 나가자.&amp;rarr; exit()&lt;/li&gt;
&lt;li id=&quot;3654dfad-8fe1-4764-aa75-3085b9610cb1&quot; class=&quot;&quot;&gt;&amp;rarr; ctrl + d &amp;rarr; 컨테이너 종료&lt;/li&gt;
&lt;/ol&gt;
&lt;figure id=&quot;a6b13053-db14-424b-b382-30fdac15b3c9&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%206.png&quot;&gt;&lt;img style=&quot;width: 855px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%206.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;7b73ba5d-4901-4e1a-b754-24ad9dc3ed84&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;418ae726-25f1-4ba5-8a07-2853a26c913e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;추후 웹배포할때도 도커사용할 예정이며 모델을 장고에 올려서 보여줄 예정이다. (23.4.3~장고설치중)&lt;/p&gt;
&lt;p id=&quot;e529de11-b80b-4bb4-8cf6-c9dc271b1a8f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;6a07a535-ff42-4b36-98e8-91792975384e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;abaa9547-8400-4f5b-ba7e-59fbdee23d49&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;docker run -it --name encore2 -p 9000:8888 ubuntu:18.04&lt;/p&gt;
&lt;p id=&quot;d897ef2d-5a6e-42c8-bd08-f2b68d5a6f19&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;도커를 실행하는데 name은 encore2로 설정한다.&lt;/p&gt;
&lt;p id=&quot;a8f70502-0875-41d7-b473-64eb2dfd0032&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;포트는 9000번과 8000번을 이어준다.&lt;/p&gt;
&lt;p id=&quot;bf75ee38-d869-47f3-8eae-1db2ce3be42b&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;각 프로그램별로 사용하는 포트가 나눠져 있는편이다.&lt;/p&gt;
&lt;p id=&quot;d23fff00-e065-4bcb-b714-a91181323cbd&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;61bc4b92-3128-47f9-82dc-a44d3412a8f2&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;8888포트는 주피터 노트북이 사용&lt;/p&gt;
&lt;p id=&quot;ac450b9f-776a-4fc7-a6d9-d9cc4f7c68dc&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;3306 mysql&lt;/p&gt;
&lt;p id=&quot;3377c9ce-53d8-4f82-9bb2-c9fc7ad5406c&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;1221 oracle&lt;/p&gt;
&lt;figure id=&quot;9d91f71c-1058-42ad-bdae-d2dc0107c0b3&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%207.png&quot;&gt;&lt;img style=&quot;width: 700px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%207.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;be2867fb-7cad-4e98-bee0-a3373620057a&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%208.png&quot;&gt;&lt;img style=&quot;width: 608px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%208.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;8c49f3c8-f694-4419-9d13-ae54bcc6bc5d&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%209.png&quot;&gt;&lt;img style=&quot;width: 835px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%209.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;4ac9db32-e704-46eb-92fd-8744a0f90d47&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;apt update 를 실행해주고 wget 과 vim을 설치한다.&lt;/p&gt;
&lt;p id=&quot;9731004d-47dd-4237-971f-95dc1707c4d4&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;apt install&lt;/p&gt;
&lt;p id=&quot;97c21aae-46bd-466d-ac38-58619e1a515f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;wget &lt;a href=&quot;https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh&quot;&gt;https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh&lt;/a&gt;&lt;/p&gt;
&lt;p id=&quot;54e8b0d2-06cd-4780-baae-492da91568d8&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;c8e21e41-e524-46be-b5a5-1351c9027d11&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;위치가 잘못되거나 권한때문에 오류나는경우가 많다.&lt;/p&gt;
&lt;p id=&quot;4c500c34-de12-4369-8e6d-6df687f0a41c&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 내가 누군지와 나의 위치를 확인자주 해주는게 필요하다&lt;/p&gt;
&lt;ul id=&quot;e9478923-75e3-43b1-ba62-466f3bcf1658&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;사용자 확인 whoami&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;6cb2cbbc-1db6-42b9-b349-fac8f13cb184&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;현재 위치 확인 pwd&lt;/li&gt;
&lt;/ul&gt;
&lt;ul id=&quot;a59846c9-fcd3-4040-ac34-1aa535d8623c&quot; class=&quot;bulleted-list&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;현재 폴더의 파일 목록 ls-al&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;c2aa6e9a-efe6-4976-ae19-1f2bb79ca246&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2010.png&quot;&gt;&lt;img style=&quot;width: 263px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2010.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;ed66996c-e9d0-4906-95cf-514015ed146a&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;# sh파일 실행하는 방법&lt;/p&gt;
&lt;p id=&quot;bef48399-1de5-447c-93ab-441419e5ca07&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;chmod +x ./Miniconda3-latest-Linux-x86_64.sh&lt;/p&gt;
&lt;p id=&quot;01bfcd5f-8603-433f-93d7-b9a0d6f4e786&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;./Miniconda3-latest-Linux-x86_64.sh&lt;/p&gt;
&lt;p id=&quot;72882eec-d4d4-49ea-b89b-8e1ec9c838fc&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;ch ./Miniconda3-latest-Linux-x86_64.sh&lt;/p&gt;
&lt;p id=&quot;a762b8c4-a9ff-4263-a24e-d377bea43464&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;19f15263-8800-402d-a886-f54366a10b67&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;yes를 다해준다.&lt;/p&gt;
&lt;p id=&quot;21edad50-f967-47bd-8ac9-c573a4570a9f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;abde286d-e325-4ce1-860a-5711b0185409&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;vim ~/.bashrc&lt;/p&gt;
&lt;figure id=&quot;1eac9738-94ca-4119-8d86-ed51d94e9a09&quot; class=&quot;link-to-page&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/vim(%20)%20(1)%201eac973894ca41198d86ed51d94e9a09.html&quot;&gt;vim(?) (1)&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;fc0811dc-ae7b-463f-83de-dc0ab3752b0e&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2011.png&quot;&gt;&lt;img style=&quot;width: 763px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2011.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;633c3967-f1de-4016-a83d-5d5450202047&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;insert모드에서 애가 맛이가서 다시실행했다.&lt;/p&gt;
&lt;p id=&quot;9675cb4b-8eeb-4055-9973-d36f22053fd0&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;56ec563c-6410-4ec6-8322-ecccb2de9327&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2012.png&quot;&gt;&lt;img style=&quot;width: 444px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2012.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;794bf09f-fb4a-462c-b24d-9ba35ce01f63&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;도커를 껐을때는 attach를 이용하여 재접속할 수 있다.&lt;/p&gt;
&lt;figure id=&quot;7a0389d0-333d-4469-8cd5-18bb33d95018&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2013.png&quot;&gt;&lt;img style=&quot;width: 842px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2013.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;411a52d4-530f-41ee-b0e9-96ffed41a046&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;export PATH=/root/miniconda3/bin:$PATH&lt;/p&gt;
&lt;p id=&quot;7e916ac5-6af2-41f0-82d9-7f1c9833cb8d&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;를 사이에 적어놓는다.&lt;/p&gt;
&lt;figure id=&quot;36fe7ef7-4e19-489d-bceb-bdff0c6011dd&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2014.png&quot;&gt;&lt;img style=&quot;width: 821px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2014.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;7d08cc28-4747-48f7-bb48-2e69a64ce873&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;:wq로 저장후 나가기하기&lt;/p&gt;
&lt;figure id=&quot;1a4fef2b-2f98-4964-9078-7376ed1256d7&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2015.png&quot;&gt;&lt;img style=&quot;width: 918px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2015.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;c5698689-7284-4572-b321-a834304739fd&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 설치 완료&lt;/p&gt;
&lt;p id=&quot;e42651e6-7e63-4352-a85e-99d731fb9dda&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;9ffbf63d-5c0c-4d85-ac4b-daf7338643a4&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2016.png&quot;&gt;&lt;img style=&quot;width: 946px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2016.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;430d2969-fe3a-42e5-a7c6-fecb74e51263&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;pip intsall jupyter&lt;/p&gt;
&lt;p id=&quot;afdf8630-bc10-46f3-8534-c97a0f483655&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬이 설치되었기 때문에 주피터 설치가 가능해짐.&lt;/p&gt;
&lt;figure id=&quot;3d4ae9dc-eb00-482e-a68f-b848ed9fc65a&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2017.png&quot;&gt;&lt;img style=&quot;width: 701px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2017.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;f66437ea-f7cb-4f77-88c0-892ec63115a1&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;주피터 노트북 파일을 생성.&lt;/p&gt;
&lt;p id=&quot;d8446eae-b408-4c0d-bde0-caca52580d8f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;환경파일이다.&lt;/p&gt;
&lt;p id=&quot;2df31647-2057-41a3-829e-d5a384297e3a&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;빔으로 열어보면 엄청 길다.&lt;/p&gt;
&lt;figure id=&quot;df8dc6c7-1223-4281-b5ec-9610e2464990&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2018.png&quot;&gt;&lt;img style=&quot;width: 968px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2018.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;ba8d6b43-860e-4674-8e25-ccba48e684d5&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;:q로 나간다.&lt;/p&gt;
&lt;p id=&quot;ed6f18b5-151b-43ee-8a92-3a49c8ad630f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;26c1b05b-464b-4571-83c2-80ccc26c01d4&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;온라인으로 하면 패스워드가 필요함/&lt;/p&gt;
&lt;p id=&quot;dd93c15a-533b-4420-9865-cd58232a46d7&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;리눅스 정책상 패스워드는 쳐도 보이지 않는다.&lt;/p&gt;
&lt;p id=&quot;e96aab9c-b19d-43ee-8d36-3618a7ae4d28&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol id=&quot;043f2f99-811f-47a3-9a9f-aa90e22be285&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;1&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;ipython 입력&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;6e1d981e-ab5e-421d-b9f0-ffc27f961fba&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;from notebook.auth import passwd 패스워드 모듈을 임포트&lt;/li&gt;
&lt;/ol&gt;
&lt;ol id=&quot;adf6508d-60e7-4767-a8ab-611c569deddc&quot; class=&quot;numbered-list&quot; style=&quot;list-style-type: decimal;&quot; start=&quot;3&quot; type=&quot;1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;passwd() 패스워드를 설정한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure id=&quot;db617404-7e68-4975-b658-54e618f4a361&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2019.png&quot;&gt;&lt;img style=&quot;width: 937px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2019.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;b8ec6e31-3356-4c07-9fb8-5ee11315eb81&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;비밀번호 텍스트로 저장해놓자&amp;hellip;&lt;/p&gt;
&lt;p id=&quot;e63af2fd-2443-48f5-9b38-1785d08d4fc0&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;exit()&lt;/p&gt;
&lt;p id=&quot;774c1b2d-c16d-4de2-812c-d96436daeed5&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;0789c0c6-86da-4544-a2b2-06b50b5c703e&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;수정하는 부분은 주석을 해제해야한다.&lt;/p&gt;
&lt;p id=&quot;5cd5cc1f-c60f-458c-9c0b-6600b2dbf015&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;vim /root/.jupyter/jupyter_notebook_config.py&lt;/p&gt;
&lt;p id=&quot;923a4f64-3988-4d81-af6a-ea2f1542536f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;# 주석 해제&lt;/p&gt;
&lt;p id=&quot;9ee01b94-7aba-40c1-8ee4-679e156737c3&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;명령어 : 136&lt;/p&gt;
&lt;p id=&quot;7b4cfda9-97d7-4f47-ac24-65b49fca50ac&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;allow_origin = &quot;*&quot;&lt;/p&gt;
&lt;p id=&quot;fe62594f-6c0e-486f-8415-ca359aaa6572&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;명령어 : 469&lt;/p&gt;
&lt;p id=&quot;2e73d725-a4eb-40e4-a8a7-9a9af78f3b9f&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;위에서 복사한 password 를 붙여넣는다.&lt;/p&gt;
&lt;p id=&quot;1749f57f-c3c9-4829-8e1f-73761c7e82d1&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;명령어 : 450&lt;/p&gt;
&lt;p id=&quot;cc177762-c73f-4b73-9e74-1101f7da1bc1&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;c.NotebookApp.notebook_dir = '/root/workspace/'&lt;/p&gt;
&lt;p id=&quot;e7ea7b28-9be9-49b7-a73b-7eced42ebce2&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;458&lt;/p&gt;
&lt;p id=&quot;b748bd1c-ceba-4975-9ba5-40f4c4262e8c&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;c.NotebookApp.open_browser = False&lt;/p&gt;
&lt;figure id=&quot;2f39f3f4-175f-4e27-805c-2d839ab497b5&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2020.png&quot;&gt;&lt;img style=&quot;width: 975px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2020.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;e27ad5ba-2572-46ec-b173-02e46832ab7a&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2021.png&quot;&gt;&lt;img style=&quot;width: 1023px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2021.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;ce18e91c-07af-44a5-a8ca-faafc0f3f272&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;ctrl + c / y 를해서 나와주고&lt;/p&gt;
&lt;p id=&quot;2b0bc08f-a2af-49c3-8b3b-86c7726af0a8&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;jupyter notebook --ip=0.0.0.0 --allow-root&lt;/p&gt;
&lt;p id=&quot;2af2dbbf-b510-4436-be80-115ae9e75eb6&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;를 입력&lt;/p&gt;
&lt;p id=&quot;cb36c81d-2c7c-4e48-a4fb-af431c32fa20&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;02a28a6b-cb1d-44dc-b5ed-4f12f05b1a45&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2022.png&quot;&gt;&lt;img style=&quot;width: 912px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2022.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;a920bbb2-fe38-4622-b2c2-559e54a64664&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2023.png&quot;&gt;&lt;img style=&quot;width: 946px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2023.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;5a580a29-a207-417a-ad77-67a269157294&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;뭔가 오류가 있는지 비밀번호 설정이 안되어있음.&lt;/p&gt;
&lt;p id=&quot;eee6469f-b4d9-4f28-bacd-927bb959c221&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;token을 활용하여 아래 사이트에서 다시 비밀번호를 설정해준다.&lt;/p&gt;
&lt;figure id=&quot;4b237748-0650-401f-8f34-6edee3c40761&quot; class=&quot;image&quot;&gt;&lt;a href=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2024.png&quot;&gt;&lt;img style=&quot;width: 903px;&quot; src=&quot;%E1%84%83%E1%85%A9%E1%84%8F%E1%85%A5%20%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5%208a0057bef790408da53f63d0ce7597e2/Untitled%2024.png&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p id=&quot;afaa5fa2-e878-481b-b416-48c6d36a49e2&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;52eada88-1e6f-4e41-8747-38108791cefe&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;d9b6b507-c77c-4152-86a2-a3bf3c0b8fab&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;9a66863e-70e5-42dc-92df-1efdb888174a&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;openpose라는 모듈 사용하면 굿&lt;/p&gt;
&lt;p id=&quot;6267f16c-a649-4957-9d68-7d964e6794ae&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;openpose-docker를 제공한다.&lt;/p&gt;
&lt;p id=&quot;42da77d8-27c2-40c0-b2dc-a5357fb90089&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;7f584af9-3177-4bdf-a0d9-e819cb2d0d52&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;WSA2 그래픽 설정.&lt;/p&gt;
&lt;p id=&quot;41a4f630-7dbc-4be2-92c8-4258d430b99d&quot; class=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/article&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Docker</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/17</guid>
      <comments>https://devflavor.tistory.com/entry/Docker02-%EB%8F%84%EC%BB%A4-%EC%84%A4%EC%B9%98#entry17comment</comments>
      <pubDate>Mon, 8 May 2023 09:45:07 +0900</pubDate>
    </item>
    <item>
      <title>Python01. 파이썬 기초</title>
      <link>https://devflavor.tistory.com/entry/python02-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B8%B0%EC%B4%88</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5lZRz/btsdlrLxNiB/2NnkLuecrlJ2Srm5OKrJqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5lZRz/btsdlrLxNiB/2NnkLuecrlJ2Srm5OKrJqk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5lZRz/btsdlrLxNiB/2NnkLuecrlJ2Srm5OKrJqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5lZRz%2FbtsdlrLxNiB%2F2NnkLuecrlJ2Srm5OKrJqk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;480&quot; data-filename=&quot;1.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주피터 노트북&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 이용하기 위한 개발도구(ILE)에는 jupyter notebook, VS code 등이&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;h2 data-ke-size=&quot;size26&quot;&gt;변수할당하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 &amp;lsquo;=&amp;rsquo; 는 오른쪽 값을 왼쪽 변수에 할당하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수명은 숫자로 시작하면 안되고, 특수문자가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b53lFz/btsc0pHOBRR/Diaq3MIIVt5b3Khfyawuq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b53lFz/btsc0pHOBRR/Diaq3MIIVt5b3Khfyawuq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b53lFz/btsc0pHOBRR/Diaq3MIIVt5b3Khfyawuq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb53lFz%2Fbtsc0pHOBRR%2FDiaq3MIIVt5b3Khfyawuq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;238&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포함되면 안된다. 또한 예약어를 사용하면 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬의 자료형&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자 (Number): 정수(Integer), 실수(Float), 복소수(Complex)&lt;/li&gt;
&lt;li&gt;문자열 (String): 문자나 문자열의 연속으로 이루어진 데이터 타입&lt;/li&gt;
&lt;li&gt;불리언 (Boolean): True 또는 False를 나타내는 데이터 타입&lt;/li&gt;
&lt;li&gt;리스트 (List): 대괄호([])로 둘러싸인 값의 목록으로, 여러 가지 자료형을 포함할 수 있는 시퀀스 타입입니다.&lt;/li&gt;
&lt;li&gt;튜플 (Tuple): 소괄호(())로 둘러싸인 값의 목록으로, 리스트와 유사하지만 값을 변경할 수 없는 시퀀스 타입입니다.&lt;/li&gt;
&lt;li&gt;세트 (Set): 중괄호({})로 둘러싸인 값의 목록으로, 순서가 없고 중복된 값을 허용하지 않는 자료형입니다.&lt;/li&gt;
&lt;li&gt;딕셔너리 (Dictionary): 중괄호({})로 둘러싸인 key-value 쌍의 목록으로, 키와 값이 쌍으로 연결된 자료형입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시퀀스형 자료구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시퀀스형 자료구조는 번호가 있는 자료이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시퀀스의 처음 인덱스 번호는 0으로 시작하며, -1은 뒤에서부터 1번이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;슬라이싱 : 변수[start:end:step] 의 방법으로 구성, step에서 마이너스를 하면 역순으로 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;format(), f-string&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;format()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'안녕하세요 ooo입니다.' 와 같이 ooo의 값만 바꾸기 위해 사용되는 함수이며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 안에 중괄호를 집어넣고 변수명. format(&quot;{넣고 싶은 값}&quot;)을 대입하면 중괄호 안의 값만 유동적으로 변한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lTqUs/btscZT3gnSm/p008Uuo6NkA5brz4Pcomkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lTqUs/btscZT3gnSm/p008Uuo6NkA5brz4Pcomkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lTqUs/btscZT3gnSm/p008Uuo6NkA5brz4Pcomkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlTqUs%2FbtscZT3gnSm%2Fp008Uuo6NkA5brz4Pcomkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;717&quot; height=&quot;126&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;#문자열에서 동적으로 집어 넣고 싶다면 중괄호를 집어넣는다
print(&quot;{}년 {}dnjf {}일 {}입니다.&quot;.format(year, month, day)

and의 특징 두구문이 참일 경우 true false 2
or 두 구문중 하나라도 참이면 true 3
not 구문이 참이면 거짓 거짓이면 참 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;f-string&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 3.6부터 지원하는 문자열 포맷팅 방법&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DxKsC/btsc7xLjKqi/8U9aQjmdLo3PxBmFNkt7jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DxKsC/btsc7xLjKqi/8U9aQjmdLo3PxBmFNkt7jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DxKsC/btsc7xLjKqi/8U9aQjmdLo3PxBmFNkt7jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDxKsC%2Fbtsc7xLjKqi%2F8U9aQjmdLo3PxBmFNkt7jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;683&quot; height=&quot;116&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컴퓨터 연산에서는 부동소수점 표현오류가 있다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 0.1은 2진수로 표현하면 후만이다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;for x in range(10): #중간체크할때 자주 사용함 %나머지를 반환 **지수연산 ..나눗셈의 소수점 이하는 제거
    if x % 2 ==0:
        print(x)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웹에서 가져오는 자료&lt;/h3&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;웹에 표현되어 있는 모든 숫자는 문자임
따라서 변환이 필요함
int(x) x를 정수형으로 
float(x) x를 실수형으로
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;값을 입력받아서 내용을 출력하기&lt;/h3&gt;
&lt;pre class=&quot;swift&quot;&gt;&lt;code&gt;distance = input(&quot;숫자입력&quot;)
distance = int(distance) #문자를 숫자로 변환해줘야하기때문 distance=int(input(&quot;숫자입력&quot;))으로 해도 됨
if distance &amp;lt;= 3:
    print(&quot;걸어가세요&quot;)
elif distance  &amp;lt;= 10 :
    print(&quot;버스타세요&quot;)
else:
    print(&quot;택시타세요&quot;)
print(&quot;수고&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;for 문을 이용하여 반복하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문에는 for문과 while 문이 있다.&lt;/p&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;for x in range(10): #조건문 뒤에 :
    print(&quot;스팸&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for 변수 in 반복가능한 개체:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복수행할 코드&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;윤년조건을 활용하여 for 반복문 연습&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;윤년조건
서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1700년, 1800년, 1900년, 2100년, 2200년, 2300년...)
서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (1600년, 2000년, 2400년...)
&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;4로 나누어 떨어지는 해&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;for year in range(1900,2101):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: 
        
        print(year)
&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;완성본&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;def func_1(year):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return &quot;윤년임&quot; #리턴을 하면 거기서 끝남 
    else:
        return &quot;아님&quot;
    print(&quot;동해물과&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;while 문&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while 문은 for 문과는 다르게 조건이 참일 때만 실행된다.&lt;/p&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;cnt = 0
while cnt &amp;lt; 10: #무한루프 조심해야함
    print(cnt)
    cnt +=1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;#무한루프
cnt = 0
while cnt &amp;lt; 10:
    if cnt ==5:
        cnt+=1
        continue
    print(cnt)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while 조건:&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;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;break , continue&lt;/h3&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;for x in range(100):
    if x %2 == 0:
        break
        print(x)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;cnt = 0
while cnt&amp;lt;10:
	if cnt == 5:
		break
	print(cnt)
	cnt+=1
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 축약형&lt;/h3&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 class=&quot;angelscript&quot;&gt;&lt;code&gt;total = []
for x in range(1,100):
    if x % 3 == 0 and x % 5 == 0:
        total.append(x)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9IMZY/btscZUgZzsc/6jesn50bA50aCvHMvBDGk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9IMZY/btscZUgZzsc/6jesn50bA50aCvHMvBDGk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9IMZY/btscZUgZzsc/6jesn50bA50aCvHMvBDGk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9IMZY%2FbtscZUgZzsc%2F6jesn50bA50aCvHMvBDGk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;111&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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 class=&quot;sas&quot;&gt;&lt;code&gt;total=[x for x in range(1,5)]
#리스트 축약형이고 더 선호하는 편 , total.append(X)가 안들어가도 됨
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;total2 = [x for x in range(1,100) if x % 3 == 0 and x % 5 == 0]
# 조건문을 넣을 수 있음
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;[year for year in range(1900, 2101) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0]
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;for x in range(100):
    if x % 2 == 0:
        continue
        print(x)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;다중문자열&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;multiline = &quot;&quot;&quot;동해물과 백두산이&quot;&quot;&quot;
#다중문자열
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트의 앞뒤로 세개의 따옴표를 이용하여 나타낼 수 있는 다중문자열은 여러 텍스트 문자열을 저장할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(multiline) 
#\\n 줄바꾸기
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;ditto = &quot;&quot;&quot;Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.count(&quot;ditto&quot; or &quot;Ditto&quot;)
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소문자, 대문자 변환&lt;/h3&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ditto.lower()
ditto.upper()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 변환한 값을 활용하고 싶다면 diito = ditto..lower()처럼 재정의를 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;split&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;split = ditto.split()
#리스트 형식으로 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;dict_a
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3n2iT/btsc2oIe1TW/AZjTKA23JIM0uGTGcR7f4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3n2iT/btsc2oIe1TW/AZjTKA23JIM0uGTGcR7f4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3n2iT/btsc2oIe1TW/AZjTKA23JIM0uGTGcR7f4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3n2iT%2Fbtsc2oIe1TW%2FAZjTKA23JIM0uGTGcR7f4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;614&quot; height=&quot;397&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boro0d/btsc74oRTwR/2B6Go03y4bq9AHyRE90MvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boro0d/btsc74oRTwR/2B6Go03y4bq9AHyRE90MvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boro0d/btsc74oRTwR/2B6Go03y4bq9AHyRE90MvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fboro0d%2Fbtsc74oRTwR%2F2B6Go03y4bq9AHyRE90MvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;499&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;답안&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;word_dict
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ55b0/btsc0rlbP9C/WTHqWBMkcqln1zleJiTsw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ55b0/btsc0rlbP9C/WTHqWBMkcqln1zleJiTsw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ55b0/btsc0rlbP9C/WTHqWBMkcqln1zleJiTsw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ55b0%2Fbtsc0rlbP9C%2FWTHqWBMkcqln1zleJiTsw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;629&quot; height=&quot;484&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def tmp(x):
    return x[1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vhyVR/btsc02k9dNh/IHWEcr7cUCKSEA7hKXaG3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vhyVR/btsc02k9dNh/IHWEcr7cUCKSEA7hKXaG3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vhyVR/btsc02k9dNh/IHWEcr7cUCKSEA7hKXaG3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvhyVR%2Fbtsc02k9dNh%2FIHWEcr7cUCKSEA7hKXaG3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;705&quot; height=&quot;262&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def calc(a,b):
    return a+b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgUdcv/btsc9bOSKyA/eqBCj3LRGXAlfklR58LZ9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgUdcv/btsc9bOSKyA/eqBCj3LRGXAlfklR58LZ9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgUdcv/btsc9bOSKyA/eqBCj3LRGXAlfklR58LZ9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgUdcv%2Fbtsc9bOSKyA%2FeqBCj3LRGXAlfklR58LZ9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;304&quot; height=&quot;119&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;119&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;상대경로 절대경로
import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;os.mkdir(&quot;test&quot;) # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;f=open(&quot;./encore.txt&quot;, &quot;w&quot;, encoding='utf-8') #encore 텍스트파일 상대경로, &quot;w&quot; 쓴다, encoding 형식
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;f.write(&quot;Hi&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;for roots, dirs, files in os.walk(&quot;c:/windows/&quot;):
    for file in files:
        print(f&quot;{roots}/{file}&quot;) #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 목록을 텍스트로 관리 가능

f = open(&quot;./pic.txt&quot;, &quot;w&quot;, encoding='utf-8')
for roots, dirs, files in os.walk(&quot;c:/Windows/&quot;):
    for file in files:
        f.write(f&quot;{roots}/{file}\\n&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(&quot;,&quot;,&quot;&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹크롤링 (스타벅스 사진 저장)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;import requests
url = &quot;&amp;lt;https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3&amp;gt;&quot;
payload = {&quot;in_biz_cds&quot; : &quot;0&quot;,
&quot;in_scodes&quot; : &quot;0&quot;,
&quot;ins_lat&quot; : &quot;37.566535&quot;,
&quot;ins_lng&quot; : &quot;126.9779692&quot;,
&quot;search_text&quot; : &quot;&quot;,
&quot;p_sido_cd&quot; : &quot;01&quot;,
&quot;p_gugun_cd&quot; : &quot;&quot;,
&quot;in_distance&quot; : &quot;0&quot;,
&quot;in_biz_cd&quot; : &quot;&quot;,
&quot;isError&quot; : &quot;true&quot;,
&quot;searchType&quot; : &quot;C&quot;,
&quot;set_date&quot; : &quot;&quot;,
&quot;all_store&quot; : &quot;0&quot;,
&quot;T03&quot; : &quot;0&quot;,
&quot;T01&quot; : &quot;0&quot;,
&quot;T27&quot; : &quot;0&quot;,
&quot;T12&quot; : &quot;0&quot;,
&quot;T09&quot; : &quot;0&quot;,
&quot;T30&quot; : &quot;0&quot;,
&quot;T05&quot; : &quot;0&quot;,
&quot;T22&quot; : &quot;0&quot;,
&quot;T21&quot; : &quot;0&quot;,
&quot;T10&quot; : &quot;0&quot;,
&quot;T36&quot; : &quot;0&quot;,
&quot;T43&quot; : &quot;0&quot;,
&quot;T48&quot; : &quot;0&quot;,
&quot;P10&quot; : &quot;0&quot;,
&quot;P50&quot; : &quot;0&quot;,
&quot;P20&quot; : &quot;0&quot;,
&quot;P60&quot; : &quot;0&quot;,
&quot;P30&quot; : &quot;0&quot;,
&quot;P70&quot; : &quot;0&quot;,
&quot;P40&quot; : &quot;0&quot;,
&quot;P80&quot; : &quot;0&quot;,
&quot;whcroad_yn&quot; : &quot;0&quot;,
&quot;P90&quot; : &quot;0&quot;,
&quot;new_bool&quot; : &quot;0&quot;,
&quot;iend&quot; : &quot;1000&quot;,
&quot;rndCod&quot; : &quot;IZVHHSIFWC&quot;,}
r =  requests.post(url, data=payload)
star = r.json()['list']
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;payload에서 가져올 수 있는 값을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r = requests.post(url, data = payload)&lt;/p&gt;
&lt;h1&gt;url에 post요청을 보내고 r에 응답을 할당한 것이다.&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(multiline) 
#\\n 줄바꾸기
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;ditto = &quot;&quot;&quot;Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.count(&quot;ditto&quot; or &quot;Ditto&quot;)
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소문자, 대문자 변환&lt;/h3&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ditto.lower()
ditto.upper()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;split&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;split = ditto.split()
#리스트 형식으로 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;dict_a
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;답안&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;word_dict
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def tmp(x):
    return x[1]
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def calc(a,b):
    return a+b
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;상대경로 절대경로
import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;os.mkdir(&quot;test&quot;) # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;f=open(&quot;./encore.txt&quot;, &quot;w&quot;, encoding='utf-8') #encore 텍스트파일 상대경로, &quot;w&quot; 쓴다, encoding 형식
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;f.write(&quot;Hi&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;for roots, dirs, files in os.walk(&quot;c:/windows/&quot;):
    for file in files:
        print(f&quot;{roots}/{file}&quot;) #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 목록을 텍스트로 관리 가능

f = open(&quot;./pic.txt&quot;, &quot;w&quot;, encoding='utf-8')
for roots, dirs, files in os.walk(&quot;c:/Windows/&quot;):
    for file in files:
        f.write(f&quot;{roots}/{file}\\n&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(&quot;,&quot;,&quot;&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹크롤링 (스타벅스 사진 저장)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;import requests
url = &quot;&amp;lt;https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3&amp;gt;&quot;
payload = {&quot;in_biz_cds&quot; : &quot;0&quot;,
&quot;in_scodes&quot; : &quot;0&quot;,
&quot;ins_lat&quot; : &quot;37.566535&quot;,
&quot;ins_lng&quot; : &quot;126.9779692&quot;,
&quot;search_text&quot; : &quot;&quot;,
&quot;p_sido_cd&quot; : &quot;01&quot;,
&quot;p_gugun_cd&quot; : &quot;&quot;,
&quot;in_distance&quot; : &quot;0&quot;,
&quot;in_biz_cd&quot; : &quot;&quot;,
&quot;isError&quot; : &quot;true&quot;,
&quot;searchType&quot; : &quot;C&quot;,
&quot;set_date&quot; : &quot;&quot;,
&quot;all_store&quot; : &quot;0&quot;,
&quot;T03&quot; : &quot;0&quot;,
&quot;T01&quot; : &quot;0&quot;,
&quot;T27&quot; : &quot;0&quot;,
&quot;T12&quot; : &quot;0&quot;,
&quot;T09&quot; : &quot;0&quot;,
&quot;T30&quot; : &quot;0&quot;,
&quot;T05&quot; : &quot;0&quot;,
&quot;T22&quot; : &quot;0&quot;,
&quot;T21&quot; : &quot;0&quot;,
&quot;T10&quot; : &quot;0&quot;,
&quot;T36&quot; : &quot;0&quot;,
&quot;T43&quot; : &quot;0&quot;,
&quot;T48&quot; : &quot;0&quot;,
&quot;P10&quot; : &quot;0&quot;,
&quot;P50&quot; : &quot;0&quot;,
&quot;P20&quot; : &quot;0&quot;,
&quot;P60&quot; : &quot;0&quot;,
&quot;P30&quot; : &quot;0&quot;,
&quot;P70&quot; : &quot;0&quot;,
&quot;P40&quot; : &quot;0&quot;,
&quot;P80&quot; : &quot;0&quot;,
&quot;whcroad_yn&quot; : &quot;0&quot;,
&quot;P90&quot; : &quot;0&quot;,
&quot;new_bool&quot; : &quot;0&quot;,
&quot;iend&quot; : &quot;1000&quot;,
&quot;rndCod&quot; : &quot;IZVHHSIFWC&quot;,}
r =  requests.post(url, data=payload)
star = r.json()['list']
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;payload에서 가져올 수 있는 값을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r = requests.post(url, data = payload)&lt;/p&gt;
&lt;h1&gt;url에 post요청을 보내고 r에 응답을 할당한 것이다.&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(multiline) 
#\\n 줄바꾸기
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;ditto = &quot;&quot;&quot;Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.count(&quot;ditto&quot; or &quot;Ditto&quot;)
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소문자, 대문자 변환&lt;/h3&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ditto.lower()
ditto.upper()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;split&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;split = ditto.split()
#리스트 형식으로 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;dict_a
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;답안&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;word_dict
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def tmp(x):
    return x[1]
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def calc(a,b):
    return a+b
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;상대경로 절대경로
import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;os.mkdir(&quot;test&quot;) # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;f=open(&quot;./encore.txt&quot;, &quot;w&quot;, encoding='utf-8') #encore 텍스트파일 상대경로, &quot;w&quot; 쓴다, encoding 형식
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;f.write(&quot;Hi&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;for roots, dirs, files in os.walk(&quot;c:/windows/&quot;):
    for file in files:
        print(f&quot;{roots}/{file}&quot;) #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 목록을 텍스트로 관리 가능

f = open(&quot;./pic.txt&quot;, &quot;w&quot;, encoding='utf-8')
for roots, dirs, files in os.walk(&quot;c:/Windows/&quot;):
    for file in files:
        f.write(f&quot;{roots}/{file}\\n&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(&quot;,&quot;,&quot;&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹크롤링 (스타벅스 사진 저장)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;import requests
url = &quot;&amp;lt;https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3&amp;gt;&quot;
payload = {&quot;in_biz_cds&quot; : &quot;0&quot;,
&quot;in_scodes&quot; : &quot;0&quot;,
&quot;ins_lat&quot; : &quot;37.566535&quot;,
&quot;ins_lng&quot; : &quot;126.9779692&quot;,
&quot;search_text&quot; : &quot;&quot;,
&quot;p_sido_cd&quot; : &quot;01&quot;,
&quot;p_gugun_cd&quot; : &quot;&quot;,
&quot;in_distance&quot; : &quot;0&quot;,
&quot;in_biz_cd&quot; : &quot;&quot;,
&quot;isError&quot; : &quot;true&quot;,
&quot;searchType&quot; : &quot;C&quot;,
&quot;set_date&quot; : &quot;&quot;,
&quot;all_store&quot; : &quot;0&quot;,
&quot;T03&quot; : &quot;0&quot;,
&quot;T01&quot; : &quot;0&quot;,
&quot;T27&quot; : &quot;0&quot;,
&quot;T12&quot; : &quot;0&quot;,
&quot;T09&quot; : &quot;0&quot;,
&quot;T30&quot; : &quot;0&quot;,
&quot;T05&quot; : &quot;0&quot;,
&quot;T22&quot; : &quot;0&quot;,
&quot;T21&quot; : &quot;0&quot;,
&quot;T10&quot; : &quot;0&quot;,
&quot;T36&quot; : &quot;0&quot;,
&quot;T43&quot; : &quot;0&quot;,
&quot;T48&quot; : &quot;0&quot;,
&quot;P10&quot; : &quot;0&quot;,
&quot;P50&quot; : &quot;0&quot;,
&quot;P20&quot; : &quot;0&quot;,
&quot;P60&quot; : &quot;0&quot;,
&quot;P30&quot; : &quot;0&quot;,
&quot;P70&quot; : &quot;0&quot;,
&quot;P40&quot; : &quot;0&quot;,
&quot;P80&quot; : &quot;0&quot;,
&quot;whcroad_yn&quot; : &quot;0&quot;,
&quot;P90&quot; : &quot;0&quot;,
&quot;new_bool&quot; : &quot;0&quot;,
&quot;iend&quot; : &quot;1000&quot;,
&quot;rndCod&quot; : &quot;IZVHHSIFWC&quot;,}
r =  requests.post(url, data=payload)
star = r.json()['list']
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;payload에서 가져올 수 있는 값을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r = requests.post(url, data = payload)&lt;/p&gt;
&lt;h1&gt;url에 post요청을 보내고 r에 응답을 할당한 것이다.&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(multiline) 
#\\n 줄바꾸기
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;ditto = &quot;&quot;&quot;Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.count(&quot;ditto&quot; or &quot;Ditto&quot;)
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소문자, 대문자 변환&lt;/h3&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ditto.lower()
ditto.upper()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;split&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;split = ditto.split()
#리스트 형식으로 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;dict_a
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;답안&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;word_dict
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def tmp(x):
    return x[1]
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def calc(a,b):
    return a+b
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;상대경로 절대경로
import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;os.mkdir(&quot;test&quot;) # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;f=open(&quot;./encore.txt&quot;, &quot;w&quot;, encoding='utf-8') #encore 텍스트파일 상대경로, &quot;w&quot; 쓴다, encoding 형식
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;f.write(&quot;Hi&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;for roots, dirs, files in os.walk(&quot;c:/windows/&quot;):
    for file in files:
        print(f&quot;{roots}/{file}&quot;) #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 목록을 텍스트로 관리 가능

f = open(&quot;./pic.txt&quot;, &quot;w&quot;, encoding='utf-8')
for roots, dirs, files in os.walk(&quot;c:/Windows/&quot;):
    for file in files:
        f.write(f&quot;{roots}/{file}\\n&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(&quot;,&quot;,&quot;&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹크롤링 (스타벅스 사진 저장)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;import requests
url = &quot;&amp;lt;https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3&amp;gt;&quot;
payload = {&quot;in_biz_cds&quot; : &quot;0&quot;,
&quot;in_scodes&quot; : &quot;0&quot;,
&quot;ins_lat&quot; : &quot;37.566535&quot;,
&quot;ins_lng&quot; : &quot;126.9779692&quot;,
&quot;search_text&quot; : &quot;&quot;,
&quot;p_sido_cd&quot; : &quot;01&quot;,
&quot;p_gugun_cd&quot; : &quot;&quot;,
&quot;in_distance&quot; : &quot;0&quot;,
&quot;in_biz_cd&quot; : &quot;&quot;,
&quot;isError&quot; : &quot;true&quot;,
&quot;searchType&quot; : &quot;C&quot;,
&quot;set_date&quot; : &quot;&quot;,
&quot;all_store&quot; : &quot;0&quot;,
&quot;T03&quot; : &quot;0&quot;,
&quot;T01&quot; : &quot;0&quot;,
&quot;T27&quot; : &quot;0&quot;,
&quot;T12&quot; : &quot;0&quot;,
&quot;T09&quot; : &quot;0&quot;,
&quot;T30&quot; : &quot;0&quot;,
&quot;T05&quot; : &quot;0&quot;,
&quot;T22&quot; : &quot;0&quot;,
&quot;T21&quot; : &quot;0&quot;,
&quot;T10&quot; : &quot;0&quot;,
&quot;T36&quot; : &quot;0&quot;,
&quot;T43&quot; : &quot;0&quot;,
&quot;T48&quot; : &quot;0&quot;,
&quot;P10&quot; : &quot;0&quot;,
&quot;P50&quot; : &quot;0&quot;,
&quot;P20&quot; : &quot;0&quot;,
&quot;P60&quot; : &quot;0&quot;,
&quot;P30&quot; : &quot;0&quot;,
&quot;P70&quot; : &quot;0&quot;,
&quot;P40&quot; : &quot;0&quot;,
&quot;P80&quot; : &quot;0&quot;,
&quot;whcroad_yn&quot; : &quot;0&quot;,
&quot;P90&quot; : &quot;0&quot;,
&quot;new_bool&quot; : &quot;0&quot;,
&quot;iend&quot; : &quot;1000&quot;,
&quot;rndCod&quot; : &quot;IZVHHSIFWC&quot;,}
r =  requests.post(url, data=payload)
star = r.json()['list']
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;payload에서 가져올 수 있는 값을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r = requests.post(url, data = payload)&lt;/p&gt;
&lt;h1&gt;url에 post요청을 보내고 r에 응답을 할당한 것이다.&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(multiline) 
#\\n 줄바꾸기
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;ditto = &quot;&quot;&quot;Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.count(&quot;ditto&quot; or &quot;Ditto&quot;)
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소문자, 대문자 변환&lt;/h3&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ditto.lower()
ditto.upper()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;split&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;split = ditto.split()
#리스트 형식으로 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;dict_a
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;답안&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;word_dict
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def tmp(x):
    return x[1]
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def calc(a,b):
    return a+b
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;상대경로 절대경로
import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;os.mkdir(&quot;test&quot;) # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;f=open(&quot;./encore.txt&quot;, &quot;w&quot;, encoding='utf-8') #encore 텍스트파일 상대경로, &quot;w&quot; 쓴다, encoding 형식
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;f.write(&quot;Hi&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;for roots, dirs, files in os.walk(&quot;c:/windows/&quot;):
    for file in files:
        print(f&quot;{roots}/{file}&quot;) #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 목록을 텍스트로 관리 가능

f = open(&quot;./pic.txt&quot;, &quot;w&quot;, encoding='utf-8')
for roots, dirs, files in os.walk(&quot;c:/Windows/&quot;):
    for file in files:
        f.write(f&quot;{roots}/{file}\\n&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(&quot;,&quot;,&quot;&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹크롤링 (스타벅스 사진 저장)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;import requests
url = &quot;&amp;lt;https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3&amp;gt;&quot;
payload = {&quot;in_biz_cds&quot; : &quot;0&quot;,
&quot;in_scodes&quot; : &quot;0&quot;,
&quot;ins_lat&quot; : &quot;37.566535&quot;,
&quot;ins_lng&quot; : &quot;126.9779692&quot;,
&quot;search_text&quot; : &quot;&quot;,
&quot;p_sido_cd&quot; : &quot;01&quot;,
&quot;p_gugun_cd&quot; : &quot;&quot;,
&quot;in_distance&quot; : &quot;0&quot;,
&quot;in_biz_cd&quot; : &quot;&quot;,
&quot;isError&quot; : &quot;true&quot;,
&quot;searchType&quot; : &quot;C&quot;,
&quot;set_date&quot; : &quot;&quot;,
&quot;all_store&quot; : &quot;0&quot;,
&quot;T03&quot; : &quot;0&quot;,
&quot;T01&quot; : &quot;0&quot;,
&quot;T27&quot; : &quot;0&quot;,
&quot;T12&quot; : &quot;0&quot;,
&quot;T09&quot; : &quot;0&quot;,
&quot;T30&quot; : &quot;0&quot;,
&quot;T05&quot; : &quot;0&quot;,
&quot;T22&quot; : &quot;0&quot;,
&quot;T21&quot; : &quot;0&quot;,
&quot;T10&quot; : &quot;0&quot;,
&quot;T36&quot; : &quot;0&quot;,
&quot;T43&quot; : &quot;0&quot;,
&quot;T48&quot; : &quot;0&quot;,
&quot;P10&quot; : &quot;0&quot;,
&quot;P50&quot; : &quot;0&quot;,
&quot;P20&quot; : &quot;0&quot;,
&quot;P60&quot; : &quot;0&quot;,
&quot;P30&quot; : &quot;0&quot;,
&quot;P70&quot; : &quot;0&quot;,
&quot;P40&quot; : &quot;0&quot;,
&quot;P80&quot; : &quot;0&quot;,
&quot;whcroad_yn&quot; : &quot;0&quot;,
&quot;P90&quot; : &quot;0&quot;,
&quot;new_bool&quot; : &quot;0&quot;,
&quot;iend&quot; : &quot;1000&quot;,
&quot;rndCod&quot; : &quot;IZVHHSIFWC&quot;,}
r =  requests.post(url, data=payload)
star = r.json()['list']
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;payload에서 가져올 수 있는 값을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r = requests.post(url, data = payload)&lt;/p&gt;
&lt;h1&gt;url에 post요청을 보내고 r에 응답을 할당한 것이다.&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(multiline) 
#\\n 줄바꾸기
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;ditto = &quot;&quot;&quot;Woo woo woo woo ooh
Woo woo woo woo
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
훌쩍 커버렸어
함께한 기억처럼
널 보는 내 마음은
어느새 여름 지나 가을
기다렸지 all this time
Do you want somebody
Like I want somebody
날 보고 웃었지만
Do you think about me now yeah
All the time yeah
All the time
I got no time to lose
내 길었던 하루
난 보고 싶어
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Not just anybody
너를 상상했지
항상 닿아있던
처음 느낌 그대로 난
기다렸지 all this time
I got nothing to lose
널 좋아한다고
wooah wooah wooah
Ra-ta-ta-ta 울린 심장 (Ra-ta-ta-ta)
But I don't want to
Stay in the middle
Like you a little
Don&amp;rsquo;t want no riddle
말해줘 say it back
Oh say it ditto
아침은 너무 멀어
So say it ditto
I don't want to
Walk in this 미로
다 아는 건 아니어도
바라던 대로
말해줘 Say it back
Oh say it ditto
I want you so, want you
So say it ditto
Woo woo woo woo ooh
Woo woo woo woo 
&quot;&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.count(&quot;ditto&quot; or &quot;Ditto&quot;)
# 안됨 그래서 소문자로 먼저 만들고 카운트해주자
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소문자, 대문자 변환&lt;/h3&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ditto.lower()
ditto.upper()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.lower()을 사용하여 모든 문자를 소문자로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 .upper()을 사용하여 모든 문자를 대문자로 변환할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;split&lt;/h3&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;split = ditto.split()
#리스트 형식으로 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;#리스트면 for를 써서 반복시킨다.
#워드 카운트하는 법

dict_a={}
for count in split:  
    if count in dict_a:
        dict_a[count] += 1
    else:
        dict_a[count]= 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;dict_a
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;#불러 온 값들을 이쁘게 정렬하려면 람다 함수를 이용
sorted(dict_a.items(), key=lambda x: x[1]) #람다함수로 낮은값부터 정리
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;답안&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;ditto.lower().count('ditto')
ditto = ditto.lower()
word_dict = {}
for word in ditto.split():
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;word_dict
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def tmp(x):
    return x[1]
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted(word_dict.items(), key=tmp, reverse=True) #키부분에 어느부분으로 정렬할것인지 나타내는 것 리스트 순서 [0,1,2,3,4,5]]
# sorted는 파이썬 제공함수
#true에 T대문자로 해줘야함
#tmp 함수는 재활용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def calc(a,b):
    return a+b
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;#람다를 사용하면 한줄로 , 람다는 이름이 없는 일회성/ 데이터 분석시 람다 많이 활용하는 편
(lambda a, b : a+b)(5,10)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;상대경로 절대경로
import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;import os
os.getcwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;os.mkdir(&quot;test&quot;) # test라는 폴더를 만든다 절대경로 c:\\\\workspace\\\\test
#상대경로 ./test
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;f=open(&quot;./encore.txt&quot;, &quot;w&quot;, encoding='utf-8') #encore 텍스트파일 상대경로, &quot;w&quot; 쓴다, encoding 형식
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;f.write(&quot;Hi&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;for roots, dirs, files in os.walk(&quot;c:/windows/&quot;):
    for file in files:
        print(f&quot;{roots}/{file}&quot;) #윈도우즈 안에 있는 파일을 다 불러오는 것, 모든 파일 마지막 닫아주어야
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 목록을 텍스트로 관리 가능

f = open(&quot;./pic.txt&quot;, &quot;w&quot;, encoding='utf-8')
for roots, dirs, files in os.walk(&quot;c:/Windows/&quot;):
    for file in files:
        f.write(f&quot;{roots}/{file}\\n&quot;)
f.close()
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;#파일 안에 숫자는 문자기때문에 숫자형으로 바꿔줘야함, 천단위 구분 세미콜론은 없애줘야함
.replace(&quot;,&quot;,&quot;&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹크롤링 (스타벅스 사진 저장)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 requests 모듈을 불러와야 http 요청을 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;import requests
url = &quot;&amp;lt;https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3&amp;gt;&quot;
payload = {&quot;in_biz_cds&quot; : &quot;0&quot;,
&quot;in_scodes&quot; : &quot;0&quot;,
&quot;ins_lat&quot; : &quot;37.566535&quot;,
&quot;ins_lng&quot; : &quot;126.9779692&quot;,
&quot;search_text&quot; : &quot;&quot;,
&quot;p_sido_cd&quot; : &quot;01&quot;,
&quot;p_gugun_cd&quot; : &quot;&quot;,
&quot;in_distance&quot; : &quot;0&quot;,
&quot;in_biz_cd&quot; : &quot;&quot;,
&quot;isError&quot; : &quot;true&quot;,
&quot;searchType&quot; : &quot;C&quot;,
&quot;set_date&quot; : &quot;&quot;,
&quot;all_store&quot; : &quot;0&quot;,
&quot;T03&quot; : &quot;0&quot;,
&quot;T01&quot; : &quot;0&quot;,
&quot;T27&quot; : &quot;0&quot;,
&quot;T12&quot; : &quot;0&quot;,
&quot;T09&quot; : &quot;0&quot;,
&quot;T30&quot; : &quot;0&quot;,
&quot;T05&quot; : &quot;0&quot;,
&quot;T22&quot; : &quot;0&quot;,
&quot;T21&quot; : &quot;0&quot;,
&quot;T10&quot; : &quot;0&quot;,
&quot;T36&quot; : &quot;0&quot;,
&quot;T43&quot; : &quot;0&quot;,
&quot;T48&quot; : &quot;0&quot;,
&quot;P10&quot; : &quot;0&quot;,
&quot;P50&quot; : &quot;0&quot;,
&quot;P20&quot; : &quot;0&quot;,
&quot;P60&quot; : &quot;0&quot;,
&quot;P30&quot; : &quot;0&quot;,
&quot;P70&quot; : &quot;0&quot;,
&quot;P40&quot; : &quot;0&quot;,
&quot;P80&quot; : &quot;0&quot;,
&quot;whcroad_yn&quot; : &quot;0&quot;,
&quot;P90&quot; : &quot;0&quot;,
&quot;new_bool&quot; : &quot;0&quot;,
&quot;iend&quot; : &quot;1000&quot;,
&quot;rndCod&quot; : &quot;IZVHHSIFWC&quot;,}
r =  requests.post(url, data=payload)
star = r.json()['list']
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OaDdZ/btsc73Q3Pwv/oq6KgK1KSfe1PC4nyKD0ZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OaDdZ/btsc73Q3Pwv/oq6KgK1KSfe1PC4nyKD0ZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OaDdZ/btsc73Q3Pwv/oq6KgK1KSfe1PC4nyKD0ZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOaDdZ%2Fbtsc73Q3Pwv%2Foq6KgK1KSfe1PC4nyKD0ZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;659&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;659&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;payload에서 가져올 수 있는 값을 찾아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r = requests.post(url, data = payload)&lt;/p&gt;
&lt;h1&gt;url에 post요청을 보내고 r에 응답을 할당한 것이다.&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r.text #응답 결과의 내용을 가져옴 #가져온 응답 결과가 딕셔너리 형태로 이루어져있으면 json형태로 표현해준다. star = r.json()['list'] #r.json 중 사용할 값을 꺼내기 위해 인덱스한것이다. star&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리와 json은 모두 key-value 쌍으로 데이터를 표현하기 때문에 데이터 변환이 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>f-string</category>
      <category>format함수</category>
      <category>for문</category>
      <category>while조건</category>
      <category>변수</category>
      <category>웹크롤링</category>
      <category>자료형</category>
      <category>크롤링</category>
      <category>파이썬</category>
      <category>파이썬기초</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/16</guid>
      <comments>https://devflavor.tistory.com/entry/python02-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B8%B0%EC%B4%88#entry16comment</comments>
      <pubDate>Fri, 28 Apr 2023 15:49:51 +0900</pubDate>
    </item>
    <item>
      <title>SQL01. 3월에 태어난 여성 회원 목록 출력하기</title>
      <link>https://devflavor.tistory.com/entry/SQL01-3%EC%9B%94%EC%97%90-%ED%83%9C%EC%96%B4%EB%82%9C-%EC%97%AC%EC%84%B1-%ED%9A%8C%EC%9B%90-%EB%AA%A9%EB%A1%9D-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131120&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;프로그래머스 SELECT 연습 첫번째 3월에 태어난 여성 회원 목록 출력하기&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;pro1.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Oa3gU/btsdhBOEoR0/oidhrQYr5epLN2nO4kCwWk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Oa3gU/btsdhBOEoR0/oidhrQYr5epLN2nO4kCwWk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Oa3gU/btsdhBOEoR0/oidhrQYr5epLN2nO4kCwWk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOa3gU%2FbtsdhBOEoR0%2FoidhrQYr5epLN2nO4kCwWk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;480&quot; data-filename=&quot;pro1.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo0zqh/btscYpgVvHJ/PkEfuB07lwsK6NUwUjuw8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo0zqh/btscYpgVvHJ/PkEfuB07lwsK6NUwUjuw8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo0zqh/btscYpgVvHJ/PkEfuB07lwsK6NUwUjuw8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo0zqh%2FbtscYpgVvHJ%2FPkEfuB07lwsK6NUwUjuw8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;736&quot; height=&quot;417&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 풀이&lt;/p&gt;
&lt;pre id=&quot;code_1682610209170&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT MEMBER_ID,MEMBER_NAME, GENDER, DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH)=3
    AND TLNO IS NOT NULL
    AND GENDER = 'W'

ORDER BY MEMBER_ID ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ID, 이름, 성별, 생년월일을 가져온다&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;정렬은 멤버ID 오름차순으로 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 생년월일에 출력되는 형식을 지정해주지 않아서 틀렸다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEdCNB/btsc2V5XTWX/0jOOX96lRAKRCSdGP99ZL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEdCNB/btsc2V5XTWX/0jOOX96lRAKRCSdGP99ZL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEdCNB/btsc2V5XTWX/0jOOX96lRAKRCSdGP99ZL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEdCNB%2Fbtsc2V5XTWX%2F0jOOX96lRAKRCSdGP99ZL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;177&quot; height=&quot;113&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1682610469403&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT MEMBER_ID,
MEMBER_NAME,
GENDER, 
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH)=3
    AND TLNO IS NOT NULL
    AND GENDER = 'W'

ORDER BY MEMBER_ID ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 처음부터 DATE_OF_BIRTH에 FORMAT을 걸어줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lJzt4/btsc0ptoHri/H9QWkQ4kMhmNt0Du46CktK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lJzt4/btsc0ptoHri/H9QWkQ4kMhmNt0Du46CktK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lJzt4/btsc0ptoHri/H9QWkQ4kMhmNt0Du46CktK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlJzt4%2Fbtsc0ptoHri%2FH9QWkQ4kMhmNt0Du46CktK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;73&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MYSQL</category>
      <category>MySQL</category>
      <category>MYSQL연습</category>
      <category>select</category>
      <category>프로그래머스 sql</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/15</guid>
      <comments>https://devflavor.tistory.com/entry/SQL01-3%EC%9B%94%EC%97%90-%ED%83%9C%EC%96%B4%EB%82%9C-%EC%97%AC%EC%84%B1-%ED%9A%8C%EC%9B%90-%EB%AA%A9%EB%A1%9D-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0#entry15comment</comments>
      <pubDate>Fri, 28 Apr 2023 10:50:31 +0900</pubDate>
    </item>
    <item>
      <title>WSL 환경 C드라이브 &amp;rarr; D드라이브</title>
      <link>https://devflavor.tistory.com/entry/WSL-%ED%99%98%EA%B2%BD-C%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C-%E2%86%92-D%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;wsl이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WSL(Windows Subsystem for Linux)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;windows 10 에서 도입한 기능으로, 리눅스 커널인터페이스를 통해 Linux 배포판을 Windows에서 실행할 수 있게 해주는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; wsl을 통해 윈도우 운영체제에서 리눅스 개발 및 시스템 관리도구를 함께 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c드라이브는 꽉 차는 경우가 많다. 나도 C드라이브의 용량이 빨간색으로 변하는 것을 목격하고 이 작업을 찾아보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C드라이브 용량이 부족할때 D드라이브로 wsl을 이동시키면 용량 관리에 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 작업은 임포트하는데 시간이 꽤 많이 들기에 여유가 있을때 실행하기 바란다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;내보내기&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;wsl -l --all
wsl --export Ubuntu d:\\&amp;lt;파일명&amp;gt;.tar&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nTXUY/btscZajnT2Y/aTcPt42Hhv3zq9avsAp7Bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nTXUY/btscZajnT2Y/aTcPt42Hhv3zq9avsAp7Bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nTXUY/btscZajnT2Y/aTcPt42Hhv3zq9avsAp7Bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnTXUY%2FbtscZajnT2Y%2FaTcPt42Hhv3zq9avsAp7Bk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;516&quot; height=&quot;56&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;wsl -l &amp;mdash;all은 모든 상태의 WSL(Windows Subsystem for Linux)에서 사용가능한 linux 배포판을 나열한다.&lt;/li&gt;
&lt;li&gt;wsl --export &amp;lt;리눅스 명&amp;gt; &amp;lt;저장할 파일 경로 및 파일명&amp;gt;&lt;/li&gt;
&lt;li&gt;&quot;wsl --export Ubuntu d:\&amp;lt;파일명&amp;gt;.tar&quot;는 WSL에 설치된 Ubuntu 배포판을 &quot;&amp;lt;파일명&amp;gt;.tar&quot;라는 TAR 파일로 내보내는 작업이다.&lt;/li&gt;
&lt;li&gt;기존에 사용하던 Ubuntu 설치의 백업을 만들때 사용한다.&lt;/li&gt;
&lt;li&gt;또한, 컴퓨터를 바꿨을때 기존에 사용하던 Ubuntu를 가져올 때 tar파일을 만들어 새로운 컴퓨터에서 사용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;가져오기&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ch5qAz/btsc2oNW0l5/IhFSRTspTj74ak7e9p3zUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ch5qAz/btsc2oNW0l5/IhFSRTspTj74ak7e9p3zUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ch5qAz/btsc2oNW0l5/IhFSRTspTj74ak7e9p3zUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fch5qAz%2Fbtsc2oNW0l5%2FIhFSRTspTj74ak7e9p3zUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;617&quot; height=&quot;80&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;mkdir d:\\wsl\\ubuntu_20_04
wsl --import Ubuntu-20.04 d:\\wsl\\ubuntu_20_04 d:\\&amp;lt;파일명&amp;gt;.tar&lt;/code&gt;&lt;/pre&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;이후 import로 가져오기를 시작한다.&lt;/li&gt;
&lt;li&gt;시간이 꽤 걸리기 때문에 그냥 방치하는 것을 추천한다.&lt;/li&gt;
&lt;li&gt;wsl --import &amp;lt;설정할 wsl 이름&amp;gt; &amp;lt;설치경로&amp;gt; &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;저장된 파일 경로 및 파일명&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;정상적으로 import가 되었는지 확인 후 기존 사용하던 우분투를 지우기&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;wsl --unregister &amp;lt;wsl 이름&amp;gt;&lt;/li&gt;
&lt;li&gt;wsl -l --all에서 확인한 기존에 사용하던 wsl 이름을 넣어줘서 C드라이브에 사용중이던 wsl을 삭제한다.&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1;&quot; href=&quot;https://dongle94.github.io/windows/windows-wsl-path-change/&quot;&gt;Dongle's 님의 글&lt;/a&gt;에는 export후 바로 삭제한다고 되어있지만 실제로 해본 결과 제대로 export 되었을때 대략 난감한 상황이 펼쳐질 것 같다.&lt;/li&gt;
&lt;li&gt;이 작업을 하기전 깃이나 파일을 따로 백업해두는 것도 추천한다. (export나 import하는 과정에서 오류가 있어 시간을 한참 잡아먹었다.)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기존 사용하던 wsl환경의 용량과 새로 import한 wsl환경의 용량이 같은지를 확인하는게 제일 편한 것 같다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;사용자 계정 추가&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새로 import한 wsl을 실행하면 root계정으로 실행된다.&lt;/li&gt;
&lt;li&gt;root계정으로 작업을 하면 안되는건 아니지만 추후 작업을 진행하면서 권한에 있어 오류가 나는 경우가 많다고 한다.&lt;/li&gt;
&lt;li&gt;따라서 사용자 계정을 추가한 후 관리자 권한이 필요할 때만 sudo를 사용하여 권한 부여하는 것이 좋다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f2f2f2; color: #292929; text-align: start;&quot;&gt;ubuntu config --default-user &amp;lt;기존사용자명&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 블로그 &lt;b&gt;&lt;a href=&quot;https://simryang.tistory.com/m/entry/wsl-wsl-d-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%A1%9C-%EC%98%AE%EA%B8%B0%EA%B3%A0-%EA%B3%84%EC%A0%95-%EC%A0%95%EC%83%81%ED%99%94%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;심량&lt;/a&gt; 님&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Base</category>
      <category>c드라이브에서 d드라이브로</category>
      <category>vscodewsl</category>
      <category>wsl 드라이브 옮기기</category>
      <category>wsl 설정</category>
      <category>리눅스</category>
      <category>윈도우리눅스</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/14</guid>
      <comments>https://devflavor.tistory.com/entry/WSL-%ED%99%98%EA%B2%BD-C%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C-%E2%86%92-D%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C#entry14comment</comments>
      <pubDate>Fri, 28 Apr 2023 00:23:15 +0900</pubDate>
    </item>
    <item>
      <title>Docker01. 도커란?</title>
      <link>https://devflavor.tistory.com/entry/docker01-%EB%8F%84%EC%BB%A4%EB%9E%80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커&amp;nbsp;프로젝트
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&amp;nbsp;Compose&lt;/li&gt;
&lt;li&gt;Private Registry&lt;/li&gt;
&lt;li&gt;Docker Machine&lt;/li&gt;
&lt;li&gt;Kitematic&lt;/li&gt;
&lt;li&gt;Docker Engine&lt;/li&gt;
&lt;li&gt;컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는&amp;nbsp;도커의&amp;nbsp;주 프로젝트&lt;/li&gt;
&lt;li&gt;도커의&amp;nbsp;생태계에 있는 여러 프로젝트들은&amp;nbsp;도커&amp;nbsp;엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 핵심이 되는 것은&amp;nbsp;도커&amp;nbsp;엔진이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가상머신과 도커 컨테이너&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmTuCj/btscmMooqj7/Qb3oo5snsdp1NCUeNRS3o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmTuCj/btscmMooqj7/Qb3oo5snsdp1NCUeNRS3o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmTuCj/btscmMooqj7/Qb3oo5snsdp1NCUeNRS3o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmTuCj%2FbtscmMooqj7%2FQb3oo5snsdp1NCUeNRS3o0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;463&quot; height=&quot;241&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가상머신&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 가상화 기술은&amp;nbsp;하이퍼바이저를&amp;nbsp;이용해 여러 개의 운영체제를 하나의 호스트에 생성해 사용하는 방식&lt;/li&gt;
&lt;li&gt;여러 개의 운영체제는 가상&amp;nbsp;머신이라는&amp;nbsp;단위로 구별되고,&amp;nbsp;각&amp;nbsp;머신에&amp;nbsp;우분투, CentOS등의 운영체제가 설치&lt;/li&gt;
&lt;li&gt;하이퍼바이저에&amp;nbsp;의해 생성되고 관리되는 운영체제는&amp;nbsp;게스트 운영체제라고 하고,&amp;nbsp;다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당 받아 사용&lt;/li&gt;
&lt;li&gt;각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은&amp;nbsp;하이퍼바이저를&amp;nbsp;반드시 거치기 때문에 일반&amp;nbsp;호스트에 비해 성능의 손실이 발생함&lt;/li&gt;
&lt;li&gt;또한 가상&amp;nbsp;머신을&amp;nbsp;배포하기 위한 이미지로 만들었을 때 이미지의 크기가 큰 단점이 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;도커 컨테이너&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커&amp;nbsp;컨테이너는&amp;nbsp;가상화된&amp;nbsp;공간을 생성하기 위해 리눅스의 자체 기능인&amp;nbsp;chroot,&amp;nbsp;네임스페이스,&amp;nbsp;cgroup을 사용함으로써 프로세스 단위의&amp;nbsp;격리 환경을 만들기 때문에 성능 손실이 거의 없음&lt;/li&gt;
&lt;li&gt;컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고,&amp;nbsp;컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 매우 작음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oir1B/btsbSLMg85H/xdNUk7RMXGfmikODmdHfw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oir1B/btsbSLMg85H/xdNUk7RMXGfmikODmdHfw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oir1B/btsbSLMg85H/xdNUk7RMXGfmikODmdHfw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foir1B%2FbtsbSLMg85H%2FxdNUk7RMXGfmikODmdHfw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;196&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;도커의 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애플리케이션의 개발과 배포가 편하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 내부에서 여러 작업을 마친 뒤 이를 운영 환경에 배포하려고 한다면,&amp;nbsp;해당 컨테이너를&amp;nbsp;도커&amp;nbsp;이미지라고 하는 일종의 패키지로 만들어 운영 서버에&amp;nbsp;전달하기만 하면 된다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;여러 애플리케이션의 독립성과 확장성이 높아진다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서&amp;nbsp;구동시키는&amp;nbsp;방식을&amp;nbsp;모놀리스&amp;nbsp;애플리케이션이라고 한다.&lt;/li&gt;
&lt;li&gt;모놀리스는&amp;nbsp;소규모 서비스에는 적합하지만 확장성과 유연성은 포기해야 한다는 단점&lt;/li&gt;
&lt;li&gt;모놀리스를&amp;nbsp;대체할 수 있는 방식이&amp;nbsp;마이크로서비스&amp;nbsp;구조&lt;/li&gt;
&lt;li&gt;컨테이너는&amp;nbsp;마이크로서비스&amp;nbsp;구조에서 가장 많이 사용되고 있는 가상화 기술이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;도커의 기본 단위 : 이미지 / 컨테이너&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커이미지
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지는 컨테이너를 생성할 때 필요한 요소이며,&amp;nbsp;가상머신을 생성할 때 사용하는&amp;nbsp;iso&amp;nbsp;파일과 비슷한 개념&lt;/li&gt;
&lt;li&gt;이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고,&amp;nbsp;컨테이너를 생성하고 실행할 때 읽기 전용으로 사용&lt;/li&gt;
&lt;li&gt;이미지는&amp;nbsp;도커&amp;nbsp;명령어로 내려 받을 수 있으므로 별도로 설치할 필요는 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;도커&amp;nbsp;컨테이너
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아파치 웹,&amp;nbsp;nginx,&amp;nbsp;mysql,&amp;nbsp;하둡,&amp;nbsp;스파크등의&amp;nbsp;도커&amp;nbsp;이미지가 있다.&lt;/li&gt;
&lt;li&gt;이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커&amp;nbsp;프로젝트
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&amp;nbsp;Compose&lt;/li&gt;
&lt;li&gt;Private Registry&lt;/li&gt;
&lt;li&gt;Docker Machine&lt;/li&gt;
&lt;li&gt;Kitematic&lt;/li&gt;
&lt;li&gt;Docker Engine&lt;/li&gt;
&lt;li&gt;컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는&amp;nbsp;도커의&amp;nbsp;주 프로젝트&lt;/li&gt;
&lt;li&gt;도커의&amp;nbsp;생태계에 있는 여러 프로젝트들은&amp;nbsp;도커&amp;nbsp;엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 핵심이 되는 것은&amp;nbsp;도커&amp;nbsp;엔진이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
가상머신과 도커 컨테이너가상머신
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 가상화 기술은&amp;nbsp;하이퍼바이저를&amp;nbsp;이용해 여러 개의 운영체제를 하나의 호스트에 생성해 사용하는 방식&lt;/li&gt;
&lt;li&gt;여러 개의 운영체제는 가상&amp;nbsp;머신이라는&amp;nbsp;단위로 구별되고,&amp;nbsp;각&amp;nbsp;머신에&amp;nbsp;우분투, CentOS등의 운영체제가 설치&lt;/li&gt;
&lt;li&gt;하이퍼바이저에&amp;nbsp;의해 생성되고 관리되는 운영체제는&amp;nbsp;게스트 운영체제라고 하고,&amp;nbsp;다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당 받아 사용&lt;/li&gt;
&lt;li&gt;각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은&amp;nbsp;하이퍼바이저를&amp;nbsp;반드시 거치기 때문에 일반&amp;nbsp;호스트에 비해 성능의 손실이 발생함&lt;/li&gt;
&lt;li&gt;또한 가상&amp;nbsp;머신을&amp;nbsp;배포하기 위한 이미지로 만들었을 때 이미지의 크기가 큰 단점이 있음&lt;/li&gt;
&lt;/ul&gt;
도커 컨테이너
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커&amp;nbsp;컨테이너는&amp;nbsp;가상화된&amp;nbsp;공간을 생성하기 위해 리눅스의 자체 기능인&amp;nbsp;chroot,&amp;nbsp;네임스페이스,&amp;nbsp;cgroup을 사용함으로써 프로세스 단위의&amp;nbsp;격리 환경을 만들기 때문에 성능 손실이 거의 없음&lt;/li&gt;
&lt;li&gt;컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고,&amp;nbsp;컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 매우 작음&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애플리케이션의 개발과 배포가 편하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 내부에서 여러 작업을 마친 뒤 이를 운영 환경에 배포하려고 한다면,&amp;nbsp;해당 컨테이너를&amp;nbsp;도커&amp;nbsp;이미지라고 하는 일종의 패키지로 만들어 운영 서버에&amp;nbsp;전달하기만 하면 된다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;여러 애플리케이션의 독립성과 확장성이 높아진다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서&amp;nbsp;구동시키는&amp;nbsp;방식을&amp;nbsp;모놀리스&amp;nbsp;애플리케이션이라고 한다.&lt;/li&gt;
&lt;li&gt;모놀리스는&amp;nbsp;소규모 서비스에는 적합하지만 확장성과 유연성은 포기해야 한다는 단점&lt;/li&gt;
&lt;li&gt;모놀리스를&amp;nbsp;대체할 수 있는 방식이&amp;nbsp;마이크로서비스&amp;nbsp;구조&lt;/li&gt;
&lt;li&gt;컨테이너는&amp;nbsp;마이크로서비스&amp;nbsp;구조에서 가장 많이 사용되고 있는 가상화 기술이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
도커의 기본 단위 : 이미지 / 컨테이너
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커이미지
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지는 컨테이너를 생성할 때 필요한 요소이며,&amp;nbsp;가상머신을 생성할 때 사용하는&amp;nbsp;iso&amp;nbsp;파일과 비슷한 개념&lt;/li&gt;
&lt;li&gt;이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고,&amp;nbsp;컨테이너를 생성하고 실행할 때 읽기 전용으로 사용&lt;/li&gt;
&lt;li&gt;이미지는&amp;nbsp;도커&amp;nbsp;명령어로 내려 받을 수 있으므로 별도로 설치할 필요는 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;도커&amp;nbsp;컨테이너
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아파치 웹,&amp;nbsp;nginx,&amp;nbsp;mysql,&amp;nbsp;하둡,&amp;nbsp;스파크등의&amp;nbsp;도커&amp;nbsp;이미지가 있다.&lt;/li&gt;
&lt;li&gt;이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Docker</category>
      <category>devflavor</category>
      <category>docker01</category>
      <category>도커</category>
      <category>컨테이너</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/13</guid>
      <comments>https://devflavor.tistory.com/entry/docker01-%EB%8F%84%EC%BB%A4%EB%9E%80#entry13comment</comments>
      <pubDate>Tue, 25 Apr 2023 10:38:34 +0900</pubDate>
    </item>
    <item>
      <title>Git08.깃 작업 되돌리기</title>
      <link>https://devflavor.tistory.com/entry/Git08%EA%B9%83-%EC%9E%91%EC%97%85-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;스테이지에 올렸던 파일을 내리기, 커밋 취소등 각 단계로 돌아가는 방법.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작업 트리에서 수정한 파일 되돌리기 git checkout &amp;mdash; 파일이름&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;vim hello.txt 수정 &amp;rarr;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7K73R/btsca0fR869/BLQY4CMtNXAaNyJcSOrRJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7K73R/btsca0fR869/BLQY4CMtNXAaNyJcSOrRJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7K73R/btsca0fR869/BLQY4CMtNXAaNyJcSOrRJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7K73R%2Fbtsca0fR869%2FBLQY4CMtNXAaNyJcSOrRJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;281&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. git checkout &amp;mdash; hello.txt &amp;rarr; git checkout &amp;mdash; + 수정을취소할 파일 이름.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. cat hello.txt 를 이용하여 파일내용을 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bErMb6/btsb1PMMlBP/7Kp8DCJzOF5Taa4vWSvnz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bErMb6/btsb1PMMlBP/7Kp8DCJzOF5Taa4vWSvnz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bErMb6/btsb1PMMlBP/7Kp8DCJzOF5Taa4vWSvnz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbErMb6%2Fbtsb1PMMlBP%2F7Kp8DCJzOF5Taa4vWSvnz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;810&quot; height=&quot;269&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;스테이징 되돌리기 git reset HEAD 파일 이름&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;vim hello2.txt 이후 파일을 수정 &amp;rarr; modified위를 보면 restore가 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btLh6D/btsca0Aa693/W4tPSWqkfvkZUIflhoH0EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btLh6D/btsca0Aa693/W4tPSWqkfvkZUIflhoH0EK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btLh6D/btsca0Aa693/W4tPSWqkfvkZUIflhoH0EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtLh6D%2Fbtsca0Aa693%2FW4tPSWqkfvkZUIflhoH0EK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;434&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWZtR0/btsbSETx1aY/lnpE7AkGK875Dk7sQ9W0Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWZtR0/btsbSETx1aY/lnpE7AkGK875Dk7sQ9W0Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWZtR0/btsbSETx1aY/lnpE7AkGK875Dk7sQ9W0Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWZtR0%2FbtsbSETx1aY%2FlnpE7AkGK875Dk7sQ9W0Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;810&quot; height=&quot;215&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. git reset HEAD hello2. txt&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqZTnr/btsbTpV60GJ/qnl1WL1kWpJZxTgo5553S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqZTnr/btsbTpV60GJ/qnl1WL1kWpJZxTgo5553S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqZTnr/btsbTpV60GJ/qnl1WL1kWpJZxTgo5553S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqZTnr%2FbtsbTpV60GJ%2Fqnl1WL1kWpJZxTgo5553S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;423&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;unstaged가 되었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;최신 커밋 되돌리기 git reset HEAD^&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;888&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CjgOh/btsbShjZECR/KrgkOX6Cnv3zoqNG7s7630/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CjgOh/btsbShjZECR/KrgkOX6Cnv3zoqNG7s7630/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CjgOh/btsbShjZECR/KrgkOX6Cnv3zoqNG7s7630/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCjgOh%2FbtsbShjZECR%2FKrgkOX6Cnv3zoqNG7s7630%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;888&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;888&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;vim hello2.txt를 수정,, git commit -am &amp;ldquo;message4&amp;rdquo; 커밋&lt;/li&gt;
&lt;li&gt;git reset HEAD^&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;858&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIYLb2/btsb6Z2xAZ2/kTKvSFBjKHxVBQxjCA14X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIYLb2/btsb6Z2xAZ2/kTKvSFBjKHxVBQxjCA14X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIYLb2/btsb6Z2xAZ2/kTKvSFBjKHxVBQxjCA14X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIYLb2%2Fbtsb6Z2xAZ2%2FkTKvSFBjKHxVBQxjCA14X1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;858&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;858&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TIP. GIT RESET 명령의 옵션&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;mdash;soft HEAD^ 최근 커밋을 하기전 상태로 작업 트리를 되돌리기.&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&gt;&amp;mdash;mixed HEAD^&lt;/td&gt;
&lt;td&gt;최근 커밋 과 스테이징을 하기 전 상태로 작업 트리를 되돌린다. 옵션 없이 git reset 명령을 사용할 경우 기본 옵션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;mdash;hard HEAD^&lt;/td&gt;
&lt;td&gt;최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌린다. 되돌린 내용은 복구 불가.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;특정 커밋으로 되돌리기 git reset 커밋 해시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 커밋으로 되돌릴때는 명령 다음에 커밋 해시를 사용한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;vim rev.txt &amp;rarr; git add rev.txt &amp;rarr; 수정 git commit -a -m &amp;ldquo;R2&amp;rdquo; &amp;hellip; R4 까지 커밋을 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1061&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SgeUj/btsbSF5ZmmM/wNBn3SDmnMPQqKSONkrXy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SgeUj/btsbSF5ZmmM/wNBn3SDmnMPQqKSONkrXy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SgeUj/btsbSF5ZmmM/wNBn3SDmnMPQqKSONkrXy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSgeUj%2FbtsbSF5ZmmM%2FwNBn3SDmnMPQqKSONkrXy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1061&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1061&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. R2메세지가 있는 커밋을 최신 커밋으로 만들 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 먼저 git log를 통해 commit의 해시를 찾고 선택한다, 마우스 우클릭 copy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. $ git reset &amp;mdash;hard 커밋해시&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCHELq/btsbSL53UfY/Mo6aCkyaBeQa7eoVku8IU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCHELq/btsbSL53UfY/Mo6aCkyaBeQa7eoVku8IU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCHELq/btsbSL53UfY/Mo6aCkyaBeQa7eoVku8IU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCHELq%2FbtsbSL53UfY%2FMo6aCkyaBeQa7eoVku8IU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;114&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. $ git log를 확인하면 R2가 최신로그가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgo7Po/btsca1eMfOR/py4JJxIWIDM50oJrkamqRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgo7Po/btsca1eMfOR/py4JJxIWIDM50oJrkamqRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgo7Po/btsca1eMfOR/py4JJxIWIDM50oJrkamqRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgo7Po%2Fbtsca1eMfOR%2Fpy4JJxIWIDM50oJrkamqRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;970&quot; height=&quot;1050&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;커밋 삭제하지 않고 되돌리기. git revert + 커밋해시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uIKJY/btsbRzkOMPG/WDm71I1Owhb0rjWfnJcLx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uIKJY/btsbRzkOMPG/WDm71I1Owhb0rjWfnJcLx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uIKJY/btsbRzkOMPG/WDm71I1Owhb0rjWfnJcLx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuIKJY%2FbtsbRzkOMPG%2FWDm71I1Owhb0rjWfnJcLx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;467&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 남겨둘 내용이 있다면 입력하고 저장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋은 삭제되지 않고 내용은 사라진 것을 확인 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZMYBF/btsbVcn9isV/89CAO8Og4rfWFwG4FdNhqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZMYBF/btsbVcn9isV/89CAO8Og4rfWFwG4FdNhqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZMYBF/btsbVcn9isV/89CAO8Og4rfWFwG4FdNhqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZMYBF%2FbtsbVcn9isV%2F89CAO8Og4rfWFwG4FdNhqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;480&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgyhdw/btsbTVHd1c8/i0uAuJkMhbBQC1p2xFeFKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgyhdw/btsbTVHd1c8/i0uAuJkMhbBQC1p2xFeFKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgyhdw/btsbTVHd1c8/i0uAuJkMhbBQC1p2xFeFKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgyhdw%2FbtsbTVHd1c8%2Fi0uAuJkMhbBQC1p2xFeFKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1050&quot; height=&quot;1355&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;1355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #1f1f1f; color: #bfbfbf; text-align: start;&quot;&gt;「위 글은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #1f1f1f; color: #bfbfbf; text-align: start;&quot;&gt;Do it! 지옥에서 온 문서관리자 깃&amp;amp;깃허브 입문을 바탕으로 실습하였습니다.&lt;/span&gt;&lt;span style=&quot;background-color: #1f1f1f; color: #bfbfbf; text-align: start;&quot;&gt;」&lt;/span&gt;&lt;/p&gt;</description>
      <category>Git</category>
      <category>Git08.깃 작업 되돌리기</category>
      <category>깃사용법</category>
      <category>지옥에서 온 문서관리자</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/12</guid>
      <comments>https://devflavor.tistory.com/entry/Git08%EA%B9%83-%EC%9E%91%EC%97%85-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0#entry12comment</comments>
      <pubDate>Mon, 24 Apr 2023 09:51:46 +0900</pubDate>
    </item>
    <item>
      <title>Git.07 버전 만드는 단계마다 파일 상태 알아보기</title>
      <link>https://devflavor.tistory.com/entry/Git07-%EB%B2%84%EC%A0%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%EB%8B%A8%EA%B3%84%EB%A7%88%EB%8B%A4-%ED%8C%8C%EC%9D%BC-%EC%83%81%ED%83%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;tracked 파일과 untracked 파일&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kEsts/btsbTWlNhcS/QWBIZPMlsEGQJwJE5Nb5C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kEsts/btsbTWlNhcS/QWBIZPMlsEGQJwJE5Nb5C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kEsts/btsbTWlNhcS/QWBIZPMlsEGQJwJE5Nb5C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkEsts%2FbtsbTWlNhcS%2FQWBIZPMlsEGQJwJE5Nb5C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;530&quot; height=&quot;326&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저 hello.txt 파일을 수정&lt;/li&gt;
&lt;li&gt;hello2.txt 파일을 생성&lt;/li&gt;
&lt;li&gt;$ git status 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 결과 두 파일 모두 작업 트리에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 커밋했었던 파일은 changes not staged for commit: 이라고 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 즉, 변경된 파일이 아직 스테이지에 올라가지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 modified가 파일명 앞에 적혀있다. &amp;rarr; 파일이 수정되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zULKI/btsb6ZnU7PK/xfe4CE7aPswvXuyb0VbWXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zULKI/btsb6ZnU7PK/xfe4CE7aPswvXuyb0VbWXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zULKI/btsb6ZnU7PK/xfe4CE7aPswvXuyb0VbWXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzULKI%2Fbtsb6ZnU7PK%2Fxfe4CE7aPswvXuyb0VbWXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;392&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;작업트리에 올리기 git add &amp;hellip;&amp;hellip;..&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1130&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J0e60/btsbXKkAxv3/XTkibKLsoiwPjLw3yo6Tvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J0e60/btsbXKkAxv3/XTkibKLsoiwPjLw3yo6Tvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J0e60/btsbXKkAxv3/XTkibKLsoiwPjLw3yo6Tvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ0e60%2FbtsbXKkAxv3%2FXTkibKLsoiwPjLw3yo6Tvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1130&quot; height=&quot;687&quot; data-origin-width=&quot;1130&quot; data-origin-height=&quot;687&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;작업트리에 올린 파일을 커밋한다. &amp;rarr; 메세지를 넣으면 작업트리에 올려놓은 모든 파일 같이 커밋되는듯.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와같이 git log를 실행하였을때 각 커밋에 어떤 파일들이 관련된 것인지 알 수 없다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;mdash;stat 옵션을 사용하여 커밋에 관련된 파일까지 확인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ git log &amp;mdash;stat&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;897&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHgzgJ/btsbXI1pj5z/OnwNGKVlZ16kQCVzwiu5Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHgzgJ/btsbXI1pj5z/OnwNGKVlZ16kQCVzwiu5Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHgzgJ/btsbXI1pj5z/OnwNGKVlZ16kQCVzwiu5Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHgzgJ%2FbtsbXI1pj5z%2FOnwNGKVlZ16kQCVzwiu5Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;897&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;897&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 로그메세지가 너무 많으면 한 화면씩 나누어 보여줌.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;enter를 누르면 다음 로그화면을 볼 수 있고, Q을 밖으로 빠져나온다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;.gitignore 파일 버전 관리에서 제외하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전관리를 하지 않을 파일 혹은 디렉터리가 있다면 vim 을 통해 .gitignore 파일을 만든 후, 버전 관리를 하지 않을 파일 또는 디렉터리 이름이나 파일 확장자를 입력하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 자동으로 생성된 swp파일, 백업파일 등.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;unmodified, modified, staged 상태&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃의 커밋 과정 중에서 tracked 파일의 상태 확인&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;ls -al&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kB9mC/btsbSfl0jXQ/YmshbkXA7XsF1J1lKkSEj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kB9mC/btsbSfl0jXQ/YmshbkXA7XsF1J1lKkSEj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kB9mC/btsbSfl0jXQ/YmshbkXA7XsF1J1lKkSEj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkB9mC%2FbtsbSfl0jXQ%2FYmshbkXA7XsF1J1lKkSEj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;352&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. git status &amp;rarr; 수정되지 않은 상태인 것을 확인.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WPf3f/btsbSd9AVP5/MvyFkkzWtbPpBVRWkMNG9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WPf3f/btsbSd9AVP5/MvyFkkzWtbPpBVRWkMNG9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WPf3f/btsbSd9AVP5/MvyFkkzWtbPpBVRWkMNG9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWPf3f%2FbtsbSd9AVP5%2FMvyFkkzWtbPpBVRWkMNG9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;125&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. hello2.txt를 vim hello2.txt로 수정후 파일 편집기를 종료하고, 깃 상태를 확인하면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLIkSz/btsb1PMMe2A/wF1xYxV7aD80AKjYOwfDrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLIkSz/btsb1PMMe2A/wF1xYxV7aD80AKjYOwfDrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLIkSz/btsb1PMMe2A/wF1xYxV7aD80AKjYOwfDrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLIkSz%2Fbtsb1PMMe2A%2FwF1xYxV7aD80AKjYOwfDrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;357&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. hello2.txt를 git add를 통해 스테이지에 추가, git commit -m을 통해 커밋.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QLj5e/btsb2TIhKad/5NLbHpkCuk1DqrfyF9oFH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QLj5e/btsb2TIhKad/5NLbHpkCuk1DqrfyF9oFH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QLj5e/btsb2TIhKad/5NLbHpkCuk1DqrfyF9oFH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQLj5e%2Fbtsb2TIhKad%2F5NLbHpkCuk1DqrfyF9oFH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;622&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;tip. 방금 커밋한 메세지 수정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ git commit &amp;mdash;amend&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;744&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQzdZ9/btsbRy7dzMG/HkNHLPKxyA9HpYRDqIHZo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQzdZ9/btsbRy7dzMG/HkNHLPKxyA9HpYRDqIHZo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQzdZ9/btsbRy7dzMG/HkNHLPKxyA9HpYRDqIHZo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQzdZ9%2FbtsbRy7dzMG%2FHkNHLPKxyA9HpYRDqIHZo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;744&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;744&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;deleteb,c,d로 되어있던것을 delete b,c,d로 수정완료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #1f1f1f; color: #bfbfbf; text-align: start;&quot;&gt;「위 글은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #1f1f1f; color: #bfbfbf; text-align: start;&quot;&gt;Do it! 지옥에서 온 문서관리자 깃&amp;amp;깃허브 입문을 바탕으로 실습하였습니다.&lt;/span&gt;&lt;span style=&quot;background-color: #1f1f1f; color: #bfbfbf; text-align: start;&quot;&gt;」&lt;/span&gt;&lt;/p&gt;</description>
      <category>Git</category>
      <category>Do It!</category>
      <category>Git</category>
      <category>git.07</category>
      <category>깃</category>
      <category>깃버전 파일 상태</category>
      <category>깃입문</category>
      <category>지옥에서 온 문서관리자</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/11</guid>
      <comments>https://devflavor.tistory.com/entry/Git07-%EB%B2%84%EC%A0%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%EB%8B%A8%EA%B3%84%EB%A7%88%EB%8B%A4-%ED%8C%8C%EC%9D%BC-%EC%83%81%ED%83%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0#entry11comment</comments>
      <pubDate>Sun, 23 Apr 2023 02:38:19 +0900</pubDate>
    </item>
    <item>
      <title>전국 음식점 데이터 전처리</title>
      <link>https://devflavor.tistory.com/entry/%EC%A0%84%EA%B5%AD-%EC%9D%8C%EC%8B%9D%EC%A0%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;316&quot;&gt;&lt;a href=&quot;https://www.data.go.kr/data/15045016/fileData.do&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd8zWm/btsbtfLyul6/p6McenJojZhW8KOMqXouh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd8zWm%2FbtsbtfLyul6%2Fp6McenJojZhW8KOMqXouh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;947&quot; height=&quot;316&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행정안전부_일반음식점 데이터를 기준으로 데이터 정리를 해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 판다스를 이용하여 파일을 로드했다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;647&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p3JS2/btsbqrZP6XH/5E7Wl5jcx71yGg3L2qz0b1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p3JS2/btsbqrZP6XH/5E7Wl5jcx71yGg3L2qz0b1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p3JS2/btsbqrZP6XH/5E7Wl5jcx71yGg3L2qz0b1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp3JS2%2FbtsbqrZP6XH%2F5E7Wl5jcx71yGg3L2qz0b1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1816&quot; height=&quot;647&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;647&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정부 관련 파일들은 대부분 인코딩 형식이 cp949이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;encoding='cp949'를 추가한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;pandas&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;pd&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;pd&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;read_csv&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;./fulldata_07_24_04_P_일반음식점.csv&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'cp949'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1817&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chpnvZ/btsbqsdloXV/alr1R4MMtNK7ZZb9x8iFs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chpnvZ/btsbqsdloXV/alr1R4MMtNK7ZZb9x8iFs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chpnvZ/btsbqsdloXV/alr1R4MMtNK7ZZb9x8iFs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchpnvZ%2FbtsbqsdloXV%2Falr1R4MMtNK7ZZb9x8iFs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1817&quot; height=&quot;649&quot; data-origin-width=&quot;1817&quot; data-origin-height=&quot;649&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 프레임은 206만 123개의 row가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전국 음식관련 업종이 206만여개가 있다는 뜻이다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;#&amp;nbsp;폐업구분&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;영업상태명!='폐업'&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영업상태명컬럼에서 폐업이 아닌 데이터만 남긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;2,060,123 rows -&amp;gt; &lt;/span&gt;691,795 rows 약 1/3의 데이터 드롭&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 컬럼 정리&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6DXp6/btsbjiDFrBk/9uCO6T5K8kKCsKsRRiYx5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6DXp6/btsbjiDFrBk/9uCO6T5K8kKCsKsRRiYx5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6DXp6/btsbjiDFrBk/9uCO6T5K8kKCsKsRRiYx5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6DXp6%2FbtsbjiDFrBk%2F9uCO6T5K8kKCsKsRRiYx5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;915&quot; height=&quot;254&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불러온 데이터 프레임의 컬럼을 본다면 실제로 결측치인 경우가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요 없는 데이터와 함께 계속 데이터 프레임을 확인하며 데이터 프레임을 드롭한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;drop&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'인허가일자'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'인허가취소일자'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'영업상태구분코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'시설총규모'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'소재지전화'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;axis&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;drop&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'위생업태명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'남성종사자수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'여성종사자수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'영업장주변구분명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'등급구분명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'급수시설구분명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'총직원수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'본사직원수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'공장사무직직원수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'공장판매직직원수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'공장생산직직원수'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'건물소유구분명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,], &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;axis&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;drop&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'홈페이지'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Unnamed: 47'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방서비스아이디'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'폐업일자'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'휴업시작일자'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'휴업종료일자'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'재개업일자'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;axis&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;drop&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'소재지면적'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'소재지우편번호'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'데이터갱신구분'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방서비스명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'관리번호'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'상세영업상태코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'도로명우편번&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;호'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;axis&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;drop&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'번호'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'상세영업상태명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'영업상태명'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;axis&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1827&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RLjqr/btsbmf0ps9v/BNb9ZYYIls9QKxFk3sGbE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RLjqr/btsbmf0ps9v/BNb9ZYYIls9QKxFk3sGbE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RLjqr/btsbmf0ps9v/BNb9ZYYIls9QKxFk3sGbE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRLjqr%2Fbtsbmf0ps9v%2FBNb9ZYYIls9QKxFk3sGbE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1827&quot; height=&quot;568&quot; data-origin-width=&quot;1827&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 지자체 기준으로 정렬&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 데이터는 개방자치단체코드라는 컬럼으로 각 지자체 라벨링이 되어있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_label&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp;= &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방자치단체코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;unique&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bShCOj/btsblpCAuVu/8iiDkVp8Kbm4HPTH9MzVtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bShCOj/btsblpCAuVu/8iiDkVp8Kbm4HPTH9MzVtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bShCOj/btsblpCAuVu/8iiDkVp8Kbm4HPTH9MzVtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbShCOj%2FbtsblpCAuVu%2F8iiDkVp8Kbm4HPTH9MzVtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;599&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(df_label&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUUIr4/btsbmTJztQi/QIbHBK7KtN3K0nLn3cpUGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUUIr4/btsbmTJztQi/QIbHBK7KtN3K0nLn3cpUGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUUIr4/btsbmTJztQi/QIbHBK7KtN3K0nLn3cpUGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUUIr4%2FbtsbmTJztQi%2FQIbHBK7KtN3K0nLn3cpUGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;175&quot; height=&quot;106&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;len 을 이용하여 df_label의 개수를 확인하여보면 229개로 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기초지자체의 개수를 확인하여 보니 229개가 맞다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buEiSF/btsbn3rAHQI/3T1Rd9Z4IGVFBpyCHrqH91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buEiSF/btsbn3rAHQI/3T1Rd9Z4IGVFBpyCHrqH91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buEiSF/btsbn3rAHQI/3T1Rd9Z4IGVFBpyCHrqH91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuEiSF%2Fbtsbn3rAHQI%2F3T1Rd9Z4IGVFBpyCHrqH91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;497&quot; height=&quot;97&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 데이터 재정렬&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1696&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zM1nw/btsblEfadl5/ocaeVLlXokbPvbKrLcanNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zM1nw/btsblEfadl5/ocaeVLlXokbPvbKrLcanNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zM1nw/btsblEfadl5/ocaeVLlXokbPvbKrLcanNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzM1nw%2FbtsblEfadl5%2FocaeVLlXokbPvbKrLcanNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1696&quot; height=&quot;335&quot; data-origin-width=&quot;1696&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기초지자체를 기준으로 파일을 따로 관리하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 쉽게 정리하기 위해 개방자치단체코드를 기준으로 재정렬한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_sorted&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sort_values&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;by&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방자치단체코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# csv파일로 출력&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;tqdm&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;tqdm&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;dfs&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = []&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;code&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방자치단체코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;unique&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;temp&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_sorted&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_sorted&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방자치단체코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] == &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;code&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;dfs&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;temp&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 생성된 데이터프레임 출력하기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_temp&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;tqdm&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;enumerate&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;dfs&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;total&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;dfs&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)): &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_temp&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'개방자치단체코드'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;].iloc[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;.csv&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 파일명을 개방자치단체코드로 지정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;df_temp&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.to_csv(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;False&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 인덱스를 저장하지 않음&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 변환 과정이 얼마나 시간이 걸리는지를 확인하기 위하여 tqdm모듈을 임포트 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dfs 라는 빈 리스트를 만들고. 229개의 개방자치단체 코드와 일치하면 정렬된 파일을 리스트에 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;df_sorted['개방자치단체코드'] == code&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일때 temp에 해당 컬럼들을 temp로 정의해놓고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dfs 리스트에 추가한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4oHH3/btsbn6BSq8j/J6s84cd4j9k6sUCfcI0lS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4oHH3/btsbn6BSq8j/J6s84cd4j9k6sUCfcI0lS1/img.png&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;457&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.1731%; margin-right: 10px;&quot; data-widthpercent=&quot;50.76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4oHH3/btsbn6BSq8j/J6s84cd4j9k6sUCfcI0lS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4oHH3%2Fbtsbn6BSq8j%2FJ6s84cd4j9k6sUCfcI0lS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bprXtV/btsboWFIiNb/NIkzFvz2oZhsRjz2dZgHQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bprXtV/btsboWFIiNb/NIkzFvz2oZhsRjz2dZgHQk/img.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;620&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.24&quot; style=&quot;width: 48.6641%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bprXtV/btsboWFIiNb/NIkzFvz2oZhsRjz2dZgHQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbprXtV%2FbtsboWFIiNb%2FNIkzFvz2oZhsRjz2dZgHQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;829&quot; height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;csv 파일로 저장한 결과 글자가 다 깨졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# 인코딩 형식 지정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정부 csv 파일은 대부분 cp949 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인코딩형식을 지정하지 않아서 발생하는 것으로 utf-8-sig로 설정하면 위와 같은 문제를 해결 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZEexC/btsbmUPixEe/HxuWhVYMsV6WKYFd8BbE8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZEexC/btsbmUPixEe/HxuWhVYMsV6WKYFd8BbE8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZEexC/btsbmUPixEe/HxuWhVYMsV6WKYFd8BbE8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZEexC%2FbtsbmUPixEe%2FHxuWhVYMsV6WKYFd8BbE8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;910&quot; height=&quot;308&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>공공데이터포털</category>
      <category>데이터전처리</category>
      <category>음식점</category>
      <category>지자체별 음식점</category>
      <category>파이썬 전처리</category>
      <category>판다스</category>
      <category>행안부음식점</category>
      <category>행정안전부</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/10</guid>
      <comments>https://devflavor.tistory.com/entry/%EC%A0%84%EA%B5%AD-%EC%9D%8C%EC%8B%9D%EC%A0%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC#entry10comment</comments>
      <pubDate>Thu, 20 Apr 2023 00:59:30 +0900</pubDate>
    </item>
    <item>
      <title>01 인공지능,머신러닝, 딥러닝</title>
      <link>https://devflavor.tistory.com/entry/01-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D</link>
      <description>&lt;h1&gt;머신러닝&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 라이브러리 : 사이킷 런 scikit-learn&lt;/p&gt;
&lt;h1&gt;딥러닝&lt;/h1&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;&lt;b&gt;텐서플로 , 파이토치&lt;/b&gt; 라이브러리&lt;/p&gt;
&lt;h1&gt;마켓과 머신러닝&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝에서 여러개의 종류 중 하나를 구별해 내는 문제를 분류라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2개의 클래스중 하나를 고르는 문제를 이진분류라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생선의 길이, 무게와 같은 특징을 특성(feature)이라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이를 x축으로하고 무게를 y축으로 정해서 그래프에 점으로 표시하는 것은 산점도라고 부른다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;산점도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 과학계산용 그래프를 그리는 대표적인 패키지는 맷플롯립 matplotlib이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;산점도를 그리는 함수는 scatter( )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;산점도 그래프가 일직선에 가까운 형태로 나타나는 경우를 선형(linear)적이라고 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맷플롯립에서 2개의 산점도를 한 그래프로 그리는 것은 scatter( ) 함수를 연달아 사용하면 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;k-최근접 이웃 알고리즘&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;zip( ) 함수와 for문을 사용.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;from sklearn.neighbors import KNeighborsClassifier
kn=KNeighborsClassifier()
&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;KNeighborsClassifier 클래스의 객체를 먼저 만든다.&lt;/li&gt;
&lt;li&gt;data와 target을 전달하여 기준을 학습시킨다. (모델에 데이터를 전달하여 규칙을 학습하는 과정을 훈련이라고함)&lt;/li&gt;
&lt;li&gt;kn.fit(fish_data, fish_target)&lt;/li&gt;
&lt;li&gt;kn.score(fish_data, fish_target)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fit() 메서드는 주어진 데이터로 알고리즘을 훈련.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;score() 메서드는 모델을 평가하는 메서드. &amp;rarr; 0~1사이의 값을 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확도(accuracy)를 score로 가늠이 가능하다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;k최근접이웃 알고리즘은 어떤 데이터에 대한 답을 구할 때 주위의 다른 데이터를 보고 다수를 답으로&lt;/li&gt;
&lt;li&gt;&amp;rarr; 즉, 주위의 데이터로 현재 데이터를 판단한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;kn.predict([[30,600]])&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;predict 메서드는 새로운 데이터의 정답을 예측. fit( )메서드와 마찬가지로 리스트의 리스트를 전달해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KNeighborsClassfier 클래스의 기본 값은 5이지만 n_neighbors 매개변수로 바꿀 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;kn49 = KNeighborsClassifier(n_neighbors=49)&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;데이터를 표현하는 하나의 성질, 국가 데이터의 경우 인구 수, GDP, 면적 등이 하나의 국가를 나타낸다 머신러닝에서 이런 성질을 무엇이라고하는가?&lt;/li&gt;
&lt;li&gt;&amp;rArr; 특성&lt;/li&gt;
&lt;li&gt;가장 가까운 이웃을 참고하여 정답을 예측하는 알고리즘이 구현된 사이킷런 클래스는 무엇인가?&lt;/li&gt;
&lt;li&gt;&amp;rArr;KNeighborsClassifier k 최근접이웃&lt;/li&gt;
&lt;li&gt;사이킷런 모델을 훈련할 때 사용하는 메서드는?&lt;/li&gt;
&lt;li&gt;&amp;rArr; fit()&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>ML</category>
      <category>딥러닝</category>
      <category>머신러닝</category>
      <category>사이킷런</category>
      <category>인공지능</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/9</guid>
      <comments>https://devflavor.tistory.com/entry/01-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D#entry9comment</comments>
      <pubDate>Wed, 19 Apr 2023 18:30:45 +0900</pubDate>
    </item>
    <item>
      <title>정규식의 사용</title>
      <link>https://devflavor.tistory.com/entry/%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%98-%EC%82%AC%EC%9A%A9</link>
      <description>&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;cats.jpg&quot; data-origin-width=&quot;239&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IBP9c/btsaqQtG4hi/xDIjn4dXhWlutbkJ9Szma1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IBP9c/btsaqQtG4hi/xDIjn4dXhWlutbkJ9Szma1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IBP9c/btsaqQtG4hi/xDIjn4dXhWlutbkJ9Szma1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIBP9c%2FbtsaqQtG4hi%2FxDIjn4dXhWlutbkJ9Szma1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;239&quot; height=&quot;134&quot; data-filename=&quot;cats.jpg&quot; data-origin-width=&quot;239&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;정규식의 필요성&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 파이썬 크롤링을 진행하며 막히는 점이 데이터 전처리 과정인데 이를 해결하기 위해서는 정규식을 정확히 사용할 줄 알아야 한다고 느꼈다.&lt;/p&gt;
&lt;h1&gt;정규식이란?&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 처리하기 위한 패턴으로, &lt;b&gt;특정한 규칙&lt;/b&gt;을 가진 문자열의 집합을 표현하는 데 사용된다. 주로 문자열의 검색, 추출, 대체, 분리 등의 작업에 활용한다.&lt;/p&gt;
&lt;h1&gt;정규식의 사용법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규식은 다양한 &lt;b&gt;메타문자&lt;/b&gt;(meta-character)와 &lt;b&gt;문자 클래스&lt;/b&gt;(character class)를 사용하여 구성된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;메타문자란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메타문자는 특별한 의미를 가지는 문자로, 대표적으로 .&lt;b&gt; ^ $ * + ? { } \ |&lt;/b&gt; 등이 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문자 클래스란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자 클래스는 대괄호[ ] 안에 포함된 문자나 문자열 집합을 의미하며, 여러 문자 중에서 하나를 선택하는 기능을 한다. 대표적으로 &lt;b&gt;[0-9]&lt;/b&gt;나&lt;b&gt; [a-zA-Z]&lt;/b&gt; 등이 있다.&lt;/p&gt;
&lt;h1&gt;파이썬에서 정규식 사용법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 파이썬에서 정규식은 &lt;b&gt;re모듈&lt;/b&gt;을 활용하여 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;re&lt;/b&gt; 모듈은 &lt;b&gt;match()&lt;/b&gt;, &lt;b&gt;search()&lt;/b&gt;, &lt;b&gt;findall()&lt;/b&gt; 등의 함수를 제공하며 정규식 패턴을 활용한 문자열 처리를 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 다음은 문자열 'apple'이 정규식 패턴 'ap.e'와 일치하는지를 확인할 수 있다.&lt;/p&gt;</description>
      <category>Python/정규식</category>
      <category>메타문자</category>
      <category>문자 클래스</category>
      <category>정규식</category>
      <category>정규식기초</category>
      <category>파이썬</category>
      <author>데브플레이버</author>
      <guid isPermaLink="true">https://devflavor.tistory.com/8</guid>
      <comments>https://devflavor.tistory.com/entry/%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%98-%EC%82%AC%EC%9A%A9#entry8comment</comments>
      <pubDate>Mon, 17 Apr 2023 14:18:28 +0900</pubDate>
    </item>
  </channel>
</rss>