블로그 이미지
JEEN

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

Rss feed Tistory
IT 2013.02.26 10:56

돌아보는 소소한 HTML / Git 의 역사적인 순간

 하루를 시작하려고 맥북을 열었더니 @yuni_kim 님께서 메신저로 아래의 링크를 던져주더랍니다.

 - WWW-Talk Jan-Mar 1993 : proposed new tag : IMG

 그러니 네, 20년전에 HTML IMG 태그가 Marc Andreessen 에 의해 제안되었습니다. 네, 그러니까 아시는 분은 익히 아시는 그 Marc Andreessen 입니다. 할려는 얘기는 이 사람 얘기는 아니었으니... 일단 패스 =3

 지금의 현란하고 복잡해지는 웹과는 달리 20년전 이미지 태그 제안이 올라가는 그런 시절의 웹이라니... 하긴 저도 뭐 97년쯤에 비싼돈(분당 요금 20원인가)에 웹에 접속하곤 했던 기억이... 하지만 뭐 있는 게 없으니... 2002년까지 나우누리 VT모드에서 주로 놀았었죠.

 마침 Github CEO 인 @defunkt 도 똑같은 내용의 트윗을 했더군요.

 더 재미있는 건...

 2092일 전, 2007년 6월 5일 @defunkt 는 git 을 배우고 있다고 트위터에 트윗을 했더라는 것입니다. :-) 그리고 2013년 지금은 Github 는 사무실 하나 없이 시작해서 지금은 관련기술을 선도하는 유명한 IT회사가 되어 있네요.

 전 그때 쯤에 아마 Google Tech Video 에서 Randal Schwartz 아저씨가 Git 에 대해서 강연하는 동영상을 본 기억이 있습니다. 이때까지는 SVN 을 쓰다가 SVK 를 써보려는 즈음 이었던 것 같네요.

 10년쯤 후에는 지금 또다른 누군가가 또 큰 조류를 끌고 올 지...


신고
이빨까기 2011.06.09 15:51

[개발자를 위한 nFORGE & DVCS(git/hg) 활용 세미나] 에 참석했습니다.

nFORGE를 이용한 협업 개발과 분산형 소스코드 관리툴인 git/hg의 활용에 관한 공개 세미나! 개발자 여러분들의 많은 관심/참여 부탁드립니다~ 발표자도 모집중입니다. 조촐하지만 즐거운 시간이 될 것입니다. ^^ http://goo.gl/IDIFqThu Jun 02 07:34:44 via web


이라고 해서 현장에 도착했습니다. w/ @keedi @y0ngbin @aanoaa @mintegrals

개발자를 위한 nFORGE &DVCS (git/hg) 활용세미나 (@ 공간더하기) [pic]: http://4sq.com/jLtyJZThu Jun 09 06:41:42 via foursquare


nFORGE & DVCS 세미나 진행중~ http://t.co/hQu2q8lThu Jun 09 07:31:42 via Twitter for Android


