전체보기

Troubleshooting

장고 https적용시 CSRF에러

문제상황: 장고 서버를 https 보안연결로 배포했을때 admin페이지 로그인시에 CSRF에러가 발생하는 문제를 겪었다. 처음에는 Mixed content랑 순간적으로 햇갈려 http를 자동으로 https로 연결하게 수정했다. 어짜피 해야될 일이였어서 나쁘진 않았다. 이후 여러모로 찾아봐도 안나오다가 찾은것이 settings.py에 CSRF_TRUSTED_ORIGINS를 설정해주는 것이었다. 이것으로 문제 해결. 4.0부터 추가된 기능인듯? https://stackoverflow.com/questions/70285834/forbidden-403-csrf-verification-failed-request-aborted-reason-given-for-fail Forbidden (403) CSRF verifi..

하나도 안 중요함

파이썬 일급 함수, 클로저, 데코레이터 메모

가끔 잊는 관계로 간단 메모. 일급 함수란 -> 함수를 일급 객체로 취급하는 것. 파이썬은 일급 함수를 적용한다. 이말인 즉슨 함수를 매게변수로 받고, 리턴할수도 있다는 것. 클로저 -> 만약 함수1를 리턴하는 함수2를 만든다 생각하자. 이때 함수1이 함수2에 있는 특정 변수를 사용한다고 가정하자. 이때 함수2가 함수1을 리턴한 후, 함수2가 삭제되더라도 함수1은 계속해서 정상적으로 기능한다. 함수1은 함수2의 변수를 참조할텐데 이게 어떻게 가능할까? 그것은 바로 클로저로 인해 가능함. 이때 함수1를 잘 뜯어보면 내부에 __closer__인가? 에 저장되있는것을 확인할 수 있다. 데코레이터란? 데코레이터다... 이때 데코레이터 여러개를 사용할 시 아래에서부터 적용? 실행된다.

기타 (Other)

MacOS 루트 디렉토리 정리

유닉스에서부터 내려오는 파일 경로는 뒤에 *를 붙인다. Applications 설치한 앱 저장소 Library System Users bin* 흔히 셸에서 사용하는 실행파일이 이곳에 위치한다. 예를 들어 car, mkdir, rm이 이곳에 위치한다. cores* 오류발생시에 그당시 메모리덤프등이 이곳에 저장된다. etc* -> private/etc 사용자 환경설정 파일이 이곳에 위치한다. 예를 들어 zprofile이 이곳에 위치한다. opt private 맥OS의 역사적인 이유로 생기게된 디렉토리. sbin* 시스템 실행파일이 이곳에 위치한다. 예를 들어 ping, ifconfig가 이곳에 위치한다. tmp* -> private/tmp 임시 파일이 이곳에 위치한다. usr* usr/bin bin과 달리 ..

Troubleshooting

230818 Gunicorn [CRITICAL] WORKER TIMEOUT 오류

문제상황: 장고 웹서버 배포 중 일어난 문제. 서비스는 클라우드 서비스에서 제공하는 외부 DB와 웹서버(nginx+django gunicorn)로 이루어진 상황이었다. 개발 환경에서도 도커 컨테이너를 띄워 문제가 없는 것까지 확인한 후 배포하였으나, 오류가 발생했다. API 요청 시에 매우 긴 시간이 지체된 후 nginx 502 에러가 발생하는 방식의 오류였다. 문제는 DB연결이 제대로 되지 않아서였다. DB를 화이트리스트에 추가된 IP로만 접속이 가능한 방식이었는데, 이에 새로 배포한 웹서버의 주소를 추가해주지 않아 일어난 일이었다. DB 서버와 웹서버 가상머신 모두 Azure서비스를 사용했기에, 간단히 Azure서비스에 대하여 허용해 주는 설정 하나로 문제를 해결할 수 있었다.

서버(Server)/장고 (Django)

장고 필드의 null, blank에 대한 정리

장고 모델의 필드에서는 null과 blank 옵션이 존재합니다. null은 데이터베이스에서 필드가 NULL값을 가질 수 있는지, blank는 폼에서 입력하지 않아도 가능한지를 지정하는 옵션입니다. 이들의 기본값을 따로 설정을 하지 않는다면 False로 지정됩니다. 어느 정도로는 바로 이해가 되나, 문자열필드나 관계형 필드를 마주할 때 헷갈리곤 합니다. 그러기에 명확하게 각 필드별 blank, null의 기능에 대해 정리해 보도록 하겠습니다. 일반 필드 문자열 필드도 아니고, 관계형 필드도 아닌 일반적인 IntegerField, DateField와 같은 필드들은 크게 헷갈릴 것이 없습니다. null=True라면 값을 지정해주지 않았을 때 NULL로 DB에 저장되고, blank=True로 하면 폼에서 값을 ..

CS/자료구조 (Data Structure)

[자료구조] 16. 방향 그래프(Directed Graph = Digraph)

