본문 바로가기

분류 전체보기232

Django 코드 품질 향상시키기(with black, isort, flake8, pre-commit, makefile) Django pycharm black 세팅하기 0. black Black은 Python 코드 포맷터로, 코드를 일관되고 깔끔하게 유지하는 데 사용됩니다. Black은 "The uncompromising code formatter"라는 슬로건을 가지고 있으며, 개발자가 스타일 가이드에 대해 신경 쓸 필요 없이 자동으로 코드를 깔끔하게 정리해 줍니다. Black은 PEP 8-Python의 공식 스타일 가이드를 기반으로 하되, 몇 가지 스타일 선택을 추가로 제공합니다. Black의 주요 특징: 결정적 포맷팅: 동일한 코드에 대해 항상 같은 결과를 제공합니다. 코드의 가독성 증진: 긴 줄을 적절하게 분할하고, 여러 스타일 요소를 자동으로 조정하여 코드의 가독성을 향상시킵니다. 손쉬운 통합: Git 훅, 편집기 .. 2024. 4. 22.
RDS, EC2, Openvpn, TablePlus을 이용해서 VPN 터널링구현하기 VPN, Tunneling을 이용해서 RDS에 연결하는 이유 VPN(가상 사설망) 및 터널링을 사용하여 RDS(관계형 데이터베이스 서비스)에 연결하는 이유는 주로 보안과 네트워크 접속성을 강화하기 위해서입니다. 여러 이유로 인해 이러한 접근 방법을 선택할 수 있습니다: 보안 강화: VPN 및 터널링은 데이터 전송을 암호화하여 보안을 강화합니다. 이를 통해 데이터가 노출되거나 무단으로 접근되는 것을 방지할 수 있습니다. 인증 및 접근 통제: VPN을 사용하면 네트워크에 연결된 각 디바이스가 신뢰할 수 있는 디바이스인지 확인할 수 있습니다. 이는 불법 접근을 방지하고 권한이 없는 사용자의 데이터베이스 접근을 막을 수 있습니다. 외부 접속 보안 강화: 인터넷을 통해 직접 RDS에 연결하는 것은 보안 위협에 노.. 2024. 3. 1.
DRF throttling 사용기 스로틀링 개념 스로틀링은 특정 기간 동안 시스템 또는 장치가 만들 수 있는 요청 수를 제한하는데 사용되는 기술입니다. 제한을 사용하는 데는 다음과 같은 몇가지 이유가 있습니다. 시스템 또는 네트워크의 과부하를 방지하려면 : 시스템이 한 번에 너무 많은 요청을 받으면 과부하 상태가 되어 모든 요청을 효과적으로 처리할 수 없습니다. 스로틀링은 시스템이 용량 제한 내에서 유지되도록 하는 데 도움이 됩니다. 악의적인 활동으로부터 보호하기 위해 : 경우에 따라 과도한 요청으로 시스템을 압도하려는 악의적인 공격에 대한 방어 수단으로 제한을 사용할 수 있습니다. 가능한 요청 수를 제한함으로써 시스템은 이러한 공격을 더 잘 견딜수 있습니다. 예를 들면 음식검색 API를 만들었는데 초당 막 1만회 요청이 들어오면 이것을.. 2023. 1. 8.
Django replica 적용기(RDS + Postgresql) Database 이용 시 Replica를 사용하는 이유 High availability(고가용성) : replica 중 하나가 다운되더라도 데이터베이스를 항상 사용할 수 있도록 복제본을 사용할 수 있습니다. 예를 들면 Django에서 사용할 때 어떤 쿼리가 데이터베이스를 길게 잡아먹어서 데이터베이스가 다운되어도 읽기전용 Replica가 살아 있으면 해당 데이터베이스로 대신 사용 가능해서 고가용성으로 사용할 수 있습니다. Load balancing(로드벨런싱) : replica를 사용하여 들어오는 요청의 로드를 여러 시스템에 분산하여 데이터베이스의 성능과 확장성을 향상 시킬 수 있습니다. 예를 들면 데이터베이스 한개에서 Read와 Write를 사용하는데 특정 API를 Read하는 전용 데이터베이스를 생성시.. 2023. 1. 8.
admin action custom 하기 마케터 분의 요청 기존에 생성한 미션 7개를 2번 더 복사해서 14개를 만들어 총 21개를 만들고싶다고 했습니다. 이렇게 해야 단순 반복 action을 줄이고 더 빠르게 action 할 수 있기 때문입니다. 서버 쪽에서 해결 할 수 있는 방법 Django Admin에서 어떤것을 제공하는지 찾아보다가 custom action을 이용하면 해결할 수 있습니다. admin에서 actions를 이용해서 해결 이제 이러한 문제를 해결하기 위해 공식문서에서 action부분을 확인했습니다. Admin Action(개념) Actions as ModelAdmin methods 다음 예시는 함수로 정의된 make_published action을 보여줍니다. 완벽하게 괜찮지만 코드 설계 관점에서 보면 완벽하지 않습니다. Ac.. 2023. 1. 3.
0x00 에러해결(A string literal cannot contain NUL (0x00) characters) 발생한 문제 데이터를 bulk_create or bulk_update해야하는데 데이터 사이에 0x00이 들어간 데이터 때문에 저장할때마다 에러가 발생했습니다. 에러 이름 A string literal cannot contain NUL (0x00) characters. 해당 데이터가 어떤식으로 들어오는지 로그를 조회하니 다음과 같은 데이터가 들어온 것을 확인할 수 있습니다. "달리는커피 시그니처\x00파스타, 두부가라아게 추가" 이렇게 \x00데이터 때문에 다음과 같은 에러가 나왔습니다.. 처음에는 그냥 string에서 제공하는 replace()로 해결하려고 replace(’\x00’, ‘’)로 처리했는데 변경한것 없이 그대로 "달리는커피 시그니처\x00파스타, 두부가라아게 추가" 이렇게 들어왔습니다. 그.. 2022. 12. 19.