반응형

이번 강의에서는 영어 원서를 일단 읽어 보자!! 라는 말씀을 해주십니다.


책선택


원서를 추천해주시는데 대상은 일반적인 대한민국 사람입니다.

시작 할 때 채을 고르는 기준은 초등저학년 챕터북 입니다.


1. 아서 챕터북!!

2. magic tree house

3. the jack file

4. flat stanley


오디오북이 반드시 함께 준비 된 책을 구매하자.


원서 읽기 시작

- 낭독으로 읽자

- 리딩분량은 하루에 한 챕터 (2주에 한 권씩 완독)

(하루에 30분 ~ 1시간씩 꾸준히 해도 실력이 쑥쑥는다. 욕심내지 말자)

- 소리내면서 동시에 의미파악 까지가 이상적

- 되나 안되나 확인 해보고 되면 ok, 안되면 문제를 찾아 해결하고 되게 만든다

(안되면 계속 훈련)


영어원서 낭독 훈련 방법

- 단어 체크(리딩전에 그날 챕터 단어를 쭉 읽어 본다.)

- pre-listening(책 없이 오디오북만 들어 본다.)

- pre-reading(소리내지 말고 눈으로만 쭉 읽어본다.)

- echoing(오디오북 틀어 놓고 속으로 따라 읽는다.)

- shadowing(오디오북 한 문장씩 듣고 한 문장씩 따라 읽는다. 여기서는 꼼꼼히 의미, 발음 등 확인한다.)

- read aloud(오디오북 없이 소리내어 읽고 녹음 그리고 반드시 들어봐야 된다.)


포인트 3가지

- 따라 할 원어민 음성을 반드시 듣는다.

(따라하야 될 롤모델이 필요해서 혼자 멋대로 막 하면 안돼.)

- 실제 소리내어 읽어야 된다.

- 내가 어떻게 소리 내는지 반드시 들어봐야 된다.

(내가 어떻게 따라 하는지 확인을 해야 돼.)


이 3가지를 충족이 안되면 삽질의 위험이 크다.

단어는 한번 해두면 두고두고 계속 써먹을 수 있다.


유튜브 링크

반응형
반응형



파트1, 파트2에서는 django의 기본적인 세팅 및 url, view 그리고 db관련한 모델(스키마) 만드는 법을 익혔습니다.

파트3에서는 위의 내용기반으로 web application을 만들어가기 시작합니다. web application은 사용자가 request 하면 요청의 따른 response를 해줍니다.

사용자에게 응답을(보여) 주기 위한 template에 대해서 다루게 됩니다. 순수 django를 사용한다면 앞단을 template로 분리를 해주지만 react와 같은 다른 프론트를 사용한다면 template를 사용하지는 않습니다.


views.py와 urls.py를 작성해보겠습니다.


polls/views.py

def detail(request, question_id):

    return HttpResponse("You're looking at question %s." % question_id)


def results(request, question_id):

    response = "You're looking at the results of question %s."

    return HttpResponse(response % question_id)


def vote(request, question_id):

    return HttpResponse("You're voting on question %s." % question_id)


polls/urls.py

from django.urls import path

    

from . import views


urlpatterns = [

    # ex: /polls/

    path('', views.index, name='index'),

    # ex: /polls/5/

    path('<int:question_id>/', views.detail, name='detail'),

    # ex: /polls/5/results/

    path('<int:question_id>/results/', views.results, name='results'),

    # ex: /polls/5/vote/

    path('<int:question_id>/vote/', views.vote, name='vote'),

]

cf) url 작성시 위와 같이 주석으로 예시 반드시 작성해주자.

브라우저에서 /polls/34/ 호출 시 detail view가 호출이 됩니다. 

name를 작성해주는 이유는 name 앞의 인자들에 대한 alis 같은 존재입니다. template에서 다른 url을 호출 할 때 풀네임을 적어주는 것이 아닌 name만으로도 호출이 가능합니다.

question_id 이름 지정은 view에서 id를 인자로 받아 사용하기 때문에 네이밍도 중요합니다.


view가 리턴 하는 것은 2가지 중 하나입니다. HttpResponse 또는 Http404 둘 중 하나를 리턴합니다. view에서는 db에서만 데이터를 갖고 올 수 있는게 아닌 다양한 파이썬 라이브러리를 활용하여 pdf, xml 등등 데이터를 가공하여 리턴을 할 수도 있겠습니다.

위의 view는 출력 내용들이 하드코딩 되어 있습니다. 출력 내용이 변경 된다면 파이썬으로 되어 있는 view 코드를 수정해줘야 됩니다. 우리는 로직과 render되는 단을 분리해주기 위해서 template를 사용합니다.


template를 작성하고 로직을 담당하는 view를 수정해봅시다.


