블로그 이미지
JEEN

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

Rss feed Tistory
IT/Tips 2011.11.15 01:31

[ zsh ] oh-my-zsh 을 사용하고 있습니다.

  이런저런 이유로 bash <-> zsh 을 왔다갔다 하고 있습니다. Firefox <-> Chrome 을 오락가락 하는 것과 비슷하달까요?
  지난 YAPC::Asia 2011 에서 @miyagawa 상의 발표때 잠깐 등장해서 많은 사람들로부터 "지금 쓰고 있는 거 뭐냐?" 라고 질문을 받았다고 하던데요. 그게 바로 oh-my-zsh 이라고 합니다.

  간단하게 oh-my-zsh 을 설치한 화면입니다.
  회사 프로젝트의 일부인데 git + git-flow 로 일단 `develop` 브랜치인 상태이며 변경이 발생했을 때는 브랜치 이름 다음에 x 마크가 뜨게 됩니다.


  일단 깔끔하구요. 여러가지 자동완성 plugin 들도 많이 있고... 설치도 간편해서 쓸만합니다.
  뭐 전 bashrc 가 깔끔한 편이라서 그랬을 지도 모르겠군요 :-)

  설치와 기타 자세한 플러그인 종류에 대해서는...

  https://github.com/robbyrussell/oh-my-zsh 

  에서 확인하실 수 있습니다.
신고
bash, oh-my-zsh, Shell, zsh
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 를 작성하거나, 정기적인 일괄작업을 수행한다거나 하고 있습니다.
언젠가 기회가 되신다면 한번쯤 써보시는 것도 좋을 듯 합니다. +_+
신고
Project 2008.03.28 21:01

[PERL] 급조 #3 Me2Day Perl API 만들기 v2 - 셸에서 미투데이 글쓰기


 어제 Shell에서 Me2Day 움직여 볼까 하던 것을 오늘 실행에 옮겼습니다.

 http://code.google.com/p/me2day-perl-api/


여기가 프로젝트 페이지이고,

svn checkout http://me2day-perl-api.googlecode.com/svn/trunk/ me2day-perl-api-read-only

이걸로 checkout 하시면 되겠습니다.

뭐 이딴식으로 만들어 놨어.. 하시면... 플젝 같이 해주세요 :-)

사용자 삽입 이미지

먼저 인증샷... 인증을 합니다.


Me2day ID는 현재 자신의 ID를 입력하시구요.
사용자키는 http://me2day.net/[미투데이아이디]/settings/basic 에 가셔서 밑에 보시면
사용자키가 보이실 겁니다. 이걸 넣으시면 됩니다. 실패하면 당연히 튕기구요...

사용자 삽입 이미지

인증이 끝나면 이런 사용 예가 나타납니다.


인증은 한번이면 됩니다. 인증에 성공하면 ID와 사용자키는 $ENV{HOME}의 ".me2day_info"라는
파일에 들어가게 되고... 매번 실행시에 자동으로 인증을 하게 됩니다.

사용자 삽입 이미지

좀 잦은 삽질 후.. 드디어 셸에서 작동


 일단 이렇게 테스트한다고 뻘짓한 흔적입니다.
 사용법은 위에서도 말하고 있었지만 다시 한번 더...
 me2p.pl 본문  @:태그 태그 태그 태그
입니다.
 여기서 주의하실 점은 "링크"를 쌔우는데..

 me2p.pl "사이트":URL @:태그 태그 태그 태그
하시면 아니됩니다... 셸의 특성상 쌍따옴표는 특별취급하기 때문이죠.

 me2p.pl ¥"사이트¥":URL  @:태그 태그 태그 태그
번거로우시겠지만.. 이와같은 방법으로 일단은 해주시면 되겠습니다. 내키지 않는다면 피드백을 주세요.
혹은... 직접 바꿔주시면 되겠습니다.

그외에는 뭐.. 제가 미투데이를 그닥 자주 사용하지 않아서 잘 모르겠네요. 제가 아는 기능에 대해서는 일단

작동합니다. 일단은 "글쓰기"만 되는 것이라서요 :-) 나중에 읽기 라든가 만들어볼까 하지만...

이미지가 떠오르지 않는군요.

태그의 경우는 @: 다음에 오면 무조건 태그로 인식합니다. 스페이스로 태그를 나눌 수 있습니다.

잦은 이용부탁드리겠습니다 :-)
신고
TOTAL 479,602 TODAY 27

티스토리 툴바