블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Perl 2010.04.08 15:46

[ InstantBluePrint ] 몇 초안으로 웹 프로젝트 프레임워크를 만들어보자

  ** 주의 : 여기에서 쓰이는 "웹 프로젝트 프레임워크"는 서버 프로그래밍과는 하등의 관계도 없습니다.


  웹 디자이너 혹은 웹 개발자들은 웹 개발함에 있어서 자바스크립트 라이브러리를 고르고, HTML 도큐먼트 타입을 정하거나 뭐 그런 짓을 하죠. 그리고 css,images,js 같은 디렉토리 만들고 넣습니다. 
  뭐 요즘 디자이너분들이야 다들 웹디자인하는 프로그램이 있어서 어디까지 만들어 줄 수 있겠지만서도...

  일단 저같은 날림 개발자에게 있어서 이 10분을 상회하는 시간이 아깝게 생각되기도 합니다. 
  그런 참에 제 눈에 띈 게 Instant Blueprint 라는 서비스인데요. 
  홈페이지에서 독타입이나 자바스크립트 라이브러리 등등을 골라서 선택하면 위의 구조를 이룬 zip 파일 하나를 다운받을 수 있습니다. 


  하지만 매번 사이트 들려서 몇자 타이핑하고, 몇번 클릭하는 것 마저 아깝다고 느끼고는 걍 코맨드로 만들어봤습니다. 


  사용방법은 간단합니다.
[jeen@192168005074 dev]$ ibp --help
Usage: ibp [options] ProjectName

Options:
  -j, --js       Choose the javascript library you wish to use (default: jQuery)
                  [jQuery,MooTools,ProtoType,YUI]
  -t, --doctype  Choose the document type you wish to use
                   xs = XHTML 1.0 Strict  (default)
                   hs = HTML 4.01 Strict
                   xt = XHTML 1.0 Transitional
                   ht = HTML 4.01 Transitional
                   xf = XHTML 1.0 Frameset
                   hf = HTML 4.01 Frameset
  -c, --compress  Compress the javascript library
  -e, --extention Choose the html file extention (default: html)

  위와 같은 도움말이 나오죠.

[jeen@192168005074 dev]$ ibp Project

[jeen@192168005074 dev]$ find .
.
./Project
./Project/css
./Project/css/print.css
./Project/css/reset.css
./Project/css/style.css
./Project/images
./Project/index.html
./Project/js
./Project/js/jquery.js

  ibp 커맨드에 프로젝트 이름만 주면 이렇게 기본적으로 자바스크립트 라이브러리는 jQuery, DocType 은 XHTML 1.0 Strict, html 확장자는 당연히 html 로 설정되어, Project 라는 디렉토리가 만들어지며 관련 파일들이 생성됩니다. 

  요근래 자잘한 웹 어플을 만드는 데 있어서 좀 쓰이고는 합니다.

  예전에 이런 비슷한 툴을 본 적이 있는데... 기억이 안나네요. 아무튼 맘편히 사용해주신다면야...
신고
IT/Perl 2008.09.01 11:31