마침 @keedi 님의 간만에 하시는 발표도 들으실 수 있겠고, 네이버의 nFORGE 가 얼마나 대단한 물건인가 보고 싶기도 해서...

  우선 초반에 NHN 분들의 세션 두가지입니다. nFORGE 에 대해서, 그리고 nFORGE + git/hg 에 대한 이야기입니다. 

  회사에서는 git 을 사용하고 있지만 nFORGE 같은 통합관리툴을 사용하고 있지는 않은데요.
  ( 회사 개발환경에 대해서는 @keedi 님의 세션 
http://keedi.pe.kr/presentations/just_do_git 에서 소개되어 있으니 참고를...)

  사실 어떤 툴을 쓰던 지 모든 이들의 요구사항을 만족할 수 없고, 결국은 Best 보다는 Better 를 선택하게 됩니다. 이런저런 사정을 기반으로 해서 말이죠.

  nFORGE 는 FusionForge 를 fork 해서 시작한 프로젝트라고 합니다. FusionForge 의 다양한 DB 지원이 미약한 점이나 사용하기 불편하고 뽀대도 안나는 것과는 달리 다양한 DB 를 지원하고 SMART Install 과 멀티 프로젝트의 지원, 그리고 네이버 개발자센터에서 nFORGE 기반의 무료 프로젝트 호스팅도 지원해준다고 합니다.
 
  흔히 알고 있는 Google Code 나 Github 가 하는 그런 일이라는 거죠. 저도 예전에 Google Code 에서 여러개의 프로젝트를 띄우고 접고... 지금은 Github 로 모든 걸 옮겼습니다. 네이버 개발자센터도 좀 더 살펴볼 필요성이 있을 것 같네요. 국내에 한정된 프로젝트라면 시도해 볼 만 할 듯 합니다.
 
  아무튼 네이버 개발자센터에 등록된 개발자 수만 20만명이라고 하니... 이렇게 많았나 하는 생각도 해봅니다. 

  일본에서 많은 TechTalk 에 참석한 기억으로는 세션 중간중간에 터져나오는 질문들과 횟수가 꽤 인상적이었습니다. 일본에서는 세션이 끝날 때 쯤 Q/A 시간에만 질문을 받고, 발표자의 일방적인 전달이 주류가 되는 건 아닐까 하는 인상을 받기도 했는데(항상 그랬던 건 아닙니다만...), 마치 토론하듯, 그리고 현장에서 건의되는 여러가지 이야기들을 듣고 있자면 나도 다음에 세션 발표자로 참여할 때에는 좀 더 많은 경험과 지식을 가지고 있어야 제대로 승부(?)를 낼 수 있겠구나 하는 그런 생각도 들게 됩니다.

  많은 발표들 모두 발표자분들 제각각의 버젼관리시스템을 사용함에 있어서의 희로애락 얘기가 주류였습니다. 다들 공감하는 그런 얘기에 곧잘 웃음보가 터지는 씬이 나오곤 했으니까요 :-)

  한 때 회사에서 도입을 검토했던 코드리뷰시스템과 관련해서 Gerrit 에 많은 기대를 하고 있었습니다. 제가 입사하고 코드리뷰시스템의 도입을 한번 검토했었는데, 역시 소규모 개발에 있어서 중간에 뭔가 막힌다는 그런 느낌도 들고 해서 결국 합의하에 없던 일이 되고 좀 더 개인간의 커뮤니케이션 위주로 해결하게 되었던 것 같은데... 역시 대규모 개발에 있어서의 전문 리뷰어들과 현재 구글이나 여타 많은 회사들에서 사용되는 그런 코드리뷰 체계를 듣고 대단히 깊은 흥미를 가지게 되었습니다. :-) // 개인적으로는 저희회사같은 소규모 개발 쪽에는 어렵지 않을까 하는 생각이 깊이 들게 되지만....

  아무튼 끝나고 뒷풀이장소에서 포식을 했습니다. ;ㅁ; 

  아쉬운 점이 없을리는 없겠죠. .... 머큐리얼 얘기를 제대로 들을 기회가 없었던 점이.... =3
  그리고 50명 이상의 많은 개발자나 시스템관리자 분들이 모이는 공간에서 좀 더 다양한 얘기를 들어봤으면 하는 아쉬움도 있습니다. 

  자리를 마련해주신 @ksoonson 님을 비롯한 NHN관계자분들(?), 그리고 많은 흥미로운 얘기를 들려주신 발표자분들께 감사의 말씀을 드리고 싶습니다.
신고
이 장소를 Daum지도에서 확인해보세요.
서울특별시 강남구 역삼1동 | 공간더하기
도움말 Daum 지도
Git, hg, nFORGE, NHN, Silex
IT/Tips 2011.02.15 01:39

[ git / git-ssh-create ] 회사에서 git 쓰시나요?

