분류 전체보기

    [Django]Docker-compose로 Django 환경 구축하기 1 - Django

    이번 시리즈는 기존에 존재하는 장고 프로젝트나, 새로 시작하는 프로젝트를 Docker-compose를 활용하여 도커라이징 하는 과정에 대해서 올릴 것이다. 일반적으로 Django에 Postgres, Nginx, Redis, RabbitMQ, Celery와 같은 것들을 붙여서 사용하기 때문에 이에 대해서 순차적으로 진행할 예정이다. 이번 포스트에서는 Django 프로젝트를 컨테이너로 띄워보는 것이 목표이다. 기존에 진행중인 프로젝트를 가지고 있는 사람이면 그대로 진행하면 될 것이고 새롭게 프로젝트를 시작하는 사람이라면 프로젝트와 앱을 생성한 후 정상적으로 장고 서버가 실행되는 상태에서 작업하면 된다. 도커 데스크탑 설치 해당 포스팅의 환경은 Mac을 기준으로 할 것이다. 아래의 링크에서 도커 데스크탑을 설..

    [Webhook]웹훅이란?

    Webhook 이란? "A webhook in web development is a method of augmenting or altering the behavior of a web page or web application with custom callbacks." (위키피디아 발췌) 위키피디아의 설명에 따르면 웹훅은 웹페이지 또는 웹앱애서 발생하는 특정 행동(이벤트)들을 커스텀 Callback으로 변환해주는 방법이다. 조금 더 풀어서 설명하자면, 일반적인 API(Polling)는 클라이언트가 서버를 호출하는 방식이다. 하지만 웹훅의 경우 서버에서 특정 이벤트가 발생했을 때 클라이언트를 호출하는 방식이며 "역방향 API"라고도 부른다. callback URL은 서버측에서 이벤트가 발생했을 때 클라이언트..

    [Kubernetes]쿠버네티스란?

    Kubernetes 란? K8s라고도 알려진 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다. 쿠버네티스는 다양한 애플리케이션과 서비스들을 컨테이너화 시킨 다음, 서버에 가져올 경우 적절하게 배치를 해주며 관리를 해주는 Container Orchestration 시스템이라고 생각하면 된다. Container Orchestration 시스템에는 Kubernetes 이외에도 Docker Swarm, Apache Mesos 등이 존재한다. 쿠버네티스의 여정 전통적인 배포 시대 초기에는 애플리케이션을 물리 서버에서 실행하는 방식이었다. 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당에 문제가 발생했다. 예를 들어 물리 서..

    [Docker]Docker(도커)란? (feat. Linux 컨테이너)

    Docker 란? 도커는 IT 소프트웨어로서 Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다. 도커를 사용하면 컨테이너를 매우 가벼운 모듈식 가상머신처럼 다룰 수 있게 된다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있고, 애플리케이션을 클라우드에 최적화하도록 지원한다. Linux 컨테이너란? Linux 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다. 하드웨어를 가상화하는 가상 머신(VM)과 달리 커널을 공유하는 방식이기 때문에 실행 속도가 빠르고, 성능상의 손실이 거의 없다. 컨테이너로 실행된 프로세스는 커널을 공유하지만, 리눅스 namespaces, cgro..

    [Vue]Computed 와 Watch 언제 사용할까? (feat. computed vs methods)

    Vue.js 공식 문서 (Computed vs Watch) computed와 watch — Vue.js Vue.js - 프로그레시브 자바스크립트 프레임워크 kr.vuejs.org Computed 속성 Vue.js 의 템플릿 문법에서 Javascript 표현식을 사용하면 원하는 데이터나 연산을 DOM에 쉽게 그릴수 있다. 하지만 복잡한 연산을 템플릿 안에서 하게 될 경우 코드를 이해하고 유지보수하기 어려워진다. {{ message.split('').reverse.join('') }} 위의 예시는 템플릿 문법에서 message 데이터를 역순으로 출력한 예제이다. 지금은 단순해보이지만 연산이 많아진다면 이해하는데 어렵기 때문에 computed 속성을 사용하는 것이 좋다. Computed 사용 방법 원본 메시지..

    [Python]파이썬의 언더스코어(_)에 대하여

    파이썬에서는 종종 언더스코어(_)가 사용되는 경우가 있다. 다른 언어와는 달리 파이썬에서는 이 문자는 여러 의미를 가지고 있다. 크게 5가지의 경우에서 언더스코어가 사용된다. 인터프리터에서 마지막 값을 저장할 때 값을 무시하고 싶을 때 변수나 함수명에 특별한 의미/기능을 부여하고 싶을 때 국제화/지역화 함수로써 사용할 때 숫자 리터럴값의 자릿수 구분을 위한 구분자로써 사용할 때 인터프리터에서 사용되는 경우 Python 3.6.1 >>> 10 10 >>> _ 10 >>> _ * 5 50 >>> _ - 10 40 파이썬 인터프리터에서는 마지막으로 실행된 결과값이 _라는 변수에 저장된다. 이를 활용해 위처럼 사용할 수도 있다. 값을 무시하고 싶은 경우 # 언패킹시 특정값을 무시 x, _, y = (1, 2, ..

    [Vue]v-if vs v-show

    Vue.js 공식 문서 (v-if , v-show) 조건부 렌더링 — Vue.js Vue.js - 프로그레시브 자바스크립트 프레임워크 kr.vuejs.org v-if v-if 디렉티브는 조건에 따라 블록을 렌더링 하기 위해 사용된다. v-if 의 경우 디렉티브의 표현식이 true 값을 반환할 때만 렌더링 되어 DOM에 추가되게 된다. // v-if 값이 true일 경우에만 렌더링 됨 블로그 이름은 leffe 입니다 블로그 이름은 leffe가 아닙니다 v-show 반면에 v-show의 경우 엘리먼트는 항상 렌더링되며 DOM에 남아있다. v-show 는 단순히 display의 CSS 속성을 통해 표시를 제어한다. // v-show 엘리먼트는 항상 렌더링 됨 // blog 이름이 leffe가 아닐 경우 dis..

    [Django]추천하는 모듈 import 순서

    장고에서 개발을 진행하다 보면 수없이 쌓이는 import 문을 볼 수 있다. 그럴때마다 하나의 기준을 가지고 순서를 맞춰놓지 않으면 어디에 위치한지 파악하기 힘들고 심지어 이 모듈을 사용을 했는지 안했는지에 대한 판별도 어려워지게 된다. 따라서 일련의 규칙을 적용해서 import 를 작성하는 것이 보기에도 좋고 관리에도 편할 것이다. 나의 경우에는 다음과 같은 규칙을 따라서 작성을 하고 있다. Django 모듈 import 순서 # 파이썬 표준 라이브러리 임포트 from math import sqrt from os.path improt abspath ... # 코어 장고 임포트 from django.db import models from django.utils.translation import ugett..

    [Django]DRF SerializerMethodField() 란?

    SerializerMethodFiled() 란? 연결되어 있는 serializer 클래스에서 메서드를 호출하여 값을 가져올 수 있는 읽기 전용 필드이다. 객체의 serializer 된 표현에 모든 종류의 데이터를 추가하는데 사용할 수 있다. 언제 사용해야 하나요? 객체를 serializer 할 때 모델에 없는 필드를 추가하고 싶거나, 모델에 있는 값을 변형해서 새로운 필드의 값으로 넣고 싶을 때 SerializerMethodField()를 사용하면 된다. 어떻게 사용해야 하나요? User 객체의 모델에는 full_name 필드만 있다고 가정하자. # Serializer된 User 객체 "id" : 1, "full_name" : '{"first_name": "Yoon", "last_name": "Jun K..

    [Django]FBV vs CBV (함수형 뷰 vs 클래스형 뷰)

    Django는 MTV(Model - Template - View)패턴을 기반으로 하는 프레임 워크이다. 여기에서 V에 해당하는 view를 작성하는 방법에는 두 가지가 존재한다. 함수형 뷰 (Function based view) 클래스형 뷰 (Class based view) FBV 란? 뷰를 작성할 때 함수 형식으로 작성하는 방식이다. 아래와 같이 간단하게 뷰 로직을 작성할 수 있다. # urls.py urlpatterns= [ path('', views.index, name='index'), ] # views.py @api_view(['GET', 'POST']) def index(request): if request.method == 'POST': return HttpResponse("Post metho..