Whiteship's Note

'Good Tools'에 해당되는 글 186건

  1. 2009.04.28 Prototype VS JQuery 트랜드 비교 (2)
  2. 2009.04.27 기트(Git)와 SVN으로 동시에 버전 관리하기 (4)
  3. 2009.04.25 Github 맘에 드네~
  4. 2009.04.14 Github에 pull, push하기 (2)
  5. 2009.04.09 기트(git) config
  6. 2009.04.07 기트(git) 주요 명령어 (2)
  7. 2009.03.30 기트(Git) 주요 개념 (8)
  8. 2009.03.26 JGit 설치
  9. 2009.03.03 아이폰 애플리케이션 iDie
  10. 2009.01.05 구글 토크 사전 (4)
  11. 2008.12.08 Word Cloud 만들어보기
  12. 2008.11.28 i구글의 날씨 위젯 좀 짱인듯..
  13. 2008.11.10 IntelliJ도 좋아보이는데.. 상용인게 안타깝네요 (4)
  14. 2008.11.10 SpringSource DM Server 이클립스 플러긴
  15. 2008.11.07 대략난감 테스트 자동 생성기 Randoop (4)
  16. 2008.11.04 데이터베이스 변경 관리 툴 LiquiBase
  17. 2008.11.02 맥용 녹음기 Sound Studio
  18. 2008.10.30 Eclipse 3.4(Ganymede)에서 Subversive 설치가 순조롭지 않을 때 (2)
  19. 2008.10.29 Spring Webinar 우와.. (2)
  20. 2008.10.29 맥OSX IRC 클라이언트 Colloquy
  21. 2008.10.11 맥북에 Postgres 설치하기
  22. 2008.09.17 Thank you. Atlassian!! (2)
  23. 2008.09.10 자주쓰는 이클립스 플러긴 업데이트 사이트 (4)
  24. 2008.09.08 새싹(OpenSprout)이 꿈꾸는 Agile 개발 (6)
  25. 2008.09.08 스프링은 CI를 어떻게 하고 있을까? (1)
  26. 2008.09.05 화면 공유, 원격 지원. Mikogo가 짱.
  27. 2008.09.02 Confluence에서 새창에서 여는 링크 만들기
  28. 2008.09.01 Eclipse에서 assert 문 수행 옵션 켜기
  29. 2008.08.29 톰캣에 Jira ear/war 버전 설치하기
  30. 2008.08.27 TextMate 괜찮군요~ (2)

Prototype VS JQuery 트랜드 비교

Good Tools : 2009.04.28 16:47


둘의 동향을 비교해보기 위해 구글 트랜드 검색을 했습니다. JQuery가 러시아에서 왜케 인기가 좋은지 궁금하네요? 러시아 사람이 만들었나요? 인도와 타이완 중국에서도 인기가 좋네요.


구글 트랜드 말고도 트랜드를 비교 검색해주는 사이트가 있었던 것 같은데 기억이 안나네요. @_@
원랜 그걸 찾으려고 구글에서 trend를 검색했는데 구글 트랜드가 보이길래 이걸 써봤습니다.ㅋㅋ 암튼 구글 대단해요~
top


기트(Git)와 SVN으로 동시에 버전 관리하기

Good Tools : 2009.04.27 14:14


기트에서는 SVN 정보를 버전관리에서 제외하고 SVN에서는 기트 정보를 버전관리에서 제외해줘야 합니다. 그래야 깔끔하겠죠. 기트로 버전 관리는 하는데 괜히 모든 폴더마다 .svn 폴더가 생기고 그 안에 또 여러 폴더와 파일들까지 딸려 온다면... 쫌~ 그르치요~!

