블로그 이미지
흰색앵초

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2012. 2. 24. 03:14 프로그래밍/장고

1. 파이썬 설치

apt-get install zlibc zlib1g-dev

장고와 엔진엑스를 연동하기 위해서는 파이썬에서 FastCGI 프로토콜을 구현하는 flup라이브러리가 필요한데 이를 인스톨 해야한다.

apt-get install python-flup

2. 장고 설치

알아서 설치

3. 프로젝트 만들기

# mkdir -p /opt/project
# cd /opt/project
# django-admin.py startproject sample_project
# cd sample_project
# mkdir media

4. 프로젝트 실행

# cd /opt/project/sample_project
# python manage.py runfcgi method=threaded pidfile=/tmp/django_sample.pid host=127.0.0.1 port=8000
=====
# python manage.py runfcgi method=prefork host=127.0.0.1 port=9000 pidfile=/var/run/django.pid

위의 셋팅값을 보면 알 수 있듯이 폴더와 방식 등을 설정해서 사용하면 된다.

5. 엔진엑스 설치

- 엔진엑스를 컴파일하는데 있어서 PCRE(Perl Compatible Recular Expression)이 필요하다.

#apt-get install libpcre3 libpcre3-dev

- OpenSSL 라이브러리도 깔아야된다.

#apt-get install openssl libssl-dev

http://nginx.org/en/download.html 에서 stable버전을 다운받아서 압축을 푼 후에 다음과 같이 입력한다.

설정파일을 바꾼 다음에 실행을 하면된다.

#./configure

#make

#make install

6. 엔진엑스 설정

# cd /etc/nginx/sites-available
# vi django

server {
    listen 80;
    server_name 도메인주소;
    location /site_media  {
        root /opt/project/sample_project/media/;
    }
    location / {
        # host and port to fastcgi server
        fastcgi_pass 127.0.0.1:8000;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_pass_header Authorization;
        fastcgi_intercept_errors off;
    }
}

# cd /etc/nginx/sites-enabled
# ln -s /etc/nginx/sites-available/django django

7. 엔진엑스 실행

# /etc/init.d/nginx restart
posted by 흰색앵초
2012. 2. 12. 04:33 프로그래밍/파이썬


def roundup(num):
    if 100000>num >=1000:
        x = float(num)/10000
        temp = round(x, 1)
        resultround = temp*10000
        return int(resultround)
    elif num >= 100:
        p = float(num)/1000
        temp = round(p, 1)
        resultround = temp*1000
        return int(resultround)
    elif num >= 10:
        p = float(num)/100
        temp = round(p, 1)
        resultround = temp*100
        return int(resultround)
    else:return num

tempnum = roundup(18)

print tempnum

소수점 반올림밖에 못찾아서 어거지로 만들었음 -_-;

posted by 흰색앵초
2011. 12. 30. 02:48 프로그래밍/파이썬

urllib.quote를 사용하다보면 작동이 안되는 막장상황이 도래하게 되는 경우가 있는데 이러할때는

type을 확인하라... str에서만 사용되기 때문에 일본어나 중국어 등이 섞인 글자들의 type이 종종 unicode로 되있는 경우가 있다.

이는 enocde("utf-8")옵션 등을 사용하여 사용하면 문제가 해결됨
posted by 흰색앵초
2011. 7. 7. 12:32 카테고리 없음
import os
import sys
import string
import time
import glob
from ftplib import FTP

ftphost = 'xxx.xxx.xxx.xxx'
ftpuid = 'backup'
ftppwd = 'backup'

ftp = FTP(ftphost)
ftp.login(ftpuid,ftppwd)
ftp.cwd('db/mssql2000/')

files = glob.glob('D:\database\data\mssql\BACKUP\*')
for file in files:
        filenames = string.split(file,'\\')
        filename = filenames[-1] #get filename
        if os.path.isfile(file):
                print "Put:",file
                ftp.storbinary("STOR "+filename,open(file,'rb'),1024)
                time.sleep(2)

ftp.quit()
posted by 흰색앵초
2011. 7. 7. 12:31 카테고리 없음

파이썬으로 FTP서버에 접속하여 여러 작업을 할 때에는 ftplib를 쓰면 편하다.


일단 ftplib을 import 한다


import
ftplib


그 다음엔 FTP서버에 접속을 해야한다. ftplib에서 FTP서버에 접속하게 해 주는 클래스는 FTP클래스로
class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])
위와같이 정의되어 있다.

이 중에서 우리가 필요로 하는 것만 설명을 하자면.


host : FTP서버의 IP주소나, 도메인 네임.

user : FTP서버 아이디. 익명으로 접속하려먼 'anonymous' 입력 후 비밀번호를 입력하지 않는다.

passwd : FTP서버의 비밀번호.



이제 위 사항을 기입해서 FTP서버에 접속한다.


import
ftplib

FTP이름 = ftplib.FTP('서버주소','아이디','비밀번호')


무엇인가 잘못 쓴 것이 아니라면 정상적으로 접속이 될 것이다.

접속 된 후에는 ftplib의 함수들을 이용하여 FTP 클라이언트로써의 작업을 수행 할 수 있다.
기본적인 함수들을 소개하자면.

FTP이름.pwd()
: 현재 디렉토리를 보여준다.
FTP이름.cwd(pathname)
: 현재 디렉토리를 바꾼다.

