페이지

2013년 2월 22일 금요일

Python Django 학습 001

분류 : Python
책이름 : 쉽고 빠른 웹개발 Django
주제 : 2장 개발 준비

요약 : 개발 준비 과정

  • 파이썬 설치
    • http://www.python.org/
  • 장고 설치
    • https://www.djangoproject.com/download/
    • python setup.py install
  • 데이터베이스 설치
    • 파이썬에 sqlite3가 탑재되어있음.
  • 장고 프로젝트 만들기
    • D:\django>django-admin.py startproject django_bookmarks
  • 데이터베이스 설정
    • D:\django\django_bookmarks\django_bookmarks\settings.py 편집
  • 장고개발서버 실행하기
    • D:\django\django_bookmarks>python manage.py runserver

학습내용

장고 설치 과정

https://www.djangoproject.com/download/ 에서 장고 다운로드
Django-1.4.5.tar.gz
압축풀기
Django-1.4.5 디렉터리로 이동해서
python setup.py install

Django-1.4.5\django\bin\django-admin.py를 파이썬이 설치된 디렉터리로 복사합니다.
Django-1.4.5 디렉터리는 지워도 됩니다.
c:\>django-admin.py --version 
을 실행하여 버전이 출력되는지 확인합니다.

장고 프로젝트 만들기

D:\django>django-admin.py startproject django_bookmarks
를 실행하면 D:\django\django_bookmarks 디렉토리가 생성됩니다.

D:\django\django_bookmarks\django_bookmarks\settings.py
를 열고 아래와 같이 수정합니다.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'bookmarksdb',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

D:\django\django_bookmarks>python manage.py syncdb
를 실행하여 데이터베이스를 준비합니다.
슈퍼유저설정 물어보면 적당히 입력합니다.

개발 서버 실행하기

D:\django\django_bookmarks>python manage.py runserver
Validating models...

0 errors found
Django version 1.4.5, using settings 'django_bookmarks.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

브라우저를 열어 http://127.0.0.1:8000/ 사이트를 확인해봅니다.


2013년 2월 20일 수요일

groovy 설치

자바가 설치되어있어야 합니다.

설치

http://groovy.codehaus.org/
에서 그루비 파일을 다운로드 받습니다. (groovy-binary-2.1.1.zip)

적당한 위치에 압축을 풀어줍니다.
C:\groovy-2.1.1

환경변수를 등록합니다.
GROOVY_HOME = C:\groovy-2.1.1
PATH = %PATH%;%GROOVY_HOME%\bin;

버전 정보를 출력하여 제대로 설치되었는지 확인합니다.
> groovy -v
Groovy Version: 2.1.1 JVM: 1.7.0_05 Vendor: ~~


라이브러리 설치 위치