[ Perl ] App::CLI 로 시작하는 커맨드라인 어플리케이션

  YAPC::Asia 2007, 2008 에서 여러차례 언급되었고, 현재 저희 회사에서도 Web Framework + CLI 로 사용하고 있는 App::CLI에 대해서 간단하게 적어보고자 합니다. 정말로 매뉴얼을 찾기 힘든 모듈이지만, 사용하기에는 너무 편리한 CLI Framework 인데요.

  보통 Perl 스크립트에서는 맛볼 수 없는 구성으로 쉽게 유지보수가 가능한 코드를 써나갈 수 있습니다. POD 를 이용해서 문서를 써나갈 수도 있구요. GetOption 모듈을 안에 담고 있어서, 여러가지 옵션을 스크립트에 간단하게 줄 수 있습니다.

  현재 저희 회사에서는 Webframework + CLI 라는 형태로... webframework 에서 가지는 설정값을 CLI 에서 그대로 사용가능하게 되어있어서, 별도의 DB 스키마 구성을 설정할 필요없이 커맨드라인 명령어를 통해서 정기적인 작업을 수행하도록 하고 있습니다.

  그럼 간단하게 App::CLI 에 대해서 얘기해보겠습니다.

  App::CLI 는 SVK 로 유명한 clkao 에 의해서 만들어진 모듈이며, 위에서 설명했다시피 CLI framework 라고도 불리는 모듈입니다. 그의 대표적인 SVK 가 이 App::CLI 를 기반으로 만들어졌다고 합니다.
  그리고 Best Practical 의 Jifty 에도 사용되고 있다고 하는군요. CPAN 모듈 페이지에서도 자세한 문서가 없기때문에 소스를 보는 게 가장 도움이 된다고 하는군요.

  그래서 소스를 보겠습니다.

 MyApp.pm
 package MyApp;
 use base 'App::CLI';
 1;


 MyApp/Hello.pm
 package MyApp::Hello;
 use base 'App::CLI::Command';

 sub options {
  ( 'name=s' => 'name' )
 }
 
 sub run {
  my ($self, @args) = @_;

  print "Hello, Are you ".($self->{name} || 'BlahBlah') ."?¥n";
 }
 1;

 app.pl
 use MyApp;
 MyApp->dispatch;

  가장 기본적인 구성입니다.
  MyApp.pm 이 이 커맨드라인 어플리케이션의 Root 가 되는 것이구요. MyApp::Hello 는 hello 라는 CLI 어플리케이션이 되는 것이죠. 그리고 그 hello 를 실행시키기 위해서 app.pl 이 있는 것입니다.

  그렇다면, 어떻게 실행시키느냐..

  perl app.pl

은 훼이크 입니다. 실행시킬 커맨드를 지정해줘야죠.

  perl app.pl hello

그렇다면 결과는?

  Hello, Are you BlahBlah?

가 됩니다. sub run{} 에서 지정한 액션이 실행되는 것입니다.
 그렇다면 이건 어떨까요?

  perl app.pl hello --name=Saillinux

이렇게 Option 을 던져줬습니다. 그러면 sub options {} 에서 name 옵션을 지정해놓았다면, 그 name 옵션을 sub run{} 에서 사용할 수 있습니다.
 
  $self->{name}

 이렇게 말이죠. 물론 ( 'name=s' => 'name' ) 이라는 것이 무엇을 의미하는 지 좀 더 자세히 알고 싶으시다면, GetOpt::Long 같은 모듈을 살펴보시길 권합니다.

 - Getopt::Long - Extended processing of command line options - search.cpan.org

  그럼 hello 말고 다른 커맨드를 추가하고 싶다면?
  생각하시는대로 MyApp::YourCommand 를 추가하시면 됩니다.
  그리고 MyApp::Hello 와 같은 구조로  만들어나가시면 되겠죠?

  그러면 hello 가 무엇을 하는 놈인지 알아야하지 않을까요? 간단하게 도움말을 써넣어보겠습니다.

  MyApp/Help.pm
package MyApp::Help;
use base 'App::CLI::Help'
1;

=head1 ACTION
perl app.pl help help

=head1 BLAH
blahblah
=head1 PLEASE
blahblah
=cut

 이런식으로 MyApp::Help 아래에 간단하게 POD 를 추가했습니다.

perl app.pl help help

 그리고 이런식으로 실행하면.. MyApp::Help 에 기재된 POD 를 해석해서 표시합니다.
 혹은 MyApp::Hello 에도 마찬가지로 적당한 설명을 POD 로 써넣어..

 perl app.pl help hello

 와 같은 명령으로 hello 의 도움말을 간단하게 불러올 수 있겠죠?
 이같이 스크립트안의 POD 를 불러와서 해석할때는 POD::Usage 같은 모듈을 참조하시면 됩니다.
- Pod::Usage, pod2usage() - print a usage message from embedded pod documentation - search.cpan.org
  제가 App::CLI 에 대해서 아는 부분은 여기까지네요.
실제 이것을 사용해서, 관리하는 사이트의 RSS Feed 를 작성하거나, 정기적인 일괄작업을 수행한다거나 하고 있습니다.
언젠가 기회가 되신다면 한번쯤 써보시는 것도 좋을 듯 합니다. +_+
신고
TOTAL 473,546 TODAY 5

티스토리 툴바