Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
writing new algospot from scratch?!
Python JavaScript
branch: master

This branch is 404 commits behind jongman:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
libs
theme
www
.gitignore
.gitmodules
README.md
requirements.txt

README.md

알고스팟 개발 시작하기

필요한 도구들

  • Python: 파이썬 2.6 이상을 사용한다. 안 써본 사람은 파이썬 문서화 페이지에서 튜토리얼 정도는 읽고 시작하자.
  • Django: 장고는 파이썬에서 가장 유명한 웹 프레임워크. 안 써본 사람은 장고 문서화 페이지에서 튜토리얼 정도는 읽고 시작하자.
  • virtualenv, virtualenvwrapper: 프로젝트 별로 파이썬 패키지를 관리할 수 있게 해주는 툴들. 밑에서 설명할꺼임.
  • pip: 파이썬 패키지 인스톨러. 밑에서 설명할꺼임.
  • git: 버전 컨트롤. 이 책의 첫 두 챕터를 읽으면 아쉬운 대로 쓰기 시작할 수 있다.

체크아웃에서 개발 서버 돌리기까지

  1. 먼저 git repository 를 클론한다.

    $ git clone git://github.com/jongman/algospot.git $ cd algospot

  2. 사이트에 필요한 각종 패키지들을 깔기 위해 easy_install 을 깔고, easy_install 로 pip 을 깐다. easy_install 이랑 pip 은 둘다 파이썬 패키지 매니저인데, pip 이 더 최신이지만 아직 우분투 리포지토리에 안 들어가 있다. easy_install 은 처음에 pip 까는 용도 빼고는 쓰지 않는다. libjpeg-dev 는 아바타 리사이즈 할 때 python imaging library 에서 쓰기 때문에 필요하다.

    $ sudo apt-get install python-setuptools libjpeg-dev
    $ sudo easy_install pip

  3. virtualenv 를 깐다. virtualenv 는 파이썬 패키지를 로컬 디렉토리에 깔 수 있게 해 주는 도구다. 시스템 전역에 깔지 않아도 되기 때문에 두 개 이상의 프로젝트의 dependency 가 충돌하거나 할 일이 없음. virtualenv 가 진리임. ㅇㅇ

    $ sudo pip install virtualenv virtualenvwrapper

  4. .bashrc 에 virtualenvwrapper 설정을 넣고 셋업을 적용한다.

    $ echo export WORKON_HOME=~/.virtualenvs >> ~/.bashrc
    $ echo source /usr/local/bin/virtualenvwrapper.sh >> ~/.bashrc
    $ mkdir -p ~/.virtualenvs
    $ source ~/.bashrc

  5. virtualenv 환경을 만들고 activate 한다.

    $ mkvirtualenv algospot-django --no-site-packages

  6. 환경을 만들면 자동으로 활성화되며, 그러면 프롬프트 앞에 환경 이름인 (algospot-django) 이 붙는다. 다른 쉘에서는 다음 커맨드를 치면 해당 virtualenv 를 사용할 수 있다.

    $ workon algospot-django

  7. virtualenv 내에서 까는 모든 패키지는 ~/.virtualenvs/algospot-django 디렉토리 내에 깔리게 되며, sudo 권한 없이도 깔 수 있다. algospot 사이트에 필요한 각종 파이썬 패키지는 requirements.txt 에 들어있다. pip 을 이용해 requirements 에 들어 있는 패키지들을 깐다. 이렇게 하면 django 랑 기타 장고 앱들을 다 깔아 준다.

    $ pip install -r requirements.txt

  8. 단, 마크업을 위해 사용하는 misaka 패키지는 커스터마이징한 것을 사용하고 있으므로 따로 설치해 주어야 한다.

    $ git submodule init
    $ git submodule update
    $ cd libs/misaka
    $ ./init.sh
    $ cd ../..

  9. 일단 필요한건 다 깔았다 우왕ㅋ굳ㅋ 서버를 켜기 전에 디비 테이블들을 만든다.

    $ cd www
    $ ./manage.py syncdb --noinput --migrate

  10. 위의 명령을 실행할 때 AOJ에 사용되는 언어가 존재하지 않아 오류가 발생하는 경우가 생기는데, 이 경우 해당 언어부분을 지우거나, 설치를 해줘야한다.

  11. 슈퍼유저를 만든다.

    $ ./manage.py createsuperuser --username=admin --email=admin@algospot.com

  12. 디비에 초기 데이터를 집어넣는다.

    $ ./manage.py loaddata wiki/fixtures/fixtures.json
    $ ./manage.py loaddata forum/fixtures/fixtures.json

  13. 이제 멋있게 개발 서버를 켠다.

    $ ./manage.py runserver

  14. 웹브라우저에서 http://127.0.0.1:8000/wiki/read/Main_Page를 연다. 아직 메인 페이지가 없어서 위키로 들어가야 한다. -_-

커밋하기

프로젝트에 새 기능을 추가하거나 버그를 고치려면 다음과 같은 과정을 밟는다.

  1. 프로젝트 홈페이지의 오른쪽 위 Fork 버튼을 이용해서 프로젝트를 fork 한다. 그러면 algospot 프로젝트의 개인 복사본이 생긴다.
  2. 위 과정을 거쳐 해당 프로젝트를 클론한다.
  3. 로컬에서 적절히 수정한 뒤 개인 복사본 프로젝트로 클론한다.
  4. 개인 프로젝트 홈페이지에서 Pull Request 를 통해 jongman 에게 Pull Request 를 보낸다.
  5. jongman 이 해당 프로젝트를 가져와 머지한다.
  6. -끗-

좀더 자세한 설명은 github의 매뉴얼 페이지에서 볼 수 있다.

Something went wrong with that request. Please try again.