%GROOVY_HOME%\conf\groovy-starter.conf 의 내용을 보면 그루비에서 사용하는 라이브러리들의 위치를 알 수 있습니다.


    # load required libraries
    load !{groovy.home}/lib/*.jar

    # load user specific libraries
    load !{user.home}/.groovy/lib/*.jar

    # tools.jar for ant tasks
    load ${tools.jar}


{groovy.home}/lib 또는 {user.home}/.groovy/lib 폴더에 필요한 라이브러리들을 넣어두면 그루비에서 사용할 수 있습니다.

2013년 2월 14일 목요일

AttributeError: 'str' object has no attribute 'read'

python simplejson 사용 중
AttributeError: 'str' object has no attribute 'read'
발생


>>> import simplejson as json

>>> json.load("{\"name\":\"park\"}")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "simplejson\__init__.py", line 393, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
>>> json.loads("{\"name\":\"park\"}")
{u'name': u'park'}
>>>

문자열을 디코딩하려면 loads 함수를 사용해야 하나 봅니다.

윈도우에서 python simplejson 설치

http://pypi.python.org/pypi/simplejson
에서 파일을 다운로드 받습니다.

simplejson-3.0.7.tar.gz

압축을 풀어줍니다.
압축풀린 폴더에 보면 setup.py 가 있습니다.

커맨드창에서 압축 푼 디렉토리로 이동후
python setup.py install
을 실행합니다.

python을 실행 후
>>> import simplejson
해서 에러 나지 않으면 설치가 완료된 것입니다.

2013년 2월 13일 수요일

tornado 405: Method Not Allowed

405: Method Not Allowed

WARNING:root:405 GET / (192.168.123.112) 0.49ms

POST 요청이 왔는데 post() 메소드가 없거나.
GET 요청이 왔는데 get() 메소드가 없거나
할 경우에 발생합니다.

메소드가 존재하는지를 확인합니다.
다음으로 핸들러 설정을 잘못하였거나 혹은 오타를 입력하였는지를 살펴봅니다.
소스 상에서 들여쓰기를 잘못 할 경우 인터프리터가 지적해주긴하지만
간혹 오류없이 실행되었는데 들여쓰기가 일치하지 않아 메소드를 찾지 못하는 경우도 있으니 이런부분도 확인해봅니다.




2013년 2월 12일 화요일

tornado HelloWorld에 컨트롤러 추가

import tornado.ioloop

import tornado.web

class MainHandler(tornado.web.RequestHandler):

    def get(self):

        self.write("Hello, world")

class MainHandler2(tornado.web.RequestHandler):

    def get(self):

        self.write("second handler")



application = tornado.web.Application([

    (r"/", MainHandler),
    (r"/two", MainHandler2),

])


if __name__ == "__main__":

    application.listen(8889)

    tornado.ioloop.IOLoop.instance().start()

위 소스에서 굵고 밑줄쳐진 부분이 추가된 부분입니다.
http://localhost:8889/two 로 접속하면 MainHandler2 가 실행되고
접근 방법에 따라 get() 또는 post()함수가 실행됩니다.

2013년 2월 8일 금요일

리눅스에서 안드로이드 개발환경 구축과정에서 sdk tool 실행 안되는 문제

민트리눅스나 우분투에서 안드로이드 개발 환경을 구축하는 과정에서
Android SDK Manager 에서 설치하는
Android SDK Tools 와 Android SDK Platform-Tools 에
adb, emulator 같은 실행 파일이 있는데요.
이들을 실행하면
"그런 파일이나 디렉터리가 없습니다"
라는 메시지가 뜨면서 실행이 안되는 문제입니다.

64bit 환경에서 32bit 실행파일을 실행시킬시 이런 에러가 날 수 있답니다.

sudo apt-get install ia32-libs


아래 참고사이트의 정보로 해결했습니다.

참고사이트

민트리눅스 설치시 한글 환경으로 바꾸는 과정에서 막힐땐


아래 내용을 확인해보세요.
  • Control Center > Language Support 로 가서 자동으로 업데이트 되는지.
  • 로그인 창에서 언어를 변경 하였는지.
  • 리부팅은 해봤는지.

2013년 2월 5일 화요일

PHP 파일 업로드 제한 설정

PHP 설치디렉토리에 있는 php.ini 파일에서 수정할 수 있습니다.

php.ini 파일의 위치가 어딘지 잘 모르겠다 싶으면.
사이트 루트에 phpinfo.php 파일을 만들고 아래 내용을 넣고 저장합니다.


<?php
    phpinfo();
?>

브라우저에서 http://사이트주소/phpinfo.php 로 접속하면
설정내용이 나옵니다.
Loaded Configuration File 에 해당하는 위치가 php 설정파일의 위치 입니다.

여기서 upload_max_filesize,post_max_size 로 검색하면 현재 어느정도 크기의
파일을 업로드 할 수 있는지 확인할 수 있습니다.


설정을 변경하려면
php.ini 파일을 열고 upload로 검색하여 해당위치로 이동하고

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 1000M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

upload_max_filesize값을 원하는 크기로 바꿔줍니다.


; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 1000M

post_max_size 값도 비슷하거나 조금더 큰 크기로 바꿔줍니다.


아파치를 재가동하면 적용됩니다.

앞에서 phpinfo.php 를 만들었다면 http://사이트주소/phpinfo.php 로 확인해서
제대로 설정되었는지 확인해봅니다.

tornado 로 HelloWorld 출력



HelloWorld.py

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8889)
    tornado.ioloop.IOLoop.instance().start()
   
python HelloWorld.py

웹브라우저로 확인








tornado 설치

작업환경: 맥,리눅스

토네이도 웹 프레임워크에 필요한 라이브러리 설치.
sudo easy_install setuptools pycurl
sudo easy_install setuptools simplejson

토네이도 웹사이트
http://www.tornadoweb.org/

토네이도 최신버전을 다운로드 받아 설치합니다.


tar xvzf tornado-2.4.1.tar.gz
cd tornado-2.4.1
python setup.py build
sudo python setup.py install

문제해결
pycurl 설치시(맥에서)

error: Setup script exited with error: command 'clang' failed with exit status 1
xcode > preference > downloads > Command Line Tools 설치