pictor

simple image upload/convert/download server

pictor

English

pictor는 간단한 이미지 업로드/변환/다운로드 서버입니다.

pictor의 이름은 화가의 별자리에서 따왔습니다.

로컬 저장소와 트래픽은 비쌉니다. 클라우드 환경에서는 특히 그렇죠.

세상에는 다양한 싸고 클라우드/원격 저장소 서비스들이 있고, 그 서비스들은 대개 싸고 빠른 HTTP 접근을 제공합니다.

예. 아마존 S3, 카페24PHP스쿨호스팅 같은데서 제공하는 FTP+HTTP 정적 이미지 호스팅 서비스...

pictor는 이런 환경에 맞춰 설계되었습니다.

pictor는 기본적으로 다음과 같이 동작합니다:

  • 업로드는 pictor가 처리합니다. 가능하다면 클라우드/원격 스토리지가 처리할 수도 있습니다.
  • 변환은 pictor가 처리합니다.
  • 다운로드는 가능하다면 클라우드/원격 스토리지가 처리합니다. 원한다면 pictor가 처리할 수도 있습니다.
  • 모든 파일은 클라우드/원격 저장소에 보관됩니다. 물론 로컬 저장소도 사용할 수 있습니다.
  • 모든 변환된 파일(pictor가 생성한)은 언제든지 삭제해도 됩니다. 필요하면 pictor가 다시 생성합니다.

  1. install prerequisites for mac osx:
    $ brew install graphicsmagick
    for debian/ubuntu linux:
    $ apt-get install graphicsmagick
    or else see http://graphicsmagick.org
  2. download & install pictor install with npm:
    $ npm install pictor
    or get source from github:
    $ git clone git@github.com:iolo/pictor.git
  3. startup pictor server start as standalone:
    $ ./bin/pictor --host=0.0.0.0 --port=3001
    or startup with pm2
    $ npm install pm2 -g
    $ pm2 start -i 4 -n pictor ./bin/pictor -- --host=0.0.0.0 --port=3001
  4. test run in browser
    $ open http://localhost:3001
  5. test run in console
    TBD...

config 디렉토리에 다양한 환경을 위한 설정 파일들이 있습니다.

PICTOR_ENV 또는 NODE_ENV 환경 변수로 환경을 지정할 수 있습니다.

PICTOR_CONFIG 환경 변수로 설정 파일의 절대 경로를 지정할 수도 있습니다.

자세한 내용은 기본 설정의 소스 코드를 참고하세요.

  • pictor를 다른 expressjs 앱에 내장하기
  • 커스텀 저장소
  • 커스텀 변환기
  • TBW...
  • 디버그 로그를 보려면:

DEBUG 환경변수를 * 또는 pictor:* 로 설정하고 pictor를 실행하세요.

$ DEBUG='*' ./bin/pictor

참조: http://github.com/visionmedia/debug

config/ --- 환경별 설정(서버측)
libs/ -- nodejs 모듈(서버측) --> jshint, doxx task
    converter/ -- converters
    storage/ -- storage providers
    pictor.js -- the main module
    ...
routes/ -- expressjs 모듈(서버측) --> jshint, apidoc task
tests/
    **/*_test.js -- nodeunit 테스트케이스(서버측) --> nodeunit task
    **/*_test.html -- qunit 테스트케이스(서버측) --> qunit task
public/ -- 정적 웹 리소스 소스(클라이언트측) --> concat, uglify, copy, jade task
    js/ -- 자바스크립트 소스(클라이언트 측) --> jshint task
    ...
build/
    public/ --> 정적 웹 리소스의 빌드 결과(클라이언트측)
      docs/
        api/ --> apidoc이 routes/를 대상으로 생성한 문서 --> apidoc task
        dox/ --> doxx가 libs/를 대상으로 생성한 문서 --> doxx task
      ...
app.js -- 클러스터를 사용하지 않는 실행 모듈(server-side)
bin/pictor -- 클러스터를 사용한 실행 모듈(server-side)
  • 소스에서 API 문서 생성하기
grunt apidoc
open public/docs/api/index.html
  • 소스에서 소스 코드 문서 생성하기
grunt doxx
open public/docs/dox/index.html

--

that's all folks...

may the source be with you...