http://bit.ly/e0zl3q git-ssh-create rocks!Wed Feb 09 03:25:27 via Echofon



 작년부터 회사에 git 을 도입해서 요즘 새로운 일들은 대개 git repository 를 두고 있습니다.
 뭐 매번 새로운 repository 초기화를 위해서 자주자주 하는 일은 아니지만...
 repo server 에 들어가서 bare repository 만들어주고 그걸 또 작업공간에서 clone 떠서 이래저래 슥샥슥샥 하며 오가기도 합니다. ... 회사마다 어떨지는 몰라도 사실 bare repository 는 그렇게 자주 만들지는 않습니다만...

  @aanoaa 님 회사같은 경우처럼 아주 그냥 github 에 돈주고 private 계정 끊어버리는 경우도 요즘은 제법 보이기도 하구요.

  아무튼 위의 저런 일련의 과정들을 어느정도 수준까지 단소화시킬 수 있는 툴을 발견해서 소개할까 합니다.



  아무튼 그렇게 자주 사용하지는 않지만, 예전부터 이런 게 있었으면 하는 그런 툴이어서 :-)
신고
IT/Tips 2011.01.14 10:54

[ tig / git ] reverse split "", "git";


  사내 git 로그뷰어로 Gitalist 를 띄워쓰고는 있고, Ubuntu 에서는 gitg(@keedi++), Mac 에서는 gitx 를 사용하고 있습니다.

  하지만 사내 대부분의 개발은 터미널열고 서버 들어가서 직접 작업하는 경우가 많기에...
  터미널 안에서 끝장을 보고싶기도 합니다. git log/diff 로는 한계가 있기도 하구요.

  그래서 tig 입니다. 예전에는 그냥 저혼자 개발할 때는 별로 필요성을 못 느꼈는데...
  git 을 회사에 도입함으로 발생되는 어떤 답답함을 해소하고자 tig 를 사용하게 되었습니다.

  지난번 한국의 대표적인 Perl Ecosystem Company 인 Silex 에 놀러갔을 때 @keedi 님께서 아주 잘 활용하시는 걸 보고 확신을 가지게 되었고 :-)

  아무튼 회사 내에서 사용을 장려하고 있습니다. 
신고
Git, gitg, GitX, TIG, 터미널
IT/Tips 2010.11.02 12:40

[ Git ] .gitconfig 설정에 대해서...

  제 git 환경설정은 user.name 이랑, user.email 찍어둔게 전부였다는 것을 알고... 뭔가 새콤달콤한 것은 없을까 했는데..
  마침 예전에 북마크해둔 글에서 그냥 갖다붙여서 잘 쓰고 있습니다. 
  처음 svn 만 쓰다가 git 을 쓰면서 svn st 만 하면 주르륵 나오곤 했는데, git 은 왜그럴까 했는데... 차츰차츰 알아가면서 alias 설정이나 이것저것을 바꿔보기도 하면서 익숙해지고 있었는데..
  아래의 링크를 보니까 더욱 선명하게 git 에 대해서 알게되는 느낌입니다. (사실 그냥 책을 봤어야...)


  
신고
IT/Tips 2010.10.31 01:14

행복한 커미터가 됩시다.

http://collectiveidea.com/blog/archives/2010/08/03/happy-git-commits/

사실 오래묵은 떡밥이긴 합니다.

git 의 post-commit hook 를 이용해서 환호성을 들려주는 것이죠.

아... 나도 일했구나. 하고 회사에서 느껴보고 싶지만... 스피커 켜놓고 즐기는 건 그런 것 같고...

마침 오늘 날잡아서 자그만한 Hackathon 을 하는 중에 이것 도입해봤습니다. :-)

 커밋 한번 한번에 킥킥 하곤 합니다.

 @y0ngbin a.k.a. 용사장이 예전에 회사에서 대형 스피커를 사서 이걸 도입하겠다 하는 얘기를 했는데 ... 과연 어쨌으려나요. or @keedi ? 

  아무튼 저는 제 커밋 하나 하나에 환호성이 울리는 그런 회사에 있고 싶네요 :-) (커밋횟수를 얼마나 일했냐의 잣대로 보는 회사보다는...)
