11월, 2012의 게시물 표시

Python : 이미지 파일 일괄 자르기

ImageMagick  을 이용하여 이미지 파일들을 일괄로 Crop 하는 스크립트이다. ImageMagick 모듈을 이용하지 않고, convert 툴을 이용하여 구현하였다. 이번엔 급한대로 써야 해서 대충했지만, 다음에는 관련 모듈을 이용해서 제대로 해봐야겠다. 관련 모듈 Wand  is a ctypes-based ImagedMagick binding library for Python. PythonMagickWand  is an object-oriented Python interface to MagickWand based on ctypes. PythonMagick  is an object-oriented Python interface to ImageMagick. import os , glob , shutil   # 원하는 사이즈와 출력 디렉토리를 정한다. CROP_SIZE = '1739x2617+364+0' OUT_DIR = 'output'   if os . access ( OUT_DIR, os . F_OK ) : shutil . rmtree ( OUT_DIR ) os . mkdir ( OUT_DIR ) file_list = glob . glob ( '*.tif' ) # 이미지 확장명을 정한다.   cnt = 1 for filename in file_list : print ( '%s/%s : convert %s -crop "%s" %s \\ new_%s' % ( cnt, len ( file_list ) , filename, CROP_SIZE, OUT_DIR, filename ) ) os . system ( 'convert ' +filename+ ' -crop "' +CROP_SIZE+ '" ' +OUT_DIR+ ' \\ new

Ramaze 에서 JSON 으로 응답하기

AJAX 로 동작하는 웹프로그램을 개발하려면, JSON 으로 응답하는 컨트롤러를 작성할 필요가 있다. Ramaze 기본 문서에는 대략만 나와 있어서, 써먹기 어려워서 테스트해보고 다시 정리해본다. Controller 의 init.rb 에 다음 내용을 추가해준다. require 'json' # --> 추가된 부분 class Controller < Ramaze::Controller layout :base helper :xhtml engine :etanni provide( :json, :type => "application/json") { |action, val| val.to_json } # --> 추가된 부분 end Controller 작성 예제 class TestController < Controller map '/test' def action json = {} json['a'] = '1234' json['b'] = '5678' json end end 해당 액션을 호출할 때에는 http://test.com/test/action.json 처럼 끝에 .json 을 붙여준다.

Ramaze Simple Tutorial (with Sequel)

흔히들 많이 이용되는 Rails 를 안쓰고 Ramaze + Sequel 조합을 시도해 본 이유는 설치되는 모듈이 정말 적기 때문이다. 너무 많은 의존성을 가지게 되면, 시간이 지날 수록 관리하는데 많은 문제를 읽으킨다. 이 때문에, 원래는 python/Django 를 사용했었는데, python 대신 ruby 를 사용하고 싶어서 대체할만한 웹프레임워크를 찾고 있었다. 그러다가, Ramaze + Sequal 이 초간단으로 설치되는 것을 확인하고, 관련 문서를 찾아보고 테스트했지만 Rails 나 Django 처럼 충분한 문서를 제공하지 않더라. 쓸만한 Tutorial 도 없고 해서, 초간단으로 Tutorial 을 만들어보았다. 관련 모듈 설치 $ apt-get install libsqlite3-dev sqlite3 $ gem install ramaze sequel thin sqlite3 프로젝트 생성 $ mkdir -p /opt/project/ramaze $ cd /opt/project/ramaze $ ramaze create web 기본 웹서버 변경 -> start.rb 에서 :webrick 을 :thin 으로 수정 웹서버 시작 테스트 $ ramaze start -s thin or $ ruby start.rb db 생성 $ cd /opt/project/ramaze/web $ mkdir -p db/migration $ vi db/migration/001_AdminMigration.rb # db/gigration/001_AdminMigration.rb # Run: # sequel -m db/migration -M 1 sqlite://db/web.db class CreateAdminsTable < Sequel::Migration def up create_table(:admins) do primary_key :id String :login, :unique =>

(Perl) 모듈 관리

Perl 의 모듈관리 기능을 정리해보았다. Ruby 의 gem 처럼 하나의 툴로 이쁘게 관리되면 좋겠는데, 아직까지는 번거롭게 몇가지 툴을 설치해서 따로 따로 사용해야 된다는 것이 아쉽다. Windows 용 Perl 인 ActivePerl 에서는 ppm 이라는 툴을 제공하긴 하지만, cpan 을 이용할수 없다는 것이 흠이다. 설치할 모듈 검색 https://metacpan.org/ http://www.cpan.org/ 모듈관리도구 설치 $ cpan App::cpanminus App::cpanoutdated Devel::Loaded App::pmuninstall 모듈 설치 $ cpanm [모듈이름] or $ cpan [모듈이름] 모든 모듈 업데이트 $ cpan-outdated | cpanm 설치된 모듈 검색 $ pminst [모듈이름] or $ pmall | grep [모듈이름] --> 시간 오래 걸림 모듈 설명 보기 $ pmdesc [모듈이름] 모듈 삭제 $ pm-uninstall [모듈이름]