본문 바로가기

전체 글118

[Django] settings.py 분리하기 Django project 에서 프로젝트의 설정을 나타내는 파일인 settings.py 모듈. 여러 사람이 한 프로젝트에서 작업을 하다보면 데이터베이스 설정을 바꿔가며 작업을 하는 경우가 있다. 예를 들어, 테스트를 하기 위해서 자신의 로컬 데이터베이스로 설정값을 바꿔놓고 저장소에 push 하면 이 코드를 실제 데이터베이스 정보로 바꿔야 하는 작업이 필요하다. 이러한 상황은 생각보다 자주 일어나며 이 상황이 반복되면 git 저장소에 불필요한 활동 기록이 쌓이게 된다. 그래서 이 페이지에서는 settings.py 모듈을 분리하여 실제 데이터베이스와 로컬 데이터베이스 설정 값을 나눠서 관리하는 방법을 설명할 것이다. 프로젝트 생성 일단 작업을 시작할 프로젝트를 생성한다. # 장고가 설치되어 있지 않다면 장고.. 2016. 11. 16.
[Django] Database Dynamic Access 큰 프로젝트를 구현하다 보면 한 프로젝트 내에서 여러 데이터베이스와 연결하는 경우가 많다. 기본적으로는 django documents 사이트에 나와있듯이 settings 에 사용할 데이터베이스 정보를 추가해 놓고 using() 을 사용하거나 router.py 파일을 추가하여 데이터베이스에 연결하는 방법이 있다. 하지만, 셀 수 없이 많은 데이터베이스에 다이나믹하게 연결해야 하는 경우는 위와 같은 방식으로 사용하면 안된다. 이 페이지에는 장고 프로젝트에서 다이나믹하게 데이터베이스에 접근하는 방법에 대해 설명할 것이다. 데이터베이스 연결 방법from django.db import connections external_db = {'ENGINE': 'django.db.backends.postgresql_psyc.. 2016. 11. 14.
[Python] Private PYPI PYPI는 the Python Package Index. 의 줄임말입니다. PYPI 는 간단하게 python 관련 패키지들이 모여있는 저장소라고 할 수 있습니다. python 개발자들은 자신이 개발한 python 모듈을 PYPI에 업로드 할 수 있으며 PYPI에 저장된 모듈은 누구에게나 공개되어 있습니다. 회사 내에서와 같이 보안이 중요한 곳에서 자신이 만든 모듈을 private 하게 구축하는 방법을 설명하겠습니다. PYPI 설치$ docker pull codekoala/pypi docker 를 사용하여 pypi 이미지를 다운 받습니다.docker 설정docker 에 대한 내용은 따로 정리하도록 하겠습니다.Usage$ sudo mkdir -p /srv/pypi # 패키지를 담는 디렉토리를 로컬에 생성합니.. 2016. 11. 9.
[Python3] two list for loop 두 개의 리스트를 동시에 루프를 돌며 갚을 얻어오고 싶은 경우, zip() 함수를 이용하면 된다. >>> li = { ... 'email': ['1', '2', '3', '4'], ... 'name': ['a', 'b', 'c', 'd'] ... } >>> for email, name in zip(li['email'], li['name']): ... print(email, name) ... 1 a 2 b 3 c 4 d for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'], ['red', 'blue', 'green']): print('{} {} {}'.format(num, color, cheese)) 1 red manchego 2 b.. 2016. 11. 8.
[Linux] zip 압축, 압축풀기 압축$ zip test.zip ./* $ zip 압축될_파일명.zip 파일 으로 작성해 주면 된다. 위의 예제는 현재 경로의 모든 파일(./*)을 test.zip 파일명으로 압축한다는 뜻이다. $ zip -r test.zip ./* 만약, 압축할 파일 또는 폴더의 하위에 폴더가 포함되어 있을 경우 -r 옵션을 사용하면 된다.압축 풀기$ unzip test.zip 압축 파일을 푸는 방법은 더 쉽다. 그냥 unzip 명령어에 파일 명을 작성해 주면 된다. $ unzip test.zip -d ./target 특정 폴더에 압축을 풀고 싶은 경우 -d 옵션을 사용하고 풀릴 폴더 경로를 작성해 주면 된다. 2016. 11. 3.
[Linux] 명령어 관리자 계정$ sudo so사용 포트 확인$ netstat -tnlp $ ss -ntl로컬 파일 ssh로 접속한 서버에 복사하기$ scp -p 2022 myfile myid@myip:/home/경로 $ mv myfile /이동할 경로 프로세스 죽이기$ ps -ef # 실행중인 프로세스 확인$ ps -ef | grep python # 실행중인 프로세스 중에서 python 찾기$ kill -9 # 실행중인 프로세스 확인 한 것 중 죽이고 싶은 PID 번호를 적는다. iptables만약, 서버에서 파일을 실행하고 사용 포트를 확인했는데도 브라우저에서 접속이 안된다면 iptables 에서 접근 권한을 막아놔서 그럴 가능성이 높다.background server 실행python runserver 의 경우$ noh.. 2016. 11. 2.
[Django] django-crontab Django-CrontabLinux/Unix 에서 스케줄러를 구현할 때 cron/crontab을 Django에서는 django-crontab 라이브러리를 이용하면 쉽게 구현가능 하다. django-crontab은 실제 os상의 crontab에 등록하여 동작하도록 설계되어있다.Installpip install django-crontabsetupINSTALLED_APPS = ( 'django_crontab', . . .) cronjob 추가자신이 스케줄 작업을 등록하기 위한 함수를 만들어주면 된다. myapp/cron.py# myapp/cron.py def my_scheduled_job(): pass settings.pyCRONJOBS = [ ('*/5 * * * *', 'myapp.cron.my_sched.. 2016. 10. 28.
[Python] 파이썬 정규식 반복 메타 문자 반복 메타 문자 의미 * 0회 이상 반복 + 1회 이상 반복 ? 0회 혹은 1회 {m} m회 반복 {m,n} m회부터 n회까지 반복 매칭 메타 문자메타 문자의미.줄바꿈 문자를 제외한 모든 문자와 매치됨^문자열의 시작과 매치됨.[]메타 기호 안에서는 반대의 문자열을 취함$문자열의 마지막과 매치됨[]문자 집합 중 한 문자를 의미함|또는(or)를 의미함()정규식을 그룹으로 묶음 이스케이프 기호분야설명\\역슬래쉬 문자 자체\d모든 숫자와 매치됨 [0-9]\D숫자가 아닌 문자와 매치됨[^0-9]\s화이트 스페이스 문자와 매치됨[ \t\n\r\f\v]\S화이트 스페이스가 아닌 것과 매치됨 [^ \t\n\r\f\v]\w숫자 또는 문자와 매치됨[a-zA-Z0-9_]\W숫자 또는 문자가 아닌 것과 매치됨.. 2016. 10. 27.