신고
IT/Mac 2010.04.05 19:45

[ GitX ] Git 을 쓴다면 역시 GitX 가 있어야...


  예전에는 SVN 을 쓰면서 trac 에 자주 들락날락했습니다.
  그러다가 요즘에는 git 을 쓰다보니 github 에 자주 들락날락 합니다. 예전에 뭘 썼더라 하면서 이래저래 찍어보고 그럽니다. 뭐 private repository 하나 만들려면 지갑이 가벼워지는 현상이 생기기도 하지만... 아무튼, 이건 아직 안 만들어서 뭐라 말할 껀덕지도 없군요.

  그렇게 터미널에서 열심히 git 커맨드로 add 하고 commit 하고 push 하고 pull 하고 merge 하고 checkout ... 뭐 이것저것 하면서 불만은 없었습니다. 그냥 이렇게 쓸 수 있는 게 좋았었는데...

  그러다가 GitX 를 깔았는데.. 이건 뽀대부터가 확 다르더군요. 최근에 커밋한 내용이 좌르르륵 나오고...  
  커밋한 것을 gist 로 패치를 만들 수 있고... 일단 브랜치 머지 등등 보여줄 건 다 보여주고..
  아무튼 아름답습니다.

  커밋할 파일도 슥샥 끌어다가 Commit 누르면 되고..

  아무튼 GUI 툴에 대해서는 그닥 좋은 인상은 없었는데... 이건 왠 떡이냐 싶을 정도의 레벨입니다.
  제가 쓰기에는 부족한 점은 크게 없으니(=그만큼 git 에 아직 완벽히 적응되지 못해서...)...

  하마터면 gitalyst 같은 거 깔 뻔했군요. 휴우...
신고
Git, GitX, mac, VCS
IT/Perl 2009.10.02 19:11

[ShipIt] Software Release Tool - ShipIt with CPAN/Git/SVN Commit/Tag/Upload

   WWW::Shorten::Durl 을 업로드하면서 ShipIt 을 사용해봤습니다. ShipIt 은 LiveJournal 등을 만든 Brad Fitzpatrick 씨가 만든 소프트웨어 릴리즈 툴입니다. SVN/SVK/Git 에 자동으로 커밋, 푸시, 배포판을 만들어 태그도 생성해주고, CPAN 도 자동으로 업로드 해줍니다.
  꼭 Perl 에서만 쓸 수 있다는 제약은 없습니다. 하지만 제가 Perl 을 쓰니까 Perl 을 기준으로 설명드리겠습니다.

  우선 제가 WWW::Shorten::Durl 을 다 만들었다고 하고.. 이제 배포판을 만들어서 github 나 SVN 섭, 그리고 PAUSE 로 올리려고 합니다. ShipIt 을 쓰기 이전에는 대략 이런 플로우를 거칩니다.

  1. 배포판 버젼 지정/설정
  2. 신버젼 ChangeLog 기재
  3. 배포판 생성 테스트
  4. 커밋
  5. 태그
  6. 배포판 생성
  7. CPAN 업로드

  자... 그럼 대략 몇 번의 키보드 타이핑과 마우스를 몇번이나 클릭해야할까요? 아무튼 시간과 체력적인 면에서 많은 비용이 드는 것은 당연하겠죠.

  그럼 ShipIt 을 사용한다고 해봅니다. 그 전에 일단 ShipIt 을 실행할 준비를 해야겠죠.

  ShipIt 과 cpan-upload-http 를 설치합니다.

  ShipIt 은 평범하게 CPAN 을 통해서 설치할 수 있지만 cpan-upload-http 는 CPAN 인덱서에 걸리지 않는 듯 하니 직접 페이지에서 다운로드해서 설치합니다.