기트에서 SVN 정보를 버전관리 대상에서 제외하는 방법은 간단합니다. 프로젝트 루트에 .gitignore 파일을 만들고 그 안에 .svn 과 .svn/* 을 추가해주시면 됩니다. 두 번째 것 만 등록해도 될런지 모르겠습니다.


반대로 SVN에서는 프로젝트 루트에 있는 .git 폴더와 .gitignore 파일만 ignore 시켜주면 됩니다. 이렇게 하면 이제부터 이클립스에서는 subversive 플러긴을 이용해서 SVN에 커밋&업데이트를 할 수 있고, 콘솔로는 기트를 이용하여 로컬에 commit을 하고 원격에 push, pull 하면서 두 개의 버전관리 시스템을 사용할 수 있겠습니다.

둘 중 하나는 뷰 전용으로 하고, 다른 것 하나를 주요 버전 관리 시스템으로 사용하면 좋을 것 같습니다. 예를 들어, SVN을 뷰 전용으로 사용하고 기트를 사용하여 실제 개발을 하면서 중간 중간 push할 때 마다 SVN에 같이 커밋해주는 식으로 사용하면 될 것 같습니다.

'Good Tools' 카테고리의 다른 글

오늘 하루 타일즈(Tiles)에 낚였나보다~  (2) 2009.05.01
스프링 MVC에서 타일즈 2 사용하기  (2) 2009.05.01
Tiles와 SiteMesh 차이  (0) 2009.05.01
Tiles VS SiteMesh  (2) 2009.05.01
Prototype VS JQuery 트랜드 비교  (2) 2009.04.28
기트(Git)와 SVN으로 동시에 버전 관리하기  (4) 2009.04.27
Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
top


Github 맘에 드네~

Good Tools : 2009.04.25 10:44



보시다시피 그래프로 브랜치 흐름을 보여줍니다. 와우.. 멋지지 않나요. 여기서 그치지 않고 점들을 클릭하면 해당 빌드에 대한 상세 정보 페이지로 이동합니다.

게다가 소스 코드 다운로드와 위키, 이슈트래커까지 제공해주죠. @_@

좋치 않나요. 속도도 SVN 호스팅 사이트와는 비교할 수 없이 빠르더군요. 기트를 사용해보실 분들에게 강추합니다~

'Good Tools' 카테고리의 다른 글

스프링 MVC에서 타일즈 2 사용하기  (2) 2009.05.01
Tiles와 SiteMesh 차이  (0) 2009.05.01
Tiles VS SiteMesh  (2) 2009.05.01
Prototype VS JQuery 트랜드 비교  (2) 2009.04.28
기트(Git)와 SVN으로 동시에 버전 관리하기  (4) 2009.04.27
Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
top

TAG GitHub, 기트

Github에 pull, push하기

Good Tools : 2009.04.14 11:37


간단하지 않더군요. public 저장소라길래 아무나 소스 코드 받고 아무나 소스 코드 수정해서 올릴 수 있나보다 했는데.. 그게 아니더군요. 아무나 소스 코드를 받아 갈 수는 있습니다. 하지만 아무나 소스 코드를 수정할 수는 없더군요. 즉.. pull은 자유롭지만 push는 그렇지 않았습니다. push를 하려면 공개키, 비공개키를 만든다음, 공개키를 public 저장소에 등록해 두어야 push할 수 있습니다.

0. pull 하기

git pull URI

이런 형태로 하면 프로젝트를 가져옵니다. 따라서 workspace에서 실행하는게 좋겠죠.

1. 공개키, 비공개키 만들기

http://github.com/guides/providing-your-ssh-key

여기를 참조하셔서 리눅스, 맥, 윈도우에서 키를 만듭니다.
주의할 것이 있는데, 키를 만들 때 사용한 passPhrase..
키워드 같은 것을 기억해 두세요. 기억력이 약하시면 어딘가에 저장해 두세요.

2. 공개키를 public 저장소에 등록하기

사용자 삽입 이미지

이런 식으로 공개키를 등록해 줍니다. 물론 저 화면에는 아무나 들어갈 수 없고 public 저장소 주인장만 들어갈 수 있죠. 따라서 팀원들은 공개키를 만든 다음에 주인장에게 공개키를 전달해야 합니다.

3. push 하기

git push git@github.com:사용자/저장소.git

이런 형태로 쓰면 됩니다. 그러면 중간에 passphrase를 입력하라는 콘솔이 뜹니다. 그럼 이제 키를 만들 때 입력한 passphrase를 입력하시면 끝~~

다음에는 branch, merge, conflic 해결등을 다뤄볼까 합니다.

'Good Tools' 카테고리의 다른 글

Tiles와 SiteMesh 차이  (0) 2009.05.01
Tiles VS SiteMesh  (2) 2009.05.01
Prototype VS JQuery 트랜드 비교  (2) 2009.04.28
기트(Git)와 SVN으로 동시에 버전 관리하기  (4) 2009.04.27
Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
아이폰 애플리케이션 iDie  (0) 2009.03.03
top

TAG Git, GitHub, Pull, push

기트(git) config

Good Tools : 2009.04.09 10:57


참조: http://www.kernel.org/pub/software/scm/git/docs/git-config.html

사용자 삽입 이미지

--global 옵션을 사용하려고 시도하면 처음에 fatal: $HOME not set git 이런 에러를 만나게 됩니다. 그럼 환경 변수에 $HOME 변수를 추가해주고 다시 시도해보면 잘 동작할 겁니다.

기트 설정 파일의 위치는 세 종류가 있습니다. 특정 저장소와 관련된 설정, 컴터 사용자 관련 설정, 컴터 관련 설정이 있습니다.

아무런 옵션을 주지 않고 git config 라고 사용하면 그 하위 폴더에 .git/config에 설정 합니다. 명시적으로 -f ./git/config 또는 --file ./git/config 같은 식으로 설정할 수도 있습니다.

ex) git conifg user.name "whiteship"

컴터 사용자 관련 설정은 --global 옵션을 사용하면 되고, 시스템 관련 설정은 --system을 사용하면 됩니다.

설정한 정보는 --list 옵션으로 보는데, 살펴볼 설정 위치를 명시해주지 않으면 모든 위치의 설정 성보를 보여줍니다.

ex) git config --list

사용자 삽입 이미지

'Good Tools' 카테고리의 다른 글

Tiles VS SiteMesh  (2) 2009.05.01
Prototype VS JQuery 트랜드 비교  (2) 2009.04.28
기트(Git)와 SVN으로 동시에 버전 관리하기  (4) 2009.04.27
Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
아이폰 애플리케이션 iDie  (0) 2009.03.03
구글 토크 사전  (4) 2009.01.05
top


기트(git) 주요 명령어

Good Tools : 2009.04.07 16:42


참조: http://git-scm.com/documentation

로컬 명령어

git config      저장소 또는 글로벌 옵션 가져오거나 설정할 때 사용.
git init     비어있는 기트 저장소 만들거나 기존의 저장소 다시 초기화.
git add     파일 내용을 인덱스에 추가.
git status     작업 트리(working tree) 상태 보기.
git commit     저장소에 변경 사항 기록하기.
git log     커밋 히스토리 보기.
git show     특정 객체 정보 보기.
git tag     태그 만들고, 나열하고, 삭제하고, 검증할 때 사용.

원격 명령어

git clone      저장소를 새 디렉터리에 복사하기.
git remote     추적중인 저장소(tracked repository) 집합 관리하기.
git pull     다른 저장소 또는 로컬 브랜치에서 가져온(fetch) 다음 병합하기(merge).
git fetch     다른 저장소에서 가져오기.
git push     연관된 객체로 원격 저장소 업데이트.

브랜치 명령어

git checkout      브랜치 또는 패스(path)를 작업 트리로 체크아웃하기.
git branch     브랜치 목록 나열하기, 만들기, 삭제하기할 때 사용.
git merge     두 개 이상의 개발 히스토리를 하나로 합치기.
git rebase     브랜치 베이스를 변경할 때 사용(?).

기타 명령어

git diff      커밋, 작업 트리 등 변경 사항 보기.
git apply     기트 인덱스 파일과 작업 트리에 패치(patch) 적용하기.
git format-patch     이메일로 보낼 패치 준비하기.
git am     메일 박스에있는 패치 적용하기.

'Good Tools' 카테고리의 다른 글

Prototype VS JQuery 트랜드 비교  (2) 2009.04.28
기트(Git)와 SVN으로 동시에 버전 관리하기  (4) 2009.04.27
Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
아이폰 애플리케이션 iDie  (0) 2009.03.03
구글 토크 사전  (4) 2009.01.05
Word Cloud 만들어보기  (0) 2008.12.08
top


기트(Git) 주요 개념

Good Tools : 2009.03.30 16:16


참조: http://git.or.cz/course/svn.html

저장소(Repository): 서브버전에서 각각의 프로젝트는 체크아웃하고 커밋하는 중앙에 위치한 단일 저장소에 위치한다. Git는 다르게 동작한다. 각각의 프로젝트 트리(working copy라고 부른다) 복사본을 각자의 저장소에 가지고 있는다. 따라서 로컬과 원격 브랜치를 가질 수 있다. 또한 워킹 카피에 붙어있지 않은 베어 저장소(Bare repository)를 가질 수 있는데, 이 것은 특히 저장소를 공개하고 싶을 때 유용하다.

URL: 서브버전에서 URL은 저장소 위치 식별자와 저장소 내부 경로를 나타낸다. 따라서 저장소의 레이아웃과 그 의미를 구조화 한다. 보통 trunk/, branches/, tags/ 디렉터리를 가지고 있을 것이다. 기트에서 URL은 단순 저장소 위치다. 브랜치와 태그는 항상 내포하고 있다. 브랜치중 하나를 기본으로 사용하고 그 이름이 보통 master다.

리비전(Revision): 서브버전은 리지번을 증가만 하는 정수 id로 식별한다. 대규모 프로젝트에서는 금방 수 백, 수 천이 되는 경향이 있다. Git 같은 분산 시스템에서는 실용적이지 않다. Git는 SHA1 id로 리비전을 식별한다. 16 진수의 기다란 160 비트 숫자다. 처음엔 좀 당황스럽지만 실제로는 그리 방해가 되지 않는다. 최신 리비전을 HEAD로 참조할 수 있고, 그 부모를 HEAD^ 로 참조하고 부모의 부모는 HEAF^^ = HEAD^2 이런식으로 참조할 수 있다. 또한 리비전의 앞 부분 몇 개만으로 참조할 수 있다. 그것으로 식별할 수 있다면 기트가 나머지를 추측할 것이다.

커밋(commit): 각각의 커밋은 author와 committer가 있다. 누가 언제 코드를 변경했고 누가 그것을 커밋했는지 알려주는 정보다.(Git는 메일로 주는 패치를 잘 적용할 수 있도록 설계 했는데, 이런 경우 author와 committer가 다를 수 있다.) git config -I로 이름과 이메일을 확인할 수 있다. 그리고 다음 명령어로 그 정보를 설정할 수 있다.

git config --global user.name "Your Name Comes Here"
git config --global user.email you@yourdomain.example.com

명령어: git command 형태인데, git-command 형태로 사용할 수도 있다.

색상: 다음과 같이 설정하면 컬러풀한 결과를 볼 수 있다. 기본값으로 색상을 사용하지 않는다.

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

비주얼: gitk를 사용해서 저장소를 살펴보면 편리할 것이다. 맥용 gitk 대체 애플리케이션

'Good Tools' 카테고리의 다른 글

기트(Git)와 SVN으로 동시에 버전 관리하기  (4) 2009.04.27
Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
아이폰 애플리케이션 iDie  (0) 2009.03.03
구글 토크 사전  (4) 2009.01.05
Word Cloud 만들어보기  (0) 2008.12.08
i구글의 날씨 위젯 좀 짱인듯..  (0) 2008.11.28
top

TAG Git

JGit 설치

Good Tools : 2009.03.26 15:41


이클립스 업데이트 사이트: http://www.jgit.org/update-site
위 업데이트 사이트를 이용해서 설치하면 됩니다.

그런 다음 Git로 버전 관리할 프로젝트에서 Team -> Share Project -> Git를 선택합니다. 그럼 이제 Team 메뉴에서 Git 명령어 몇 개를 사용할 수 있습니다.

사용자 삽입 이미지
사용자 삽입 이미지

아직은... 툴 지원이 Subversion에 비해 미약한 듯 합니다. 특히 Git에서 자주 사용할 것 같은 명령어인 Add, Commit, Pull, Push에 대한 단축키가 지정되어 있지 않다는 것이 좀 걸립니다. 물론 수동으로 단축키를 등록하고 사용하는 방법도 있지만... 조금 귀찮죠.

새로 추가한 파일은 관리 대상이 아니라는 표시가 나오고 관리 중인 코드를 변경하고 아직 commit 하지 않았을 경우 not updated라고 표시해줍니다. 이 상태에서 commit을 하면 not updated인 코드만 commit하고 새로 추가한 파일은 commit하지 않습니다.

오른쪽 조그만 빨간색은 JUnit Max인데 저장하는 순간 바로 테스트를 하고 그 결과를 알려주기 때문에 굉장히 유용한 툴인것 같습니다. 손수 테스트를 돌리지 않아도 되기 때문에 코딩 흐름을 빠르게 이어 나갈 수 있습니다.

'Good Tools' 카테고리의 다른 글

Github 맘에 드네~  (0) 2009.04.25
Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
아이폰 애플리케이션 iDie  (0) 2009.03.03
구글 토크 사전  (4) 2009.01.05
Word Cloud 만들어보기  (0) 2008.12.08
i구글의 날씨 위젯 좀 짱인듯..  (0) 2008.11.28
IntelliJ도 좋아보이는데.. 상용인게 안타깝네요  (4) 2008.11.10
top


아이폰 애플리케이션 iDie

Good Tools : 2009.03.03 19:16


사용자 삽입 이미지

이 애플리케이션은 도스토예프스키의 '바보'에서 영감을 얻은 것 같네요. 위 그림에 보이는 건 제 생일입니다. 죽을 나이를 76살로 했을 때 현재까지 얼마나 살았으며 얼마나 시간이 남았는지 일, 시, 분, 초로 나타내 줍니다. 시간이 점점 줄어듭니다. 살날이 그만큼 남았다는 것을 알려줍니다. 정말 멋진 애플리케이션인데 공짜입니다. 캬~
사용자 삽입 이미지

요즘 아침에 일어나는 시간이 늦어져서 스트레스를 받고 있었는데 오늘 아주 신선한 자극을 준 애플리케이션을 발견해서 기분이 좋네요.

저도 개발자로 살면서 저런 애플리케이션들을 많이 많이 만들어 보고 싶습니다.

'Good Tools' 카테고리의 다른 글

Github에 pull, push하기  (2) 2009.04.14
기트(git) config  (0) 2009.04.09
기트(git) 주요 명령어  (2) 2009.04.07
기트(Git) 주요 개념  (8) 2009.03.30
JGit 설치  (0) 2009.03.26
아이폰 애플리케이션 iDie  (0) 2009.03.03
구글 토크 사전  (4) 2009.01.05
Word Cloud 만들어보기  (0) 2008.12.08
i구글의 날씨 위젯 좀 짱인듯..  (0) 2008.11.28
IntelliJ도 좋아보이는데.. 상용인게 안타깝네요  (4) 2008.11.10
SpringSource DM Server 이클립스 플러긴  (0) 2008.11.10
top


구글 토크 사전

Good Tools : 2009.01.05 13:48


사용자 삽입 이미지

이 녀석은 사부님이 준 새해 선물로.. 구글 토크에 en2ko.dict@bot.talk.google.com 을 추가해 준 다음 말을 걸면 됩니다.

캬~ 귿!!
top


Word Cloud 만들어보기

Good Tools : 2008.12.08 05:14


http://www.wordle.net/
위 사이트에서 간단하게 만들어 볼 수 있습니다.

직접 키워드를 입력할 수도 있고 블로그 주소나 RSS 피드 URL을 주면 알아서 만들어 주기도 합니다. 일일히 입력해 보긴 귀찮아서 사부님 블로그랑 제 블로그 RSS로 해봤습니다.

\"사용자

사용자 삽입 이미지

딱 보면 어떤게 누구껀지 알 수 있겠죠? 한글이 깨지시는 분들은 Font를 바꿔보세요. 그럼 잘 나올겁니다.
top


i구글의 날씨 위젯 좀 짱인듯..

Good Tools : 2008.11.28 20:30


구글에서 마이애미 날씨를 검색했더니 아래처럼 첫 화면에 바로 날씨 요약 정보를 보여줍니다.


저기 보이는 iGoole에 추가 버튼을 눌렀더니...


이렇게 기존에 추가되어있던 서울 날씨에 계속해서 추가해줍니다. 우왕;; 귿인데.. S1A 컨퍼런스 할 때 비오겠네;;
top


IntelliJ도 좋아보이는데.. 상용인게 안타깝네요

Good Tools : 2008.11.10 23:56


스프링 2.5랑 DM까지도 기본으로 지원해줍니다. 플러그인 설치가 필요없죠. CSV를 비롯한 SVN 등 여러 소스 버전 관리 툴도 기본으로 지원해줍니다. 상용이라는 거 빼곤 단점을 찾아보기가 힘드네요. 일단 단축키를 모르고 세부 기능을 잘 모른다는 것이 제 문제이기는 한데, 그거야 사용하면서 잘 알아나가면 될 것 같고... 흠.. 30일간은 무료로 사용할 수 있으니 한 번 써보세요~

http://www.jetbrains.com/idea/


사용자 삽입 이미지
메이븐 프로젝트도 아닌데, 프로젝트 만들 때 필요한 라이브러리 선택하면 알아서 lib 폴더에 넣고 클래스패스에 추가해줘요. 스프링+하이버 프로젝트 만드는거 완전 껌인데요.ㅋㅋ

메이븐도 물론 기본으로 지원, 멀티 POM 까지 지원해준다고 했으니 여기서 OSAF를 로딩하면 어떻게 될까? 궁금하네~ 생각난 김에 바로 ㄱㄱㅆ

사용자 삽입 이미지

오. M2Eclipse로 로깅한거랑 비슷하게 읽어오는군요. 심심해서 테스트도 돌려봤습니다. 캬~ 괜찮아요. 괜찮아.
top

TAG IntelliJ

SpringSource DM Server 이클립스 플러긴

Good Tools : 2008.11.10 14:47


참조 : http://static.springsource.com/projects/dm-server/1.0.x/programmer-guide/html/ch08.html

스프링소스의 프로젝트를 보면 신생 프로젝트들인데도 문서화가 정말 잘 하고 있는게 신기합니다. 전부 개발자들일 텐데(그 중에서 아는 이름은 Rob Harrop밖에 없지만) 개발 하랴 문서화 하랴 정말 대단합니다.

그건 그렇고 SpringSource DM Server(S2DS)를 이클립스에서 실행하려면 간단한 플러그인 설치가 필요합니다.

이클립스 업데이트 사이트: http://static.springsource.com/projects/sts-dm-server/update/

위 주소를 이용해서 플러그인을 설치하고 Server 뷰에서 New Server를 선택하면 다음과 같이 S2DS를 선택할 수 있습니다. 동영상에 보니까 프로젝트를 드래그 앤 드랍 하면 해당 번들을 설치해주던데.. 아직 해보진 않았습니다.ㅋㅋ



물론 저 서버를 생성하려면 OpenSprout에서 배포한. 혹은 자신이 직접 소스 코드에서 빌드한 S2DS 홈 디렉토리를 설정해 줘야 합니다.


서버 탭 구성이나 내용이 Tomcat 서버와는 좀 달랐습니다.


한 번 돌려봤는데 잘 동작합니다.



top


대략난감 테스트 자동 생성기 Randoop

Good Tools : 2008.11.07 18:01


http://people.csail.mit.edu/cpacheco/randoop/1.2/doc/userman.php

처음 보고는 이야.. 아주 별에 별 도구가 다 있구나. 생각을 하고 과연.. 잘 만들어 줄까?? 라는 기대반 호기심 반으로 들려봤습니다.

테스트를 작성할 대상이 되는 클래스는 예전에 사부님이 시켜주신 TTD 트레이닝 중 하나 볼링게임. 그 중에서도 Frame이라는 클래스를 마루타 삼기로 햇습니다.

package domain;

import java.util.ArrayList;
import java.util.List;

public class Frame {

    List<Roll> rollList = new ArrayList<Roll>();
    protected Integer remainPinNumber = 10;
    private Integer number;

    public Frame(Integer frameNumber) {
        this.number = frameNumber;
    }

    public Boolean isEnd() {
        if (hasStrike() || rollList.size() == 2)
            return true;
        return false;
    }

    protected boolean hasStrike() {
        for (Roll roll : rollList)
            if (roll.getType() == RollType.STRIKE)
                return true;
        return false;
    }

    public void add(Roll roll) {
        setRollType(roll);
        remainPinNumber -= roll.getKnockDownPinCount();
        rollList.add(roll);
    }

    protected void setRollType(Roll roll) {
        Integer knockDownPinCount = roll.getKnockDownPinCount();
        if (rollList.size() == 0 && knockDownPinCount == 10)
            roll.setType(RollType.STRIKE);
        else if (knockDownPinCount == 0)
            roll.setType(RollType.GUTTER);
        else if (knockDownPinCount == remainPinNumber)
            roll.setType(RollType.SPARE);
    }

    public Integer getRollListSize() {
        return rollList.size();
    }

    public Integer getRemainPinNumber() {
        return remainPinNumber;
    }

    public Integer getScore() {
        Integer score = 0;
        for (Roll roll : rollList)
            score += roll.getScore();
        return score;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder("frame(");
        builder.append(number).append(", ");
        for (Roll roll : rollList)
            builder.append(roll.toString());
        builder.append(", ").append(getScore()).append(")");
        return builder.toString();
    }

    public List<Roll> getRollList() {
        return rollList;
    }

}
 
그리 복잡한 클래스는 아니지만 비즈니스 로직이 들어있죠. 저걸 대상으로 테스트 코드를 생성해봤습니다.

10초 동안 돌려서 만들어 봤습니다. 콘솔에 뭔가가 찍히는데 무슨 의미인지는 모르겠고 마지막에 생성된 파일 목록이 나오는데 다섯개나 만들어져있습니다.


저 중에서 RandoopTest.java는 테스트 스위트 파일이고 네 개의 소스 파일이 테스트 코드를 담고 있습니다.

문제는... 대체 뭘 테스트 한 건지도 모르겠는 코드가 14000~2만 라인씩 생성된다는 겁니다. 이클립스가 막 죽으려고 버버버벅 거립니다.

그 중에서 젤 간단해 보이는 걸 몇 개 보여드릴까요?


대략 난감입니다. 테스트를 돌리면 전부 성공하긴 합니다.


그냥 웃음 밖에 안나옵니다. 크하하하하... 저 수 많은 코드와 녹색불은.. 무슨 의미가 있을까요?


top


데이터베이스 변경 관리 툴 LiquiBase

Good Tools : 2008.11.04 23:45


http://www.liquibase.org/

소스 코드만 버전 관리하는 것이 아니라 데이버베이스 스키마를 버전 관리해서 지난 변경 사항 이력을 관리할 수 있고, 이를 자동화 하여 통합 빌드로 여러 명의 개발자가 하나의 스키마를 공유할 수도 있습니다. 데이터베이스 리팩터링에도 매우 유용할 것 같습니다.

대강 살펴본 주요 기능은 다음과 같습니다.
- 이클립스 플러긴으로 IDE도 제공합니다.
- Ant, Maven 지원.
- DBMS에 독립적
- 롤백 지원
- 동영상 데모 제공
- 데이터베이스 리팩터링 지원 http://www.liquibase.org/refactorings

무엇보다 홈페이지가 깔끔한게.. 마음에 드네요. 저것도 Wiki로 만든거 같은데... 흠.. OSAF 홈피보다 이쁘자낫;;;


top

TAG LiquiBase

맥용 녹음기 Sound Studio

Good Tools : 2008.11.02 09:36


오늘 오후 스터디를 녹음 하려고 괜찮은 소프트웨어를 찾느라 시간좀 보냈습니다. ㅎㅎ 스터디 준비도 많이 못했는데 이거라도 잘 준비해 가야죠. 캬캬..

http://www.freeverse.com/apps/app/?id=5012&view=overview

위 링크에 가시면 다운로드 및 동영상으로 사용법을 볼 수 있습니다. 직접 테스트를 한 번 해봤는데 맘에 듭니다. 소리를 잘 잡아주네요. 대신 스터디 하는 도중 맥북에 입력하는 키보드 소리가 너무 크진 않을까 걱정됩니다. 타이핑 할 때 살살해야겠습니다. ㅎㅎ;;

사용자 삽입 이미지

Tip. MP3로 저장하기
- LAME이라는 걸 설치해주셔야 합니다. 여기서 받아서 설치할 수 있습니다.

top


Eclipse 3.4(Ganymede)에서 Subversive 설치가 순조롭지 않을 때

Good Tools : 2008.10.30 18:05


http://thecoffeemachine.wordpress.com/2008/08/20/subversive-in-eclipse-ganymede/

어떤 상황이냐면, 플러그인 설치할 때 Ganymede -> Collaborate를 사용해서 subversive를 설치할 때 플러그인 다운로드가 잘 안 되서 죽어버리는 현상입니다.

위 링크 마지막에 나와있는 순서대로 하면 잘 됩니다.

  1. Go to Help->Software Updates.
  2. Click on the “Available Software” tab.
  3. Unfold the Ganymede->Collaboration Tools node, and if your experience is like mine, you will see the “SVN Team Provider (Incubation)” item with this version identifier, “0.7.1.I20080612-1500″. What you really need (since the Subversive/Polarion team posted updates) is the version from 2008-08-01.
  4. Click on “Manage Sites…”.
  5. Uncheck the “Ganymede” checkbox (http://download.eclipse.org/releases/ganymede)
  6. Scroll down to find “http://download.eclipse.org/technology/subversive/0.7/update-site/”, select it and click “OK”.
  7. You should be back on the “Available Software” tab, with only the subversive items present. Unfold the “Subversive SVN Team Provider Plugin (Incubation)” item, and you will see the “SVN Team Provider (Incubation)” item. Note that the version identifier is “0.7.3.I20080814-1500″.
  8. Check the box, and click”install”. The install will be change to an update. Restart Eclipse at the end of the install.
  9. Go to “Help->Software Updates”.
  10. Choose the “Available Software” tab.
  11. Click the “Add Site” button, and add “http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/”.
  12. Check the SVNKit Connectors and click “Install”. Restart Eclipse at the end of the install.
  13. Subversive should be working !

top


Spring Webinar 우와..

Good Tools : 2008.10.29 23:14


실시간 세미나.... ㄷㄷㄷ..
그것도 무료로..
그것도 맥북에도 잘 돌아가는...

사용자 삽입 이미지
사용자 삽입 이미지
와.. 장난 아닙니다. 단순하게 PPT 보여주는게 아니라, 스크린캐스팅을 실시간으로 보여주고 있는거네요.

사용자 삽입 이미지
이제 강의에 집중하렵니다. +.+
top


맥OSX IRC 클라이언트 Colloquy

Good Tools : 2008.10.29 22:08


공짜에요. 좋네요. 캬캬
http://colloquy.info/

사용자 삽입 이미지
사용자 삽입 이미지

캬오... 갠춘하네요.
top


맥북에 Postgres 설치하기

Good Tools : 2008.10.11 23:46


먼저 PostgreSQL 코어를 설치합니다.
http://www.postgresql.org/download/macosx

공유 메모리가 부족하다는 메시지가 뜨던데, 재부팅해서 다시 설치를 시도하면 설치가 진행됩니다.

코더 설치를 마친 다음에는 pgAdmin을 설치했습니다.
http://www.pgadmin.org/download/macosx.php

사용자 삽입 이미지
오~ 좋네 좋아.
top


Thank you. Atlassian!!

Good Tools : 2008.09.17 16:36


아뜰라시안한테 오픈소스 라이선스를 받았습니다. 꺄오~ Confluence, Jira, Bamboo, Clover. Crucible을 마음껏 이용할 수 있게 됐네요. 캬캬캬. 개인용은 언제나 공짜였지만, 사용자를 딱 2명으로 제한해둬서 정말 개인밖에 못 썼는데, 오픈소스 라이선스는 사용자가 무제한입니다.

OpenSprout를 공개할 날도 얼마 남지 않았네요. 이제 기반은 다 마련됐고, 코드랑, 예제까지 준비해뒀지만, 커스텀 태그 전면 교체 작업이 남아 있어서 좀 시간이 걸리 것 같습니다. :)
top


자주쓰는 이클립스 플러긴 업데이트 사이트

Good Tools : 2008.09.10 22:01


AJDT
- Spring AOP 또는 AspectJ를 사용할 떄 유용.
- http://download.eclipse.org/tools/ajdt/34/update

스프링 IDE
- 스프링 개발을 한다면, 필수.
- http://springide.org/updatesite-nightly

스프링 DM 서버
- 스프링 DM 개발 한다면, 필수.
- http://static.springsource.com/projects/sts-dm-server/update/

안드레이
- AnyEdit를 비롯한 여러 유용한 플러긴 제공합니다.
- http://andrei.gmxhome.de/eclipse/

Subversive
- SVN을 사용한다면.. 설치. 단.. 설치가 좀..
- http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/
- http://download.eclipse.org/technology/subversive/0.7/update-site/ (이건 manage site에서 체크해줘야 보임)

M2Eclipse
- Maven을 사용한다면, 필수. Q4E는 gg.
- http://m2eclipse.sonatype.org/update/

Moreunit
- Alt+J 인가 Ctrl+J로 테스트 코드와 구현 코드 간에 왔다리 갔다리 편함.
- http://moreunit.sourceforge.net/org.moreunit.updatesite/

PropertyEdit
- 프로퍼티즈 파일 편집기로 유용.
- http://propedit.sourceforge.jp/eclipse/updates/

Clover
- 클로버 사용할 때 유용.
- http://update.atlassian.com/eclipse/clover/

설치 순서
- Mylyn, AJDT -> 스프링 IDE
- 나머진 순서 상관없음.

이 플러그인들이 현재 가장 자주 쓰고 있는 플러긴입니다. 자주 쓰진 않지만 매우 좋은 것 중 하나로, ResourceBundle Editor가 있었는데, 이건 업데이트 사이트가 없어서 직접 설치했던거 같습니다. 국제화 지원하는 properties 파일 편집할 때 매우 편합니다.


top


새싹(OpenSprout)이 꿈꾸는 Agile 개발

Good Tools : 2008.09.08 23:05


이전에도 어디부터 개발을 해야 하는건지 고민한적이 있었는데, 좀 전에 박재성님께서 그와 비슷한 글을 올려주셔서 새삼 기억이 났습니다.

그래서 요즘 꿈꾸고 있는 초고속 개발에 대해 그려볼까 합니다. 개발 과정은 단순합니다.

1. 도메인 클래스 작성.
2. 코드 생성(한 방에 DAO, Service, Controller + 기타 Context 클래스들(validator, param, ref, 덩덩,)까지..+ 뷰)
3. 세부 조정.

끝 입니다. RoR의 스캐폴드 정도로 생각하시면 될 것 같습니다. 물론 확장성도 고려해서 코드 생성을 해주는 겁니다. 스프링, 하이버네이트를 사용해서 이런 초고속 개발을 뒷받침할 프레임워크를 공개할 생각입니다. 하지만.. 저정도 초고속 개발을 하려면, 프레임워크 혼자서는 안 될 겁니다.

고도의 확장성을 고려하여 설계한 코드 생성 로직이 프레임워크에 담겨있어야 하고, 화면 코드도 커스텀 태그를 적극 활용해서 화면 구성요소를 모두 JSF 정도로 컴포넌트화 해야 합니다. 코드 생성을 지원할 이클립스 플러그인 같은 툴도 필요하며, 메이븐 아키타입으로 프로젝트 기초 틀을 제공하면... ㅎㅎ. 이 정도가 새싹이 꿈꾸는 목표라고 할 수 있겠습니다.

물론 Generic을 기반으로 생성한 코드에는 분명 한계가 있겠습니다. Generic 하지 않은 것들은 손수 개발을 해야 할 겁니다. 그럴 때는 기존 방식대로, 도메인 -> JSP -> 컨트롤러 -> 서비스 -> DAO 순으로 내려가든.. 도메인 -> DAO -> Service -> Controller -> JSP 순으로 올라가든 중간 중간 듬성 듬성 하든 개인이 편한대로 개발을 하면 될 것입니다.

지금 이 순간 "하지만 이것도 어느정도 규모가 작아서 정말 피자 두 판 이내의 조직일 때야 가능하지, 규모가 커서 규율로 정해야 하면..." 이라고 생각하고 계신가요. 아마도 이런 생각은 주로 아키텍트인 분들이 하시겠죠.

맞을 겁니다. 규모가 커지면 일을 어떻게 나눴는가에 따라 많이 달라질 것 같습니다. 일을 나누는 것 자체도 복잡할 것 같습니다. 작업 덩어리를 크게 쪼개면 개인 부담이 크고, 그렇다고 일 덩어리를 너무 잘게 쪼개도, SVN 같이 중앙 집중식 SCM을 쓰면 코드가 전부 충돌나서 짜증이 이만 저만이 아닐거라는 상상이 됩니다.(물론 실제로는 제 상상 이상이겠지만..) 작업 나누기 말고도 수 많은 리스크와 이슈들이 존재하겠죠.

하지만, 하지만.. 그렇게 복잡하고 규모가 큰 시스템에도 분명 위와 같은 새싹은 도움이 될 겁니다. 일단 기본 CRUD와 기본 화면을 불과 몇 초만에 생성해내면, 그 만큼 작업 부담이 줄어들고, 복잡한 비즈니스 로직이나 워크 프로우를 개발하는데 더 많은 시간을 투자할 수 있습니다. 그만큼 특정 영역에 집중해서 프로젝트 성공률을 높일 수 있을 겁니다.

실제로 이전 개발 프로젝트에서 OSAF(OpenSprout Application Framework)와 UI 컴포넌트를 사용해서 기본 CRUD 코드를 코드젠 없이 수동으로 도메인 클래스당 DAO, Service, Controller, add.jsp, update.jsp, grid.jsp, search.jsp를 5분만에 생성할 수 있었습니다. 그 뒤에 세세한 조정을 거쳐서 새로운 메뉴 하나(검색, 뷰, 가끔 Ajax 폼 검색, 비즈니스 로직 추가. 테스트.. 덩덩)를 완성하는데 2시간 정도면 충분했습니다. 물론 손수 작업한 부분 중에 코드젠을 적용해서 자동화 시킬 만한 부분들이 충분히 더 있었습니다. 가령, 검색 조건 같은거 말이죠. 이런걸 코드젠 할 때 선택할 수 있는 팝업이 뜨거나 설정파일로 주면 검색 조건 추가하는 3번. 세부 조정 작업중 일부도 자동화 할 수 있습니다.

가까운 미래에는 뭔가 더 달라질꺼라 생각합니다. 작년말부터 올해 초까지 잠깐 소문으로 무성했던 ROO도 그렇고.. 맨땅에서 DAO, Service, Controller를 생성하는 날은 이제 슬슬 끝나가고 있다고 생각합니다. 맨날 똑같은 클래스 상속 받아서 만들고, 비슷한 메소드 추가하고(add()나 insert()를 쓰지 않는 도메인이 얼마나 될까요.).. 이런 작업도 전부 중복으로.. 개발자가 개발에 질리게 만드는 것 중에 하나일 겁니다.

새싹이. OpenSprout가, 여러분을 고통없는 새로운 미래로 안내하겠습니다. 크하하하 낚시 글이 되버렸네요. 좋은 밤 되세요. ㅋㅋ

사용자 삽입 이미지

top


스프링은 CI를 어떻게 하고 있을까?

Good Tools : 2008.09.08 19:49


스프링은 Bamboo를 사용하고 있습니다.
http://build.springframework.org:8085/start.action
여기서 확인할 수 있죠.

사용자 삽입 이미지

하나의 프로젝트에 여러 Plan을 두고 빌드하고 있는 모습입니다. 오른쪽에 잘 보면 시간이 나와있는데, 스프링 개발자들 무진장 열심히 개발하고 있습니다. 모든 빌드가 거의 한 시간을 넘은것들이 없네요. 완전 따끈따끈한 프로젝트입니다.

Plan을 나눠 둔걸 보면 빌드를 어떻게 구성해야 할지 대강 짐작이 옵니다. 특히 Spring OSGi를 보면, OSGi 플랫폼 삼형제에 각각의 Plan을 두고 빌드 하고 있습니다. 배포 환경이 여러 개 일 때 각각에 해당하는 빌드를 구성해서 CI 활용을 극대화 하고 있는 모습입니다.

캬~ 스프링 멋져.
top


화면 공유, 원격 지원. Mikogo가 짱.

Good Tools : 2008.09.05 12:44


http://www.mikogo.com/Welcome.aspx

일단 써보세요. 클릭하자 마자 설치되고, 가볍고, 계정 생성도 쉽고, 포트? 방화벽. ㅎㅎ 귀찮은 설정도 필요없이 바로 미팅 세션 열고, 참가하기만 하면 됩니다.

사용법은 아래에 동영상으로 나와있습니다.

http://www.mikogo.com/tutorials/flash_voa/voa.html

와~ 미코고~ 귿!!!
top


Confluence에서 새창에서 여는 링크 만들기

Good Tools : 2008.09.02 17:22


참조 : http://forums.atlassian.com/thread.jspa?messageID=257286751

1. 사용자 매크로를 등록해 줍니다.

external 이라는 이름으로 등록해줍니다.
<a href="$param0" target="_blank">$body</a>
사용자 삽입 이미지

캬... 이런 기능이 있었다니;;

2. 이제 저 태그를 사용하면 됩니다.

[타이틀|링크] 이렇게 사용하던 걸 {external:링크주소}타이틀{external}


top


Eclipse에서 assert 문 수행 옵션 켜기

Good Tools : 2008.09.01 16:05


사용자 삽입 이미지

-ea 를 java 인자로 추가해 줍니다. -da는 끄는겁니다. 이클립스에서 기본으로 자바 클래스를 실행할 때는 assert 문을 무시하더군요. 켜주는게 좋겠죠?


top

TAG assert, da, EA, Eclipse, Java

톰캣에 Jira ear/war 버전 설치하기

Good Tools : 2008.08.29 13:16


참조 : http://www.atlassian.com/software/jira/docs/latest/servers/tomcat60.html

1. 다운로드

생략

2. DB 만들기

생략

3. <datasource>에서 dialect 변경하기

Jira 설치 폴더/edit-webapp/WEB-INF/classes/entityengine.xml  파일을 열고, <datasource> 태그에서 field-type-name 속성에 사용할 DB 이름을 설정해줍니다.

이 때 주의할 사항들이 <datasource> 엘리먼트 위에 주석으로 나와있으니 꼭 참조하시기 바랍니다. 그 중 하나로, HSQL을 사용하지 않을 떄는 schema-name="PUBLIC" 이 설정을 삭제해야 합니다.

4. 빌드하기

Jira 설치 폴더 에서 ./build 실행.
그러면 dist-tomcat/tomcat-6 폴더에 war 파일과 jira.xml 파일을 만들어 줍니다.

5. 추가 라이브러리 설치

Jira 실행에 필요한 라이브러리를 톰캣/lib 폴더에 추가하기.
http://www.atlassian.com/software/jira/docs/servers/jars/v1/jira-jars-tomcat6.zip

6. 톰캣 설정하기

빌드하기 과정에서 만들어준 jira.xml 파일을 톰캣/conf/Catalina/localhost로 복사합니다. 그리고 열어서 편집해야 합니다. 편집할 것은 세 가지.

6-1. conf/Catalina/localhost/jira.xml

<Context>엘리먼트의 docBase가 제대로 설정되어 있는지 확인(이건 기본으로 알아서 제대로 잡아 주는데 그래도 확인하는게 좋습니다.)합니다.

그리고 <Resource>에 datasource 설정을 사용하시는 DB에 맞게 적절하게.. 설정해줍니다.

6-2. conf/server.xml

톰캣/conf/server.xml 을 열고 useBodyEncodingForURI 속성을 추가해줍니다. 국제화 지원때문에..

<Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" useBodyEncodingForURI="true"/>

6-3. bin/setenv.sh

메모리 부족 문제가 생길 수 있으니 bin 폴더에 setenv.sh 파일에 다음을 추가합니다.(이 파일이 없을 땐 만들어 줍니다.)

export CATALINA_OPTS="$CATALINA_OPTS -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true"

7. 톰캣 재기동.

톰캣을 껐다 키고, localhost:8080/jira로 접속합니다.
top

TAG JIRA

TextMate 괜찮군요~

Good Tools : 2008.08.27 21:31


사용자 삽입 이미지
이녀석으로 루비랑 좀 친해져볼까 합니다.

단축키를 커맨드+R 밖에 모르겠다는게 문젠데;;

한 줄 삭제, 자동 완성, 한 줄 복사 이 정도 단축키만 알아도 좋을텐데 말이죠...
top

TAG ruby, Textmate



: 1 : 2 : 3 : 4 : 5 : 6 : 7 :