오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Web Programming 53

[Django] 이미지 파일업데이트시 기존 파일 삭제하기

1. 직접 구현 원하는 모델의 save method를 아래와 같이 오버라이드 해주면 된다. import sys class Blablabla(model.model): def save(self, *args, **kwargs): #해당하는 model 클래스를 갖고온다. mod = getattr(sys.modules[__name__], self._meta.object_name) try: obj = mod.objects.get(id=self.id) except: obj = None else: for field in obj._meta.fields: field_type = field.get_internal_type() #필드 이름이 FileField나 ImageField 라면 if field_type == 'File..

[Django] python manage.py를 하면 무슨 일이?

가장 많이 사용하는 Django 명령어 순위를 뽑아보면 당연히 아래의 명령어들이 상위에 있을 것이다. python manage.py makemigrations python manage.py migrate python manage.py runserver python manage.py startapps python manage.py createsuperuser 하지만 장고를 사용하는 4개월 동안 단 한번도 이 manage.py가 무슨 일을 하는지 생각해본적이 없다.. 하지만 문득 얘는 뭘하는 애지 라는 생각이 들었고. python manage.py something 을 작성했을 때 무슨 일이 일어나는지 관련된 명령어들에 대한 분석을 해보려고 했다. 이번 글은 그런 글들 중 첫번째 글로 python manag..

[Django] Django에서 DB 엑셀 파일 생성하는 방법

장고 관련해서 admin에서나 일반 응답으로 csv로 export하는 글은 많지만 csv 파일에 접근하는 사람마다 엑셀 설정이 달라 한국어과 관련된 인코딩으로 인해 파일이 깨져서 보이거나 하는 문제가 발생한다. 그 때문에 파일을 열고 일일이 엑셀 설정을 바꿔야 정상적으로 읽히는 경우가 많다. 이번 글에서는 장고에서 .xls 파일로 export 하는 방법에 대해서 알아보도록 하겠다. 1. xlwt 받기 먼저 아래의 모듈을 받아줘야 한다. pypi.org/project/xlwt/ xlwt Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2...

[Git] Git 자주 사용하는 명령어

1. Conflict 되는 파일 찾기 conflict가 발생하면 giit commit이 되지 않는데 conflict가 발생한 파일을 한번에 찾아주는 명령어이다. git diff --name-only --diff-filter=U stackoverflow.com/questions/3065650/whats-the-simplest-way-to-list-conflicted-files-in-git 2. git add 취소하기 git add를 취소해야하는 일이 꽤 많이 발생한다. 아래 명령어로 해결하도록 하자 뒤에 파일 명을 안적어주면 add된 모든 파일이 취소된다. git reset HEAD filename

Web Programming/Git 2021.02.17

[Nginx] 413 Request Entity Too Large

1. 설명 413 오류는 Request에 전송되는 데이터가 너무 커서 발생하는 문제로 Http 요청의 크기가 지나치게 클 때 발생한다. 나의 경우 Django admin에서 한번에 너무 많은 row를 지울 때 이런 에러가 발생헀다. 2. 해결 방법 해결 방법은 다음과 같다. Nginx의 default.conf에 아래 문구를 추가해주면 된다. 이 설정은 클라이언트의 요청크기를 설정하는 값으로 5M은 5MB를 의미한다. http{ client_max_body_size 5M; } 5M 자리에는 원하는 값을 집어 넣으면 된다. 클라이언트단에서 지나치게 큰 데이터를 반복적으로 보내 저장공간을 낭비하는 일을 막기 위해 제한을 걸어두는 것으로 디폴트는 1M이다. 아래 글을 참고 했다. blog.leocat.kr/no..

Web Programming 2021.02.15

[AWS] Dynamodb 로컬에서 사용하기

Dynamodb는 AWS에서 제공하는 Nosql 데이터베이스이다. 일반적으로 AWS에서 제공하기 때문에 AWS에서 서비스를 신청해서 사용하지만 로컬에서 테스트용으로도 사용할 수 있다. 1. 먼저 실행 파일을 다운받아 터미널에서 실행시켜준다. docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html Deploying DynamoDB Locally on Your Computer - Amazon DynamoDB The YAML scripts require that you specify an AWS access key and an AWS secret key, but they are not req..

Web Programming/AWS 2021.01.29

[Django] django apache (CentOS) 배포

본격적인 설명에 앞서 아직 왜 장고와 아파치를 같이 배포해야되는지 모르겠다면 아래의 글을 한번 읽어보도록 하자 cocook.tistory.com/87 [Web] WAS와 Web Server 차이 장고 배포와 관련된 글을 보면 WS(Web Server, 웹서버)와 WAS(Web Application Server, 웹어플리케이션서버)에 대해서 많이 볼 수 있다. 이름도 비슷해서 예전에는 사람마다 같은 걸 다르게 부르는 건가 싶었 cocook.tistory.com 이번 포스트에서는 WAS인 장고와 WS인 아파치를 배포 과정에 대해 설명하도록 하겠다. 1. Python 3.6 설치 먼저 yum 명령어를 이용해 python3.6을 받아주도록 하자. 다른 방법도 있어지만 취소됐다고 한다. sudo yum insta..

[VS Code] Go to Definition 안될 때

VsCode에는 아주 멋진 기능이 많다. 그중에서 하나를 골라보자면 Go to Definition 기능이다. Go to Definition 기능은 Command(window는 Ctrl)를 누르고 함수나 클래스 클릭하거나 커서를 함수나 객체에 두고 F12를 누르면 해당 함수나 객체에 대한 정의로 바로 넘어가게 해주는 기능이다. 예를 들면 CharField에 두고 F12를 클릭하거나 Command + 클릭하면 다음과 같이 정의가 작은 박스로 나오고 클릭하면 해당 코드로 이동한다. 그런데 종종 프로젝트마다 Go to Definition이 잘 동작하지 않는 경우가 존재한다. 이 문제의 원인은 다양하겠지만 내 경우에는 현재 동작하는 파이썬 경로를 잡아주지 않아서였다. 프로젝트 폴더에 .vscode 폴더를 만들고 ..

Web Programming 2020.12.29

[Docker] Docker Pull 명령어 사용하기

인터넷이 안되는 폐쇄망에 배포할 일이 있어서 공부했던 내용을 정리해둔다. 1. Docker 란? 일단 도커는 컨터이너 기반의 오픈소스 가상화 플랫폼이다. 쉽게 생각하면 Vmware나 VirtualBox에서 사용하는 것 처럼 하나 OS에 다른 OS를 올려서 사용하게 해주는 것을 의미한다. 물론 도커는 기존의 가상화 툴보다 더 가볍고 빠르다. 그 이유는 도커는 기존의 가상화 툴 처럼 추가적인 OS를 설치해서 가상화 하지 않고 프로세스를 격리하는 방식으로 동작하기 때문이다. 도커의 가장 중요한 개념은 Image와 Container이다. 1. Image는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 파일 2. Build 과정을 거쳐서 메모리에 올리고 Run을 통해 동작하는 프로세스 간단하게 Image..