$ wget http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/cpan-upload-http-2.4.tar.gz
$ tar zxvf cpan-upload-http-2.4.tar.gz
$ cd cpan-upload-http-2.4
$ perl Makefile.PL
$ make & (sudo) make install   # use local::lib!!
  ShipIt 모듈 페이지에 자세한 설명이 나와있지만 여기서 다시 설명하면... 프로젝트의 루트 디렉토리에서

  1. 설정파일을 만듭니다. (프로젝트 루트 디렉토리에 .shipit 파일이 생성됩니다)
$ shipit --write-config
  2. 설정파일을 자신이 원하는 스텝/액션에 맞게 설정합니다.
# .shipit file
steps = FindVersion, ChangeVersion, CheckChangeLog, DistTest, Commit, Tag, MakeDist, UploadCPAN
git.push_to = origin
  3. shipit 커맨드를 실행합니다.
$ shipit
Running step ShipIt::Step::FindVersion=HASH(0x10099c228)
Current version is: 0.04
Next/release version? [0.04]                                                                                                                                                      
Running step ShipIt::Step::ChangeVersion=HASH(0x10099c1f8)
Running step ShipIt::Step::CheckChangeLog=HASH(0x10099c0d8)
No mention of version '0.04' in changelog file 'Changes'
Edit file? [Y/n] y                                                                                                                                                                
Running step ShipIt::Step::DistTest=HASH(0x10099c2e8)
include /Users/jeen/Work/dev/WWW-Shorten-Durl/inc/Module/Install.pm
include inc/Module/Install/Metadata.pm
include inc/Module/Install/Base.pm
include inc/Module/Install/AuthorTests.pm
include inc/Module/Install/TestBase.pm
include inc/Module/Install/Include.pm
include inc/Test/Base.pm
include inc/Test/Base/Filter.pm
include inc/Spiffy.pm
include inc/Test/More.pm
include inc/Test/Builder.pm
include inc/Test/Builder/Module.pm
include inc/Module/Install/WriteAll.pm
include inc/Module/Install/Makefile.pm
include inc/Module/Install/Win32.pm
include inc/Module/Install/Can.pm
include inc/Module/Install/Fetch.pm
Writing Makefile for WWW::Shorten::Durl
Writing META.yml
rm -rf WWW-Shorten-Durl-0.04
/opt/local/bin/perl "-Iinc" "-MExtUtils::Manifest=manicopy,maniread" \
        -e "manicopy(maniread(),'WWW-Shorten-Durl-0.04', 'best');"
mkdir WWW-Shorten-Durl-0.04
mkdir WWW-Shorten-Durl-0.04/inc
mkdir WWW-Shorten-Durl-0.04/inc/Test
mkdir WWW-Shorten-Durl-0.04/inc/Test/Base
mkdir WWW-Shorten-Durl-0.04/inc/Module
mkdir WWW-Shorten-Durl-0.04/inc/Module/Install
mkdir WWW-Shorten-Durl-0.04/xt
mkdir WWW-Shorten-Durl-0.04/inc/Test/Builder
mkdir WWW-Shorten-Durl-0.04/lib
mkdir WWW-Shorten-Durl-0.04/lib/WWW
mkdir WWW-Shorten-Durl-0.04/lib/WWW/Shorten
mkdir WWW-Shorten-Durl-0.04/t
cd WWW-Shorten-Durl-0.04 && /opt/local/bin/perl "-Iinc" Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for WWW::Shorten::Durl
cd WWW-Shorten-Durl-0.04 && make LIBPERL_A="libperl.a" LINKTYPE="dynamic" PREFIX="/Users/jeen/local" INSTALL_BASE="/Users/jeen/local"
cp lib/WWW/Shorten/Durl.pm blib/lib/WWW/Shorten/Durl.pm
Manifying blib/man3/WWW::Shorten::Durl.3pm
cd WWW-Shorten-Durl-0.04 && make test LIBPERL_A="libperl.a" LINKTYPE="dynamic" PREFIX="/Users/jeen/local" INSTALL_BASE="/Users/jeen/local"
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t
t/durl.t .. ok  
All tests successful.
Files=1, Tests=4,  1 wallclock secs ( 0.03 usr  0.01 sys +  0.16 cusr  0.03 csys =  0.23 CPU)
Result: PASS
rm -f \
      *.a core \
      core.[0-9] blib/arch/auto/WWW/Shorten/Durl/extralibs.all \
      core.[0-9][0-9] Durl.bso \
      pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
      Durl.x  \
      perl tmon.out \
      *.o pm_to_blib \
      blib/arch/auto/WWW/Shorten/Durl/extralibs.ld blibdirs.ts \
      core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
      core.*perl.*.? Makefile.aperl \
      perl Durl.def \
      core.[0-9][0-9][0-9] mon.out \
      libDurl.def perlmain.c \
      perl.exe so_locations \
      Durl.exp
