pycon - 우아하게 준비하는 테스트와 리팩토링 ( 테스트 코드 )
아래의 글은 PyCon을 참고 하였습니다.
!https://www.youtube.com/watch?v=S5SY2pkmOy0&t=382s
잠깐, 테스트 코드 작성이 정말 필요한가요?
생각보다 실제 환경에서 동작하는 코드는 복잡하다.
하나의 가장 적은 단위의 코드를 추가하거나 수정했다고 가정한다.
만약 그 코드가 문제가 있으면 그건 정말로 큰 부작용(Side-Effect)를 발생시킨다.
특정 조건에서만 발생하는 버그로 인해, 일부는 동작하고 일부는 동작하지 않는다면 사람이 검수로 버그를 발견하기도 힘들어진다.
이렇게 되면 코드 하나를 추가하는 것이 두려워지고 신뢰할 수 없게 된다.
테...
pycon - 우아하게 준비하는 테스트와 리팩토링 ( 클린코드 )
아래의 글은 PyCon을 참고 하였습니다.
https://www.youtube.com/watch?v=S5SY2pkmOy0&t=382s
깨진 유리창 이론
만약 한 건물의 유리창이 깨진채로 방치되어 있다면 머지 않아 그 건물의 다른 유리창도 깨질 것이다.
만약 문제가 그대로 방치되어 있다면 머지 않아 돌이킬 수 없는 문제를 야기할 수 있다.
보이스카우트 규칙 (Boy Scout Rule)
깨진 유리창 이론을 막기 위함
언제나 처음 왔을 때보다 깨끗하게 해놓고 캠프장을 떠날 것
클린 코드의 원칙
가드 클러즈 (GuardClause)
가드 클러즈 (GuardClaus...
django S3Boto3Storage를 이용하여 객체 public
django media를 s3에 publick으로 올리는 방법
models/video.py
from django.db import models
from video.storage ipmort MediaStorage
class Video(models.Model):
source = models.FileField(upload_to='source', storage=MediaStorage)
thumbnail = models.ImageField(upload_to='thumbnail', storage=MediaStorage)
video/storage.py
from sotrages.backends.s3bo...
DB 인덱스(INDEX)란?
DB 인덱스 생성의 장단점
장점
검색 속도가 빨라 질 수 있다.
시스템의 부하를 줄여 전체 시스템의 성능을 향상 시킨다.
단점
인덱스는 DATABASE 공간을 차지 한다.
인덱스 생성 시 많은 시간이 소요 될 수 있다.
데이터 변경 작업시 (insert, update, delete) 성능이 나빠질 수 있다 ( 빈번할 경우 )
django models.TextChoices (enum)
models.TextChoices에서 name, value, label
class Kind(models.TextChoices):
BEST_NAME = 'best_value', 'best_label'
SALE_NAME = 'sale_value', 'sale_label'
NEW_NAME = 'new_value', 'new_label'
호출 방법
Kind.{ name }.{ name, value, label }
Kind.NEW_NAME.name = NEW_NAME
Kind.NEW_NAME.value = new_value
Kind.NEW_NAME.name = NEW_...
python decorator
데코레이터란
데코레이터란 무엇일까요? 사전적 의미로는 “장식가” 또는 “인테리어 디자이너” 등의 의미를 가지고 있습니다. 이름 그대로, 자신의 방을 예쁜 벽지나 커튼으로 장식을 하듯이, 기존의 코드에 여러가지 기능을 추가하는 파이썬 구문
데코레이터는 함수에 적용할 수 있으며, 둘러싸는 함수 전후에 실행하는 능력이 있다.
데코레이터는 입력 인자와 반환 값을 액세스하고 수정할 수 있으며, 여러 위치에서 유용할 수 있다.
몇 가지 예제
비율 제한
캐싱 값
함수의 런타임 타이밍
로깅 목적
예외 수용 및 전달
인증
Flask 에서 decorator 사용
from fl...
mysql 컬럼명 변경, 컬럼 타입 변경, 컬럼 추가, 컬럼 삭제
컬럼명 변경
ALTER TABLE 테이블명 CHANGE 기존컬럼명 변경할컬럼명 컬럼타입;
mysql> ALTER TABLE user CHANGE score score int;
컬럼 순서변경
ALTER TABLE 테이블명 MODIFY 기존컬럼명 변경할컬럼명 컬럼타입;
mysql> ALTER TABLE user MODIFY nickname varchar(64) AFTER user_id
컬럼 디폴트값 변경
ALTER TABLE 테이블명 ALTER COLUMN 변경할컬럼명 SET DEFALUT 디폴트값;
mysql> ALTER TABLE user ALTER COLUMN age SET DEFAULT ...
프레젠터와 험블 객체
험블 객체 패턴
험블 객체 패턴은 디자인 패턴
테스트하기 어려운 행위와 테스트하기 쉬운 행위를 단위 테스트 작성자가 분리하기 쉽게 하는 방법으로 고안
가장 기본적인 본질은 남기고, 테스트하기 어려운 행위를 모두 험블 객체로 옮긴다.
나머지 모듈에는 험블 객체에 속하지 않은, 테스트하기 쉬운 행위를 모두 옮긴다.
https://martinfowler.com/bliki/HumbleObject.html - 마틴 파울러
프레젠터와 뷰
뷰는 험블 객체이고 테스트하기 어렵다.
뷰는 데이터를 GUI로 이동시키지만, 데이터를 직접 처리하지 않는다.
프리젠터는 테스트하기 쉬운 ...
전체 글 10개, 2 페이지