2010년 12월 27일 월요일

지금은 ROI 테스트 중

ConAd ROI에 참여해주세요!!! 클릭 해주세요

2010년 4월 26일 월요일

[Django] html 페이지에서 int -> str형으로 변환 방법???

이 부분 또한 '파이썬 마을'에 문의 해 본 결과 해결 방법을 제시해 준 댓글이 있었다

그 내용을 토대로 나름대로 처리한 방법을 적어 본다.

 

우선 html 페이지에서 if문을 사용하다 보면 int형과 str형을 비교 할 때가 생기게 된다.
이때 서로 같은 형이어야 하는데 이걸 변환하는데 어떻게 해줘야 할지 몰라 고민 하는 분들이
많거나 따로 클래스를 만들어 사용 하시는 분들을 계시던군요

 

저는 다음 원문을 참고 하였습니다.

URL : http://docs.djangoproject.com/en/dev/ref/templates/builtins/#stringformat

if문을 다음과 같이 처리하여 현재 사용을 하고 있습니다.

{% ifequal entries.slot_status|stringformat:"s" entry.instance_code|stringformat:"s" %}

위의 비교 구문을 보면 둘다 문자형으로 변경하였는데 slot_status는 int형이며 instance_code는 str형이다. int형을 str형으로 변경하여 비교 하였을때 비교가 되지 않아 기존 str형도 다시 stringformat을 사용하여 문자형으로 변경하여 비교를 하였다.

이때 정상작동 하였으며 혹시나 이런 증상이 생기면 둘다 같은 구문으로 변경하여 해보는 것도 나쁘지 않을꺼 같다.

[Django] 기존 DB Table을 모델에 추가하여 사용하기

요즘 Django를 이용해 웹페이지를 작업 중에 있다.
이 과정에서 erwin으로 ERD를 그려 작업 해 놓은 DB가 있는데 이걸 Django 모델에서
바로 불러와서 사용 할려면 어떻게 해야 하나 많은 생각을 하고 검색하고 하는 과정에서
자주 들리는 '파이썬 마을'에서 문의를 한 결과 답을 알게 되었다.
혹시나 저처럼 헤메고 있으신 분들이 있으 실꺼 같아 이렇게 내용을 정리 해 본다.

방법은 아래와 같다.

1. 기존 DB 를 Django setting.py에 설정을 하여 접속이 가능하게 설정을 한다.
2. 다음 명령어를 입력 하도록 한다.
   python manage.py inspectdb > 저장하고자 하는 파일명.py
3. 명령어를 실행한 폴더에 '저장하고자 하는 파일명.py' 파일이 있음을 확인 할 수 있으며
    그 클래스들을 기존 model.py에 붙여 넣기 하셔서 사용을 하면 된다.

한번 알게 되면 정말 쉽게 DB 생성을 해 사용할 수가 있다.
혹시 몰라 원문URL을 아래에 링크 걸겠다.

URL : http://docs.djangoproject.com/en/dev/howto/legacy-databases/

2010년 4월 20일 화요일

Apache 웹 서버 장애 해결하기 1 (접속이 느려지거나 접속이 안 될 때)

접속이 느려지거나 접속이 안 될 때
가끔 접속자가 많은 서버를 운영하다 보면 갑자기 웹 접속이 되지 않거나 접속 이 너무 느려 아파치 데몬 개수를 확인해 보면 httpd가 256개나 떠 있는 경우 가 있다.
기본적으로 아파치 웹 서버의 경우 Max Clients가 256으로 설정되어 있어 동시에 256개의 데몬이 뜨게 되면 더 이상의 접속을 받아들이지 않고, 기 존의 프로세스가 죽을 때까지 대기한 후 접속이 끊기게 되면 그제서야 접속을 받아들이게 된다.
따라서 동시 접속이 많은 경우에는 이전의 웹 접속이 끊길 때까지 대기해야 하 므로 접속 속도가 느린 것처럼 느끼게 되는 것이다.
일반적으로 정상적인 접속 의 경우에 256개의 프로세스가 모두 뜨는 경우는 그리 많지 않기에 현재의 상 태가 비정상적인 접속인지 여부를 판단해야 한다. 이를 판단할 수 있는 방법 은 netstat -na grep ES로 ESTA BLISHED된 연결 상태를 확인하여 클라이언트 의 IP가 정상적인 연결인지 여부를 확인하면 된다.
또는 netstat -nagrep ESawk '{print $5}'sort로 클라이언트의 IP만 따로 소트하여 확인해 봐도 된다. 통상적으로 HTTP 1.1 규약에서부터 적용되기 시작 한 KeepAlive 기능을 지정하였을 경우 한 클라이언트 IP에서 동시에 3~5개 정 도의 http 프로세스를 생성하므로 한 IP에서 3~5개 정도의 프로세스를 생성하는 것은 정상적인 현상이다.
비정상적인 접속의 경우에는 다음과 같은 이유가 있을 수 있다.

Apache의 access_log에 관련된 파일형식 남기지 않게 하는 방법

이미지 서버를 구축해 사용하다 보면 access_log에 여러가지 파일형식의 로그들이 쌓여서
용량이 초과하는 경우가 많았을것이다. 여기서 로그들을 주석처리해서 막아 버리는 방법도
있지만 아래와 같이 해서 부분적으로 로그 쌓임을 방지 할수가 있다.

Apache httpd.conf 파일을 열어 다음의 내용들을 추가 하도록 하자.

### JPG Red Deny ####
SetEnvIf Request_URI \.jpg worm
SetEnvIf Referer \.jpg worm

### GIF Red Deny ####
SetEnvIf Request_URI \.gif worm
SetEnvIf Referer \.gif worm

### SWF Red Deny ####
SetEnvIf Request_URI \.swf worm
SetEnvIf Referer \.swf worm

### html Red Deny ####
SetEnvIf Request_URI \.html worm
SetEnvIf Referer \.html worm

### CodeRed Deny ####
SetEnvIf Request_URI \.ida worm
SetEnvIf Referer \.ida worm

### Nimda Deny #####
SetEnvIf Request_URI cmd\.exe worm
SetEnvIf Referer cmd\.exe worm
SetEnvIf Request_URI root\.exe worm
SetEnvIf Referer root\.exe worm
SetEnvIf Request_URI admin\.dll worm
SetEnvIf Referer admin\.dll worm

CustomLog /usr/local/apache/logs/access_log common env=!worm

진한 부분이 CustomLog 부분에 추가해줘야 할 부분이다.

Apache log들 용량을 줄이고 싶을때 사용하는 명령어

아파치 로그를 확인 하다보면 엄청난 양의 access_log,error_log를 확인할때가 있을것이다.
이때 이 양을 0으로 만드는 방법을 소개 하겠다.

cat /dev/null > access_log
cat /dev/null > error_log

Apache 버젼 확인 방법

부끄럽지만 내가 일하면서 알게 된 명령어ㅋㅋ
/usr/local/apache/bin/httpd -v
끝~~