rm -rf \
      blib
mv Makefile Makefile.old > /dev/null 2>&1
rm -f \
      Makefile.old Makefile
rm -rf \
      MYMETA.yml WWW-Shorten-Durl-0.04
rm -f WWW-Shorten-Durl-0.04.tar.gz
rm -f MANIFEST.bak _build
/opt/local/bin/perl "-Iinc" "-Ilib" "-MModule::Install::Admin" -e "remove_meta()"
rm -rf inc
/opt/local/bin/perl "-Iinc" "-MExtUtils::Manifest=fullcheck" -e fullcheck
Running step ShipIt::Step::Commit=HASH(0x10099d628)
[master 8a222dc] Checking in changes prior to tagging of version 0.04.  Changelog diff is:
 2 files changed, 6 insertions(+), 2 deletions(-)
Running step ShipIt::Step::Tag=HASH(0x10099f520)
pushing to origin at /Users/jeen/local/lib/perl5/ShipIt/VC/Git.pm line 92.
Counting objects: 14, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (8/8), 953 bytes, done.
Total 8 (delta 3), reused 0 (delta 0)
To git@github.com:JEEN/WWW-Shorten-Durl.git
 * [new tag]         0.04 -> 0.04
Running step ShipIt::Step::MakeDist=HASH(0x10099f628)
include /Users/jeen/Work/dev/WWW-Shorten-Durl/inc/Module/Install.pm
include inc/Module/Install/Metadata.pm
include inc/Module/Install/Base.pm
include inc/Module/Install/AuthorTests.pm
include inc/Module/Install/TestBase.pm
include inc/Module/Install/Include.pm
include inc/Test/Base.pm
include inc/Test/Base/Filter.pm
include inc/Spiffy.pm
include inc/Test/More.pm
include inc/Test/Builder.pm
include inc/Test/Builder/Module.pm
include inc/Module/Install/WriteAll.pm
include inc/Module/Install/Makefile.pm
include inc/Module/Install/Win32.pm
include inc/Module/Install/Can.pm
include inc/Module/Install/Fetch.pm
Checking if your kit is complete...
Warning: the following files are missing in your kit:
    META.yml
Please inform the author.
Writing Makefile for WWW::Shorten::Durl
Writing META.yml
rm -rf WWW-Shorten-Durl-0.04
/opt/local/bin/perl "-Iinc" "-MExtUtils::Manifest=manicopy,maniread" \
        -e "manicopy(maniread(),'WWW-Shorten-Durl-0.04', 'best');"
