[Django]cached_property 란?
·
SW개발/Django
안녕하세요, 오늘은 Django의 cached_property에 대해서 알아보려고 합니다. 파이썬의 @property 파이썬에는 @property 라는 데코레이터가 존재합니다. 간단하게 설명하자면 캡슐화를 위해 활용될 수 있습니다. 바로, 클래스 외부에서는 해당 속성의 구현에 대해서는 알 필요가 없고 접근만 가능하게 하는 용도입니다. 관련 내용은 이전에 작성한 포스팅을 참고하시면 좋을 것 같습니다. https://leffept.tistory.com/354 [Python]property로 getter, setter 구현하기 Python에서 getter, setter 구현하는 방법 Python 에서 getter와 setter 함수를 구현하는 방법은 2가지가 존재한다. property() 함수를 이용하는 방법..
2022년 회고 (feat. 다양한 시도와 도전🔥)
·
회고
굉장히 여러가지를 시도하고 도전했던 2022년도 끝났습니다. 개발자를 시작한 이후 정말 매년 한 일들의 최고치를 갱신하는 것 같습니다. 🔥 2022년 동안 무엇을 했는지 정리하는 시간도 가질겸 회고글을 작성하게 되었습니다. 다양한 시도와 도전 이번 해에는 2021년과는 달리 정말 많은 것들을 시도하고 도전했던 것 같습니다. 사실 도전이라는 느낌은 크게 없었는데 이거는 한번쯤 꼭 해봐야지 했던 것들을 대부분 이룬것 같습니다. 이직 가장 큰 이벤트는 이직이었습니다. 2021년도에 이직을 해야겠다고 결심을 한 후 2022년이 되어서야 이직할 회사가 확정 되었습니다. 이 기간동안 힘들기도 힘들었지만 그만큼 나라는 사람에 대해서 생각해보고 많이 되돌아 보았던 시기였던 것 같습니다. 특히나, 면접에서 내가 어떤 사..
[Django]TIME_ZONE, USE_TZ 설정 (feat. 글로벌 서비스)
·
SW개발/Django
오롯이 한국에서만 서비스를 한다면 타임존 설정(DB포함)은 전부 Asia/Seoul 로 통일하면 됩니다. 하지만, 글로벌 서비스를 염두하고 있거나, 추후에 글로벌 진출을 고려한다면 타임존 문제는 사전에 해결하고 가는 것이 좋습니다. 이미 정해버린 타임존을 되돌리는 것은 생각보다 많이 어렵습니다. 글로벌 서비스를 하고있는 프로덕트를 개발하다가 타임존에 대해서 항상 헷갈리는 부분이 있어 공부하는 차원에서 포스팅하게 되었습니다. 대부분의 내용은 장고의 공식 문서를 참고하였습니다. https://docs.djangoproject.com/en/3.2/topics/i18n/timezones/ Django The web framework for perfectionists with deadlines. docs.djan..
[Python]staticmethod vs classmethod (feat. 언제 사용할까?)
·
SW개발/Python
최근에 개발을 하다가 파이썬의 정적 메소드와 클래스 메소드를 언제 사용해야 하는지에 대한 기준이 궁금해졌습니다. 단순하게 눈에 보이는 차이로는 self 와 cls의 차이였는데요. 이 둘을 주로 어떤 상황에서, 어떤 용도로 나누어 사용하는지 알아보려고 합니다. 이와 관련한 유명 아티클이 있어 해당 글의 일부를 차용하였고, 개인적으로 이해한 것을 바탕으로 정리했습니다. https://julien.danjou.info/guide-python-static-class-abstract-methods/ The definitive guide on how to use static, class or abstract methods in Python Doing code reviews is a great way to disco..
[Python]partial 란? (feat. functools)
·
SW개발/Python
partial() 란? positional parameter인 args와 keyword parameter인 keywords로 호출된 함수처럼 동작하는 새 partial 객체를 반환하는 역할을 합니다. 쉽게 말하자면 함수 인자의 값이 미리 채워진 상태로 동작하는 함수(partial 객체)가 반환되는 것입니다. partial 파이썬 공식 Document functools — 고차 함수와 콜러블 객체에 대한 연산 — Python 3.10.8 문서 functools — 고차 함수와 콜러블 객체에 대한 연산 소스 코드: Lib/functools.py functools 모듈은 고차 함수를 위한 것입니다: 다른 함수에 작용하거나 다른 함수를 반환하는 함수. 일반적으로, 모든 콜러 docs.python.org 언제 사..
오픈소스 기여하기 회고 3
·
SW개발/개발이야기
이번 포스팅을 마지막으로 오픈소스 기여하기 시리즈는 끝입니다. 마지막인만큼 오픈소스 컨트리뷰터로서 활동하는 것에 대한 느낀점을 쭈욱 나열하는 형식으로 적어보려고 합니다. 오픈소스를 왜 시작했어요 ? "유명한 오픈소스에 내 코드를 남겨보자" 시작하자고 마음을 먹은 이유자체는 정말 순수했습니다. 물론 앞선 포스팅에서 다양한 이유들도 적어두긴 했습니다만, 위와 같은 이유가 제일 컸습니다. 자랑하거나 유명해지고 싶었다고 할까요? 쉽지 않은 길이라는 것을 미리 알고는 있었지만, 때로는 이런 무모하고 단순한 이유들이 가장 큰 원동력이 되기도 합니다. 어렵거나 큰일을 이루어 내기 위해서는 해내야하는 수많은 일들이 있는데 이런 순수한 감정들은 정말 큰 도움이 됩니다. 패치할만한 버그를 찾는 과정은 고달프다 오픈소스를 ..
오픈소스 기여하기 회고 2 (feat. Regression Test)
·
SW개발/개발이야기
안녕하세요, 이번 포스팅에서는 코드 관점에서 Django 버그 패치 과정을 다뤄보려고 합니다. 문제를 접근하는 방식, 해결 과정, 느낀점 등의 내용이 담겨 있습니다. 버그 재현하기 (Reproduce bug) 우선 해당 이슈를 패치하기로 결정했다면 가장 먼저 해야할 일은 버그를 재현하는 것입니다. 대부분의 이슈들은 자세한 설명과 재현 방법이 나와있어 그대로 따라하면 됩니다. 만약 그렇지 않다면 이슈 리포터에게 조금 더 상세한 내용이나 샘플 코드를 부탁하면 됩니다. 제가 할당했던 티켓의 경우에는 명확한 재현 방법, version등이 나와 있어 재현에 어려움을 겪지는 않았습니다. https://code.djangoproject.com/ticket/34052 #34052 (migrate --check stil..
오픈소스 기여하기 회고 1 (feat. Django Contributor)
·
SW개발/개발이야기
안녕하세요, 오랜만에 블로그 포스팅으로 찾아왔습니다. 회사에서도 바쁜 시간을 보냈고 여러 오픈소스에 관심을 가지면서 시간을 보냈던 것 같습니다. 오늘은 틈나는대로 관심을 가지고 있던 오픈소스 생태계에서 Django Contributor가 된 경험을 공유하려고 합니다. 바로 시작하겠습니다! 오픈소스 Contributor 되기로 마음 먹기 시작하기 전 오픈소스와 관련된 여러 글들을 읽어 보았는데 공통적으로 하는 말이 꽤나 고되며, 시간이 많이 소요된다라는 말들을 종종 볼 수 있었습니다. 하지만 그럼에도 불구하고 장점이 더 많았고 무엇보다 너무 해보고 싶었던 일이었기에 올해 안에는 오픈소스에 기여를 무조건 해보자 라는 마음가짐으로 시작했습니다. 제가 오픈소스를 시작하면서 기대했던 효과는 다음과 같습니다. 각국..
[Python]파이썬 정렬 알고리즘, Timsort
·
SW개발/Python
파이썬은 sort(), sorted() 메서드를 통해 정말 간편하게 정렬된 값을 얻을 수 있습니다. 사용하는 방법도 매우 쉽기에 내부 동작 원리에 대해서는 깊게 생각해본 적이 없었습니다. 이번 포스팅에서는 파이썬이 어떤 정렬 알고리즘을 사용하는지 알아보도록 하겠습니다. Timsort 파이썬은 Tim sort라는 정렬 알고리즘 표준으로 채택되어 사용 중입니다. Timsort는 삽입정렬과 병합정렬을 합친 알고리즘입니다. 2001년도에 고안되었으며, 창시자인 Tim Peters의 이름을 따왔습니다. 또한, 이 알고리즘은 파이썬 뿐만 아니라 Java SE7, Android, 구글 크롬 엔진등 다양한 곳에서 채택되어 사용중입니다. Timsort 특징 현실 세계의 데이터들은 완전 무작위가 아니라 어느정도는 정렬이..
[Python]네임스페이스란(Namespace) ?
·
SW개발/Python
지난번 Zen of Python에 잠깐 언급된 파이썬의 네임스페이스에 대해 알아보는 포스팅을 써보려고 합니다. 지난 포스팅 -> Zen of Python https://leffept.tistory.com/396 [Python]The Zen of Python - 파이써닉한 코드 파이썬에서의 디자인 원칙을 잘 나타내는 The Zen of Python이라는 것이 존재한다. 여기에 존재하는 원칙들을 바탕으로 자신이 작성한 코드가 파이써닉한 코드인지 아닌지에 대해서도 생각해볼 수 leffept.tistory.com 네임스페이스란 ? 네임스페이스란 특정한 객체를 이름에 따라 구분할 수 있는 범위를 말합니다. 파이썬 내부의 모든 것들은 전부 객체로 구성되어 있고, 이들은 특정 이름들과의 매핑 관계를 가지고 있습니다...