polls/templates/polls/index.html

{% if latest_question_list %}

    <ul>

    {% for question in latest_question_list %}

        <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a$

    {% endfor %}

    </ul>

{% else %}

    <p>No polls are available.</p>

{% endif %}


polls/views.py

from django.http import HttpResponse

from django.template import loader


from .models import Question


def index(request):

    latest_question_list = Question.objects.order_by('-pub_date')[:5]

    template = loader.get_template('polls/index.html')

    context = {

        'latest_question_list': latest_question_list,

    }

    return HttpResponse(template.render(context, request))

view에서는 template를 로드하여 HttpResponse를 통해서 응답을 준다.


위 대신 shortcut인 render을 사용해보자 (polls/views.py)

from django.shortcuts import render


from .models import Question


def index(request):

    latest_question_list = Question.objects.order_by('-pub_date')[:5]

    context = {'latest_question_list': latest_question_list}

    return render(request, 'polls/index.html', context)


django는 2가지 응답이 있다고 하였습니다. HttpResponse 그리고 Http404 입니다. 다음으로는 에러가 발생하는 경우 Http404를 이용하여 처리해보도록 하겠습니다.


polls/views.py

from django.http import Http404

from django.shortcuts import render


from .models import Question

# ...

def detail(request, question_id):

    try:

        question = Question.objects.get(pk=question_id)

    except Question.DoesNotExist:

        raise Http404("Question does not exist")

    return render(request, 'polls/detail.html', {'question': question})


위 대신 shortcut인 get_object_or_404을 사용해보자 (polls/views.py)

from django.shortcuts import get_object_or_404, render


from .models import Question

# ...

def detail(request, question_id):

    question = get_object_or_404(Question, pk=question_id)

    return render(request, 'polls/detail.html', {'question': question})


shortcut을 사용하면 간단하게 처리 할 수 있습니다. django는 정형화 된 작업은 shortcut을 제공하니 많이 참고해야겠습니다.


마지막으로 url에서 지정한 name을 이용하여 template는 하드코딩을 없에고 다음과 같이 변경 할 수 있습니다.


변경 전

<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>


변경 후

<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>



최대한의 하드코딩을 없에고 각각의 로직을 분리해야 됩니다. 각각 수정 하였을 때 다른 부분에서 변경이 없도록 다시 말해서 영향범위를 줄이도록 코드를 작성 해야겠습니다.

반응형
반응형

1. NASM 다운로드

http://www.nasm.us/


어셈블리 코드를 컴파일해주는 컴파일러.

boot.asm -> boot.img

컴파일 방법 : nasm -f bin -o boot.img boot.asm


2. VM Ware 다운로드

https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0


boot.img 이미지 파일을 실행시키기 위한 가상환경.

직접 소스를 작성하면서 직접 만든 os를 실행시켜 본다.


3. atom  또는 VSC 다운로드

https://atom.io/

https://code.visualstudio.com/


소스 editor로 VSC 사용.

반응형
반응형


앞장의 파트1에서는 기본적인 django의 실행, app 생성, url 그리고 view에 대한 내용이었습니다.

파트2 에서는 django의 db, model과 django에서 제공해주는 admin의 대해서 설명해줍니다.


Model 부분

settings.py 파일을 열어 보면 다양한 django의 세팅을 볼 수 있습니다. 이번 장에서는 db관련 내용만 집중적으로 보겠습니다.

django는 default db로 SQLite를 사용합니다.쿠키커터를 사용하셨다면 postgresql을 사용합니다.

디폴트 db인 SQLite를 사용하신다면 특별한 세팅을 할 필요가 없지만 다른 db를 사용하신다면 설정변경을 필요로 합니다.


settings.py 작성

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.sqlite3',

        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

    }

}

ENGINE: 사용하시는 DB마다 작성 라이브러리들이 정해져 있습니다. (ex) django.db.backends.postgresql / django.db.backends.oracle)

NAME: 하시는 db 명을 작성해줍니다.


다른 db를 사용하신다면 USER / PASSWORD / HOST를 작성해줘야 됩니다.

또한 create 명령어를 통해서 database를 생성해주시는 것도 잊지 말아주세요.


쿠키터터를 통한 설정 파일 base.py 작성

DATABASES = {

#    'default': env.db('DATABASE_URL', default='postgres:///polls'),

    'default': env.db('DATABASE_URL', default='postgres://[계정]:[패스워드]@localhost:5432/[db명 polls]'),

}


db는 이정도만 참고하시면 설정에는 문제가 없으실 겁니다.


다음으로는 INSTALLED_APPS 부분입니다.

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'blog',

]

아래 blog 를 제외하고는 디폴트로 설정되어 있는 앱이며 자세한 내용은 문서를 참고하시면 되겠습니다.

