<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dev_hoklng.log</title>
        <link>https://velog.io/</link>
        <description>맹</description>
        <lastBuildDate>Tue, 03 Aug 2021 15:47:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dev_hoklng.log</title>
            <url>https://images.velog.io/images/dev_hoklng/profile/653eb45b-fb2c-4830-a31e-40051434b2e4/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dev_hoklng.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dev_hoklng" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[AWS] API GateWay 사용기]]></title>
            <link>https://velog.io/@dev_hoklng/AWS-API-GateWay-%EC%82%AC%EC%9A%A9%EA%B8%B0</link>
            <guid>https://velog.io/@dev_hoklng/AWS-API-GateWay-%EC%82%AC%EC%9A%A9%EA%B8%B0</guid>
            <pubDate>Tue, 03 Aug 2021 15:47:55 GMT</pubDate>
            <description><![CDATA[<p>오늘은 aws의 api gateway를 사용해보도록 하겠습니다.</p>
<p>사용하는 이유를 간략히 설명하고 가자면</p>
<p>api 서버를 띄우기 위해서 엄청나게 많은 수고들을 <strong>api gateway</strong>에서는 매우 간단하게 진행할 수 있기 때문입니다.</p>
<p>보통 <strong>REST API 서버를 만들기 위해서 작업</strong>들을 생각해 본다면...</p>
<p>[기존 백엔드 REST API 서버 작업]</p>
<ul>
<li>EC2 Instance(서버 장비)를 작동시켜야하고</li>
<li>백엔드 서버를 구축하는데...(Django 예시)</li>
<li>Django와 django drf등 필요한 라이브러리를 설치하고</li>
<li>Django에서 project, app등을 생성하고</li>
<li>url을 연결하고, model, view 등을 작성하고</li>
<li>gunicorn 또는 uwsgi를 세팅하고 실행시키고</li>
<li>nginx도 세팅해서 실행시키고</li>
<li>이후에 이 서버들을 관리해야합니다.</li>
</ul>
<p>[API Gateway 작업]</p>
<ul>
<li>aws lambda를 통해서 로직을 작성한다. (input과 output연산 및 정의 하는 코드)</li>
<li>API Gateway에 엔드포인트와 그에 실행될 lambda를 연결시킨다.</li>
</ul>
<p>대충 보기에도 작업량의 차이가 엄청나죠??
조금 더 보태면 <strong>api gateway</strong>는 django에서는 <strong>urls.py</strong>를 작성하는 행위
<strong>aws lambda</strong>는 <strong>views.py</strong>를 작성하는 행위 정도 됩니다.</p>
<p>서버를 따로 띄우거나, 이후 관리하지 않아도 api gateway에 연결만 해놓으면 됩니다.</p>
<h2 id="aws-gateway-작성">AWS Gateway 작성</h2>
<ul>
<li><p>api gateway 서칭
<img src="https://images.velog.io/images/dev_hoklng/post/452e205c-fbc8-4c31-bb09-e43c36773b01/image.png" alt=""></p>
</li>
<li><p>api gateway 생성
<img src="https://images.velog.io/images/dev_hoklng/post/b5c44294-94f8-4506-ba42-e6b4fe5ba1aa/image.png" alt=""></p>
</li>
<li><p>REST API 선택
<img src="https://images.velog.io/images/dev_hoklng/post/36f50417-f1f5-4459-94ef-ca43046041c8/image.png" alt=""></p>
</li>
<li><p>입력값 입력 후 생성
<img src="https://images.velog.io/images/dev_hoklng/post/33c9df10-32c4-469d-95b5-0e2e55d0fd75/image.png" alt=""></p>
</li>
</ul>
<h3 id="1리소스-생성">1.리소스 생성</h3>
<ol>
<li><p>작업 &gt; 리소스생성
<img src="https://images.velog.io/images/dev_hoklng/post/7b938457-195f-4dda-b15d-d7ec07d42b60/image.png" alt=""></p>
</li>
<li><p>내용 입력
<img src="https://images.velog.io/images/dev_hoklng/post/3668e954-0854-4694-b0b2-f6d103cb1e4a/image.png" alt=""></p>
</li>
<li><p>리소스 생성 확인
<img src="https://images.velog.io/images/dev_hoklng/post/1b9781c6-56f8-40dc-bf73-bd07b443274e/image.png" alt="">
다음과 같이 velog라는 이름으로 생겼죠? 이제 메서드를 생성해봅시다.</p>
</li>
</ol>
<h3 id="2-메서드-생성">2. 메서드 생성</h3>
<ol>
<li>메서드 생성
<img src="https://images.velog.io/images/dev_hoklng/post/3f524be5-526c-4744-a466-7d6afce3910a/image.png" alt=""></li>
</ol>
<p><img src="https://images.velog.io/images/dev_hoklng/post/9f57c374-186b-4b80-8d74-0845d7f0f602/image.png" alt="">
다음과 같이 메서드 생성을 누르면 메서드를 선택하는 부분이 나옵니다. 이후 체크 표시를 눌러주세요
2. lambda 연결
<img src="https://images.velog.io/images/dev_hoklng/post/1aec801a-6034-4736-8d26-6249e4794b04/image.png" alt="">
근데 lambda함수를 생성한 적이 없으면 당연히 안 나오겠죠..?</p>
<h2 id="lambda-생성-for-apigateway">Lambda 생성 (for apigateway)</h2>
<ol>
<li><p>lambda 찾기
<img src="https://images.velog.io/images/dev_hoklng/post/207038dd-d131-48c5-bcd3-c0058a9e1737/image.png" alt=""></p>
</li>
<li><p>lambda 생성
<img src="https://images.velog.io/images/dev_hoklng/post/5aa5025b-0526-458e-ba01-82420e9060c7/image.png" alt=""></p>
</li>
<li><p>기본 세팅 화면
<img src="https://images.velog.io/images/dev_hoklng/post/68afdecc-3159-43c9-85d0-bd3c75524e30/image.png" alt="">
여기서 이름과 런타임을 선택합니다.
함수 이름은 velog로 하고, 런타임은 python을 선택하겠습니다.
<img src="https://images.velog.io/images/dev_hoklng/post/1bbeeb1d-52ec-4ead-9521-990cc4eaf022/image.png" alt=""></p>
</li>
</ol>
<p>4.lambda에서 의 함수
<img src="https://images.velog.io/images/dev_hoklng/post/70b7058e-95b9-432c-b3da-03d1c2acd3e0/image.png" alt="">
다음과 같이(노란부분) 코드를 작성하는 부분이 있는데
원하는 리턴값이 있다면
함수를 작성해서 다음처럼 json형식으로 return해주는 형식으로 세팅합니다.
(api gateway에 연결하면 나오는 response가 됨)</p>
<p>혹시 코드를 변경했으면 위에 Deploy를 눌러줘야합니다!</p>
<h2 id="마무리-lambda연결">마무리 (lambda연결)</h2>
<ol>
<li><p>lambda 입력
<img src="https://images.velog.io/images/dev_hoklng/post/42b2bd26-4701-44bf-8e97-0cb59d4a3f4f/image.png" alt="">
아까 작성한 lambda함수의 이름을 입력하면 밑에 선택지가 나타날 것입니다.
(종종 아무것도 안뜨시는 분은 lambda를 작성한 lambda 리전을 체크해보시기 바랍니다.)</p>
</li>
<li><p>저장
<img src="https://images.velog.io/images/dev_hoklng/post/471ed850-957c-47e0-a8d1-09e49b2974cb/image.png" alt="">
저장을 누르게 되면 lambda를 부르는 권한을 추가하겠다는 부분이 나옵니다. 확인을 눌러주셔야합니다. </p>
</li>
<li><p>확인
끝나면 다음과 같은 화면으로 이동됩니다.
<img src="https://images.velog.io/images/dev_hoklng/post/2efc81df-eebc-41d9-a74e-d7dd57b9cffe/image.png" alt=""></p>
</li>
</ol>
<p>테스트를 해봐도 되지만 바로 배포를 해보겠습니다.</p>
<p>4.배포
<img src="https://images.velog.io/images/dev_hoklng/post/419bc93f-045a-426a-9df1-0eaaf0626110/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/41e36863-b468-4d39-947a-8a4923c66c7e/image.png" alt="">
배포가 처음이면 배포 스테이지를 만들 수 있습니다. 그냥 이름 넣고 생성만 해주시면 됩니다.</p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/aa7567f5-d3bc-42c4-ac3e-c836ce58e7e7/image.png" alt="">
스테이지를 만들고 다음단계로 넘어가면 호출하는 URL을 제공합니다. 사진에서는 검은색으로 가렸지만 해당부분으로 API를 요청하시면 됩니다!</p>
<h2 id="결과">결과</h2>
<p><img src="https://images.velog.io/images/dev_hoklng/post/bbb664fa-f1b2-4832-af03-dc186848a2fd/image.png" alt="">
/velog 엔드포인트에서 연결해놓은 lambda함수의 return값이 출력되는 것이 확인되었습니다!</p>
<h2 id="에러">에러</h2>
<p>{&quot;message&quot;:&quot;Missing Authentication Token&quot;}</p>
<p>이런 메시지가 발생한다면 endpoint를 잘 넣었는지 다시 url의 뒷부분을 확인해주시기 바랍니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Django 앱 시작하기(4). - Base Template]]></title>
            <link>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B04.-Base-Template</link>
            <guid>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B04.-Base-Template</guid>
            <pubDate>Tue, 27 Jul 2021 15:38:04 GMT</pubDate>
            <description><![CDATA[<p>지난 시간에는 html에 몇가지 태그를 추가해서 view로 출력하는 시간을 가졌죠.</p>
<p>그 html의 이름이 base였습니다.</p>
<p>이번 시간에는 왜 그 html 이름이 base 였는지 확인하는 시간입니다.</p>
<p>보통 웹사이트를 보면 <strong>header footer, body</strong>의 기본적인 레이아웃을 잡아서 작업을 할텐데</p>
<p>그것들을 계속 복사붙이기 하면서 새로 다른 페이지 들을 만드는 것이 상당히 비효율 적이게 되는것이죠. 따라서 base.html에서 레이아웃을 잡아두고 다른 html을 추가할 때 이 요소들을 <strong>상속</strong>받으면서 계속 사용하게 됩니다.</p>
<p>그래서 <strong>base.html</strong>에</p>
<pre><code>            {% block contents %}

            {% endblock %}</code></pre><p>과 같은 것 문자들이 들어가 있었는데.
지난 시간의 base.html과 base.css를 수정했습니다. 
(수정코드는 맨 밑에 두겠습니다.)</p>
<p>솔직히 html에 대한내용은 이번 시간까지하면 거의 끝납니다.
제가 html, css, javascript등에 대한 내용은 잘... 
단지 view에서 연산하고 output을 시각하기 위해 강제로 저도 참고하면서 배워서 작성중입니다.</p>
<h3 id="1-basehtml-상속-받는-html-만들기">1. base.html 상속 받는 html 만들기.</h3>
<p>[모두 app_main]안에서 이루어짐
<img src="https://images.velog.io/images/dev_hoklng/post/726a0b5a-e76c-4662-8aef-955b6e88496c/image.png" alt=""></p>
<ol>
<li>child.html(이름상관없음) 을 생성한다.</li>
<li>해당 페이지의 내용을 다음처럼 채워준다.<pre><code>{% extends &#39;base.html&#39; %}
{% load static %}
{% block contents %}


</code></pre></li>
</ol>
<p>{% endblock %}</p>
<pre><code>3. view에서 새로 함수뷰를 작성한다.
-&gt;child.html 렌더링만 함</code></pre><p>def child(request):
    return render(request, &#39;child.html&#39;)</p>
<pre><code>
4.url.py
**import하는 부분에 child를 추가**하고 **urlspatterns에** 한줄이 추가되었죠?</code></pre><p>from django.contrib import admin
from django.urls import path, include, re_path
from .views import index, child</p>
<p>urlpatterns = [
    path(&#39;&#39;, index, name=&#39;main&#39;),
    path(&#39;child&#39;, child, name=&#39;child&#39;)
]</p>
<pre><code>
### 2. http://127.0.0.1:8000/main/child 실행
![](https://images.velog.io/images/dev_hoklng/post/a7b2754d-969a-4b84-968c-fd431b05ca65/image.png)

분명 child.html에는 html에 대한 내용이 하나도 없는데 base.html과 동일한 결과가 나타납니다!.
이제 실제로 원하는 내용은 </code></pre><p>{% block contents %}</p>
<p>{% endblock %}</p>
<pre><code>내부에 html코드를 추가하여 작성하면 됩니다!

끝.

### 3.변경된 코드
**base.html**</code></pre><!DOCTYPE html>
<html lang="ko">
{% load static %}
<head>
<link rel="stylesheet" href="{% static 'css/base.css' %}">

<pre><code>{% block header %}

{% endblock %}
&lt;title&gt; CSS 레이아웃 테스트&lt;/title&gt;</code></pre></head>

<body>
    <section id="header">
        <div class="wrapper">
            <div class="header_title">
                <li class="bugger area">

<pre><code>            &lt;/li&gt;
        &lt;/div&gt;
        &lt;div class=&quot;header_icon&quot;&gt;
            HOKlNG
        &lt;/div&gt;
        &lt;div class=&quot;profile&quot;&gt;Log In&lt;/div&gt;
    &lt;/div&gt;
&lt;/section&gt;
&lt;section class=&quot;container&quot;&gt;
    &lt;section class=&quot;item section-body&quot;&gt;
        {% block contents %}

        {% endblock %}
    &lt;/section&gt;
&lt;/section&gt;
&lt;section id=&quot;footer&quot;&gt;
    &lt;section class=&quot;footer&quot;&gt;
        푸터
    &lt;/section&gt;
&lt;/section&gt;</code></pre></body>

</html>
```
**base.css**
```
body {
    margin:0;
    height:100vh;

<p>}</p>
<p>#header{
    font-weight: bold;
    background-color: #FF8C0A;
    font-size: 15px;
    color: white;</p>
<p>}
.wrapper{
    width: 100%;
    min-height: 65px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.header_icon{
    display: flex;
    margin: 0 auto;
    list-style:none;
}
.header_list li{
    margin-right: 4%;
}
.header_title{
    font-size: 30px;
    margin-left: 30px;
}
.profile{
    margin-right: 3%;
}</p>
<p>.container {
    max-width: 1240px;
    min-height: 900px;
    height: 100%;
    margin: 0 auto;
}</p>
<p>.item {
    padding: 3%;
}</p>
<p>.section-body {
    background-color: #ffd84d;
    height: 100vh;
    max-height: 100%</p>
<p>}</p>
<p>.footer {
    min-height: 150px;
    background-color: #f5f5f5;
}</p>
<pre><code></code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Django 앱 시작하기(3). - Template ]]></title>
            <link>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B03.-Template</link>
            <guid>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B03.-Template</guid>
            <pubDate>Sun, 25 Jul 2021 10:25:11 GMT</pubDate>
            <description><![CDATA[<p>지난번에는 view에 대해서 설명했습니다.
사실은 view는 파고들면 설명할 것들이 너무 많아서 더 자세한 것은 나중에 설명하고.
일단** template<strong>, 즉 **html</strong>을 만들어서 기존에 작성해 놓은 <strong>index view</strong>에서 렌더링 하도록 하겠습니다.</p>
<p>html은 마크업 랭기지로.. 블라블라 <strong>거두절미</strong>하고 그냥 만들겠습니다.
폴더 구조는 저를 따라오시는게 편할 것이기 때문에 폴더 구조부터 보여드리겠습니다.
<img src="https://images.velog.io/images/dev_hoklng/post/d46d462e-611a-4b35-aafb-29b7161cd96b/image.png" alt=""></p>
<h3 id="1폴더-구조-및-파일-만들기">1.폴더 구조 및 파일 만들기</h3>
<p>다음처럼 app_main 밑에 폴더를 추가할 것입니다.</p>
<ol>
<li>templates -&gt; html을 둘 용도</li>
<li>static -&gt; css , js 등의 파일을 둘 용도(html을 보다 화려하게 만들어 줄 친구들)</li>
<li>static 밑에 css폴더 만들기.</li>
</ol>
<p>폴더를 만들었으면 html과 css를 만들 것입니다.</p>
<ol>
<li>templates 폴더 밑에 <strong>base.html</strong>을 만들기</li>
<li>css 폴더 밑에 <strong>&quot;base.css&quot;</strong> 만들기</li>
</ol>
<h3 id="2-static-사용-전에-settings-설정">2. static 사용 전에 settings 설정</h3>
<p><strong>static</strong>은 쉽게 html에 사용될 리소스들을 모아둔 그룹이라고 생각하시면 되는데
이를 쉽게 사용하기 위해서 settings에서 (경로)설정을 해줘야합니다.</p>
<p>project 폴더로 이동해서 settings.py를 찾아봅니다.
(저는 config-&gt; settings.py)</p>
<pre><code>STATIC_URL = &#39;/static/&#39;</code></pre><p>이 부분이 있을 겁니다. 해당부분을 다음과 같이 변경해주십쇼</p>
<pre><code>STATIC_URL = &#39;/static/&#39;
STATIC_ROOT = os.path.join(BASE_DIR, &#39;static&#39;)</code></pre><h3 id="3-html에-css-파일-연결">3. html에 css 파일 연결</h3>
<p>css파일이 뭐고 html이 뭐냐...라고 궁금하실 수 있는데요</p>
<p>html은 페이지에서 구역의 위치나 크기 등을 정하고 글씨를 넣는 곳이면
css는 그 구역의 테두리, 배경색등을 정하고 글씨 크기, 색을 정할 수 있는 것입니다.</p>
<p>그래서 html에 css주소를 연결해 놓고 css에 html에서 사용하는 태그 등에 대한 디자인 정의를 해두는 것이죠.</p>
<p>base.html</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
{% load static %}
&lt;head&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;{% static &#39;css/base.css&#39; %}&quot;&gt;

    {% block header %}

    {% endblock %}
    &lt;title&gt; CSS 레이아웃 테스트&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;section id=&quot;header&quot;&gt;
        &lt;div class=&quot;wrapper&quot;&gt;
            &lt;div class=&quot;header_title&quot;&gt;
                &lt;li class=&quot;bugger area&quot;&gt;

                &lt;/li&gt;
            &lt;/div&gt;
            &lt;div class=&quot;header_icon&quot;&gt;
                HOKlNG
            &lt;/div&gt;
            &lt;div class=&quot;profile&quot;&gt;Log In&lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;
    &lt;div class=&quot;container&quot;&gt;
        &lt;section class=&quot;item section-a&quot;&gt;
            &lt;h1&gt; Section a&lt;/h1&gt;
            &lt;p&gt;
                나는 자랑스러운 태극기 앞에 자유롭고 정의로운 대한민국의 무궁한 영광을 위하여 충성을 다할 것을 굳게 다짐합니다


            &lt;/p&gt;
        &lt;/section&gt;
    &lt;/div&gt;

    {% block contents %}

    {% endblock %}



&lt;/body&gt;

&lt;/html&gt;</code></pre><p>base.css</p>
<pre><code>body {
    margin:0;

}

h2, p{
    margin:0;
}
#header{
    font-weight: bold;
    background-color: #FF8C0A;
    font-size: 15px;
    color: white;

}
.wrapper{
    width: 100%;
    min-height: 65px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.header_icon{
    display: flex;
    margin: 0 auto;
    list-style:none;
}
.header_list li{
    margin-right: 4%;
}
.header_title{
    font-size: 30px;
    margin-left: 30px;
}
.profile{
    margin-right: 3%;
}

.container {

}

.item {
    padding: 5%;
}

.section-a {
    background-color: yellow;
}</code></pre><p>이런식으로 구성하면
html에서 head &gt; link에 href 부분을 보면 css/base.css 라는 부분을 볼 수 있습니다. 아까 settings에서 경로를 설정해 두었기 때문에 <strong>base.css</strong>가 바로 적용됩니다.</p>
<p>해당 내용을 view에 실행해보면 다음과 같은 화면이 나옵니다.</p>
<p><strong>views.py -&gt; index</strong></p>
<pre><code>def index(request):
    return render(request,&#39;base.html&#39;)</code></pre><p><img src="https://images.velog.io/images/dev_hoklng/post/75ce81d3-1c05-4a8d-aac5-255ca53db07d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Django 앱 시작하기(2). -View]]></title>
            <link>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B02.-View</link>
            <guid>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B02.-View</guid>
            <pubDate>Fri, 23 Jul 2021 14:58:45 GMT</pubDate>
            <description><![CDATA[<p>지난 시간에 <strong>settings에 app을 설정</strong>하고
<strong>URL을 어떻게</strong> 프로젝트 urls.py에서 받아서 앱 url.py로 <strong>전달</strong>하는지 알아보았다.
마지막에는 <strong>view</strong>를 하나 만들어서 해당 url에 연결하고
간단하게 <strong>Httpresponse</strong>로 처음에 나타난 기본 페이지 이외의 페이지를 렌더링 하였다.</p>
<p>오늘은 view에 대한 간단한 설명으로 시작해서
html로 간단한 페이지를 만들어 내용을 추가하고 렌더링 해보겠다.</p>
<h3 id="viewpy-의-기능-작동원리">view.py 의 기능 (작동원리)</h3>
<p>urls.py에서 엔드 포인트마다 view를 연결한다.
간단한 설명을 위해서 지난 내용을 잠깐 설정해서 설명하면...
도메인을 다음으로 가정하고. - <a href="http://www.hoklng.com">www.hoklng.com</a> 
<strong><a href="http://www.hoklng.com/main">www.hoklng.com/main</a> 이 호출을 받으면</strong>...</p>
<ol>
<li><strong>프로젝트 urls.py</strong>에서 <strong>해당 엔드포인트</strong>가 어딘지 확인한다.</li>
<li>확인해보니 &#39;main/&#39; -&gt; <strong>app_main.url 에 할당</strong>한다.</li>
<li>app_main.urls.py를 보면 다음과 같이 코드가 적혀있다.<pre><code>from .views import index
</code></pre></li>
</ol>
<p>urlpatterns = [
    path(&#39;&#39;, index, name=&#39;main&#39;),</p>
<p>]</p>
<pre><code>5. 호출받은 url은 **index라는 함수(view)를 호출**한다.
6. 호출받은 view의 코드가 실행된다. -&gt; **Httpresponse**
</code></pre><p>  from django.shortcuts import render, redirect, HttpResponse</p>
<h1 id="create-your-views-here">Create your views here.</h1>
<p>  def index(request):
      return HttpResponse(&#39;처음으로 연결한 app&#39;)</p>
<pre><code>  [결과]
 ![](https://images.velog.io/images/dev_hoklng/post/517ddb63-e8eb-4aba-987e-f49a583e4dc9/image.png)

 다음과 같이 동작이 된다.
&gt;  **정리하면** 요청받은 url에 연결된 view가 실행되고 해당 코드가 실행된다.

 처음에 Django를 배우면 MTV패턴이니 뭐니 하면서 처음 듣는 사람의 장벽을 더욱 쌓아주는 느낌을 받았는데. 그런건 나중에 하면서 알아서 익혀지는 것이고.

&gt;  **직관적으로 브라우저에 url을 입력 -&gt; 해당 url에 view실행 -&gt; 코드 동작 -&gt; 결과 return** 라고 생각하면 된다. 

 **MTV**를 짚고 넘어가면... model template view 의 약자인데.
 model : DB
 template : html
 view: 방금 설명한 view
 view가 동작할때 model에서 데이터를 가져와서 html에 담아 결과를 제공하는 것에서 MTV패턴이라고 한다. 나중에 하다보면 자연스럽게 알 것이다.

 오늘은 view에 대한 간단한 설명으로 시작해서
html로 간단한 페이지를 만들어 내용을 추가하고 렌더링 해보겠다. 라고 했지만...
그냥 view까지만 설명하고 html 렌더링은 다음 시간에 이어서 하겠다!</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Django 앱 시작하기(1). - URL]]></title>
            <link>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B01</link>
            <guid>https://velog.io/@dev_hoklng/Django-%EC%95%B1-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B01</guid>
            <pubDate>Wed, 21 Jul 2021 15:18:19 GMT</pubDate>
            <description><![CDATA[<p>지난 시간에 DB 연결을 하였다.
바로 사용하지는 않지만 일단 세팅만 먼저 해놓았고
이번 시간에는 django에서 내가 만든 페이지를 출력해보고자 한다.</p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/0b5e397e-cc40-4d11-aa5e-dcb1b09ea772/image.png" alt=""></p>
<p>지난 django를 실행했을때 해당 페이지가 뜨는 것을 알 수 있었다.
그럼 끝인가?... 아니다. 본인의 페이지를 구성하기 위해서 django를 시작한 것이다.
app_main폴더에서 그 시작을 할 것이다.</p>
<p>먼저 시작전에 app을 생성한 뒤에는 해야할 일이 있다.</p>
<h3 id="1settings에-app-추가하기">1.settings에 app 추가하기</h3>
<p>지난 시간에 django-admin startapp [앱명] 으로 앱을 만들었다.
그때 만든 app의 이름이 app_main이다. 해당 내용을 settings에 만들어서 사용할 것이라고 알려줘야한다.
*settings.py는 프로젝트 폴더에 있다.</p>
<p>거기서 INSTALL_APPS라는 부분을 아서 내가 만든 APP을 추가한다.
<img src="https://images.velog.io/images/dev_hoklng/post/d9b64f9a-b07f-4461-8bf7-7b92f92dae21/image.png" alt=""></p>
<h3 id="2-url작업">2. URL작업</h3>
<p>일단 app_main폴더에 urls.py를 생성해줍니다.</p>
<p>처음에는 url작업들이 헷갈릴 수 있습니다.
<img src="https://images.velog.io/images/dev_hoklng/post/ef963ae6-bad1-4a22-9a3f-24978fbabae1/urls-py%EC%84%A4%EB%AA%85.png" alt=""></p>
<p>프로젝트 폴더에도 urls.py가 있고, app폴더에도 urls.py들이 있습니다.
처음에는 프로젝트와 앱에 대한 차이도 헷갈릴텐데 폴더주제에 urls.py라는 것들이 왜 또 있지 라는 의문이 듭니다.</p>
<p>프로젝트를 하다보면 수 많은 <strong>엔드포인트</strong>들이 생깁니다.
즉, url이 늘어난다는 것인데 도메인이 <a href="http://www.hoklng.com%EC%9D%B4%EB%9D%BC%EA%B3%A0">www.hoklng.com이라고</a> 가정하면
<strong>계정과 관련된 것</strong>들은
<a href="http://www.hoklng.com/accounts/delete">www.hoklng.com/accounts/delete</a>
<a href="http://www.hoklng.com/accounts/change-profile">www.hoklng.com/accounts/change-profile</a>
<strong>메인페이지와 관련된 것</strong>들은
<a href="http://www.hoklng.com/main/alarm">www.hoklng.com/main/alarm</a>
<a href="http://www.hoklng.com/main/messge">www.hoklng.com/main/messge</a></p>
<p>다음처럼 url들을 만들텐데 보이시나요? 
<strong>계정</strong>과 관련된 것들은 도메인+/accounts/~
<strong>메인페이지</strong>와 관련된 것들은 도메인+/main/~ 이런식으로 된다는 것을??</p>
<p>즉 다시 말해서 도메인 다음을 일종의 <strong>app들의 엔드포인트</strong>라고 보시고
<strong>프로젝트[config]에 있는 urls.py에서 앱마다 큰 주소를 배분</strong>해주고 나머지 이후의 주소는
<strong>각 앱[app_main]에서 기능별로 할당</strong>을 하게 만드는 것입니다. 위에 그림처럼요!
accounts는 아직 앱을 생성하지 않았지만 이해를 위해서 둔 것들입니다.</p>
<p>당장 이해가 되지 않는다고 해도 차차 이해하실 수 있을 것입니다.</p>
<h3 id="프로젝트-urlspy">프로젝트 urls.py</h3>
<p>일단 위에서 앱 폴더에 urls.py를 생성하셨으면
프로젝트 urls.py [config.urls.py]에서 다음 과 같이 변경해주세요</p>
<pre><code>from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path(&#39;admin/&#39;, admin.site.urls),
    path(&#39;main/&#39;, include(&#39;app_main.urls&#39;)),
]</code></pre><p>라이브러리에서 include기능을 불러온 것과
path(&#39;main/~) 부분이 추가 되었습니다.
자세히 보시면 include(&#39;앱이름.url파일&#39;)인 것을 확인할 수 있습니다.</p>
<p>앞으로 도메인+main/이 포함된 내용은 app_main에서 작성되는 것들일 겁니다!</p>
<h3 id="앱-urlspy">앱 urls.py</h3>
<p>프로젝트에서 엔드포인트를 제공했으면 해당하는 기능을 만들어 볼까요?
앱의 urls.py를 열어서 다음과 같은 내용을 추가합니다.</p>
<pre><code>from django.contrib import admin
from django.urls import path, include, re_path
from .views import index

urlpatterns = [
    path(&#39;&#39;, index, name=&#39;main&#39;),

]</code></pre><p> 이후 같은 앱 폴더에 있는 views.py에 아래 내용으로 전체 변경합니다.</p>
<pre><code>from django.shortcuts import render, redirect, HttpResponse

# Create your views here.
def index(request):
    return HttpResponse(&#39;처음으로 연결한 app&#39;)</code></pre><p> 이후 인터넷 브라우저에 로컬서버 + main을 붙여봅니다.</p>
<p> <img src="https://images.velog.io/images/dev_hoklng/post/517ddb63-e8eb-4aba-987e-f49a583e4dc9/image.png" alt=""></p>
<p> 다음과 같이 나오면 성공입니다.</p>
<p> 해당 내용의 설명은 다음 게시물에서 view를 설명하면서 하도록 하겠습니다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Django DB 설정(with.docker)]]></title>
            <link>https://velog.io/@dev_hoklng/Django-DB-%EC%84%A4%EC%A0%95with.docker</link>
            <guid>https://velog.io/@dev_hoklng/Django-DB-%EC%84%A4%EC%A0%95with.docker</guid>
            <pubDate>Tue, 20 Jul 2021 11:31:06 GMT</pubDate>
            <description><![CDATA[<p>백엔드 서버를 구성함에 있어서 DB설정은 매우 중요한 부분 중 하나죠.</p>
<p>기본적으로 sqlite가 설치되지만 오픈소스 중 하나인 <strong>postgresql</strong>을 사용해보겠습니다.</p>
<h2 id="1-docker로-postgresql-실행시키기">1. docker로 postgresql 실행시키기</h2>
<p>postgresql은 <strong>docker image</strong>를 가져와서 실행시킬 예정입니다.
<strong>docker설치</strong>는 이전 게시물에 있으니 참고해보시기 바랍니다!
[링크]
<a href="https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%841">https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%841</a>
<a href="https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%842">https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%842</a></p>
<p>docker로 설치하는 <strong>장점</strong>은 
OS나 별도 설치파일 없이 Docker만 설치되어 있다면 실행시켜서 사용할 수 있다는 점입니다.</p>
<p>먼저 docker에서 postgresql을 실행시켜보겠습니다.
<strong>docker compose</strong>파일을 만들어서 실행할 예정입니다.
docker에서 직접 명령어를 날려서 실행시킬 수 있지만. 오타나 재 입력을 최소화 하기위해 <strong>yml파일</strong>로 만들어서 한 번에 실행시키는 방법입니다.
실행시키시려는 경로에 해당 파일을 만들어 실행시켜보세요!</p>
<p>[docker-compose.yml]</p>
<pre><code>vi docker-compose.yaml
----------------------------
version: &#39;3&#39;
services:
  postgres:
    image: postgres
    container_name: postgres_dev
    restart: always
    environment:
      POSTGRES_PASSWORD: &#39;12341234&#39;
      TZ: &quot;Asia/Seoul&quot;
    ports:
      - &#39;5432:5432&#39;
    volumes:
      - /mnt/c/User/ghtjd/Documents/velog:/var/lib/postgresql/</code></pre><p>docker-compose.yml이라는 이름의 파일을 만든 후
다음 명령어를 실행하면 해당 내용으로 docker를 통해 postgresql이 실행됩니다.</p>
<pre><code>docker-compose up -d</code></pre><p><img src="https://images.velog.io/images/dev_hoklng/post/d0622e61-43ee-4966-b0d1-50eabd723a5a/image.png" alt=""></p>
<p>실행되었는지 확인하기 위해서 다음 명령어를 실행합니다.</p>
<pre><code>docker ps  //실행중인 컨테이너 확인 법</code></pre><p><img src="https://images.velog.io/images/dev_hoklng/post/709ebdcd-42ac-4b0b-a300-32294564302e/image.png" alt=""></p>
<p>일단 따라해서 실행시켜보고 따로 docker에 대한 내용을 공부해보셔도 됩니다!
게시물을 나중에 올리긴 할 것이지만 시간이 조금 걸릴 것 같네요.</p>
<h2 id="2django에-연결">2.django에 연결</h2>
<h3 id="settingspy-바꿔주기">settings.py 바꿔주기</h3>
<p>지난 시간 생성했던 django 프로젝트 폴더 안에 있는 settings.py를 열면
DATABASES라는 부분이 </p>
<pre><code>DATABASES = {
    &#39;default&#39;: {
        &#39;ENGINE&#39;: &#39;django.db.backends.sqlite3&#39;,
        &#39;NAME&#39;: BASE_DIR / &#39;db.sqlite3&#39;,
    }
}</code></pre><p>이렇게 되어 있을 텐데 밑에 처럼 바꿔준다.</p>
<pre><code>DATABASES = {
    &#39;default&#39;: {
        &#39;ENGINE&#39;: &#39;django.db.backends.postgresql&#39;,
        &#39;NAME&#39;: &#39;postgres&#39;,
        &#39;USER&#39;: &#39;postgres&#39;,
        &#39;PASSWORD&#39;: &#39;12341234&#39;,
        &#39;HOST&#39;: &#39;localhost&#39;,
        &#39;PORT&#39;: &#39;5432&#39;
    }
}
</code></pre><h3 id="psycopg2-라이브러리-설치">psycopg2 라이브러리 설치</h3>
<p>Postgresql을 사용하기 위해 라이브러리를 하나 설치해준다.</p>
<pre><code>pip install psycopg2</code></pre><p>이후 다음 명령어를 쳐서 문제없이 수행되면 db연결이 잘 된 것이다.</p>
<pre><code>python manage.py migrate</code></pre><p><img src="https://images.velog.io/images/dev_hoklng/post/4c00b112-ce79-4119-b0ab-60734b318b67/image.png" alt=""></p>
<p>설명을 조금 하자면 Django에서 사용하는 기본 DB table이 있는데
해당 내용을 사용하려면 처음에 <strong>python manage.py migration</strong>을 해주면 연결된 DB에 적용된다.</p>
<p>이후에 설명하겠지만
백엔드에서 사용할 내용들을 저장하기 위해 DB Table을 생성하고 싶다면 해당 프로젝트에서 Model이란 것을 생성해서</p>
<pre><code>python manage.py makemigrations
python manage.py migrate</code></pre><p>두 가지만 입력해주면 테이블이 생성,수정,삭제 된다. 
해당 내용을 필요할 때 설명하겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Django 시작하기]]></title>
            <link>https://velog.io/@dev_hoklng/Django-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@dev_hoklng/Django-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 19 Jul 2021 11:35:05 GMT</pubDate>
            <description><![CDATA[<p>django로 눈에 보이는 결과를 만들면서 코딩을 해볼 예정입니다.</p>
<p>django는 Python에서 웹서비스를 만드는 프레임워크입니다.
프레임워크는 라이브러리보다 더 큰 개념으로 코딩을 더욱 쉽게 만들어 주기 때문에 사용합니다.
언어마다 다양한 프레임워크들로 작업을 하게 됩니다.</p>
<p>일단 <strong>Python</strong>은 <strong>Django</strong>라는 프레임워크를 사용한다. 정도만 생각하면 됩니다.</p>
<h2 id="설치하기">설치하기</h2>
<p>일단 작업할 폴더를 하나 만들어 줍니다.
저는 dev-hoklng으로 만들었습니다.
이안에 django에서 구현될 모든 파일들이 설치될 예정입니다.</p>
<h3 id="1가상환경-설정">1.가상환경 설정</h3>
<p>프로그래밍을 하다보면 여러 이유로 프로젝트마다 버전을 달리 해야하는 상황이 발생할 수 있기 때문에 해당 프로젝트에 맞는 라이브러리 버전을 관리하고자 가상환경을 설정합니다. 저는 virtualenv라는 라이브러리로 가상환경을 세팅하고자 합니다.</p>
<pre><code>virtual env 설치. &gt; venv라는 이름으로 가상환경 세팅 &gt; 실행
&gt; pip install virtualenv
&gt; virtualenv venv
&gt; venv\Scripts\activate</code></pre><blockquote>
<p>dev-hoklng
ㄴvenv</p>
</blockquote>
<p>&quot;venv&quot;라는 이름으로 만들었는데 다른 이름으로 사용해도 되지만 주로 많이 쓰는 이름 중 하나입니다.
<img src="https://images.velog.io/images/dev_hoklng/post/3fc5ecec-a2f9-4654-829b-1123fc6474a1/image.png" alt=""></p>
<h3 id="2-django설치프로젝트-앱-생성">2. Django설치,프로젝트, 앱 생성</h3>
<pre><code>pip install django==3.1.8
django-admin startproject config .
django-admin startapp app_main</code></pre><p>이렇게하면 django가 설치되고 &quot;프로젝트&quot;와 &quot;앱&quot;이러는 것이 설치가 되었죠.</p>
<p>&quot;<strong>프로젝트</strong>&quot;는 해당 프로젝트의 핵심적인 세팅이나 설정등을 관리하는 것으로 한 개만 생성하면 됩니다.(ex:데이터베이스 세팅, 미들웨어 세팅)</p>
<p>**[생성] **</p>
<pre><code>django-admin startproject &quot;프로젝트명&quot; . </code></pre><ul>
<li>. 을 안쓰면 폴더 level이 한 번 더 들어갑니다. &quot;.&quot;가 마지막에 들어가는 것은 오타가 아닙니다.</li>
<li>여기서 프로젝트명을 config로 한건데, 프로젝트 명으로 하시는 분들도 있고 저같은 경우는 여기서 설정을 많이 하기 때문에 config라고 이름을 사용 했습니다.</li>
</ul>
<p>&quot;<strong>앱</strong>&quot;은 해당 프로젝트에서 실질적으로 비즈니스 로직을 실행하는 부분입니다.(ex: 페이지 렌더링, API구현)</p>
<pre><code>django-admin startapp &quot;앱 명&quot;</code></pre><ul>
<li>. 안 씀</li>
<li>앱 명은 해당 기능을 수행할 내용을 함축해서 짓습니다.</li>
<li>main이라고 지은 이유는 메인페이지 등에서 구현할 기능을 만들기 위해서 입니다.</li>
<li>앞으로 계속 추가해 나갈 예정입니다.</li>
</ul>
<h3 id="3-실행">3. 실행</h3>
<p>명령어</p>
<pre><code>python manage.py runserver</code></pre><p><img src="https://images.velog.io/images/dev_hoklng/post/30d4f5a9-e7a4-4d4e-a958-379150eee865/image.png" alt=""></p>
<p>로컬호스트를 8000번 포트를 기본으로 실행됩니다.
해당 화면이 나타났다면 기본적으로 돌아간다는 것입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Git 설치하기]]></title>
            <link>https://velog.io/@dev_hoklng/Git-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@dev_hoklng/Git-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 18 Jul 2021 11:13:59 GMT</pubDate>
            <description><![CDATA[<p>당연히 개인 노트북으로 코딩을 하는 이유는... 
구현하고싶은 프로젝트를 만들어서 배포하기 위함이죠?(아닌가)
배포하고 코드를 관리하려면 당연히 git이 필요합니다.</p>
<p>막상 노트북 사놓고 코딩은 안 했지만 git을 설치해볼까요?!</p>
<p><a href="https://git-scm.com/downloads">https://git-scm.com/downloads</a> 요기로 가면 git을 다운받을 수 있습니다.
<img src="https://images.velog.io/images/dev_hoklng/post/48a75545-f032-40ec-8514-64a99439095f/image.png" alt="">
여기서 git을 다운받아서...</p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/b8889747-a572-403c-8f73-34dfee589a15/image.png" alt="">
이 화면에서 next를 넘기다보면 계속 뭐 선택하는게 많이 나오는데 그냥 기본으로 Next 다넘겨버리면 
<img src="https://images.velog.io/images/dev_hoklng/post/99438b60-bdd8-4588-a4fe-94ab6fb95432/image.png" alt="">
결국 이렇게 설치가 됩니다. </p>
<p>git을 사용하는 서비스는 git hub, bitbucket 등 고를 수 있는데......
저는 git hub를 사용하겠습니다.!</p>
<p>다음 시간에는 git init을 하고 간단한 테스트 프로젝트를 만들어서 git에 올려보겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[docker 사용 준비(2)]]></title>
            <link>https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%842</link>
            <guid>https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%842</guid>
            <pubDate>Wed, 14 Jul 2021 14:14:12 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/dev_hoklng/post/806d54f4-f2db-4550-93cd-4430505f3713/%EB%8F%84%EC%BB%A4%EA%B7%B8%EB%A6%BC.png" alt="">
(파워포인트로 그림)</p>
<p>지난 포스트에 docker를 설치해서 사용하기 위해서
WSL환경을 구성하였습니다.
이번 포스트에서 도커 설치를 마무리해서 테스트 해보겠습니다.</p>
<p>[용도]</p>
<ul>
<li>postgresql 사용</li>
<li>redis 사용</li>
<li>추후 kubernetes container image build 등...</li>
</ul>
<p>[설치순서]</p>
<ol>
<li>wsl설치 + window에서 linux사용 환경 구성</li>
</ol>
<p><strong>2. docker설치</strong></p>
<p>2가지 부분으로 나눠서 포스트하겠습니다!</p>
<h3 id="2-window버전-docker-설치">2. window버전 docker 설치</h3>
<p>url: <a href="https://www.docker.com/products/docker-desktop">https://www.docker.com/products/docker-desktop</a>
<img src="https://images.velog.io/images/dev_hoklng/post/fc8cf670-5eb8-4185-b63c-e65d40b7b422/image.png" alt="">
오우.. 525MB나 되네요
나중에 쓰시다보면 알겠지만 도커 build한 컨테이너들 크기가 꽤 큽니다.
용량 조절 잘해서 사용하시길...</p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/049d72ee-1154-4e4a-9269-7bec8921813d/image.png" alt="">
[OK누르면]
<img src="https://images.velog.io/images/dev_hoklng/post/3c942ab7-dfab-432a-ac1e-4d9f55417e50/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/9ac9d548-388f-4ad1-93b8-f0973ed303e2/image.png" alt="">
도커 설치가 완료되었군요.</p>
<p>이제 설치했던 Ubuntu에서 도커가 잘 실행되는지 확인해볼까요?
<img src="https://images.velog.io/images/dev_hoklng/post/e589b4e8-ec17-4cee-ae9a-1a6d9283fb6b/image.png" alt=""></p>
<p>docker가 잘 설치되었죠??
사실 ubuntu는 wsl환경이 잘 설치되었는지 확인하는 용도였고
제가 로컬에서 docker을 사용할 때는 ms store에서 windows terminal을 깔아서 따로 사용할 것 입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[docker 사용 준비(1)]]></title>
            <link>https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%841</link>
            <guid>https://velog.io/@dev_hoklng/docker-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%841</guid>
            <pubDate>Wed, 07 Jul 2021 15:13:11 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/dev_hoklng/post/806d54f4-f2db-4550-93cd-4430505f3713/%EB%8F%84%EC%BB%A4%EA%B7%B8%EB%A6%BC.png" alt="">
(파워포인트로 그림)</p>
<p>노트북을 사면서 자주 사용하는 것들을 설치하고 있습니다.
지난번에는 파이썬을 설치 하였는데
오늘은 Docker을 설치해보겠습니다.</p>
<p>[용도]</p>
<ul>
<li>postgresql 사용</li>
<li>redis 사용</li>
<li>추후 kubernetes container image build 등...</li>
</ul>
<p>개인적으로 윈도우에서 개발환경을 쉽게 만들어주는 것 중 하나가 도커가 아닌가 싶습니다.</p>
<p>window에서 설치하려면 제약조건이 조금 있는 것으로 아는데...
따라해 보시죠!</p>
<p>[설치방법]
<strong>1. wsl설치 + window에서 linux사용 환경 구성</strong>
2. docker설치</p>
<p>2가지 부분으로 나눠서 포스트하겠습니다!</p>
<h3 id="1-wsl2-설치">1. WSL2 설치</h3>
<p>  url : <a href="https://docs.microsoft.com/ko-kr/windows/wsl/install-win10">https://docs.microsoft.com/ko-kr/windows/wsl/install-win10</a></p>
<ol>
<li><p><strong>가상화 적용 가능 여부 확인</strong>
<img src="https://images.velog.io/images/dev_hoklng/post/8f8427d4-5113-423b-9380-f94b957e3005/image.png" alt="">오른쪽 하단쯤에 가상화: 사용 이라고 되어있죠??
만약 지원하지 않으면 다른 방법을 찾는 편이 빠르실 것 같습니다.
아주 방법이 없는 건 아닌데... 아주 방법이 없을때도 있으니...</p>
</li>
<li><p><strong>window 버전 확인</strong>
<img src="https://images.velog.io/images/dev_hoklng/post/24af07d3-1fba-4bf9-8294-6809063fd144/image.png" alt="">
그냥 윈도우 버전을 최신으로 업데이트 해주는게 좋습니다.</p>
</li>
<li><p><strong>MS doc을 이용하여 WSL설치</strong></p>
</li>
</ol>
<p>  <em>명령어는 window powershell을 *</em>관리자권한**으로 켜서 입력</p>
<p>  3-1. linux용 window 하위 시스템 사용</p>
<pre><code>  dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart</code></pre><p>  3-2. window version 맞추기 (모르겠으면 최신업데이트 ㄱㄱ)</p>
<p>  3-3. Virtual Machine 기능 사용</p>
<pre><code>  dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart</code></pre><p>  3-4.linux 커널 업데이트 패키지 다운로드
  MS doc에서 다운로드 링크가 다음으로 걸려있으니 받으면 되겠다.
  <a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi">https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi</a>
  (윈도우 업데이트가 제대로 안 되어 있으면 실행 안 됨)</p>
<p>  3-5. wsl2기본 버전으로 설정</p>
<pre><code>  wsl --set-default-version 2</code></pre><p>  3-6. ms store에서 원하는 Linux설치
  <img src="https://images.velog.io/images/dev_hoklng/post/187e093d-0f02-42fa-b5b8-86602f3f5808/image.png" alt=""></p>
<p>  -&gt; 설치돼서 ubuntu가 돌아가는 모습
  <img src="https://images.velog.io/images/dev_hoklng/post/2a3973ed-5f39-4a1d-81d2-827c6058fedd/image.png" alt=""></p>
<p>다음 포스트에서 docker설치 마무리 및 테스트를 진행하겠습니다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[python 사용 준비]]></title>
            <link>https://velog.io/@dev_hoklng/python-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%84</link>
            <guid>https://velog.io/@dev_hoklng/python-%EC%82%AC%EC%9A%A9-%EC%A4%80%EB%B9%84</guid>
            <pubDate>Mon, 05 Jul 2021 12:21:01 GMT</pubDate>
            <description><![CDATA[<p>컴퓨터를 샀으니... 개발하기 위한 세팅을 해봐야죠?
초보개발자, 파이썬 개발자 세팅</p>
<p><img src="https://images.velog.io/images/dev_hoklng/post/1383fd6b-ad9a-4472-87b1-4d4c9ed0e779/image.png" alt=""></p>
<h3 id="1파이썬설치">1.파이썬설치</h3>
<ul>
<li>ver 3.7.8 :개인적으로 많이 사용하는 package들이 충돌이 안 나는 버전이라서..</li>
<li>url : <a href="https://www.python.org/downloads/release/python-378/">https://www.python.org/downloads/release/python-378/</a></li>
<li>이중에서도 <strong>Windows x86-64 executable installer</strong> 설치했습니다.</li>
</ul>
<h3 id="2pycharm-설치">2.pycharm 설치</h3>
<ul>
<li>ver -community 버전 : 이유는 없음... 개인적으로 편함 (21.01.03버전)
(사람들이 vscode도 많이 쓰지만 디버깅이 익숙해서..)</li>
<li>url : <a href="https://www.jetbrains.com/ko-kr/pycharm/download/download-thanks.html?platform=windows&amp;code=PCC">https://www.jetbrains.com/ko-kr/pycharm/download/download-thanks.html?platform=windows&amp;code=PCC</a></li>
<li>기타 글씨체나 크기 설정은 개인 취향에 따라 변경</li>
</ul>
<h3 id="3jupyter-notebook">3.jupyter notebook</h3>
<p>가끔씩 간단한 테스트 등은 pycharm에서 파이썬 코드로 작성하는 것 보다 jupyter notebook을 사용하여 실시하는게 편할때가 있습니다.</p>
<p>[설치]</p>
<ul>
<li>cmd 열기</li>
<li>pip install jupyter 입력
<img src="https://images.velog.io/images/dev_hoklng/post/bb87e776-d8cc-4fc6-ad8e-73eca89cb71a/image.png" alt="">
[실행]</li>
<li>cmd 실행</li>
<li>jupyter notebook
<img src="https://images.velog.io/images/dev_hoklng/post/230eb666-6289-4e48-95cc-9a39a429b031/image.png" alt="">
<img src="https://images.velog.io/images/dev_hoklng/post/6827b910-7319-47a0-823b-3c2042dc5e02/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[노트북 구매기]]></title>
            <link>https://velog.io/@dev_hoklng/%EB%85%B8%ED%8A%B8%EB%B6%81-%EA%B5%AC%EB%A7%A4%EA%B8%B0</link>
            <guid>https://velog.io/@dev_hoklng/%EB%85%B8%ED%8A%B8%EB%B6%81-%EA%B5%AC%EB%A7%A4%EA%B8%B0</guid>
            <pubDate>Sun, 04 Jul 2021 06:07:43 GMT</pubDate>
            <description><![CDATA[<p>원래 뭔가를 시작하기전에 장비를 갖추는 것이 필수죠!</p>
<p>거의 한 달간 고민을 한 끝에 결국 <strong>LG그램</strong>을 사기로 했습니다.
사실 LG나 Samsung노트북 가격이면 window 미포함한 노트북으로 조금 무겁지만 스펙 괜찮은 노트북을 사고 모니터를 하나 더 살 수 있는 가격이긴 합니다.</p>
<p><strong>그램 선택 이유</strong></p>
<ul>
<li>화면이 크고 <strong>가볍다</strong> :  16인치 노트북이지만 1.2kg도 안나갑니다.</li>
<li>LG다 : 개인적으로 뽑기운이 안 좋아서 항상 불량을 자주 뽑는 사람인데, 그러한 이유 때문에 환불이나 <strong>AS처리가 비교적 깔끔한 곳을 선호</strong>합니다.</li>
</ul>
<p>그램을 선택하기 꺼려졌던 점.</p>
<ul>
<li>CPU가 인텔이다: i7인데 4코어네요..? ㅎ 고사양 프로그램은 안 돌릴꺼라서 그냥 넘어갔습니다.</li>
</ul>
<p><strong>택배받은사진</strong>
(옆에 두개는 사은품??)
<img src="https://images.velog.io/images/dev_hoklng/post/f4932d4c-bb32-4598-8af1-ee12b1d675b7/KakaoTalk_20210704_150154318.jpg" alt=""></p>
<p><strong>노트북정보</strong>
노트북 : LG전자 그램 16 노트북 옵시디안 블랙 16Z90P-OA7LK</p>
<p>CPU: i7-1167G7 
화면: 40.6cm 
저장소: 512GB, 
메모리: 16GB (LPDDR4x 42266 Mhz)
기타특이사항</p>
<ul>
<li>색이쁨,배젤이 거의 없음, 1.19kg, 지문인식</li>
<li>2021 07 01 구매기준 쿠팡 최종 구매가격 183만원(와우회원, 카드즉시할인)</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>