전체 글
-
Django 에서 Jupyter Notebook 을 사용할 때 서브 디렉터리를 기본으로 설정하는 방법기술/Django 2021. 9. 24. 20:12
장고에서 django-extensions 를 설치했다면 아래의 명령어를 수행하여 Jupyter notebook 에서 Django 를 로딩할 수 있습니다. $ python manage.py shell_plus --notebook 이 때 노트북이 로딩되는 기본 폴더를 서브디렉터리로 할 경우 Django 를 제대로 로딩할 수 없는 문제가 있습니다. 방법 프로젝트 레이아웃 장고 프로젝트의 구조가 현재 아래와 같이 되어있을 때 project/notebooks 폴더를 노트북을 켰을 때 기본으로 설정하고 싶다고 가정합니다. /project /users /notebooks # 이 폴더를 노트북의 기본 폴더로 설정하고 싶습니다. SampleNotebook.ipynb manage.py settings.py django-e..
-
윈도우에서 원격 제어 (RDP) 혹은 로그아웃 이후에 키보드가 동작하지 않는 문제 해결하기도구 2021. 9. 24. 20:10
윈도우에서 특정 몇 상황에서 키보드가 동작하지 않는 문제가 있습니다. 대표적으로 원격 이후에 키보드가 동작하지 않았습니다. 매번 컴퓨터를 껐다키거나 원격으로 접속해서 계속 진행했어야했습니다. 한.. 2017 년쯤부터 문제를 인지하고 있었으나 최근 해결 문제를 찾아 공유하려고 합니다. 2017 년에는 관련 내용이 많지 않았으나 최근에 원격으로 작업을하다가 해당 문제가 다시 생겨 내용을 찾아보니 꽤 해당 문제들이 옛날보단 조금 더 논의되었습니다. 원인이 되는 것은 찾지 못했으나 해결 방법을 찾아 공유하고자 합니다. 문제가 되는 상황 원격 제어 (RDP) 이후 윈도우의 다른 사용자로 로그인 이후 특정 은행 키도브 보안 프로그램 설치 이후 해결 방법 컴퓨터 재시작 ( 이러고 싶지 않아서.. ) 윈도우 로그아웃(..
-
ECS 에 Key Pair 를 추가하거나 변경하기기술/Infra 2021. 9. 24. 20:04
ECS 로 생성된 EC2 에 SSH 로 접속할 때 Key Pair 를 추가하거나 변경해야할 필요가 있습니다. 하지만 Key Pair 를 연결하려면 EC2 가 반드시 종료되어 있어야합니다. ECS 는 EC2 를 종료시키면 새 EC2 를 원하는 개수를 유지하기 위해 새 EC2 를 띄우기 때문에 종료 하고 나서 직접 Key Pair 를 붙일 수 없습니다. 그럼 ECS 가 생성될 때 Key Pair 를 연결하는 부분을 찾아 설정해주면 된다고 예측했습니다. ( 생각보다 이 내용에 대한 자료가 없었습니다.. ) ECS 에 Key Pair 추가하기 ( + 변경하기 ) ECS 는 Cloudformation 에 의해 AWS 리소스를 생성하고 제어합니다. 때문에 Cloudformation 에서 EC2 를 생성할 때 어떻게..
-
EC2 의 용량 확장하기기술/Infra 2021. 9. 24. 19:58
EC2 를 사용할 때 용량이 부족하게 되어 용량을 늘리는 방법에 대해 설명합니다. 검색했을 때 여러 방법이 있었지만 저는 해당 방법을 사용하여 해결했습니다. AWS Management Console 에서 해야하는 일들 1. 우선 EC2 Dashboard 에 접근합니다. 2. 용량을 변경하고자 하는 인스턴스를 클릭합니다. ( 하나만 체크해주세요! ) 3. 여기서 사용중인 볼륨을 선택합니다. `New EC2 Dashboard` 를 사용하는 경우 - 하단의 `스토리지` 탭을 선택한 합니다. - 내리다보면 `블록 디바이스` 섹션이 존재하는데, 변경하고자 하는 볼륨 ID 의 링크를 클릭합니다. `과거 EC2 Dashboard` 를 사용하는 경우 - 하단의 `설명` 탭을 선택한 후 내리다보면 `블록 디바이스` 가 ..
-
Traefik vs Caddy기술/Django 2021. 9. 24. 19:53
개인 프로젝트에서 사용할 Web Server 를 선택하기 위해 django template 을 찾아보면서 유명한 프로젝트의 설정을 찾아보았습니다. 그 중 가장 유명한 cookiecutter-django 는 traefik 을 wemake-django-template 은 caddy 를 선택하였습니다. 여기에서 있었던 이슈와 선택에 이유에 대해 정리하고자 합니다. Web Server 왜 Web Server 를 사용하나요? 보안 - 내부 서버로의 직접 접근을 허용하지 않음 분산처리 - 백엔드 서버가 여럿일 경우 트래픽을 분산 가용성 - 문제 발생 시 다른 서버가 처리 성능 - 정적 파일의 서빙을 대신함 Nginx vs Caddy vs Traefik 각 웹서버의 특징을 찾아봤습니다. 만약 웹서버를 선택해야하는 상..
-
django 에서 select_related, prefetch_related 에서 추가적인 ORM 을 사용하기기술/Django 2021. 9. 24. 19:49
Django 의 ORM 을 사용하면서 select_related, prefetch_related 를 쓸 때 성능상의 이점을 위해 테이블을 복잡하게 다룰 필요가 있을 때가 자주 존재합니다. 그 때 사용하기 유용한 FilteredRelation 과 Prefetch 를 소개하고자 합니다. FilteredRelation FilteredRelation 은 Django ORM 에서 JOIN 절에 추가적인 조건을 줄 수 있는 방법입니다. 만약 OUTER JOIN 하는 테이블의 크기가 크다면 FilteredRelation 을 사용하여 성능을 개선할 수 있습니다. Filter 의 위치 Where vs Join OUTER JOIN 을 사용할 때 Where 절을 사용한다면 OUTER JOIN 을 완성한 다음 필터링을 합니다..
-
django-filters 를 사용하여 복잡한 환경에서 OrderingFilter 사용하기기술/Django 2021. 9. 24. 19:43
django-filters 를 사용한다면 OrderingFilter 를 FilterSet 쪽에 붙이는 것이 더 직관적이고 편할 수 있습니다. django-filters 라이브러리에서 OrderingFilter 에 대해 간단한 설명이 있지만 조금 더 복잡하게 사용할 필요가 있었기 때문에 어떻게 사용했는지 공유하고자 합니다. 기본 사용법 OrderingFilter 를 한 키로 정의하고 그 안에 fields 속성에 Ordering 에 사용할 필드들을 나열합니다. 위 처럼 작성하면 ?ordering=username,-first_name 와 같이 QueryString 에 포함시킬 수 있습니다. 대부분의 간단한 정렬은 가능하지만, 예외 케이스가 몇개 존재합니다. class UserFilter(FilterSet): ..
-
Django 에서 일시적으로 auto_now, auto_now_add 를 disable 시키는 법기술/Django 2021. 9. 24. 19:39
종종 엑셀에서 가끔 데이터를 마이그레이션 할 때가 있습니다. 그 때 특정 필드를 마이그레이션 데이터 값으로 채워넣어야하지만 auto_now, auto_now_add 가 설정되어 있다면 저장 시 데이터가 마이그레이션 데이터가 아니라 최신 값의 Datetime 으로 설정됩니다. 그래서 그 때마다 사용할 수 있는 문법이 필요했습니다. TemporarilyDisableAutoNowAndAutoNowAdd 주어진 모델의 save, bulk_ 메서드를 사용할 때 auto_now, auto_now_add 필드를 비활성화하는 Context Manager 를 생성하기로 했습니다. 매개변수 Model: auto_now, auto_now_add 를 비활성하고싶은 Django 의 모델을 제공합니다. field_names: 여..