마지막의 blog 부분은 개발자가 생성한 app입니다. 생성 후에 명시를 해줘야 생성한 app을 사용할 수 있겠습니다.


cf) 설치된 app들에 대해서 문서를 확인하고 소스들을 본 다음에 이해를 해봐도 재미가 있겠다.

현재는 django를 익히는 단계이므로 익히는데 중점을 둔다.


app과 db 설정도 끝났으니 db를 사용하기 위해서 테이블을 설정해야됩니다.

보통 일반 db는 스키마가 나오면 테이블을 직접 생성을 하지만 django는 models.py 파일에서 db 모델을 생성합니다.


polls/models.py 작성

from django.db import models


class Question(models.Model):

    question_text = models.CharField(max_length=200)

    pub_date = models.DateTimeField('date published')


class Choice(models.Model):

    question = models.ForeignKey(Question, on_delete=models.CASCADE)

    choice_text = models.CharField(max_length=200)

    votes = models.IntegerField(default=0)

위 코드의 모델은 django.db.models.Model의 클래스이다. 그냥 봐도 굉장히 직관적이다.

각각의 모델들이 생성 될 때는 구분할 수 있는 넘버형 값들이 생성된다.(id가 보이지 않게 자동으로 생성된다.)

Field는 Field Class인스턴스로부터 만들어진다. char형인 경우는 CharField, 날짜를 나타내고 싶은 경우는 DateTimeField 와 같이 사용한다.

필요에 따라서는 인자도 요구 되어지는데 최대로 작성하는 문자 길이라든지 또는 디포틀 값을 설정 할 수도 있다.



python manage.py makemigrations

python manage.py migrate


makemigrations 명령어는 django에게 너의 모델에서 변화가 있으면 모델을 수정하는 작업을 시키는 작업이다. 수정된 작업은 디스크에 다시금 저장이 된다.

그리고 migrate 명령어를 통해서 다시 적용하는 작업을 한다.



__str__() 의 사용

from django.db import models


class Question(models.Model):

    #....


__str__(self):

    return self.question_text


class Choice(models.Model):

    #...


__str__(self):

    return self.choice_text

모델의 한 로우를 호출 하면 id가 나오는 대신 __str__을 사용하여 사람친화적으로 값을 설정하자.



Admin 부분

python manage.py createsuperuser

python manage.py runserver

django의 강점 중 하나는 어드민을 제공해준다는 것이다.

서비스 개발에만 집중하면 된다.

createsupersuer 명령어를 통해서 어드민 계정을 설정해주고 runserver 를 통해서 서버를 시작하자.

그리고 http://127.0.0.1:8000/admin/ 접속하여 어드민 접속을 해보자.


admin.py에 해당 app을 등록을 해줘야 어드민에 노출이 되는 것을 잊지말자.


튜토리얼을 뿐만 아니라 배울점

1. 현재 일은 DB관련 업무를 하고 있다. django와 db부분을 연결 해주는 부분에 대해서 이슈들을 해결하고 분석을 해보는 것도 재미와 정말 큰 도움이 되겠다. 

최적화 관련해서도 배울 수 있다면 정말 베스트베스트.


반응형
반응형

#2파트는 Grid 파트이다.

Flexbox를 사용하다 보면 새로운 자식컴포넌트가 생성된다면 순서대로 생성되는 것이 아닌 순서가 깨져버리는 모습을 볼 수 있다.

웹사이트의  ui를 구현하기에는 조금 부족한 느낌이 있다.

그래서 사용하는 것이 Grid 이다.

Grid는 테이블의 모습으로 row와 column 형태로 UI를 구현 할 수 있다.


#2 Grid 설명은 반으로 나눌려고 한다.

앞부분은  Grid의 기본적인 사용법이고 후반부는 여러가지 팁들의 대한 사용법을 알려준다.


강의내용중.

- display: grid

- grid-template-columns / grid-template-rows 옵션 사용 (column과 row 값 지정)

- grid-auto-column 옵션 사용 ( 위의 옵션 값 입력 시 auto 옵션을 사용하여 동적으로 생성 가능 _ : 60px)

- grid-auto-flow 옵션 사용 (디폴트는 row!!)

- grid-template-areas 옵션 설정 후 자식은 grid-area 지정으로 사용

- fr 측정 단위 사용 (grid-template-columns: 2fr 1fr 2fr 1fr;)

- repeat(5, 1pr) 반복 사용법

- minmax 사용법 ( grid-template-columns: minmax(400px, 2fr) repeat(3, 1fr)

- max-content / min-content 사용법 (위의 minmax 위치에서 사용)

- auto-fit / auto-fill

- justify-content / align-content / place-content 옵션 사용

반응형

+ Recent posts