Directed graph란 유방향 간선으로 이루어진 그래프를 의미합니다. 이에 대치되는 개념은 앞선 시간에서 살펴보았던 undireced graph, 즉 무방향 간선으로 이루어진 그래프입니다. Directed graph에서 간선 정리 Undirected graph에서 그래프 탐색을 할 때는 DFS의 경우 unvisited, discovery, back edge의 3가지 간선 종류가 있었고, BFS의 경우에는 unexplored, discovery, cross edge의 3가지 간선 종류가 있었습니다. Directed graph의 탐색된 간선은 4가지가 있는데, 이를 정리해 보도록 하겠습니다. 정점 v에서 시작하여 DFS와 BFS 등으로 탐색된 경로가 정점 v를 루트로 하는 트리와 같은 형식이라는 것을 ..

CS/자료구조 (Data Structure)

[자료구조] 15. BFS

Breadth First Search(BFS)는 그래프 탐색 방식중 하나이다. BFS는 시작 정점을 기준으로 가까운 정점부터 차례대로 방문하는 방식이다. 이런 특성을 통하여 가중치가 없는 간선 그래프에서 가장 가까운 경로를 발견할때 사용할 수 있다. 구현 시작 정점 v에서 출발하고, 큐 Q에 시작 정점을 추가하고 VISITED 상태로 만든 후 다음 과정을 반복한다. 1. Q가 비었다면 종료한다. 정점이 있다면 해당 정점 v에 대하여 다음을 실행한다 2. v에 인접한 정점중 UNVISITED인 정점을 큐에 삽입하고, VISITED상태로 변경한다. 용어 unvisited vertex: 아직 방문하지 않은 정점 visited vertex: 방문한 정점 unexlored edge: 아직 방문하지 않은 간선 di..

CS/자료구조 (Data Structure)

[자료구조] 14. DFS

Depth First Search(DFS)는 그래프 탐색 방식중 하나이다. DFS의 방식은 분기점이 생겼을시, 우선 무시하고 한 방향의 끝에 다다를때 까지 진행한 후, 하나의 경로를 완전히 탐색했으면, 분기점으로 돌아가 분기점을 탐색하는 방식이다. 구현 시작 정점 v에서 출발하여, 다음과 같은 과정을 거친다. 1. 현재 정점이 VISITED라면 재귀를 종료하고 다시 돌아가기 2. 현재 정점을 VISITED로 설정(중복 방문을 막기 위하여) 3. 연결되어 있는 다른 정점 탐색 4. 연결된 모든 다른 정점에 대하여 해당 알고리즘 반복 용어 unvisited vertex: 아직 방문하지 않은 정점 visited vertex: 방문한 정점 unvisited edge: 아직 방문하지 않은 간선 discovery ..

회고 & 기록

앱 개발 프레임워크->웹 프레임워크->웹페이지 렌더링들을 둘러본 이야기

서비스 제작을 위한 앱 개발 수단을 찾아야 했다. 필요 사항은, 빠르게 개발 가능하고, 유지보수의 용이성을 위해 인력이 많은 개발 방식이 필요했다. 크로스플랫폼 고려 처음으로 고려한 것은 네이티브 대신 크로스플랫폼 프레임워크를 사용하는 것이었다. 가장 사용률이 높은 Flutter(플러터)와 React native(RN)를 중심적으로 봤었다. 플러터는 구글에서 관리하고, 자체 언어인 Dart언어를 이용한다. RN은 메타에서 관리하고, React와 비슷하게 자바스크립트를 이용한다. 크로스플랫폼으로 제작하면, 각 안드로이드 개발자와 IOS개발자로 앱 개발자를 두 분류로 나누어 구할 필요가 없어, 단순히 보았을 때 2배의 생산성을 보여준다. 또한 IOS개발 같은 경우에는 애플 기기가 필요한 등 접근 장벽이 높아..

서버(Server)/장고 (Django)

[Django Basic] 4. Template

템플릿(Template) 템플릿이란, 장고 뷰에서 웹사이트를 반환할 때, 웹사이트 정보를 하드코딩으로 생성하지 않고, 다르게 관리할 수 있게 해주는 장고의 기능이다. 사이트 생성을 도와주는 것이기에, 장고를 DRF 등의 프레임워크를 통해 REST API를 사용하는 API 서버용으로 사용한다면 이용할 일이 없는 기능이다. 이때 템플릿은 .html의 파일로 생성을 하며, 내부의 파일은 완전한 html은 아니고, 장고의 템플릿 태그(template tag)를 문법이 추가된 형태이다. 템플릿 파일 작성 위치 그렇다면 템플릿은 어느 위치에 정의할까? 이것에는 크게 2가지 방법이 보통 사용된다. 첫 번째는 각 앱의 templates/ 폴더를 정의해 각 앱별로 모아두거나, 프로젝트의 매인앱에 templates/ 폴더..

Wibaek
'분류 전체보기' 카테고리의 글 목록 (6 Page)