FTP이름.mkd(pathname)
: 현재 디렉토리에 폴더를 만든다.

FTP이름.rmd(pathname)
: 현재 디렉토리의 폴더를 지운다.

FTP이름.size(filename)
: 파일의 크기를 알려준다.
FTP이름.nlst(argument[, ...])
: FTP서버에서 파일 목록을 가져온다. argument에 아무것도 넣지 않을 경우, 현재 폴더의 파일목록을 가져온다.

FTP이름.retrbinary(command, callback[, maxblocksize[, rest]])

: FTP서버에서 바이너리모드로 파일을 가져온다.

FTP이름.retrlines(command[, callback])

: FTP서버에서 ASCII모드로 파일을 가져온다.

FTP이름.storbinary(command, file[, blocksize, callback, rest])
: FTP서버에 바이너리모드로 파일을 전송한다.
FTP이름.storlines(command, file[, callback])
: FTP서버에 ASCII모드로 파일을 전송한다.
FTP이름.quit()
: FTP서버와의 접속을 끊는다. 에러 발생시엔 FTP이름.close()를 쓴다.


이제 기본적인 함수들을 알았으니 FTP서버에 파일을 전송하는 방법에 대해 설명하겠다.


파일 전송에는 2가지 모드가 있다. 바이너리 모드와 ASCII모드다.


바이너리 모드는 사람이 읽을 수 있는 텍스트 형식의 파일을 제외한 파일들을 전송할 때 쓰고, ASCII모드는 사람이 읽을 수 있는 파일을 전송할 때 쓴다.


일단 바이너리 모드로 파일을 전송해보자. 바이너리 모드로 파일을 전송할 때에는 storbinary 함수에 'STOR' 명령어와 'rb' 모드로 열은 파일 핸들러를 매개변수로 넣어줘야 한다.






import ftplib

FTP이름 = ftplib.FTP('서버주소','아이디','비밀번호')

FTP이름.storbinary( 'STOR' , open('파일이름','rb') )
#'파일이름'은 자기가 전송하려는 파일의 이름

위와같이 하면 FTP서버 내의 현재 디렉토리에 파일이 전송된다.

ASCII모드로 파일을 전송하는 것도 위와 비슷하다. 단지 파일을 여는 방법을 달리해야한다.

import ftplib

FTP이름 = ftplib.FTP('서버주소','아이디','비밀번호')

FTP이름.storlines( 'STOR' , open('파일이름','r') )
#'파일이름'은 자기가 전송하려는 파일의 이름

파일 핸들러를 'r' 모드로 열어서 storlines 함수에 넘겨주면 ASCII모드로 파일이 전송된다.


posted by 흰색앵초
2011. 7. 3. 21:18 카테고리 없음
네이버 웹스크래핑을 하던 중, 네이버에 로그인할 일이 생겼습니다.
그런데 제대로 동작하지를 않더군요. 검색을 해보니, 동일한 문제를 겪고 있는 분이 있었습니다:
mechanize를 이용해서 네이버 로그인을 시도하

문제는 mechanize가 javascript를 지원하지 않기 때문에 발생한 겁니다.
즉, 로그인을 시도하면 다음과 같은 코드가 내려오는데:

<html>
<script language=javascript>
location.replace("http://www.naver.com");
</script>
</html>


해당 코드는 http://www.naver.com으로 이동시키는 명령입니다. 하지만 javascript를 지원하지 않는 mechanize는 이를 처리하지 못하기 때문에.. open() 을 사용해서 직접 열어줘야 합니다.

즉 아래와 같이 하면 됩니다(위 링크에서는 직접 데이터를 날렸는데, 저는 form field에 직접 값을 채운 뒤 submit하는 코드로 작성했습니다).:

browser = mechanize.Browser(factory=mechanize.RobustFactory())
browser.set_handle_robots(False)

browser.open('https://nid.naver.com/nidlogin.login?url=http://naver.com/이동할 페이지 주소')
browser.select_form(name="frmNIDLogin")
browser["id"] = '네이버 ID'
browser['pw'] = '패스워드'
browser.submit() # (A) 이제 로그인이 되었습니다.

browser.open(http://naver.com/이동할 페이지 주소') # (B)애초에 가고자 했던 페이지로 이동

========================
출처 : http://dopanysoft.blogspot.com/2011/03/mechanize.html
posted by 흰색앵초
2011. 6. 1. 17:57 카테고리 없음
posted by 흰색앵초
2011. 5. 22. 17:23 카테고리 없음
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%
  Connection conn = null;
  try{
    Context initContext = new InitialContext();
    Context envContext = (Context)initContext.lookup("java:comp/env");
    DataSource ds = (DataSource)envContext.lookup("jdbc/mysql");
    
    conn = ds.getConnection();
    out.println("<h3>연결되었습니다</h3>");
  }catch(Exception e){
   out.println("<h3>연결에 실패했습니다</h3>");
   e.printStackTrace();
  }
    %>
posted by 흰색앵초
2008. 3. 3. 23:06 카테고리 없음
사용자 삽입 이미지


아는동생A. 한양대공대 기계공학과2학년 이건우君
posted by 흰색앵초
2008. 1. 25. 05:45 잡담


드디어 나오는군요 2분기 애니로 편성되었다고 합니다. 4월쯤이면 볼 수 있을 듯...
posted by 흰색앵초
prev 1 2 3 4 5 6 7 next