mkdir WWW-Shorten-Durl-0.04
mkdir WWW-Shorten-Durl-0.04/inc
mkdir WWW-Shorten-Durl-0.04/inc/Test
mkdir WWW-Shorten-Durl-0.04/inc/Test/Base
mkdir WWW-Shorten-Durl-0.04/inc/Module
mkdir WWW-Shorten-Durl-0.04/inc/Module/Install
mkdir WWW-Shorten-Durl-0.04/xt
mkdir WWW-Shorten-Durl-0.04/inc/Test/Builder
mkdir WWW-Shorten-Durl-0.04/lib
mkdir WWW-Shorten-Durl-0.04/lib/WWW
mkdir WWW-Shorten-Durl-0.04/lib/WWW/Shorten
mkdir WWW-Shorten-Durl-0.04/t
/opt/local/bin/perl "-Iinc" -I. "-MModule::Install::Admin" -e "dist_preop(q(WWW-Shorten-Durl-0.04))"
COPY_EXTENDED_ATTRIBUTES_DISABLE=1 COPYFILE_DISABLE=1 tar cvf WWW-Shorten-Durl-0.04.tar WWW-Shorten-Durl-0.04
a WWW-Shorten-Durl-0.04
a WWW-Shorten-Durl-0.04/.gitignore
a WWW-Shorten-Durl-0.04/Changes
a WWW-Shorten-Durl-0.04/inc
a WWW-Shorten-Durl-0.04/lib
a WWW-Shorten-Durl-0.04/Makefile.PL
a WWW-Shorten-Durl-0.04/MANIFEST
a WWW-Shorten-Durl-0.04/META.yml
a WWW-Shorten-Durl-0.04/README
a WWW-Shorten-Durl-0.04/t
a WWW-Shorten-Durl-0.04/xt
a WWW-Shorten-Durl-0.04/xt/01_podspell.t
a WWW-Shorten-Durl-0.04/xt/02_perlcritic.t
a WWW-Shorten-Durl-0.04/xt/03_pod.t
a WWW-Shorten-Durl-0.04/xt/perlcriticrc
a WWW-Shorten-Durl-0.04/t/durl.t
a WWW-Shorten-Durl-0.04/lib/WWW
a WWW-Shorten-Durl-0.04/lib/WWW/Shorten
a WWW-Shorten-Durl-0.04/lib/WWW/Shorten/Durl.pm
a WWW-Shorten-Durl-0.04/inc/Module
a WWW-Shorten-Durl-0.04/inc/Spiffy.pm
a WWW-Shorten-Durl-0.04/inc/Test
a WWW-Shorten-Durl-0.04/inc/Test/Base
a WWW-Shorten-Durl-0.04/inc/Test/Base.pm
a WWW-Shorten-Durl-0.04/inc/Test/Builder
a WWW-Shorten-Durl-0.04/inc/Test/Builder.pm
a WWW-Shorten-Durl-0.04/inc/Test/More.pm
a WWW-Shorten-Durl-0.04/inc/Test/Builder/Module.pm
a WWW-Shorten-Durl-0.04/inc/Test/Base/Filter.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install
a WWW-Shorten-Durl-0.04/inc/Module/Install.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/AuthorTests.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Base.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Can.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Fetch.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Include.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Makefile.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Metadata.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/TestBase.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/Win32.pm
a WWW-Shorten-Durl-0.04/inc/Module/Install/WriteAll.pm
rm -rf WWW-Shorten-Durl-0.04
gzip --best WWW-Shorten-Durl-0.04.tar
Distfile now at /Users/jeen/shipit-dist/WWW-Shorten-Durl-0.04.tar.gz
Running step ShipIt::Step::UploadCPAN=HASH(0x10099f580)
Upload to CPAN? [Y/n] Y                                                                                                                                                           
$
 이걸로 끝입니다.

 아, 여기에서의 Step 중에 마지막에 UploadCPAN 이 있는데, 이 경우에는 홈 디렉토리에 .pause 파일을 필요로 합니다.
 물론 PAUSE 계정이 있어야 되겠죠.
