만들게 된 계기 장고에서는 기본적으로 모델 필드에서 사용할 수 있는 enum은 choice 라는 것이 있다. 하지만 필자가 다양한 프레임워크를 사용하면서 느낀 가장 불편한 점은 다음과 같다. IDE에서 제공해주는 hint들을 사용할 수 없다. (Python에서도 Enum이 존재하는 데 이 때 '.'을 찍으면 해당 Enum에 존재하는 값들에 대한 힌트들을 얻을 수 있는데 TextChoice의 경우에는 튜플로 되어 있어서 이러한 힌트들을 사용할 수 없다.) 명시적이지 않다. (밑의 글을 읽어보면 제가 만든 EnumField가 TextChoice Field 보다 더 보기 좋다는 것을 느낄 것이다.) 사용하기 더 편하다. 구현 방법 from django.db.models import CharField class..
1. 문제점 사람이 보기가 힘들다 내가 보고 싶은 outcome만 보는 것이 힘들다. 회사 내에서 장고 버전을 1.11 -> 3.2 로 올라가면서 pytest resultlog가 removed가 되고 reportlog로 대체되었는데 정말 가독성이 안좋아졌다. 다음과 같이 생긴 로그들이 기본적으로 제공하는 로그들이다. 제가 할 수 있는 방법은 다음 두가지가 있었습니다. 생성된 파일을 re building하는 방식 애초에 생성할 때 내가 원하는 내용을 출력해주는 방식 저는 두 방식중 생성할 때 내가 원하는 내용을 출력해주는 것이 더 좋은 방법이라고 생각해서 튜닝 작업을 나서기 시작했습니다. 1. 커멘드 라인 추가 설정 group.addoption( "--summary-report-level", '--srl'..
HTTP GET 캐시 기능?! https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/GET 어느날 한 번 http에 대해서 공부해야겠다고 생각하고 하다가 캐시 가능이라는 것이 눈에 띄었다. 오?! 뭐지 캐시가 된다고 ?!! 그래서 눌러서 자세히 한 번 봤다. 응답에 대해서 캐시가 가능하다는 것이다. 다음 요청에 대한 응답 값으로 해당 캐시 값으로 대체한다는 것이다. 여기에서 나는 두개의 의문점을 가졌다. 1. 디테일 정보에 대해서도 각 아이디에 대해서 캐시를 할까? 2. 그럼 디비를 진짜 들르지 않고 가져올까? 그래서 정말 간단한 세팅으로 준비해봤다.(저는 아무래도 장고가 편해서 장고로 프로젝트를 구성했습니다.) 모델 class Memo(models.Model..
이 글을 쓰게된 계기는 fast api 공식문서와 sqlalchemy 공식문서대로 했을 때 테스트를 진행했을 때 멱등성 있게 진행이 안되었기에 다른 사람들이 이 글을 보고 조금이나마 도움이 되길 하는 생각으로 작성하게 되었습니다. 제가 생각했을 때에도 그렇게 효율적이지는 않은 것 같지만 제가 지금 할 수있는 가장 확실한 방법이기에 글을 남기고자 합니다. 계기 처음에 fast api 공식문서대로 진행을 하였다. def override_get_db(): try: db = TestingSessionLocal() yield db finally: db.close() app.dependency_overrides[get_db] = override_get_db client = TestClient(app) 근데 문제점이..
코드를 짜면서 종종 이중 배열을 초기화하는 경우가 있다. 이때 조심해야할 부분을 알려줄려고 이렇게 글을 적고자 한다. 보통 초기화하는 방법은 3가지 정도 있습니다. 1. [['-'] *3 for _ in range(3)] 이러한 케이스는 어떨까요? 확인해볼까요? 지금 2번째 사진을 보고 어? 뭐지 왜 id가 다 같지? 라고 생각이 문득 들 수가 있습니다. 하지만 안심하세요. 파이썬에서는 스트링에 대해서 모두 공유를 하는 성격을 가지고 있어서 id가 같은 것입니다. 그렇죠? 우리는 하나의 요소가 아닌 row의 id가 같은 지 확인 해봐야 합니다. 결과를 보면 다르는 것을 볼 수가 있습니다. 쉽게 설명하기 위해서 알아보기 쉽게 변환해보도록 해봅시다. xbox1 = [] for _ in range(3): ro..
파이썬 하면서 가장 많이 쓰이는 것 중 하나가 decorator 인 것 같다. 그래서 한 번 정리해볼려고 한다. 우선 데코레이터가 작동하는 원리를 보여줄려고 한다. 1. 데코레이터 시작은 어떻게 할까? def sum_with_plus_decorator(arg): def inner(func): def core(values): return reduce(func, values, power) return core if callable(arg): power = 0 return inner(arg) else: power = arg return inner @sum_with_plus_decorator def add_together(a, b): return a + b print(add_together([1, 3, 11, ..
회사업무를 하면서 celery 작업 중 날짜로 argument를 받는 작업이 많다. 근데 여기서 귀찮은 점은 기본 celery serializer가 json으로 되어 있어서 이를 받았을 때 다시 변환하는 작업을 해줘야 하는데 이 과정에서 휴먼 에러가 너무 발생한 것을 많이 느낀 나는 python 객체로 그냥 넘기는 방법이 뭐가 있을까? 하고 고민을 하게 되었습니다. https://docs.celeryproject.org/projects/kombu/en/stable/userguide/serialization.html Serialization — Kombu 5.2.2 documentation This document is for Kombu's development version, which can be si..
Celery의 병렬 작업을 쓰게 된 계기는 데이터 관련 처리를 하면서 전체 유저에 관한 엑셀 파일을 만드는 작업에서 시작되었다. 하나의 shell에서 작업하기에는 시간이 많이 걸려서 원래 쉘을 한 9개 정도 켜서 작업을 진행했었는데 이러한 작업들을 충분히 작업큐로 해결할 수 있을 것 같은 생각이 들었다. ( 정말 쉘 9개 켜서 복사 붙여넣기 하는 거 시간이 정말 아까웠다. 이걸로 인해 나의 개발 시간 1시간을 벌 수 있게 되었다. 그래서 병렬작업으로 처리하면서 어떻게 돌릴 수 있을까? 에서 시작되어 까먹지 않기 위해 이 글을 적으려고 한다. celery가 돌아가는 기본 원리는 다들 아실거라 생각하고 진행하겠습니다. @shared_task def something_task(self): ... app.con..
- Total
- Today
- Yesterday
- Command Line
- BFS
- 파이썬
- PostgreSQL
- Python
- Java
- 카카오
- 프로그래머스
- 자바
- docker
- 백준
- ubuntu
- DRF
- Celery
- Pattern
- headers
- Linux
- dockerignore
- Collections
- setattr
- django
- env
- Spring
- thread
- postgres
- 그래프
- docker-compose
- 면접
- 알고리즘
- 2021 KAKAO BLIND RECRUITMENT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |