본문 바로가기

Programming/python67

우분투에서 Django와 gunicorn + supervisor + nginx 연동 하기 요즘은 Django + Nginx 가 대세인가 보다. 구글에서 검색해 보니 많은 사람들이 이런 식으로 사용하는 것을 확인해 볼 수 있었다. 이번 기회에 나도 Django와 Nginx를 연동해 보기로 했다. 예전에 Django와 apache 연동할 때는 아파치 모듈 중에 WSGI 모듈을 설치한 다음에 conf 파일을 수정해 주었는데, 요즘은 gunicorn이라는 python package를 많이 사용하는 것 같다. WSGI 서버로는 uWSGI와 gunicorn, Apache/mod-wsgi를 많이 사용하는데, uWSGI 같은 경우에는 고성능 서버 성능을 지니고 있으며, gunicorn 같은 경우에는 보통 수준의 성능이지만 설치와 관리가 간단하다는 장점이 있다. (mod-wsgi는 별로인 걸로...) Dja.. 2017. 1. 4.
python에서 동영상 처리하기 동영상 처리를 위해 ffmpeg이라는 괜찮은 툴이 있지만, python script와 연동시에 불편함 점이 있다. (예를 들어 ffmpeg은 외부 모듈이기 때문에 프로그램 종료되는 시점을 정확히 알아야 된다든지의....) 그래서 찾아본 결과 moviepy라는 것이 존재했다. http://zulko.github.io/moviepy/# 내가 하려고 하는 작업은 하나의 동영상이 입력으로 들어왔을 때 그것을 초단위로 이미지를 추출하여 해당 이미지의 객체를 인식하는 것이다.(객체 인식 부분은 나중 포스트에...) 우선 moviepy를 사용하기 위해 moviepy를 설치하자. (sudo) pip install moviepy 설치가 완료되었다면 아래와 같이 import를 해보자. from moviepy.editor .. 2016. 12. 13.
python에서 Progressbar 표현하기 Python script를 실행하는데 이게 돌고 있는건지.. 아니면 멈춘건지 의구심이 들때가 간혹 있다. 언제 끝나는지 궁금하기도 하고... 그래서 python으로 progressbar를 표현할 수 있는게 없나 구글에서 찾아봄. http://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console 위 그림과 같이 이쁘게 아주 잘 동작하는 것을 확인할 수 있다. 아래의 링크는 python에서 progressbar를 사용할 수 있는 패키지 https://pypi.python.org/pypi/tqdm 2016. 11. 19.
[Python] pillow로 이미지 처리하기 Deep learning에서 CNN은 학습하거나 TEST 하려는 이미지의 크기가 모두 동일해야 한다. 그래서 기존 crawling한 이미지들의 크기 규격을 맞춰줘야 할 필요가 있다. 이게 단순히 crop을 하면 이미지 개체 인식에 side-effect가 발생할 여지가 있고, 또 무작정 해당 사이즈로 resizing을 하기엔 이미지 비율이 깨지는 문제가 발생했다. 이를 해결하기 위해서는 해당 비율에 맞게 해당 크기로 resizing하는 기술이 필요하다. 이를 위해 pillow라는 python package를 사용해 보기로 했다. 설치는 아래와 같이 간단하다. $> pip install pillow pillow의 설치가 완료되었으면 이제 import 해서 이미지 처리 작업을 해보자. 내가 하고자 하는 방법은.. 2016. 5. 30.
[Django] Django와 apache 연동하기 [우분투] Django에서 apache 서버를 웹서버로 연동하기 위해서는 mod_wsgi라는 것을 설치해야 한다. wsgi란 Web Server Gateway Interface의 약자로써 웹서버와 웹어플리케이션 간의 인터페이스를 제공해 주는 프레임워크이다.여기서는 apache 서버와 Django 간의 인터페이스를 담당한다.물론 wsgi 설정 없이 Django 자체 웹서버를 이용해도 되긴 하지만, 아무래도 Django 자체 웹서버는 불안한 면이 있기 때문에 apache 서버를 이용해 보기로 한다. 우선 아파치 설치.$> sudo apt-get install apache2 아파치 설치가 완료되었으면 이제 mod-wsgi 설치 (python3 같은 경우에는 libapache2-mod-wsgi-py3를 깔아야 한다고 한다.. 2015. 10. 28.
[Django] DEBUG = False 설정 시 Bad Request 발생 오랜만에 Django 설정을 다시 하게 되었다. Django 설치를 다 하고 settings.py 설정 중, Debug 옵션이 True로 되어 있길래 False로 바꿔주고 Django 실행! 헉... Bad Request 가 발생한다. 이게 무슨 일이지???? 열심히 구글링... 역시 stackoverflow는 날 배신하지 않는다. http://stackoverflow.com/questions/19875789/django-gives-bad-request-400-when-debug-false ALLOWED_HOST 설정을 all로 해주어야 host 접근이 가능하다는 소리이다. 아래와 같이 설정해 주면 더이상 bad request가 발생하지 않는다.ALLOWED_HOSTS = ['*'] '근데 왜 DEBUG.. 2015. 10. 28.
PhantomJS 사용하기 대부분의 웬만한 웹사이트는 Beautiful soup를 사용하여 parsing을 하면 손쉽게 데이터를 가져올 수 있다. 그런데 간혹 웹사이트들 중 Javascript에서 html을 만들어서 실행되는 동적페이지가 있다. 곤란하게도 Beautiful soup에서는 Javascript를 실행해주지 않으며, 그 결과로 parsing도 제대로 동작하지 않느다. 이를 해결하기 위해서는 Javascript가 rendering 된 후에 parsing을 할 수 있는 방법을 찾아야 하며 아래 사이트는 그에 대한 해결 방안을 3가지 방법으로 제시하였다. https://www.quora.com/Can-beautifulsoup-scrape-javascript-rendered-webpages 내가 사용한 방법은 위의 세 가지 중.. 2015. 10. 12.
python에서 switch문 쓰기 Python에서는 switch문이나 case문이 존재하지 않는다. 그래서 python에서는 switch문과 비슷한 동작을 할 수 있도록 dictionary를 이용해서 아래와 같이 구현한다. switch_map = { 'APPLE' : 1, 'BANANA' : 2, 'TOMATO' : 3} print switch_map['APPLE']print switch_map['BANANA'] 2015. 7. 23.
절대 경로로 import 하기 절대 경로에 있는 파이썬 class를 import하려면 어떻게 해야 할까? /home/test/define.py 란 python 코드가 아래와 같이 있다고 가정하자. class TestClass: def testFunction(self, flag): print "test Function" /home/test2/main.py 에서 /home/test/define.py에 있는 class를 import 하려면 어떻게 해야 할까? import sys를 이용해서 쉽게 해결할 수 있다. import sys sys.path.append('/home/test') from define import TestClass test = TestClass()test.testFunction('Hello World') 2015. 7. 22.