# .pause in your home directory
user JEEN
password ********
mailto [YOUR EMAIL]
 .pause 파일을 생성했으면 chmod 600 으로 설정해서 다른 사람이 읽지 못하도록 합니다 (이것도 ShipIt 에서 체크되며, 다른 사람이 읽을 수 있다면 자동으로 처리를 중단시켜버립니다).

 .shipit 에서 자신이 원하는 스텝을 추가해주기만 하면 됩니다. 이것도 확장성을 고려해서 설계되어 있기 때문에... ShipIt::Step::* 의 네임스페이스를 통해서 자신만의 스텝을 만들어 나갈 수 있습니다.
  현재 다른 CPAN 모듈 제작자들이 Twitter  에 릴리즈 정보를 트윗한다든가 하는 스텝 모듈이 있기는 합니다. 그걸 참고하면 쉽게 만들 수 있을 겁니다. (저도 뭐 생각나면 만들어 볼까 생각하고 있습니다)

  그외 자세한 내용은 ShipIt 모듈 페이지를 참고하면 도움이 될 겁니다.

   http://search.cpan.org/perldoc?ShipIt

  혹시 모르시는 것이 있다면 저도 같이 노력해서 궁리해보고자 합니다. :-)
  ShipIt 으로 이제 마구마구 만들고 배포를 해보도록 합시다!
신고
IT/Perl 2009.10.02 18:05

[CPAN] 거저 먹는 CPAN 모듈 만들기 - WWW::Shorten::Durl

  Daum 에서 만든 Durl 이라는 서비스가 있습니다. Twitter 하시는 분이라면 누구나 알고 있는 흔하디 흔한 짧은 URL 로 바꿔주는 서비스입니다. Durl 의 경우는 여기에 지정한 url 을 캡쳐뜨는 기능을 덧붙여서 다른 서비스들과 차별화를 뒀는데요.
  최근에 커뮤니티 부흥을 위한 웹 서비스 개발을 위해서 TinyURL 을 써야되는데... 캡쳐도 된다고 하니.. 이번기회에 Durl 을 써보기로 했습니다(왠지 캡쳐된 이미지를 따로 보여줄 수 있다면 좀 짱일 것 같다는 생각때문에)..

  Durl 의 OpenAPI 문서는 아주 요점만 간단하게 설명되어 있습니다.

  http://durl.me/doc/OpenAPI.html

  XML이 뭔지 JSON이 뭔지 알고 있으며, API 를 어떻게 쓰는 지 알고, 간단한 프로그래밍 언어만 알면 누구나 구현할 수 있는 모듈을 CPAN 에 올렸습니다.

  이름하야 WWW::Shorten::Durl.

  http://search.cpan.org/perldoc?WWW::Shorten::Durl

  대개의 URL 을 줄여주는 서비스들의 네임스페이스가 WWW::Shorten 을 기반으로 하고 있기 때문에 저도 이것을 사용했습니다. WWW::Shorten 자체가 확장성을 고려된 형태였었지요.  Durl 뿐만 아니라 십수가지 서비스들의 모듈이 저 네임스페이스(WWW::Shorten::*) 을 쓰고 있습니다.

  사용법도 간단합니다.

  makealongerlink(URL), makeashorterlink(URL)

  이걸로 끝이죠.
  이런 간단한 기능에 객체지향이니 뭐니 하기도 그렇고...

  아, github 를 레포지트리로 놔두고 작업했습니다. 사실 펄 커뮤니티용 git repository 가 있기는 한데... 뭐 외부에서는 접근하기는 힘들기도 하고, 공개하기 쉬운 방향으로 가기 위해서!

  http://github.com/JEEN/WWW-Shorten-Durl

  이상으로 아무튼 쉽게쉽게 물타기 해서 만들 수 있는 CPAN 모듈의 얘기였습니다.

  이번 CPAN 모듈 작성에 있어서 도움이 된 ShipIt 등에 대한 이야기는 별도로 포스팅하도록 하겠습니다.
신고
TOTAL 462,164 TODAY 15

티스토리 툴바