코딩 테스트를 위해서 이클립스를 켜고 간단하게나마 내가 보기 좋은 쪽으로 설정을 하려다보니 글씨체가 맘에 안들었다.. 어제도 대충 만져보긴 했지만 귀찮기도 해서 걍 넘어갈까 했는데 아무래도 계속 맘에 걸리고 눈에 걸려서 결국 설정하기로 했다..
우선 꼭 언급해야될 부분이 있는데 이건 아주 기본적인 설정..?? 이라고 하기도 좀 그렇긴한데.. 무튼 개발에 있어서 아주 중요한 부분은 아니다.. 근데 시간이 지나면 계속 까먹어서 이클립스 설치 후에 내가 사용하던 폰트가 왜 없지..?? 이전에는 어떻게 했었지..?? 라는 생각을 자주 해서 정리를 해두려고 함이 주 목적이다..
내가 주로 사용하는 폰트는.. Courier New 이다.. 별다른 이유는 없고, 이 글자체가 한글을 쓰건 영문을 쓰건 눈에 잘 들어오기 때문에 사용하는 폰트다.. 솔직히 다른 좋은게 있어도 그거 찾아서 또 설정하는 것도 귀찮고 말이지.. ㅡㅡ..
기본적으로 설치한 이클립스에서 폰트 설정을 하면 해당 폰트가 없다.. 그럼 어떻게 하느냐..?? 탐색기를 켜서 C 드라이브로 간다.. C 드라이브를 가서 아래 그림처럼 Windows > Fonts 경로를 간다.. 그럼 그곳에서 자신이 원하는 폰트를 찾아보시란.. 이클립스에 노출이 안된 폰트는 뿌옇게 되어 있을 것이다.. 그게 활성화가 안되어 있단 의미로 보면 되는데 마우스 우측 클릭해서 맨 하단에 존재하는 표시를 눌러주면 활성화가 된다.. 짜잔..!!!
그렇게 한 상태에서 이클립스로 가보자.. 이클립스 가면 기본적인 폰트 설정하는 곳은 대부분 알것이라고 생각하고 자세히는 설명안하고 아래 이미지 한방으로 정리한다..
이클립스 상단 메뉴 Windows > Preferences > General > Appearance 를 가서 설정을 하면 된다.. 위 그림에 보면 Courier New 폰트가 보이는가..?? 저렇게 설정하고서 딱!! 보면 소스가 자신이 원하는 것처럼 바뀌어 있을 것이다.. ㅎㅎ..
이게 진짜 단순한건데 이클립스를 허구헌날 깔고 지우고 이러는게 아니다보니 순간 순간 잊는다.. 이제는 잊지 말아야지.. 후훗..
[Info]Tags categorized posts and contents patterns..
[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...
2016년 8월 5일 금요일
2016년 8월 4일 목요일
[Tool] 이클립스 네온 다운받기..
면접을 보고 난 얘기를 하고서 바로 뒤이어 포스팅을 또 한다.. 이번 글은 이클립스 네온 다운로드 및 Hello World 출력 하는것이다.. 다만, 시점이 시점인 만큼 Hello World 출력하는법 자체는 설명하지 않을 것이다.. 나도 오랫만에 이클립스를 다운로드 받다보니 혹시라도 다운로드 하는 곳이나 어떤 것을 받을지 고민하시는 분이 있을 수 있어서 올려본다..
이클립스를 왜 받느냐.. 알고스팟에서 알고리즘 테스트를 하고 하려면, 우짜든둥 툴이 있어야 될거 아닌감..??!! 그래야 코딩을 하지.. ㅋㅋ 그래서 해당 포스팅을 하게 된 것이다..
무튼..!! 우선은 이클립스 사이트를 간다.. 네이버누님에게 이클립스 내지는 eclipse, eclipse neon 으로 검색을 하면 아래처럼 보일 것이다.. eclipse 사이트로 이동한다..
사이트를 이동하면, 아래처럼 보일 것이다..
빨강색으로 표시한 부분을 클릭하면 실제 다운로드 페이지로 이동한다..
빨강색 표시한 부분을 클릭하면 되는데 우측 하단을 보면 본인 운영체제에 대한 bit 표기가 있다.. 32 bit 인지 64 bit 인지 확인해서 잘 다운 받으면 된다..
위처럼 다운을 받아서 압축을 풀고 실행 시키면 되는데.. 난 기본 프로젝트를 생성해서 Hello World 를 간단히 타이핑 후 실행[Ctrl + F11] 시켜봤다..
모두들 잘 되겠지..?? 이건 진짜 클릭 클릭만 하면 되는거니까.. ㅎㅎ 이제 알고스팟에 가서 회원가입도하고, 사이트도 좀 둘러보고, 코딩 테스트도 샘플로 해보고 해야겠다.. 혹시라도 내가 들어간게 알고스팟이 맞는건가..?? 하는 분들을 위해서.. 사이트 진입페이지 남겨드린다.. 참!!! 코딩 테스트 후 내가 한것을 공부도 할겸 정리도 할겸 포스팅 할 계획이다.. 후훗..
이클립스를 왜 받느냐.. 알고스팟에서 알고리즘 테스트를 하고 하려면, 우짜든둥 툴이 있어야 될거 아닌감..??!! 그래야 코딩을 하지.. ㅋㅋ 그래서 해당 포스팅을 하게 된 것이다..
무튼..!! 우선은 이클립스 사이트를 간다.. 네이버누님에게 이클립스 내지는 eclipse, eclipse neon 으로 검색을 하면 아래처럼 보일 것이다.. eclipse 사이트로 이동한다..
사이트를 이동하면, 아래처럼 보일 것이다..
빨강색으로 표시한 부분을 클릭하면 실제 다운로드 페이지로 이동한다..
빨강색 표시한 부분을 클릭하면 되는데 우측 하단을 보면 본인 운영체제에 대한 bit 표기가 있다.. 32 bit 인지 64 bit 인지 확인해서 잘 다운 받으면 된다..
위처럼 다운을 받아서 압축을 풀고 실행 시키면 되는데.. 난 기본 프로젝트를 생성해서 Hello World 를 간단히 타이핑 후 실행[Ctrl + F11] 시켜봤다..
모두들 잘 되겠지..?? 이건 진짜 클릭 클릭만 하면 되는거니까.. ㅎㅎ 이제 알고스팟에 가서 회원가입도하고, 사이트도 좀 둘러보고, 코딩 테스트도 샘플로 해보고 해야겠다.. 혹시라도 내가 들어간게 알고스팟이 맞는건가..?? 하는 분들을 위해서.. 사이트 진입페이지 남겨드린다.. 참!!! 코딩 테스트 후 내가 한것을 공부도 할겸 정리도 할겸 포스팅 할 계획이다.. 후훗..
[Talk] 어제도 면접을 봤다.. 그리고 또 하나의 깨달음..
어제 면접을 보고 왔다.. S 기업이었으며, 대기업이었다.. 유선상으로 면접 제의를 받았을 때 코딩 테스트가 있다고 하시더란.. 그래서 난 스스로 해당 기업에 합격하고가 문제가 아니라 코딩 테스트가 머지..?? 어떻게 하는거지..?? 어떤 문제가 나오는거지..?? 라는 궁금증이 더 있었다.. 솔직히 말하면 면접과 합격 자체는 관심 대상은 아니었다..
면접 제의 받고서 그렇게 시간이 가던 중 어제 드디어 결전의 날이.. 두둥.. 면접을 보러 갔는데 선 코딩 테스트 후 구술면접을 하는 줄 았는데.. 선 구술면접 후 코딩 테스트를 하더라.. 지금 생각해보면 구술면접을 먼저 본것이 다행이었다.. 코딩 테스트를 먼저 했더라면 멘붕으로 인해서 구술면접 진행이 잘 안됬을 것이다..
구술면접은 3분이 들어오셔서 하셨는데.. 어느 회사에 가건 거의 비슷하지만 면접관님들의 간략한 회사소개 그다음 자신소개, 프로젝트에 대한 소개, 했던일 내지는 기술적인 부분들이었다.. 구술면접 자체는 분위기도 좋았고, 나 스스로도 참 긍정적이었다.. 면접관님들도 상당히 친절하고 인상이 좋으셨다..
무튼 머 그렇게 지나가는 듯 하였으나.. 그럼 그렇지..!!! 드디어 올것이 왔다.. 코딩 테스트.. 내 눈앞에 노트북 하나를 주고, 문제지 하나를 줬는데.. 약 4~5 문제 정도였다.. 우선 스윽 내려가면서 봤는데 아놔.. 머리가 또 딩~~~~~~~~~~~~!! 딱 봐도 문제가 어려운것이 아니었다.. 그냥 기초와 로직을 좀 생각할 줄 아는..?? 정도였으면 풀 문제였다..
그런데 나는 못풀었다..ㅜㅠ 아니 시도조차도 못했다..ㅠㅜㅜㅜㅜㅜㅜㅜㅜ 옆에서 면접관분중에 한분이었던 과장님께서도 내가 안타까웠는지 문제의 흐름을 설명해주시기도 하였는데 설명자체는 이해를 하였지만, 어떻게 접근을 해야될지 감이 오질 않았다..
감사하게도 과장님께서 구술면접은 잘하고서 코딩 테스트가 아쉬웠는지 계속 도움을 주시려고 하고, 코딩을 직접하기가 애매하면 기타 다른 얘기를 통해서 본인을 어필할 수 있는 기회까지도 주시려고 했다.. 어떻게 해서든 도움을 주시려고 하는 모습이었다.. 정말이지 너무 감사했고, 천사같은 분이셨다.. 근데 그 기대에 부응하지 못해서 정말 죄송스럽고 또 죄송스러웠다..
머 어찌저찌해서 그렇게 면접은 끝났고, 과장님의 인솔하에 난 S 기업에서 나왔다.. 중소기업 면접을 보면 대체적으로 평범하기 때문에 약간의 자극이나 이런 패턴도 있구나 하고 넘어갈 때가 대부분이지만 대기업 혹은 인지도가 있는 기업면접을 보고나면 꼭 나에게 공부할 것이 생긴다.. 이런 현상이 꼭 좋은것만은 아닐텐데 말이지..;;;
이 블로그를 하게 된 계기가 된 면접, 그리고 이번면접에서는 코딩 테스트.. 앞으로 코딩에 대한 실전코딩 말고 나 스스로 고민하고 생각해볼 수 있는 코딩을 해봐야겠다.. 그래서 어제 집에 오는길에 아웃사이더 햄과 친구 B 군에게 연락을 해서 코딩 테스트 할만한 좋은 사이트가 없는지 알아보니 알고스팟 이란것이 있었다.. 그래서 해당 사이트 가입하고 이클립스 다운받고 해서 시작해보려고 한다.. 하루에 한개건 두개건 몇 개가 되었건 나 스스로 고민하면서 코딩을 해보는 그리고 그것을 통해서 기초를 더욱 다잡는 행동을 말이지..
그리고 혹~~~~~~~~~~~~~~~~~~~시라도 내 블로그를 오시는 분중에 초보자가 있으시다면, 꼭 해보시기 바란다.. 아니!! 꼭 하셔야 된다..!! 코딩 테스트.. 스스로 생각해서 하는 코딩.. 나중에 나처럼 경력자라고 해서 면접보고서 망신 망신 개망신.. 당하지 않으시려면 말이다.. 내가 비록 개발에 대한 엄청난 열정은 없을지언정 손을 놓지 않고, 계속 이어가려는 수준이긴 하지만 어제는 진짜 나 스스로가 한심스러웠다.. 어제를 계기로 조금 더!!! 발전할 수 있도록 노력해보자..
면접 제의 받고서 그렇게 시간이 가던 중 어제 드디어 결전의 날이.. 두둥.. 면접을 보러 갔는데 선 코딩 테스트 후 구술면접을 하는 줄 았는데.. 선 구술면접 후 코딩 테스트를 하더라.. 지금 생각해보면 구술면접을 먼저 본것이 다행이었다.. 코딩 테스트를 먼저 했더라면 멘붕으로 인해서 구술면접 진행이 잘 안됬을 것이다..
구술면접은 3분이 들어오셔서 하셨는데.. 어느 회사에 가건 거의 비슷하지만 면접관님들의 간략한 회사소개 그다음 자신소개, 프로젝트에 대한 소개, 했던일 내지는 기술적인 부분들이었다.. 구술면접 자체는 분위기도 좋았고, 나 스스로도 참 긍정적이었다.. 면접관님들도 상당히 친절하고 인상이 좋으셨다..
무튼 머 그렇게 지나가는 듯 하였으나.. 그럼 그렇지..!!! 드디어 올것이 왔다.. 코딩 테스트.. 내 눈앞에 노트북 하나를 주고, 문제지 하나를 줬는데.. 약 4~5 문제 정도였다.. 우선 스윽 내려가면서 봤는데 아놔.. 머리가 또 딩~~~~~~~~~~~~!! 딱 봐도 문제가 어려운것이 아니었다.. 그냥 기초와 로직을 좀 생각할 줄 아는..?? 정도였으면 풀 문제였다..
그런데 나는 못풀었다..ㅜㅠ 아니 시도조차도 못했다..ㅠㅜㅜㅜㅜㅜㅜㅜㅜ 옆에서 면접관분중에 한분이었던 과장님께서도 내가 안타까웠는지 문제의 흐름을 설명해주시기도 하였는데 설명자체는 이해를 하였지만, 어떻게 접근을 해야될지 감이 오질 않았다..
감사하게도 과장님께서 구술면접은 잘하고서 코딩 테스트가 아쉬웠는지 계속 도움을 주시려고 하고, 코딩을 직접하기가 애매하면 기타 다른 얘기를 통해서 본인을 어필할 수 있는 기회까지도 주시려고 했다.. 어떻게 해서든 도움을 주시려고 하는 모습이었다.. 정말이지 너무 감사했고, 천사같은 분이셨다.. 근데 그 기대에 부응하지 못해서 정말 죄송스럽고 또 죄송스러웠다..
머 어찌저찌해서 그렇게 면접은 끝났고, 과장님의 인솔하에 난 S 기업에서 나왔다.. 중소기업 면접을 보면 대체적으로 평범하기 때문에 약간의 자극이나 이런 패턴도 있구나 하고 넘어갈 때가 대부분이지만 대기업 혹은 인지도가 있는 기업면접을 보고나면 꼭 나에게 공부할 것이 생긴다.. 이런 현상이 꼭 좋은것만은 아닐텐데 말이지..;;;
이 블로그를 하게 된 계기가 된 면접, 그리고 이번면접에서는 코딩 테스트.. 앞으로 코딩에 대한 실전코딩 말고 나 스스로 고민하고 생각해볼 수 있는 코딩을 해봐야겠다.. 그래서 어제 집에 오는길에 아웃사이더 햄과 친구 B 군에게 연락을 해서 코딩 테스트 할만한 좋은 사이트가 없는지 알아보니 알고스팟 이란것이 있었다.. 그래서 해당 사이트 가입하고 이클립스 다운받고 해서 시작해보려고 한다.. 하루에 한개건 두개건 몇 개가 되었건 나 스스로 고민하면서 코딩을 해보는 그리고 그것을 통해서 기초를 더욱 다잡는 행동을 말이지..
그리고 혹~~~~~~~~~~~~~~~~~~~시라도 내 블로그를 오시는 분중에 초보자가 있으시다면, 꼭 해보시기 바란다.. 아니!! 꼭 하셔야 된다..!! 코딩 테스트.. 스스로 생각해서 하는 코딩.. 나중에 나처럼 경력자라고 해서 면접보고서 망신 망신 개망신.. 당하지 않으시려면 말이다.. 내가 비록 개발에 대한 엄청난 열정은 없을지언정 손을 놓지 않고, 계속 이어가려는 수준이긴 하지만 어제는 진짜 나 스스로가 한심스러웠다.. 어제를 계기로 조금 더!!! 발전할 수 있도록 노력해보자..
2016년 4월 7일 목요일
[Tool]Grep Console : 이클립스 콘솔 이쁘게 보기..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
큰 프로젝트를 개발하다보니 이클립스 콘솔에 출력되는 수많은 로그를 뒤지는 것도 보통 일이 아니었습니다. 개발과정에서는 디버깅을 위해 로그레벨을 높여서 사용하므로 엄청난 양의 로그가 출력되고 그 중에서 필요한 부분을 찾으려면 수없이 스크롤하고 텍스트 검색을 해야했습니다. 더군다나 로그메시지는 자세히 보지 않으면 비슷비슷해 보이기 때문에 집중해서 보지 않으면 찾기도 쉽지 않았습니다.
다 똑같이 출력되니까 로그 메시지 뒤지는데도 상당한 시간이 소비되었는데 얼마전에 콘솔의 메시지를 종류별로 다양한 색으로 보여주는 플러그인이 있다는 걸 알게되었습니다. Logback을 쓴다면 사용할 수 있는 Logback Console Plugin for Eclipse도 있었지만 좀더 범용적으로 쓸 수 있는 Grep Console을 선택했습니다. 이클립스를 Indigo(3.7)버전을 쓴다면 이클립스 마켓플레이스에서 존재하므로 바로 설치할 수 있습니다.
이클립스를 3.6이하의 버전을 사용한다면 [Help] - [Install New Software]에서 http://eclipse.musgit.com를 추가하고 설치할 수 있습니다.
설치가 완료되면 위처럼 콘솔에 우측에 (?) 아이콘이 생성됩니다. 이 아이콘을 클릭하면 다음과 같은 Grep Expression 관리화면이 나타납니다.
Grep Console은 정규표현식을 사용해서 로그메시지를 구분하고 각 규칙마다 원하는 색을 지정할 수 있는 구조로 되어있습니다. 처음에는 아무 규칙도 등록되어 있지 않으므로 Add를 눌러서 규칙을 등록하면 됩니다. 위처럼 정규표현식 규칙을 등록합니다. 정규표현식에서 괄호로 그룹을 3개 만들었으므로 규칙에서 Whole Line과 그룹 3개가 나타납니다. Whole Line은 정규표현식으로 잡힌 라인전체에 대한 설정이고 그룹별로도 다른 설정을 할 수 있습니다. 기본적인 로그레벨에 대한 구분은 다음 정규식을 이용해서 할 수 있습니다.
위처럼 로그메시지에서 블락을 설정하고 마우스의 우측클릭을 하면 Add Grep Expression이라는 메뉴가 나서 현재 선택한 텍스트를 기준으로 바로 정규표현식을 생성할 수 있습니다. 물론 이는 기본적인 정규표현식이므로 세밀한 제어를 하려면 정규표현식을 수정해야 합니다. 위 그림은 하이버네이트에 대한 로그를 따로 구분하기 위해서 설정했습니다.
이제 위처럼 로그가 구분되어 나오기 때문에 쉽게 찾고자 하는 로그를 구분해서 볼 수 있습니다. Grep Console은 정규표현식을 사용하기 때문에 필요한 만큼 다양하게 설정할 수 있어서 출력로그의 규칙성만 찾으면 자유롭게 등록해서 사용할 수 있습니다.
큰 프로젝트를 개발하다보니 이클립스 콘솔에 출력되는 수많은 로그를 뒤지는 것도 보통 일이 아니었습니다. 개발과정에서는 디버깅을 위해 로그레벨을 높여서 사용하므로 엄청난 양의 로그가 출력되고 그 중에서 필요한 부분을 찾으려면 수없이 스크롤하고 텍스트 검색을 해야했습니다. 더군다나 로그메시지는 자세히 보지 않으면 비슷비슷해 보이기 때문에 집중해서 보지 않으면 찾기도 쉽지 않았습니다.

다 똑같이 출력되니까 로그 메시지 뒤지는데도 상당한 시간이 소비되었는데 얼마전에 콘솔의 메시지를 종류별로 다양한 색으로 보여주는 플러그인이 있다는 걸 알게되었습니다. Logback을 쓴다면 사용할 수 있는 Logback Console Plugin for Eclipse도 있었지만 좀더 범용적으로 쓸 수 있는 Grep Console을 선택했습니다. 이클립스를 Indigo(3.7)버전을 쓴다면 이클립스 마켓플레이스에서 존재하므로 바로 설치할 수 있습니다.

이클립스를 3.6이하의 버전을 사용한다면 [Help] - [Install New Software]에서 http://eclipse.musgit.com를 추가하고 설치할 수 있습니다.

설치가 완료되면 위처럼 콘솔에 우측에 (?) 아이콘이 생성됩니다. 이 아이콘을 클릭하면 다음과 같은 Grep Expression 관리화면이 나타납니다.

Grep Console은 정규표현식을 사용해서 로그메시지를 구분하고 각 규칙마다 원하는 색을 지정할 수 있는 구조로 되어있습니다. 처음에는 아무 규칙도 등록되어 있지 않으므로 Add를 눌러서 규칙을 등록하면 됩니다. 위처럼 정규표현식 규칙을 등록합니다. 정규표현식에서 괄호로 그룹을 3개 만들었으므로 규칙에서 Whole Line과 그룹 3개가 나타납니다. Whole Line은 정규표현식으로 잡힌 라인전체에 대한 설정이고 그룹별로도 다른 설정을 할 수 있습니다. 기본적인 로그레벨에 대한 구분은 다음 정규식을 이용해서 할 수 있습니다.
(.*)(TRACE)(.*)
(.*)(DEBUG)(.*)
(.*)(ERROR)(.*)
(.*)(FATAL)(.*)
(.*)(INFO)(.*)
(.*)(DEBUG)(.*)
(.*)(ERROR)(.*)
(.*)(FATAL)(.*)
(.*)(INFO)(.*)

위처럼 로그메시지에서 블락을 설정하고 마우스의 우측클릭을 하면 Add Grep Expression이라는 메뉴가 나서 현재 선택한 텍스트를 기준으로 바로 정규표현식을 생성할 수 있습니다. 물론 이는 기본적인 정규표현식이므로 세밀한 제어를 하려면 정규표현식을 수정해야 합니다. 위 그림은 하이버네이트에 대한 로그를 따로 구분하기 위해서 설정했습니다.

이제 위처럼 로그가 구분되어 나오기 때문에 쉽게 찾고자 하는 로그를 구분해서 볼 수 있습니다. Grep Console은 정규표현식을 사용하기 때문에 필요한 만큼 다양하게 설정할 수 있어서 출력로그의 규칙성만 찾으면 자유롭게 등록해서 사용할 수 있습니다.
2016년 3월 29일 화요일
[Tool]Eclipse에서 메서드 정의로 이동시 인터페이스(Interface)가 아닌 구상(Implementation) 클래스의 정의로 이동하기..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
이클립스에서 메서드의 정의롤 보기 위해서 해당 메서드에서 F3을 누르거나 Ctrl + 클릭을 하면 해당 메서드가 정의된 곳으로 이동하게 됩니다.(소스를 읽을때 꼭 필요한 편리한 기능입니다.) 하지만 일반적으로 클래스를 정의할때 커플링을 줄이고 테스트용도로 DI를 하기 위해서 Interface를 쓰게 되는데 이럴경우 Interface로 선언이 되어 있기 때문에 정의로 이동해도 인터페이스의 정의로 이동합니다. 로직을 보려고 정의(Declaration)로 이동한 것인데 인터페이스에는 로직이 없기 때문에 프로젝트뷰에서 다시 구상(Implementaion) 클래스를 열어서 봐야합니다.
이런 불편함은 아래와 같은 방법으로 해결할 수 있습니다.
이클립스 버전이 3.6 Helios이상이라면 Ctrl + 클릭으로 이동할 때 바로 클릭하지 않고 메서드위에 마우스를 올리면 위와 같은 튤팁메뉴가 나와서 인터페이스의 선언부로 이동할 것인지 구상클래스의 선언으로 이동할 것인지를 선택할 수 있습니다.(이전 버전에 위처럼 사용할 수 있는 플러그인이 따로 있는것 같습니다.)
메서드 위에서 Ctrl + T를 클릭하면 위 화면처럼 해당 인터페이스를 구현한 클래스의 계층 구조를 모두 볼 수 있고 여기서 원하는 구상클래스를 선택해 주면 됩니다. 앞에서 설명한 방법도 구상클래스가 1개일때는 바로 이동하지만 구상클래스가 여러개일때는 Ctrl + T를 누른 튤팁과 동일한 튤팁이 나오고 여기서는 필터링 기능도 있기 때문에 많은 클래스 내에서도 쉽게 찾을 수 있습니다.(오랜만에 본격적 자바코딩을 하니 몰랐던게 많군요 ㅎ)
이클립스에서 메서드의 정의롤 보기 위해서 해당 메서드에서 F3을 누르거나 Ctrl + 클릭을 하면 해당 메서드가 정의된 곳으로 이동하게 됩니다.(소스를 읽을때 꼭 필요한 편리한 기능입니다.) 하지만 일반적으로 클래스를 정의할때 커플링을 줄이고 테스트용도로 DI를 하기 위해서 Interface를 쓰게 되는데 이럴경우 Interface로 선언이 되어 있기 때문에 정의로 이동해도 인터페이스의 정의로 이동합니다. 로직을 보려고 정의(Declaration)로 이동한 것인데 인터페이스에는 로직이 없기 때문에 프로젝트뷰에서 다시 구상(Implementaion) 클래스를 열어서 봐야합니다.
이런 불편함은 아래와 같은 방법으로 해결할 수 있습니다.

이클립스 버전이 3.6 Helios이상이라면 Ctrl + 클릭으로 이동할 때 바로 클릭하지 않고 메서드위에 마우스를 올리면 위와 같은 튤팁메뉴가 나와서 인터페이스의 선언부로 이동할 것인지 구상클래스의 선언으로 이동할 것인지를 선택할 수 있습니다.(이전 버전에 위처럼 사용할 수 있는 플러그인이 따로 있는것 같습니다.)

메서드 위에서 Ctrl + T를 클릭하면 위 화면처럼 해당 인터페이스를 구현한 클래스의 계층 구조를 모두 볼 수 있고 여기서 원하는 구상클래스를 선택해 주면 됩니다. 앞에서 설명한 방법도 구상클래스가 1개일때는 바로 이동하지만 구상클래스가 여러개일때는 Ctrl + T를 누른 튤팁과 동일한 튤팁이 나오고 여기서는 필터링 기능도 있기 때문에 많은 클래스 내에서도 쉽게 찾을 수 있습니다.(오랜만에 본격적 자바코딩을 하니 몰랐던게 많군요 ㅎ)
[Tool]Eclipse에서 계속해서 오류날때 워크스페이스 Clean하기..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
이클립스를 사용해서 개발을 하던 도중 파일을 저장할때마다 오류를 뿜어내며(저장은 되었지만) 기타 다른 동작을 할때도 크래쉬 오류가 계속 나왔습니다.(그냥 뭔가 액션만 취했다 하면 오류얼럿이 튀어나왔습니다. ㅠㅠ) 한참 검색을 하다보니 워크스페이스를 클린하면 된다는 정보를 얻었습니다.(오류로그(워크스페이스내 .metadata/.log)를 보아도 일반적인 java오류와 비슷한 메시지였기 때문에 검색하기도 쉽지 않더군요.)
결론부터 말하자면 이클립스는 파일저장이나 플러그인 추가등의 관련 모든 정보를 workspace내에 저장하는데 워크스페이스를 clean해주면 되고 이클립스를 실행할 때 -clean 파라미터를 붙혀서 워크스페이스를 정리할 수 있습니다. 이클립스 문서를 보면 다음과 같이 나와 있습니다.
-clean 옵션을 사용시 한번만 동작하며(이클립스를 킨 이후에 계속 유지할 필요는 없다는 의미입니다.) 아래와 같은 2가지 방법으로 사용할 수 있습니다.
하지만 저의 경우 이렇게 하고나니 약간 괜찮은것 같더니만 다시금 비슷한 오류가 나는 상황이 되어버렸습니다.(대부분 clean만으로 해결이 된다는데 저는 안되더군요 ㅡㅡ;) 이런 경우에는 Workspace를 완전히 새로 생성합니다.
간단한 개발환경이라면 새로구성하면 되고 그렇지 않다면 이클립스의 설정파일 내보내기(File > Export > Preferences > "To preference file"을 통해서 백업한 뒤에 다시 가져옵니다. 필요하다면 프로젝트도 임포트하면 됩니다. 이렇게 하면 워크스페이스를 새로 구성한 것이기 때문에 완전하게 clean이 됩니다.(좀더 두고봐야겠지만 괜찮아진 듯 하군요. ㅎ)
이클립스를 사용해서 개발을 하던 도중 파일을 저장할때마다 오류를 뿜어내며(저장은 되었지만) 기타 다른 동작을 할때도 크래쉬 오류가 계속 나왔습니다.(그냥 뭔가 액션만 취했다 하면 오류얼럿이 튀어나왔습니다. ㅠㅠ) 한참 검색을 하다보니 워크스페이스를 클린하면 된다는 정보를 얻었습니다.(오류로그(워크스페이스내 .metadata/.log)를 보아도 일반적인 java오류와 비슷한 메시지였기 때문에 검색하기도 쉽지 않더군요.)
결론부터 말하자면 이클립스는 파일저장이나 플러그인 추가등의 관련 모든 정보를 workspace내에 저장하는데 워크스페이스를 clean해주면 되고 이클립스를 실행할 때 -clean 파라미터를 붙혀서 워크스페이스를 정리할 수 있습니다. 이클립스 문서를 보면 다음과 같이 나와 있습니다.
Cleans cached data used by the OSGi framework and Eclipse runtime. Try to run Eclipse once with this option if you observe startup errors after install, update, or using a shared configuration.
-clean 옵션을 사용시 한번만 동작하며(이클립스를 킨 이후에 계속 유지할 필요는 없다는 의미입니다.) 아래와 같은 2가지 방법으로 사용할 수 있습니다.
- 이클립스 설치 디렉토리에 있는 eclipse.ini 파일의 최상단에 다음과 같이 -clean을 추가합니다.-clean
-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar - Eclipse 바로가기를 수정해서 eclipse.exe -clean 같은 형태로 실행시 옵션을 주도록 수정합니다.
하지만 저의 경우 이렇게 하고나니 약간 괜찮은것 같더니만 다시금 비슷한 오류가 나는 상황이 되어버렸습니다.(대부분 clean만으로 해결이 된다는데 저는 안되더군요 ㅡㅡ;) 이런 경우에는 Workspace를 완전히 새로 생성합니다.
간단한 개발환경이라면 새로구성하면 되고 그렇지 않다면 이클립스의 설정파일 내보내기(File > Export > Preferences > "To preference file"을 통해서 백업한 뒤에 다시 가져옵니다. 필요하다면 프로젝트도 임포트하면 됩니다. 이렇게 하면 워크스페이스를 새로 구성한 것이기 때문에 완전하게 clean이 됩니다.(좀더 두고봐야겠지만 괜찮아진 듯 하군요. ㅎ)
2016년 3월 22일 화요일
[Tool]Eclipse에서 Tomcat실행시 validateJarFile - jar not loaded 메시지..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
자바에 대해서 업무를 하고 있지는 않지만 자바를 놓지 않으려고 하고 있었지만 그렇다고 딱히 깊게 학습하고 있지도 않았습니다. 모르고 있던 바는 아니었지만 주위에 자바를 하는 사람들이 워낙 많다보니 그냥 그사람들과 자바얘기를 지속적으로 접하고 듣는 것을 통해서 어느새 안주해버린 상태에 들어갔었던 듯 합니다. 제 자바 수준은 바닥인데 주변 사람들로부터 너무 높은 수준의 얘기만 듣다보니 어느 순간 현실을 제대로 자각하지 못했던 것 같고 그동안 자바로 프로젝트를 했음에도 항상 잘하는 친구들이 셋팅 다 해주면 그 위에서만 개발했기 때문에 막상 혼자 뭔가 해보려고 하니까 간단한 것도 제대로 못한다는 현실을 깨닫고 약간 당혹감에 빠져있는 상태입니다. 정작 중요한 것은 제가 원하는 걸 얼마나 만들어낼수 있느냐 하는 것인데요. 다시 초심으로 돌아가서 기초부터 다시 쌓아올라가려고 합니다.
사설은 머 간단히 하고 이클립스에서 Spring을 얹어서 Tomcat으로 띄우는데 Tomcat 콘솔에 아래와 같은 오류가 찍혔습니다.
이 문제는 javax.servlet.Servlet.class가 중복으로 로드되어서 발생한 문제입니다. <TOMCAT_HOMT>\lib 폴더 안에 servlet-api.jar안에 javax.servlet.Servlet.class가 있는데 프로젝트의 lib에도 javax.servlet.Servlet.class가 있어서 발생한 문제이므로 프로젝트의 WEB-INF/lib에 있는 javax.servlet-2.5.0.jar를 삭제해 주어야 합니다.
의존성 라이브러리 관리를 위해서 Maven을 사용하고 있었는데 SpringSource Enterprise Bundle Repository에서 Spring Framework 전체를 한번에 끌어오고 있었기 때문에 아래와 같이 exclusions을 사용해서 javax.servlet을 제거했습니다.
이렇게 프로젝트의 라이브러리에서 javax.servlet을 제거하고 Tomcat을 실행하면 앞의 나오던 오류메시지가 없어진 것을 볼 수 있습니다.
자바에 대해서 업무를 하고 있지는 않지만 자바를 놓지 않으려고 하고 있었지만 그렇다고 딱히 깊게 학습하고 있지도 않았습니다. 모르고 있던 바는 아니었지만 주위에 자바를 하는 사람들이 워낙 많다보니 그냥 그사람들과 자바얘기를 지속적으로 접하고 듣는 것을 통해서 어느새 안주해버린 상태에 들어갔었던 듯 합니다. 제 자바 수준은 바닥인데 주변 사람들로부터 너무 높은 수준의 얘기만 듣다보니 어느 순간 현실을 제대로 자각하지 못했던 것 같고 그동안 자바로 프로젝트를 했음에도 항상 잘하는 친구들이 셋팅 다 해주면 그 위에서만 개발했기 때문에 막상 혼자 뭔가 해보려고 하니까 간단한 것도 제대로 못한다는 현실을 깨닫고 약간 당혹감에 빠져있는 상태입니다. 정작 중요한 것은 제가 원하는 걸 얼마나 만들어낼수 있느냐 하는 것인데요. 다시 초심으로 돌아가서 기초부터 다시 쌓아올라가려고 합니다.
사설은 머 간단히 하고 이클립스에서 Spring을 얹어서 Tomcat으로 띄우는데 Tomcat 콘솔에 아래와 같은 오류가 찍혔습니다.
정 보: validateJarFile(D:\Project\STS\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\Example\WEB-INF\lib\com.springsource.javax.servlet-2.5.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
이 문제는 javax.servlet.Servlet.class가 중복으로 로드되어서 발생한 문제입니다. <TOMCAT_HOMT>\lib 폴더 안에 servlet-api.jar안에 javax.servlet.Servlet.class가 있는데 프로젝트의 lib에도 javax.servlet.Servlet.class가 있어서 발생한 문제이므로 프로젝트의 WEB-INF/lib에 있는 javax.servlet-2.5.0.jar를 삭제해 주어야 합니다.
의존성 라이브러리 관리를 위해서 Maven을 사용하고 있었는데 SpringSource Enterprise Bundle Repository에서 Spring Framework 전체를 한번에 끌어오고 있었기 때문에 아래와 같이 exclusions을 사용해서 javax.servlet을 제거했습니다.
Xml
1 2 3 4 5 6 7 8 9 10 11 12 | <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.spring-library</artifactId> <type>libd</type> <version>${spring.version}</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>com.springsource.javax.servlet</artifactId> </exclusion> </exclusions> </dependency> |
이렇게 프로젝트의 라이브러리에서 javax.servlet을 제거하고 Tomcat을 실행하면 앞의 나오던 오류메시지가 없어진 것을 볼 수 있습니다.
2016년 3월 17일 목요일
[Tool]Eclipse Helios와 JDK 6u21를 사용할 때 OutOfMemory 오류가 발생하는 문제..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
지난 6월 23일에 발표된 Eclipse 3.6 Helios를 슬슬 사용해 보려고 새로운 마음으로 JDK도 JDK 6 Update 21을 다운받아서 설치하고 기존에 사용하던 프로젝트를 저장소에서 Checkout받자 프로젝트를 생성하던 도중 이클립스가 죽어버리는 현상이 발생했습니다. (Subclipse, m2eclipse 사용중)
기존에도 종종 이클립스는 메모리오류가 발생하였기 때문에 아무생각없이 eclipse.ini파일을 수정하여 주었지만 좀처럼 해결되지 않고 계속 프로젝트를 받아오다가 번번히 죽어버렸습니다. 로그파일을 확인하니(.log파일은 workplace안에 .metadata폴더 안에 있습니다.) 아래와 같은 오류가 발생하였습니다.
기존의 eclipse.ini파일의 수정으로는 도저히 해결이 되지 않아서 Helios가 안정적이지 않은 것으로 막연히 생각하고 있었는데 트위터를 통해서 해당 문제에 대한 해결책을 얻을 수 있었습니다.
이 문제는 JDK 6u21에서 발생하는 문제인데 6u21에서 vendor명이 기존의 Sun에서 Oracle로 변경이 되었습니다. Eclipse 런처가 JVM의 벤더를 읽어서 Sun JVM일 경우에는 추가적으로 이클립스의 동작을 위해 필요한 XX:MaxPermSize 설정을 추가하는데 6u21에서는 Sun이 아닌 Oracle로 변경이 되어 이 설정이 먹히지 않는 것입니다. 이 내용은 이클립스의 버그로 등록은 되었지만 9월에 예정된 Helios SR1에서 수정될 예정은 없어보인다고 합니다.
이클립스의 폴더안에 있는 eclipse.ini파일을 열어서 아래의 부분을 삭제합니다.
그 다음에 -Xmx설정뒤에 -XX:MaxPermSize=512m 를 추가하면 위의 OutOfMemoryError를 피할 수 있습니다.
아래 내용은 참고용으로 올리는 저의 eclipse.ini파일입니다.
이 문제는 Windows플랫폼에서만 발생한다고 합니다.
추가로 봄싹의 김성호님이 공유해 주신 이클립스 위키에 위 문제의 해결법에 대해서 잘 나와있습니다.
지난 6월 23일에 발표된 Eclipse 3.6 Helios를 슬슬 사용해 보려고 새로운 마음으로 JDK도 JDK 6 Update 21을 다운받아서 설치하고 기존에 사용하던 프로젝트를 저장소에서 Checkout받자 프로젝트를 생성하던 도중 이클립스가 죽어버리는 현상이 발생했습니다. (Subclipse, m2eclipse 사용중)
기존에도 종종 이클립스는 메모리오류가 발생하였기 때문에 아무생각없이 eclipse.ini파일을 수정하여 주었지만 좀처럼 해결되지 않고 계속 프로젝트를 받아오다가 번번히 죽어버렸습니다. 로그파일을 확인하니(.log파일은 workplace안에 .metadata폴더 안에 있습니다.) 아래와 같은 오류가 발생하였습니다.
java.lang.OutOfMemoryError: PermGen space
[해당 오류는 나도 많이 보던 것들인데 난 지금 환경으로 따지면, 보통 서버 로그에서 많이 봤다.. 이클립스는 단순히 소스 관리와 개발을 조금 편하게 하기 위한 툴 정도로만 사용하기 때문에 서버 연동하고는 거리가 멀다..]기존의 eclipse.ini파일의 수정으로는 도저히 해결이 되지 않아서 Helios가 안정적이지 않은 것으로 막연히 생각하고 있었는데 트위터를 통해서 해당 문제에 대한 해결책을 얻을 수 있었습니다.
이 문제는 JDK 6u21에서 발생하는 문제인데 6u21에서 vendor명이 기존의 Sun에서 Oracle로 변경이 되었습니다. Eclipse 런처가 JVM의 벤더를 읽어서 Sun JVM일 경우에는 추가적으로 이클립스의 동작을 위해 필요한 XX:MaxPermSize 설정을 추가하는데 6u21에서는 Sun이 아닌 Oracle로 변경이 되어 이 설정이 먹히지 않는 것입니다. 이 내용은 이클립스의 버그로 등록은 되었지만 9월에 예정된 Helios SR1에서 수정될 예정은 없어보인다고 합니다.
이클립스의 폴더안에 있는 eclipse.ini파일을 열어서 아래의 부분을 삭제합니다.
--launcher.XXMaxPermSize
256m
그 다음에 -Xmx설정뒤에 -XX:MaxPermSize=512m 를 추가하면 위의 OutOfMemoryError를 피할 수 있습니다.
아래 내용은 참고용으로 올리는 저의 eclipse.ini파일입니다.
C-like
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | -startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 128M -showsplash org.eclipse.platform -vm C:\Program Files\Java\jdk1.6.0_21\bin\ --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m |
이 문제는 Windows플랫폼에서만 발생한다고 합니다.
추가로 봄싹의 김성호님이 공유해 주신 이클립스 위키에 위 문제의 해결법에 대해서 잘 나와있습니다.
- 6u20으로 다운그래이드
- eclipse.ini에 -XX:MaxPermSize=256m 추가
- 수정된된 이클립스용 dll을 다운받아 사용
2016년 3월 8일 화요일
[Tool]Eclipse에 m2eclipse 설치후 "Maven Integration for Eclipse JDK Warning" 경고..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
프로젝트 빌드툴인 Maven을 사용하기 위해서 이클립스 Maven 플러그인인 M2Eclipse를 설치한 후에 이클립스에서 빌드할때마다 다은과 같은 메시지가 떴습니다.
원래 이클립스는 JRE만 있어도 동작이 가능한데 Maven 코어의 플러그인들이 JDK의 jars를 사용하고 있기 때문에 JDK가 필요하므로 eclipse.ini에서 -vm옵션으로 JDK를 설정하라고 하네요. 여기저기 찾아보니 제목처럼 이건 error이 아니고 warning이기 때문에 Maven을 사용하지 않으면 "Do not warn again"을 사용해도 문제가 없다고 합니다. 전 Maven을 쓸려고 설치한거니까 이 경고를 해결해야 했습니다.
경고에 나온대로 이클립스 폴더 루트에 있는 eclipse.ini를 수정해 주면 됩니다. 아래는 저의 eclipse.ini 입니다.
빨간색으로 표시한 부분이 JDK설정을 위해서 새로 추가한 부분입니다. -vm으로 설치된 JDK의 bin경로를 설정해 준 뒤에 이클립스를 재시작하면 경고가 사라집니다. 이걸 해결하자 이클립스 기동한다음에 "Initializing Java Tooling"가 Deadlock에 걸렸는지 1%위로 올라가지 않고 계속 돌아가는 문제가 있었는데 그것도 사라져버렸군요.(같은 원인이었는지는 잘 모르겠네요.)
제대로 설정되었는이 이클립스내에서도 확인 가능합니다.(3.5버전인 Galileo를 사용중입니다.) 메뉴에서 [Help] - [About Eclipse] 를 실행하면 아래와 같은 이클립스 정보가 나타납니다.
아래의 "Installation Details"버튼을 클릭합니다.
Configuration탭 부분에 가면 eclipse.ini에서 설정한 내용이 정상적으로 등록되어 있는 것을 확인 할 수 있습니다.
프로젝트 빌드툴인 Maven을 사용하기 위해서 이클립스 Maven 플러그인인 M2Eclipse를 설치한 후에 이클립스에서 빌드할때마다 다은과 같은 메시지가 떴습니다.

Maven Integration for Eclipse JDK Warning
The Maven Integration requires that Eclipse be running in a JDK, because a number of Maven core plugins are using jars from the JDK.
Please make sure the -vm option in eclipse.ini is pointing to a JDK and verify that Installed JREs are also using JDK installs.
The Maven Integration requires that Eclipse be running in a JDK, because a number of Maven core plugins are using jars from the JDK.
Please make sure the -vm option in eclipse.ini is pointing to a JDK and verify that Installed JREs are also using JDK installs.
원래 이클립스는 JRE만 있어도 동작이 가능한데 Maven 코어의 플러그인들이 JDK의 jars를 사용하고 있기 때문에 JDK가 필요하므로 eclipse.ini에서 -vm옵션으로 JDK를 설정하라고 하네요. 여기저기 찾아보니 제목처럼 이건 error이 아니고 warning이기 때문에 Maven을 사용하지 않으면 "Do not warn again"을 사용해도 문제가 없다고 합니다. 전 Maven을 쓸려고 설치한거니까 이 경고를 해결해야 했습니다.
경고에 나온대로 이클립스 폴더 루트에 있는 eclipse.ini를 수정해 주면 됩니다. 아래는 저의 eclipse.ini 입니다.
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Program Files\Java\jdk1.5.0_16\bin\
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Program Files\Java\jdk1.5.0_16\bin\
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
빨간색으로 표시한 부분이 JDK설정을 위해서 새로 추가한 부분입니다. -vm으로 설치된 JDK의 bin경로를 설정해 준 뒤에 이클립스를 재시작하면 경고가 사라집니다. 이걸 해결하자 이클립스 기동한다음에 "Initializing Java Tooling"가 Deadlock에 걸렸는지 1%위로 올라가지 않고 계속 돌아가는 문제가 있었는데 그것도 사라져버렸군요.(같은 원인이었는지는 잘 모르겠네요.)
제대로 설정되었는이 이클립스내에서도 확인 가능합니다.(3.5버전인 Galileo를 사용중입니다.) 메뉴에서 [Help] - [About Eclipse] 를 실행하면 아래와 같은 이클립스 정보가 나타납니다.

아래의 "Installation Details"버튼을 클릭합니다.

Configuration탭 부분에 가면 eclipse.ini에서 설정한 내용이 정상적으로 등록되어 있는 것을 확인 할 수 있습니다.
[Tool]Eclipse에서 서버구동시 Timeout 에러..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
항상 이클립스에서 간단한 것들만 돌려봤더니 서버실행시(Run On Server) Timeout 오류를 처음 겪어 봤습니다. 사실 서버설정에 이런 내용이 있는줄도 모르고 있었군요. ㅠ..ㅠ (여기서는 Tomcat 6.0버전을 사용했습니다.)
위와 같은 오류가 나타납니다. 45초내에 서버시작을 못했다고 server editor에서 수정하라고 하는군요.
Servers에서 이클립스에 설정되어 있는 서버를 더블클릭합니다.
그럼 서버설정에 대한 내용이 위와 같이 나타납니다. 여러가지 설정을 할 수 있게 되어 있군요.
Timeouts부분을 보면 Start에 대한 Timeouts에 대한 시간이 기본값인 45초로 설정되어 있는 것을 볼 수 있습니다. 너무 오래해두면 잘못되었을때 무장적 기다릴수도 있지만 정상적인데 필요하다면 여기서 시간을 늘려주면 됩니다.
항상 이클립스에서 간단한 것들만 돌려봤더니 서버실행시(Run On Server) Timeout 오류를 처음 겪어 봤습니다. 사실 서버설정에 이런 내용이 있는줄도 모르고 있었군요. ㅠ..ㅠ (여기서는 Tomcat 6.0버전을 사용했습니다.)

"Starting Tomcat v6.0 Server at localhost' has encountered a problem.
Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
위와 같은 오류가 나타납니다. 45초내에 서버시작을 못했다고 server editor에서 수정하라고 하는군요.

Servers에서 이클립스에 설정되어 있는 서버를 더블클릭합니다.

그럼 서버설정에 대한 내용이 위와 같이 나타납니다. 여러가지 설정을 할 수 있게 되어 있군요.

Timeouts부분을 보면 Start에 대한 Timeouts에 대한 시간이 기본값인 45초로 설정되어 있는 것을 볼 수 있습니다. 너무 오래해두면 잘못되었을때 무장적 기다릴수도 있지만 정상적인데 필요하다면 여기서 시간을 늘려주면 됩니다.
2016년 3월 3일 목요일
[EP]Erich Gamma와 함께 여는 개발자 세상 세미나 #2..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

20분간의 Coffee Break뒤에 1시간가량의 "에릭에게 무엇이든 물어보세요"라는 Q&A시간이 있었습니다. 아무래도 워낙 유명하신 분이니 처음에는 질문이 약간 주춤하는 듯 하더니 나중에 시간이 모자랄만큼 질문이 쏟아졌습니다. 제가 잘 모르는 부분도 있고 이해못한 것도 있어서 다 정리는 못하고 이해한 정도로만 정리하였습니다.
Q. 애자일을 팀에 적용하려면 찬성하는 사람도 있지만 반대하는 사람도 있는데 어떻게 도입을 하는가?
Q. 요구사항에 대한 특별한 관리법이 있는가?
Q. 한국에서 개발자들의 처우는 별로 좋지 않은데 다른 나라의 개발자 문화는 어떠한가?
Q. RTC가 너무 기능이 많아서 시러하는 사람도 있는데 이런 사람들은 어떻게 설득하는가?
Q. 에릭감마가 디자인 패턴의 세계를 열었으나 소프트웨어 크리에이티브 책을 보면 대개 직관에 의해서 설계를 한다는 이야기가 있다. 현실의 세계는 너무 다양하기 때문에 경험에 의존하여 한다는 것이고 실제 Problem Domain의 정의가 여렵기 때문이다. RTC도 어떤 표준을 제공한다고 할 수 있는데 현실에 맞추기에는 어렵지 않은가?
Q. API설계시 어떤 기준을 가지고 정의하는가?
Q. 엔터프라이즈 아키텍쳐에서는 실제 구현되는 소프트웨어와 문서가 동일하지 않은 것이 가장 큰 불만중의 하나인데 Jazz에서는 이 문제를 어떻게 해결하는가?
Q. Jazz 대쉬보드가 Dojo로 만들어졌는데 사용해 보니 Dojo가 좀 느린 편인데 Jazz에서 사용할 때 속도 개선방법들이 있는가?
Q. 투명성(Transparency)에 대해서...
Q. Jazz를 디자인할 때 가장 중점둔 것은 무엇인가?
Q. 퀄리티 매니저를 만드는 이유는 무엇인가?
Q. 개발자에게 창의력이란?
Q. Jazz가 PMS(Project Management System)인데 실제로 쓰이고 있는 곳이 있는가? 한국에서는 개발자들은 RTC나 Trac같은 툴로 인수인계가 가능하고 도움이 되지만 산출물로 문서작업을 많이 하게 되는데 해외에서는 문서가 아닌 이런 툴로 산출물의 역할을 하기도 하는가?
Q. 당연한 방향이기는 하지만 Eclipse가 점점 커지고 있고 Plugin 개발자는 알아야 될 것도 많고 인수인계를 해야할 내용도 점점 많아지고 있다. 반갑지많은 않은 일인데 계속 이런 방향으로 진행될 예정인가? 그리고 Eclipse나 RTC 개발자가 이런 방향을 바라보는 자세는 어떠해야 하는가?
네임밸류가 역시 있어서 그런지 세미나 끝나고 싸인회도 하더군요. 이럴 줄 알았으면 싸인받을 책이라도 하나 준비해 가는 건데 그랬습니다. 에릭감마랑 사진도 찍어주었는데 부끄러워서(?) 싸인만 받아왔습니다.
세미나 참가선물로 준 마우스 패드의 에릭감마의 싸인을 받아왔습니다. 아까워서 쓰지도 못하겠군요... 패턴책이라도 하나 가져가져 싸인받았어야 했는데 아쉽군요. ㅎ
PS. IBM에서 이 행사의 동영상 다시보기를 제공해 주는군요. - 09.10.30 -

20분간의 Coffee Break뒤에 1시간가량의 "에릭에게 무엇이든 물어보세요"라는 Q&A시간이 있었습니다. 아무래도 워낙 유명하신 분이니 처음에는 질문이 약간 주춤하는 듯 하더니 나중에 시간이 모자랄만큼 질문이 쏟아졌습니다. 제가 잘 모르는 부분도 있고 이해못한 것도 있어서 다 정리는 못하고 이해한 정도로만 정리하였습니다.
Q. 애자일을 팀에 적용하려면 찬성하는 사람도 있지만 반대하는 사람도 있는데 어떻게 도입을 하는가?
A. 반감이 있는 사람과 1:1로 함께 개발을 해보는 것이 좋다. 그 사람이 장점을 직접 경험해 보아야 깨닫는다.
Q. 요구사항에 대한 특별한 관리법이 있는가?
A. 요구사항은 항상 바뀔 수밖에 없다. 쉽지 않은 문제다.
Q. 한국에서 개발자들의 처우는 별로 좋지 않은데 다른 나라의 개발자 문화는 어떠한가?
A. 문화권별로 차이는 있지만 스트레스가 많은 업무이다. 항상 과도한 업무를 진행할 수는 없기 때문에 집중적으로 일하는 시기와 릴렉스 할 수 있는 시기가 파도처럼 번갈아가면서 오는 것이 좋다.
Q. RTC가 너무 기능이 많아서 시러하는 사람도 있는데 이런 사람들은 어떻게 설득하는가?
A. 중요한 것은 자기 일을 공유안하면 안되다는 이해가 필요하다는 것이다. 이것은 팀 차원의 개념 공유가 필요하고 RTC는 개별 팀원별로는 없고 팀레벨의 리포트만 있기 때문에 개인을 감시하기 위한 것은 아니다.
Q. 에릭감마가 디자인 패턴의 세계를 열었으나 소프트웨어 크리에이티브 책을 보면 대개 직관에 의해서 설계를 한다는 이야기가 있다. 현실의 세계는 너무 다양하기 때문에 경험에 의존하여 한다는 것이고 실제 Problem Domain의 정의가 여렵기 때문이다. RTC도 어떤 표준을 제공한다고 할 수 있는데 현실에 맞추기에는 어렵지 않은가?
A. 과거의 일로 배우는 것은 중요하다고 생각하며 경험과 직관 모두에 의존해야 한다. 경험이 많을수록 어떤 Pattern이 떠오르게 되지만 경험이 없으면 알려진 Pattern등으로 다른 사람의 경험을 활용할 수 있다. Pattern을 이용해도 이것을 Template처럼 어디에나 적용하려고 하면 안되고 Pattern에서 시작해서 상황에 따라 적용해야하며 이런 점에서 패턴과 직관이 완전히 다른 얘기는 아니다.
책에 나오지 않은 패턴도 생각해야하고 책이 나온지 오래됐기 때문에 실제로 너무 오래된 패턴들도 많은 것이 사실이다.
Q. API설계시 어떤 기준을 가지고 정의하는가?
A. 사용의 용의성과 이해하기 쉬움이 가장 큰 기준이다. API의 사용 용이성을 평가하기 가장 좋은 방법이 Unit Test이며 또한 고객의 피드백도 좋은 방법이 된다.
Q. 엔터프라이즈 아키텍쳐에서는 실제 구현되는 소프트웨어와 문서가 동일하지 않은 것이 가장 큰 불만중의 하나인데 Jazz에서는 이 문제를 어떻게 해결하는가?
A. 현재 RTC는 Construction과 Development의 협업에 대해서만 초점을 맞추고 있다. 차후 계획은 가지고 있지만 아직은 안되고 있다.
Q. Jazz 대쉬보드가 Dojo로 만들어졌는데 사용해 보니 Dojo가 좀 느린 편인데 Jazz에서 사용할 때 속도 개선방법들이 있는가?
A. CSS모듈처리, 압축 등 상당히 많은 튜닝을 가했으며 쉽지 않은 작업니다.
![]() | ![]() |
Q. 투명성(Transparency)에 대해서...
A. 투명성은 양방향이 중요하다. 팀장이 팀원들의 일에 대해서 알고 팀원들은 팀장의 일에 대한 정보를 알아야 한다.
Q. Jazz를 디자인할 때 가장 중점둔 것은 무엇인가?
A. 실제 존재하는 Pain Point를 해결하는 것이 목적이었으며 버전에 대한 의존성에 대해 많은 고민이 있었으며 이것을 REST베이스와 Loose Coupling으로 해결을 했다. 최초부터 완벽한 디자인은 없으며 계속 진화해 나아가야 하며 사실 처음 디자인한 것은 너무 복잡해서 확장이 불가능했으며 피드백 받아서 심플하게 변경하였다. 디자인은 쉽지 않은 일이다.
Q. 퀄리티 매니저를 만드는 이유는 무엇인가?
A. 테스트 관리는 좀 더 협업이 필요하다. 개발과 테스트는 보통 협업이 잘 안되고 있으며 테스터는 왜 이렇게 개발했는지 모르고 개발은 테스트하기 위해서 기다리고 있다는 것 조차 모른다. 협업이 목적이다. 이미 나온 테스트툴들도 많기 때문에 이런 툴들과의 통합도 필요하며 고객이 툴을 선택해서 REST로 통합하는 구조가 궁극적인 목표이고 이것이 OSLC이다.
A. A에서 B로 가는 길을 찾는데 피드백을 받고 테스트를 하면서 가장 효율적으로 가는 것이며 이게 문제를 해결하는 방법이다. 개발자라는 Job이 흥미로운 이유는 어떤 때에는 이미 한 것을 다시 하기도 하지만 어떤 때에는 완전히 새로운 것을 한다는 것이다. 그래서 행복감을 느낀다.
Q. Jazz가 PMS(Project Management System)인데 실제로 쓰이고 있는 곳이 있는가? 한국에서는 개발자들은 RTC나 Trac같은 툴로 인수인계가 가능하고 도움이 되지만 산출물로 문서작업을 많이 하게 되는데 해외에서는 문서가 아닌 이런 툴로 산출물의 역할을 하기도 하는가?
A. Jazz는 플랫폼이고 그 위에 많은 Product가 올라간다. RTC는 애자일을 서포트하는 역할이며 전통적인 방법론을 지원하는 툴은 따로 또 있다. 애자일만을 위해서 RTC라는 툴을 분리한 이유는 애자일은 초기에 설계하는 방식부터 접근방법자체가 완전히 다르기 때문이다. Jazz가 산출물을 위한 리파지토리도 제공하기 때문에 도움이 될 것이다.
Q. 당연한 방향이기는 하지만 Eclipse가 점점 커지고 있고 Plugin 개발자는 알아야 될 것도 많고 인수인계를 해야할 내용도 점점 많아지고 있다. 반갑지많은 않은 일인데 계속 이런 방향으로 진행될 예정인가? 그리고 Eclipse나 RTC 개발자가 이런 방향을 바라보는 자세는 어떠해야 하는가?
A. 이런 추세를 바라고 있는 것은 아니지만 피할 수는 없다. 이런 문제는 이클립스 팀도 충분히 인식하고 있으며 고민하고 여러가지 실험도 하고 있다. 궁극적인 추구는 역할(Role) 베이스로 가는 것인제 Role에 대한 정의가 쉽지 않아서 진행이 빠르지는 않다. 반가운 것은 점점 웹UI로 옮겨가는 단계이기 때문에 좀더 쉬워질 가능성이 높아지고 있다.
또하나 중요한 것은 이클립스 베이스로 Role에 맞게 UI를 변경가능하도록 되어야 한다. 이미 이런 기술을 가지고 있으며 복잡성을 해결하기 위한 방법중 하나이다.

네임밸류가 역시 있어서 그런지 세미나 끝나고 싸인회도 하더군요. 이럴 줄 알았으면 싸인받을 책이라도 하나 준비해 가는 건데 그랬습니다. 에릭감마랑 사진도 찍어주었는데 부끄러워서(?) 싸인만 받아왔습니다.

세미나 참가선물로 준 마우스 패드의 에릭감마의 싸인을 받아왔습니다. 아까워서 쓰지도 못하겠군요... 패턴책이라도 하나 가져가져 싸인받았어야 했는데 아쉽군요. ㅎ
PS. IBM에서 이 행사의 동영상 다시보기를 제공해 주는군요. - 09.10.30 -
[EP]Erich Gamma와 함께 여는 개발자 세상 세미나 #1..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

IBM에서 에릭감마를 초청해서 "Erich Gamma와 함께 여는 개발자 세상"이라는 제목으로 세미나를 열었습니다. 에릭 감마는 아시는 분은 아시겠지만 GoF(Gang of Four)중의 한명입니다. GoF는 Design Patterns (번역서)책의 저자로 이 디자인패턴이 프로그래밍의 새로운 지평을 역사적인 서적입니다.(라고 하더군요. 내공이 딸려서 아직 못읽어봤네요.) 어쨌든 이 책을 지은 에릭 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vissides) 이렇게 4명을 Gang of Four라고 부릅니다. 역사적인 분들이시죠.. ㅎㅎㅎㅎㅎ
그 중의 에릭 감마는 제가 제일 좋아하는 IDE이기도 한 Eclipse의 창시자로 지금도 Eclipse 개발그룹을 이끌고 있습니다. 2주전에 에릭감마가 온다는 얘기를 듣고는 냉큼 신청해 놓고는 눈치보다가 이번주에는 바쁜일도 없고 해서 허락을 맡고 갔다 왔습니다. GoF중의 한명인 랄프 존슨도 지난주 토요일(15일)에 국내에서 세미나가 있었습니다. 다음 달에는 켄트벡이 온다는 소식이 들리던데.... 평생 한번 볼 수나 있을까 했던 분들이 갑자기 대거 한국에 오시는군요. ㅎㅎ
행사는 위와같은 순서로 진행되었습니다.
세미나 처음에는 IBM 이승재 사업부장의 간단한 환영사와 한국소프트웨어진흥원 SW공학단의 이상은님의 축사로 시작되었습니다. 근데 머 말이 축사이지 왜하는지 알 수 없는 소프트웨어공학에 대한 PPT로 이어졌습니다. ㅡ..ㅡ
어쨌든 이어서 드디어 기다리던 에릭감마의 "협업을 위한 개방형 소프트웨어 개발 플랫폼 Jazz 및 협업 개발 환경 솔루션 RTC 소개"가 이어졌습니다.
에릭감마가 진행한 PPT는 "how (8 years of) eclipse changed my views on software development"라는 제목이었는데 파일로까지는 제공해 주지 않아서 에릭감마가 QCON 2008에서 한 PPT를 가져왔습니다.(작년에 한거라서 7 years이네요.. ㅎ) 약간 변경되긴 했는데 대부분은 거의 비슷하더군요.
포스팅 뒤에 IBM에서 발표자료를 보내주었습니다. IBM사이트에서 PDF 다운로드가 가능합니다 첨부했던 작년자료도 올해 발표자료로 교체하였습니다.
Eclipse 개발
발표는 이클립스에 대한 설명부터 이어졌습니다. 처음에는 이 얘기를 왜 하나 했는데 이클립스를 개발하면서 겪은 경험을 토대로 개념이 발전되면서 구성된 것이 Jazz라고 할 수 있는것 같습니다. 이클립스가 앞으로 Jazz가 된다는 것은 아니고 이클립스 개발이 진행되면서 에릭 감마가 구상한 시스템이 Jazz라는 형태로 실체화 된 것 같습니다.
이클립스를 만들고 사용하면서 바뀐 생각들부터 얘기하고 있습니다. 이클립스는 2000년에 시작되었습니다. 건물을 예로 들면 건물의 위치, 구조, 전선, 가구들의 수명이 다릅니다. 벽이나 구조, 땅 등은 수십년에서 수백년을 가지만 가구들같은 경우는 몇년마다 바뀌기도 합니다. 이클립스도 이렇게 레이어마다 수명이 다르게 구성되어야 하고 그 기반시스템(Structure foundation)을 플러그인(plug-in) 아키텍쳐로 결정하였습니다. 그리고 이 플러그인은 API에 의존적입니다.
그래서 API가 중요했고 API의 디자인이 필요했습니다. 그리고 UI는 계속 진화하고 있습니다. 여기서 중요한 결론은 모듈화가 중요하고 모든 것은 플러그인이고 API는 거대한 약속인데 안정성이 중요하고 너무 많은 것을 정의하려고 하지는 않았습니다.
이클립스 3.4에서는 API의 Baseline를 선택할 수 있게 되어 있는데 API는 계속 발전하여야 하는데 버전에 종속되지 않는 것이 좋다는 결론이 나왔습니다. 마치 인터넷 처럼 URL과 HTTP로 정의되고 각 요구들이 Link로 연결이 됩니다. 그래서 API스타일을 REST스타일로 변경하였습니다. 이것이 실체화 된것이 OSLC입니다. 이클립스는 Jazz로 발전하고 Jazz는 RTC로 구체화 됩니다.
Eclipse의 오픈소스화
2002년에는 이클립스에게 큰 변화가 생기는데 이클립스의 오픈소스화가 결정됩니다. 그 이전까지는 스위스 은행처럼 폐쇄적인 방식이었습니다. 그래서 개발자와 사용자간의 소통이 없었고 사용자들이 무언가를 물어보아도 알려줄 수 없다는 대답만 할 뿐이었습니다. 하지만 에릭감마는 개발자와 사용자의 커뮤니티를 믿고 있습니다. 그래서 2002부터 오픈소스화가 결정되어 그뒤로는 오픈소스로 진행이 됩니다.
이클립스팀은 선적(Shipping)을 중요하게 생각합니다. 일정 퀄리티이상이 되었을 경우에만 선적을 하며 얼마나 선적했냐가 팀의 공헌도를 증명하게 됩니다. 오픈소스화가 되니까 공개적으로 기술적인 논의를 하는 것이 솔직히 좀 두려웠었다고 합니다. 이 과정에서는 오픈소스는 투명한 사용자 커뮤니티와 개발자간의 피드백이 선순환 되는 아주 훌륭한 이 모델이며 오픈소스프로젝트에 제한은 없기 때문에 이 모델을 상용에 적용하여 개방형 상용개발을 할 수 있습니다.
개방형 상용개발(Open Commercial Development)을 Jazz에 적용하였고 사용자 피드백으로 품질을 향상시킬 수 있었습니다. Eclipse Way Practices는 특별한 것은 없습니다. 여러가지 방법론등이 있는데 그 방법론 자체는 중요하지 않고 어떻게 조합하는 가가 중요합니다. 그렇게 해서 점진적으로 가치(Value)를 증가시켜야 합니다. 그래서 원하는 Value(보통은 일정)을 극대화 할 수 있도록 하였습니다.
위 화면은 에릭감마가 강조하였던 그림입니다. 과거에는 빨간줄처럼 되었다면 이제는 늘어지지 않게 반복주기를 촘촘하게 함으로써 스트레스를 줄입니다. 반복적이고 적응되어가는 계획, 디자인/리펙토링, 통합과 테스팅, 딜리버링과 데모, 피드백, 학습등을 끊임없이(continuous) 수행되어야 할 일들입니다. (이건 애자일에서 얘기하는 것을 말한것 같군요.)
JAZZ와 Team Concert
하지만 이클립스에서 어려운 점(Pain Points)들이 있었습니다. 그것은 협업(Collaboration), 개발(Development), 프로젝트 관리(Project Management)입니다.
이클립스를 만들때에는 한명의 개발자에게 초점을 맞추었었습니다. 하지만 지금은 팀과 팀의 협업에 초점을 맞추어야 합니다.그것이 Jazz와 Team Concert입니다. Open Lifecycle services Interrations위에 Jazz Team Server가 올라가고 그 위에 많은 툴들이 올라가고 서로 Intergration이 가능합니다. RTC(Rational Team Concert)가 그중 하나입니다.
RCT의 개발은 4년전부터 이클립스 팀에 의해서 시작되었습니다. 소스관리, Work Item, 빌드, 프로젝트 상태들이 통합되어 있습니다. Invitation메일을 받고 팀원들이 가입을 할 수 있으면 일정, 현재 하는 질, 진행사항, 테스트, 소스코드, 일 할당, 결정 추적, 소스리뷰등이 통합되어 있습니다. 이 모든 것을 Jazz의 대쉬보드에서 볼 수 있습니다. (보통은 문서로 만들어서 잘 안읽어보게 되는)팀내의 룰이나 프로세스를 강제해서 새로온 참여한 팀원들에게 강제할 수 있습니다.
목표는 팀작업의 효율성을 높이는 것입니다. 문제가 생길 경우 Jazz의 대쉬보드를 통해서 쉽게 파악할 수 있습니다. 개인적인 대쉬보드와 팀의 대쉬보드뿐만 아니라 팀들의 팀단위(프로젝트 레벨)의 대쉬보드도 제공하고 있습니다.
오기전에 Jazz와 RTC(Rational Team Concert)에 대해서 좀 공부를 했었는데 내용이 복잡해서 대충 감정도만 잡았습니다. 에릭감마가 만든 Jazz는 개방형 협업 개발플랫폼이고 RTC는 Jazz플랫폼에 올라가는 Product중 하나로 애자일개발에 맞게 구성된 솔루션입니다.
생각보다 양이 많아져서 포스팅을 나눠야겠습니다.
아무래도 Jazz플랫폼과 RTC라는 툴에 대한 세미나 였기 때문에 툴 사용법을 가르쳐 주는 것을 의도에 맞지 않았을 때고 가볍게 시연을 해주기는 했지만 협업플랫폼이라는 타이틀도 규모가 크고 RTC자체가 기능이 너무 많아서 시연정도로 다 파악하기엔 무리였습니다. 결국 제대로 어떤 툴인지 파악하기 위해서는 실제로 사용을 점 해보아야 할 것 같습니다.
My Comment..
해당 포스팅은 가져올까 말까 고민을 했었다.. 시간이 꽤 흐르기도 했서 이제와서 가져온다고 도움이 될까라는 생각을 하면서 안갖고 와도.. 햄의 포스팅은 다 읽어보고 있기에 읽어봤는데.. 햄의 말처럼 Eclipse 의 창시자고, 대부분의 개발자가 쓰는 Eclipse 에 대해서 여러가지 설명들이 있어서.. 어떻게 개발이 되어간건지.. 탄생한건지.. 어떤 기타 히스토리가 있었는지 봐두면 좋을 듯 해서 가져왔다..

IBM에서 에릭감마를 초청해서 "Erich Gamma와 함께 여는 개발자 세상"이라는 제목으로 세미나를 열었습니다. 에릭 감마는 아시는 분은 아시겠지만 GoF(Gang of Four)중의 한명입니다. GoF는 Design Patterns (번역서)책의 저자로 이 디자인패턴이 프로그래밍의 새로운 지평을 역사적인 서적입니다.(라고 하더군요. 내공이 딸려서 아직 못읽어봤네요.) 어쨌든 이 책을 지은 에릭 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vissides) 이렇게 4명을 Gang of Four라고 부릅니다. 역사적인 분들이시죠.. ㅎㅎㅎㅎㅎ
그 중의 에릭 감마는 제가 제일 좋아하는 IDE이기도 한 Eclipse의 창시자로 지금도 Eclipse 개발그룹을 이끌고 있습니다. 2주전에 에릭감마가 온다는 얘기를 듣고는 냉큼 신청해 놓고는 눈치보다가 이번주에는 바쁜일도 없고 해서 허락을 맡고 갔다 왔습니다. GoF중의 한명인 랄프 존슨도 지난주 토요일(15일)에 국내에서 세미나가 있었습니다. 다음 달에는 켄트벡이 온다는 소식이 들리던데.... 평생 한번 볼 수나 있을까 했던 분들이 갑자기 대거 한국에 오시는군요. ㅎㅎ

행사는 위와같은 순서로 진행되었습니다.

세미나 처음에는 IBM 이승재 사업부장의 간단한 환영사와 한국소프트웨어진흥원 SW공학단의 이상은님의 축사로 시작되었습니다. 근데 머 말이 축사이지 왜하는지 알 수 없는 소프트웨어공학에 대한 PPT로 이어졌습니다. ㅡ..ㅡ
어쨌든 이어서 드디어 기다리던 에릭감마의 "협업을 위한 개방형 소프트웨어 개발 플랫폼 Jazz 및 협업 개발 환경 솔루션 RTC 소개"가 이어졌습니다.
에릭감마가 진행한 PPT는 "how (8 years of) eclipse changed my views on software development"라는 제목이었는데 파일로까지는 제공해 주지 않아서 에릭감마가 QCON 2008에서 한 PPT를 가져왔습니다.(작년에 한거라서 7 years이네요.. ㅎ) 약간 변경되긴 했는데 대부분은 거의 비슷하더군요.
포스팅 뒤에 IBM에서 발표자료를 보내주었습니다. IBM사이트에서 PDF 다운로드가 가능합니다 첨부했던 작년자료도 올해 발표자료로 교체하였습니다.
Eclipse 개발
발표는 이클립스에 대한 설명부터 이어졌습니다. 처음에는 이 얘기를 왜 하나 했는데 이클립스를 개발하면서 겪은 경험을 토대로 개념이 발전되면서 구성된 것이 Jazz라고 할 수 있는것 같습니다. 이클립스가 앞으로 Jazz가 된다는 것은 아니고 이클립스 개발이 진행되면서 에릭 감마가 구상한 시스템이 Jazz라는 형태로 실체화 된 것 같습니다.
이클립스를 만들고 사용하면서 바뀐 생각들부터 얘기하고 있습니다. 이클립스는 2000년에 시작되었습니다. 건물을 예로 들면 건물의 위치, 구조, 전선, 가구들의 수명이 다릅니다. 벽이나 구조, 땅 등은 수십년에서 수백년을 가지만 가구들같은 경우는 몇년마다 바뀌기도 합니다. 이클립스도 이렇게 레이어마다 수명이 다르게 구성되어야 하고 그 기반시스템(Structure foundation)을 플러그인(plug-in) 아키텍쳐로 결정하였습니다. 그리고 이 플러그인은 API에 의존적입니다.
그래서 API가 중요했고 API의 디자인이 필요했습니다. 그리고 UI는 계속 진화하고 있습니다. 여기서 중요한 결론은 모듈화가 중요하고 모든 것은 플러그인이고 API는 거대한 약속인데 안정성이 중요하고 너무 많은 것을 정의하려고 하지는 않았습니다.
이클립스 3.4에서는 API의 Baseline를 선택할 수 있게 되어 있는데 API는 계속 발전하여야 하는데 버전에 종속되지 않는 것이 좋다는 결론이 나왔습니다. 마치 인터넷 처럼 URL과 HTTP로 정의되고 각 요구들이 Link로 연결이 됩니다. 그래서 API스타일을 REST스타일로 변경하였습니다. 이것이 실체화 된것이 OSLC입니다. 이클립스는 Jazz로 발전하고 Jazz는 RTC로 구체화 됩니다.
Eclipse의 오픈소스화
2002년에는 이클립스에게 큰 변화가 생기는데 이클립스의 오픈소스화가 결정됩니다. 그 이전까지는 스위스 은행처럼 폐쇄적인 방식이었습니다. 그래서 개발자와 사용자간의 소통이 없었고 사용자들이 무언가를 물어보아도 알려줄 수 없다는 대답만 할 뿐이었습니다. 하지만 에릭감마는 개발자와 사용자의 커뮤니티를 믿고 있습니다. 그래서 2002부터 오픈소스화가 결정되어 그뒤로는 오픈소스로 진행이 됩니다.
이클립스팀은 선적(Shipping)을 중요하게 생각합니다. 일정 퀄리티이상이 되었을 경우에만 선적을 하며 얼마나 선적했냐가 팀의 공헌도를 증명하게 됩니다. 오픈소스화가 되니까 공개적으로 기술적인 논의를 하는 것이 솔직히 좀 두려웠었다고 합니다. 이 과정에서는 오픈소스는 투명한 사용자 커뮤니티와 개발자간의 피드백이 선순환 되는 아주 훌륭한 이 모델이며 오픈소스프로젝트에 제한은 없기 때문에 이 모델을 상용에 적용하여 개방형 상용개발을 할 수 있습니다.
개방형 상용개발(Open Commercial Development)을 Jazz에 적용하였고 사용자 피드백으로 품질을 향상시킬 수 있었습니다. Eclipse Way Practices는 특별한 것은 없습니다. 여러가지 방법론등이 있는데 그 방법론 자체는 중요하지 않고 어떻게 조합하는 가가 중요합니다. 그렇게 해서 점진적으로 가치(Value)를 증가시켜야 합니다. 그래서 원하는 Value(보통은 일정)을 극대화 할 수 있도록 하였습니다.

위 화면은 에릭감마가 강조하였던 그림입니다. 과거에는 빨간줄처럼 되었다면 이제는 늘어지지 않게 반복주기를 촘촘하게 함으로써 스트레스를 줄입니다. 반복적이고 적응되어가는 계획, 디자인/리펙토링, 통합과 테스팅, 딜리버링과 데모, 피드백, 학습등을 끊임없이(continuous) 수행되어야 할 일들입니다. (이건 애자일에서 얘기하는 것을 말한것 같군요.)
JAZZ와 Team Concert
하지만 이클립스에서 어려운 점(Pain Points)들이 있었습니다. 그것은 협업(Collaboration), 개발(Development), 프로젝트 관리(Project Management)입니다.
이클립스를 만들때에는 한명의 개발자에게 초점을 맞추었었습니다. 하지만 지금은 팀과 팀의 협업에 초점을 맞추어야 합니다.그것이 Jazz와 Team Concert입니다. Open Lifecycle services Interrations위에 Jazz Team Server가 올라가고 그 위에 많은 툴들이 올라가고 서로 Intergration이 가능합니다. RTC(Rational Team Concert)가 그중 하나입니다.
RCT의 개발은 4년전부터 이클립스 팀에 의해서 시작되었습니다. 소스관리, Work Item, 빌드, 프로젝트 상태들이 통합되어 있습니다. Invitation메일을 받고 팀원들이 가입을 할 수 있으면 일정, 현재 하는 질, 진행사항, 테스트, 소스코드, 일 할당, 결정 추적, 소스리뷰등이 통합되어 있습니다. 이 모든 것을 Jazz의 대쉬보드에서 볼 수 있습니다. (보통은 문서로 만들어서 잘 안읽어보게 되는)팀내의 룰이나 프로세스를 강제해서 새로온 참여한 팀원들에게 강제할 수 있습니다.
목표는 팀작업의 효율성을 높이는 것입니다. 문제가 생길 경우 Jazz의 대쉬보드를 통해서 쉽게 파악할 수 있습니다. 개인적인 대쉬보드와 팀의 대쉬보드뿐만 아니라 팀들의 팀단위(프로젝트 레벨)의 대쉬보드도 제공하고 있습니다.
오기전에 Jazz와 RTC(Rational Team Concert)에 대해서 좀 공부를 했었는데 내용이 복잡해서 대충 감정도만 잡았습니다. 에릭감마가 만든 Jazz는 개방형 협업 개발플랫폼이고 RTC는 Jazz플랫폼에 올라가는 Product중 하나로 애자일개발에 맞게 구성된 솔루션입니다.
![]() | ![]() | ![]() |
생각보다 양이 많아져서 포스팅을 나눠야겠습니다.
아무래도 Jazz플랫폼과 RTC라는 툴에 대한 세미나 였기 때문에 툴 사용법을 가르쳐 주는 것을 의도에 맞지 않았을 때고 가볍게 시연을 해주기는 했지만 협업플랫폼이라는 타이틀도 규모가 크고 RTC자체가 기능이 너무 많아서 시연정도로 다 파악하기엔 무리였습니다. 결국 제대로 어떤 툴인지 파악하기 위해서는 실제로 사용을 점 해보아야 할 것 같습니다.
My Comment..
해당 포스팅은 가져올까 말까 고민을 했었다.. 시간이 꽤 흐르기도 했서 이제와서 가져온다고 도움이 될까라는 생각을 하면서 안갖고 와도.. 햄의 포스팅은 다 읽어보고 있기에 읽어봤는데.. 햄의 말처럼 Eclipse 의 창시자고, 대부분의 개발자가 쓰는 Eclipse 에 대해서 여러가지 설명들이 있어서.. 어떻게 개발이 되어간건지.. 탄생한건지.. 어떤 기타 히스토리가 있었는지 봐두면 좋을 듯 해서 가져왔다..
2016년 2월 29일 월요일
[Tool]이클립스 실행시 "The Eclipse executable launcher was unable to locate its companion shared library." 오류..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
이클립스를 새로 다운받아서 실행하니까 아래와 같은 에러가 떴습니다.
"The Eclipse executable launcher was unable to locate its companion shared library." 뭐 대충 관련된 라이브러리를 사용할 수 없어서 실행할수 없다는 메시지입니다. 메모리관련 에러는 많이 봤어도 이런 오류메시지는 처음 봐서 약간 당황했습니다만 특이한 경우는 아닌듯 검색하자 꽤 많은 내용들이 나왔습니다.
다른 OS의 경우도 있는것 같기는 한데 여기서는 윈도우의 경우만 얘기하겠습니다. 이 오류는 이클립스폴더 아래 plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800 폴더의 파일부분에 문제가(이유야 어쨌든) 있기 때문에 런처로딩이 제대로 되지 않은 것입니다. org.eclipse.equinox.launcher.win32.win32.x86_ 뒤에 부분은 설치버전에 따라 숫자가 달라질 수 있습니다. 다른 이클립스에서든 이 부분의 파일을 다시 복사하면 이 문제는 해결할 수 있습니다.
저같은 경우는 어이없게도 압축풀어서 복사하는 과정에서 이쪽의 폴더가 누락되어버려서 발생한 것이었습니다. 털썩~~~~
위 문제만으로 해결이 안될경우 org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar파일도 필요할 수 있습니다.
이클립스를 새로 다운받아서 실행하니까 아래와 같은 에러가 떴습니다.

"The Eclipse executable launcher was unable to locate its companion shared library." 뭐 대충 관련된 라이브러리를 사용할 수 없어서 실행할수 없다는 메시지입니다. 메모리관련 에러는 많이 봤어도 이런 오류메시지는 처음 봐서 약간 당황했습니다만 특이한 경우는 아닌듯 검색하자 꽤 많은 내용들이 나왔습니다.
다른 OS의 경우도 있는것 같기는 한데 여기서는 윈도우의 경우만 얘기하겠습니다. 이 오류는 이클립스폴더 아래 plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800 폴더의 파일부분에 문제가(이유야 어쨌든) 있기 때문에 런처로딩이 제대로 되지 않은 것입니다. org.eclipse.equinox.launcher.win32.win32.x86_ 뒤에 부분은 설치버전에 따라 숫자가 달라질 수 있습니다. 다른 이클립스에서든 이 부분의 파일을 다시 복사하면 이 문제는 해결할 수 있습니다.
저같은 경우는 어이없게도 압축풀어서 복사하는 과정에서 이쪽의 폴더가 누락되어버려서 발생한 것이었습니다. 털썩~~~~
위 문제만으로 해결이 안될경우 org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar파일도 필요할 수 있습니다.
[Book] 이클립스 프로젝트 필수 유틸리티..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
제목그대로의 책입니다. 툴을 사용하는 것이 개발 실력을 반증해 주지는 않지만 분명히 생산성향상등에 충분한 위력을 발휘한다고 생각하고 있습니다. 국내에서는 자바개발을 거의 평정하다시피한 IDE인 Eclipse를 중심으로 해서 자바개발을 하면서 필요한 유틸리티에 대해서 총 망라한 책입니다.
비슷한 책으로는 윈도우 프로젝트 필수 프로젝트라는 책이 있습니다. 개인적으로 강추하는 책이긴 한데 관점만 약간 다를뿐 입니다. 윈도우 프로젝트 필수 프로젝트가 일반적인 부분을 얘기했다면 이 책은 이클립스에 관련하여 풀어가고 있습니다. 두 책에 공통된 유틸리티들이 있어서 겹치는 부분도 있기는 하지만 이클립스를 쓰면 2가지 다 충분히 도움이 될만하다고 생각합니다.
이 책의 좋은 점은 이클립스로 자바 프로젝트를 진행할 때 필요한(요즘 많이 쓰는) 유틸리티를 개발 한 사이클을 모두 설명해 주고 있다는 것입니다. 개발을 시작하면서 CVS나 Subversion같은 SCM[Source Configration Management]을 이용해서 소스코드를 형상관리하고 ANT를 통해서 번거로운 빌드 및 배포작업을 자동화 하고 JUnit을 이용해서 단위테스트로 소스의 안정성을 높이고 Trac으로 Wiki에 문서정리를 하면서 이슈관리를 통한 원활한 프로젝트를 진행될 수 있도록 하는 이 한 사이클의 이클립스 연동을 모두 다뤄주고 있습니다.
각 부분에 대해서 상당히 자세하게 설명하고 있고 모든 유틸리티들을 이클립스와 어떻게 연동하는지 그리고 하면서 지은이의 노하우까지 나와있어서 처음 이클립스를 사용하면서 여러가지 플러그인(사실 별거아닌것 같으면서도 셋팅할려면 꽤나 까다롭죠.)을 쉽게 사용할 수 있도록 도와주고 있습니다.
그러면서도 이 책이 더 좋게 느껴지는 것은 마지막의 초간단 블로그 만들기 프로젝트입니다. 사실 리스트와 글쓰기 밖에 없는 이 프로젝트를 통해서 앞에서 계속 설명한 각종 유틸리티를 프로젝트를 진행하면서 어떤부분에 어떻게 사용하는 가를 아주 디테일하게 설명해 주고 있습니다. 처음 사용하는 사람이라면 뭔지는 알겠는데 막상 사용하려면 쉽지 않은게 사실인데 이 마지막 장을 통해서 실제 프로젝트에 적용할 수 있도록 상당히 유용하게 가이드 해주고 있습니다.
이클립스를 좀더 잘 쓰고 싶다면 충분히 도움이 될만한 책이라고 생각....
| 이클립스 프로젝트 필수 유틸리티 : subversion, Ant, JUnit, Trac - 민진우 외 지음/한빛미디어 |
제목그대로의 책입니다. 툴을 사용하는 것이 개발 실력을 반증해 주지는 않지만 분명히 생산성향상등에 충분한 위력을 발휘한다고 생각하고 있습니다. 국내에서는 자바개발을 거의 평정하다시피한 IDE인 Eclipse를 중심으로 해서 자바개발을 하면서 필요한 유틸리티에 대해서 총 망라한 책입니다.
비슷한 책으로는 윈도우 프로젝트 필수 프로젝트라는 책이 있습니다. 개인적으로 강추하는 책이긴 한데 관점만 약간 다를뿐 입니다. 윈도우 프로젝트 필수 프로젝트가 일반적인 부분을 얘기했다면 이 책은 이클립스에 관련하여 풀어가고 있습니다. 두 책에 공통된 유틸리티들이 있어서 겹치는 부분도 있기는 하지만 이클립스를 쓰면 2가지 다 충분히 도움이 될만하다고 생각합니다.
이 책의 좋은 점은 이클립스로 자바 프로젝트를 진행할 때 필요한(요즘 많이 쓰는) 유틸리티를 개발 한 사이클을 모두 설명해 주고 있다는 것입니다. 개발을 시작하면서 CVS나 Subversion같은 SCM[Source Configration Management]을 이용해서 소스코드를 형상관리하고 ANT를 통해서 번거로운 빌드 및 배포작업을 자동화 하고 JUnit을 이용해서 단위테스트로 소스의 안정성을 높이고 Trac으로 Wiki에 문서정리를 하면서 이슈관리를 통한 원활한 프로젝트를 진행될 수 있도록 하는 이 한 사이클의 이클립스 연동을 모두 다뤄주고 있습니다.
각 부분에 대해서 상당히 자세하게 설명하고 있고 모든 유틸리티들을 이클립스와 어떻게 연동하는지 그리고 하면서 지은이의 노하우까지 나와있어서 처음 이클립스를 사용하면서 여러가지 플러그인(사실 별거아닌것 같으면서도 셋팅할려면 꽤나 까다롭죠.)을 쉽게 사용할 수 있도록 도와주고 있습니다.
그러면서도 이 책이 더 좋게 느껴지는 것은 마지막의 초간단 블로그 만들기 프로젝트입니다. 사실 리스트와 글쓰기 밖에 없는 이 프로젝트를 통해서 앞에서 계속 설명한 각종 유틸리티를 프로젝트를 진행하면서 어떤부분에 어떻게 사용하는 가를 아주 디테일하게 설명해 주고 있습니다. 처음 사용하는 사람이라면 뭔지는 알겠는데 막상 사용하려면 쉽지 않은게 사실인데 이 마지막 장을 통해서 실제 프로젝트에 적용할 수 있도록 상당히 유용하게 가이드 해주고 있습니다.
이클립스를 좀더 잘 쓰고 싶다면 충분히 도움이 될만한 책이라고 생각....
2016년 2월 25일 목요일
[Tool]Eclipse 프로젝트 서버Root(/)에서 실행하기..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
보통 이클립스에서 톰캣등을 연결해서 웹프로젝트를 실행하면 서버루트밑에 프로젝트명이 붙어서 개발할때 상당히 귀찮습니다.
무슨 소리냐 하면 이클립스에서 TestProject라는 프로젝트를 만들고 톰캣을 연동해서(톰캣을따로 설치해서 Deploy형태로 하는 것 말고 이클립스에서 Run As..로 실행할 수 있도록...) 실행을 하면 http://localhost:8080/TestProject/index.jsp와 같은 형태로 실행이 되기 때문에 이미지나 form submit을 할 때 절대경로를 사용하려면 /TestProject/images/01.jpg와 같은 형태로 사용해야 되는데 최종적으로 Deploy될때는 TestProject밑으로 안들어가고 그냥 Root로 들어가는 경우가 많기 때문에 이점은 개발할 때 꽤 귀찮습니다.
그래서 /TestProject라는 경로를 핸들링하기 위해서 <%=CONTEXT_ROOT%>/images/01.jpg와 같이 상수 또는 변수로 만들어서 나중에 배포할 때 상황에 맞게 수정할 수 있도록 하곤 합니다.
이게 이클립스의 설정때문에 그런건줄 알았더니 이걸 수정할 수 있는 방법이 있었습니다.
Project를 처음 생성할 때 항상 무심코 Next를 누르던 과정 중에 Context Root를 설정하는 부분이 있었습니다. 기본값으로 프로젝트명이 자동으로 Context Root로 설정되는데 여기서 이렇게 설정되었기 때문에 톰캣실행시에도 Context Root가 /TestProject/가 되는 것입니다. 여기서 이 Context Root를 공란으로 만들면 Context Root가 /가 되고 톰캣실행시에도 http://localhost:8080/index.jsp와 같은 형태로 실행할 수 있습니다.
또한 이미 Context Root를 기본값인 프로젝트명으로 만들어진 프로젝트도 변경이 가능합니다.
해당 프로젝트의 [Properties] - [Web Project Settings]에서 Context Root를 변경할 수 있습니다. 이렇게 Context Root를 변경하였을 때는 수동으로 톰캣을 한번 껐다 켜야 적용이 됩니다. 그렇지 않고 Run As...로 재가동을 하였을 때는 404 error가 나타납니다.
My Comment..
첨에 포스팅 제목을 보고서.. 이게 먼소리지.. 했는데..
읽다보니.. 내가 종종.. 저 문제로 인해서.. naver 누님에게 물어보고..
수정해서 사용하던 부분들이었다.. 글 자체는 오래 됬지만, 아마도 처음 시작하는..
분들이나.. 단순히 디폴트로 사용하다가.. 문제에 직면하시는 분들에게는..
꽤나 유용한 팁이 될 듯하다.. [이렇게 써놓으니.. 꼭 내가 엄청 개발 잘하는..
사람 같아보이네.. ㅋㅋ.. 절대 아닌데 말이지.. ㅎㅎ..]
보통 이클립스에서 톰캣등을 연결해서 웹프로젝트를 실행하면 서버루트밑에 프로젝트명이 붙어서 개발할때 상당히 귀찮습니다.
무슨 소리냐 하면 이클립스에서 TestProject라는 프로젝트를 만들고 톰캣을 연동해서(톰캣을따로 설치해서 Deploy형태로 하는 것 말고 이클립스에서 Run As..로 실행할 수 있도록...) 실행을 하면 http://localhost:8080/TestProject/index.jsp와 같은 형태로 실행이 되기 때문에 이미지나 form submit을 할 때 절대경로를 사용하려면 /TestProject/images/01.jpg와 같은 형태로 사용해야 되는데 최종적으로 Deploy될때는 TestProject밑으로 안들어가고 그냥 Root로 들어가는 경우가 많기 때문에 이점은 개발할 때 꽤 귀찮습니다.
그래서 /TestProject라는 경로를 핸들링하기 위해서 <%=CONTEXT_ROOT%>/images/01.jpg와 같이 상수 또는 변수로 만들어서 나중에 배포할 때 상황에 맞게 수정할 수 있도록 하곤 합니다.
이게 이클립스의 설정때문에 그런건줄 알았더니 이걸 수정할 수 있는 방법이 있었습니다.

Project를 처음 생성할 때 항상 무심코 Next를 누르던 과정 중에 Context Root를 설정하는 부분이 있었습니다. 기본값으로 프로젝트명이 자동으로 Context Root로 설정되는데 여기서 이렇게 설정되었기 때문에 톰캣실행시에도 Context Root가 /TestProject/가 되는 것입니다. 여기서 이 Context Root를 공란으로 만들면 Context Root가 /가 되고 톰캣실행시에도 http://localhost:8080/index.jsp와 같은 형태로 실행할 수 있습니다.
또한 이미 Context Root를 기본값인 프로젝트명으로 만들어진 프로젝트도 변경이 가능합니다.

해당 프로젝트의 [Properties] - [Web Project Settings]에서 Context Root를 변경할 수 있습니다. 이렇게 Context Root를 변경하였을 때는 수동으로 톰캣을 한번 껐다 켜야 적용이 됩니다. 그렇지 않고 Run As...로 재가동을 하였을 때는 404 error가 나타납니다.
My Comment..
첨에 포스팅 제목을 보고서.. 이게 먼소리지.. 했는데..
읽다보니.. 내가 종종.. 저 문제로 인해서.. naver 누님에게 물어보고..
수정해서 사용하던 부분들이었다.. 글 자체는 오래 됬지만, 아마도 처음 시작하는..
분들이나.. 단순히 디폴트로 사용하다가.. 문제에 직면하시는 분들에게는..
꽤나 유용한 팁이 될 듯하다.. [이렇게 써놓으니.. 꼭 내가 엄청 개발 잘하는..
사람 같아보이네.. ㅋㅋ.. 절대 아닌데 말이지.. ㅎㅎ..]
[Tool]Eclipse 실행시 JVM terminated 에러가 발생할 때..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
뭐 큰 문제는 아닌데 항상 적어야지 하다가 이제야 적는군요. 제가 많이 사용하지 않아서 그런지 몰라도 Eclipse 3.2까지는 괜찮았던것 같은데 3.3 Europa나 3.4 Ganymede부터는 처음 설치하고 실행하려고 하면 다음과 같은 에러가 나며 실행이 되지 않습니다..
JVM terminated. Exit code=-1 이라고 나타나면서 다음과 같은 복잡한 에러메시지가 나타납니다.
이클립스가 설치된 폴더에 가면 eclipse.ini라는 파일이 존재하는데 이 파일을 에디터에서 열면 다음과 같이 작성되어 있습니다.
이 문제는 메모리 문제때문에 발생하는 거라고 할 수 있는데 7,8번 라인이 메모리가 설정되 부분인데 최소가 40M, 최대가 512메가로 되어 있습니다. 보통 메모리가 512는 충분히 넘는데도 불구하고 거의 이 문제가 발생하는데 정확하게 어떤 문제 때문에 512메가의 최대메모리가 인식하지 않는지는 아직 파악하지 못했습니다.
어쨌든 -Xmx512m를 -Xmx256m으로 변경하면 정상적으로 이클립스를 실행할 수 있습니다..
My Comment..
요 근래에는 겪지 못했는데.. 과거에는 꽤나 겪어서.. 나도 저런 수정을 많이 했다..
그런데 걍 소소하다고 생각해서 지나쳐버리는..
더욱이 그 때야.. 블로그 이런건 생각도 못했으니.. 더더욱 정리가 안됬지..
뭐 큰 문제는 아닌데 항상 적어야지 하다가 이제야 적는군요. 제가 많이 사용하지 않아서 그런지 몰라도 Eclipse 3.2까지는 괜찮았던것 같은데 3.3 Europa나 3.4 Ganymede부터는 처음 설치하고 실행하려고 하면 다음과 같은 에러가 나며 실행이 되지 않습니다..
JVM terminated. Exit code=-1 이라고 나타나면서 다음과 같은 복잡한 에러메시지가 나타납니다.

이클립스가 설치된 폴더에 가면 eclipse.ini라는 파일이 존재하는데 이 파일을 에디터에서 열면 다음과 같이 작성되어 있습니다.
1 2 3 4 5 6 7 8 | -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256M -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m |
이 문제는 메모리 문제때문에 발생하는 거라고 할 수 있는데 7,8번 라인이 메모리가 설정되 부분인데 최소가 40M, 최대가 512메가로 되어 있습니다. 보통 메모리가 512는 충분히 넘는데도 불구하고 거의 이 문제가 발생하는데 정확하게 어떤 문제 때문에 512메가의 최대메모리가 인식하지 않는지는 아직 파악하지 못했습니다.
어쨌든 -Xmx512m를 -Xmx256m으로 변경하면 정상적으로 이클립스를 실행할 수 있습니다..
My Comment..
요 근래에는 겪지 못했는데.. 과거에는 꽤나 겪어서.. 나도 저런 수정을 많이 했다..
그런데 걍 소소하다고 생각해서 지나쳐버리는..
더욱이 그 때야.. 블로그 이런건 생각도 못했으니.. 더더욱 정리가 안됬지..
2016년 2월 24일 수요일
[Tool]괜찮은 클라이언트사이드 IDE : aptana Studio..
출처 : Outsider's Dev Story https://blog.outsider.ne.kr/
오랜만에 툴에 대한 소개를 하려고 한다. 내가 클라인트사이드 개발에 주로 사용하고 있는 aptana Studio다. 전에부터 한번 하려고 했는데 IDE를 소개한다는 것은 기능이 워낙 많기 때문에 만만치 않은 일인데 머 간단히 소개정도만 하고 그 뒤로는 새로운 기능파악할 때마다 포스팅해야할 듯 하다.(전체소개 없이 각 기능 소개하기도 좀 머해서....)
제목에는 클라이언트 사이드 IDE라고 소개하기는 했지만 이곳에 중점이 되어 있을 뿐 PHP, Python도 개발이 가능하다. RadRails라고 해서 플러그인을 깔면 Ruby on Rails개발도 할 수 있다. 툴을 이것 저것 써보았지만 클라이언트 사이드(자바스크립트, CSS, HTML)에서는 aptana Studio만큼 맘에 드는 것을 아직 발견하지 못해서 클라언트사이드 개발에는 메인 IDE로 사용하고 있다. (흔히 괜찮은 자바스크립트 에디터가 없다고 하는데 aptana Studio는 그 이상이다.)
aptana사이트에서 다운로드를 받을수 있고 무료이기 때문에 맘편히 사용할 수 있다. 초기에 나올때는 Communication버전과 Pro버전이 나뉘어져 있었는데 이번에 보니까 커뮤니케이션 버전이라는 말은 아예 사라진듯하다. 기본적으로 무료로 이용할 수 있도록 제공하고 있고 추가 기능이 필요한 사람들을 위해서 aptana Studio Pro(Pro의 추가 기능)를 위한 구매메뉴를 제공하고 있다. (Jaxer와 Cloud도 있는데 둘다 사용해 보지는 않은데 내가 대충 개념잡기로는 Jaxer는 서버이고 Cloud는 호스팅서비스 같은거다.)
08년 12월 31일 현재 1.2.1버전까지 나와있고 Standalone과 Eclipse 플러그인 2가지 타입으로 다운을 받을 수 있다. 난 Standalone타입을 선호하는 편인데 취향에 따라 쓰면 되겠다. OS는 Windows, Linux, Mac을 모두 제공하고 있다. Linux나 Mac에서는 안서봤지만 다양한 플랫폼을 지원한다는 것은 무조건 좋은거다.. ㅎㅎㅎ 현재는 Standalone로 풀인스톨러로 받으면 130MB정도 한다. 다운받아서 그냥 설치해주면 된다.
자바개발자라면 너무나도 익숙한 인터페이스이다. 위에서 플러그인 형태로 제공하는 걸 보고 눈치챘겠지만 Aptana Studio는 오픈소스 IDE인 Eclipse를 가지고 만든것이기 때문에 이클립스와 거의 흡사하다. 이클립스기반이기 때문에 이클립스가 요구하는 Requirements는 그대로 요구하고 있다. 1.5이상의 JRE가 필요하다는 얘기이다. 자바런타임환경만 있으면 달리 구성할 환경은 별로 없다.
나는 툴 사용의 효율성에 관심을 많이 가지고 있는데 개발의 속도를 높이려면 툴의 익숙함이 상당히 중요하다고 생각한다. 그런면에서 이클립스를 사용하는 개발자라면 서버사이드와 클라이언트 사이드의 개발툴이 통일화되어서 따로 익숙해지는 과정이 필요없다는 것은 매우 큰 장점이다. 물론 이클립스를 쓴다면 특별히 클라이언트사이드의 코딩이 엄청나지 않는 이상은 이클립스에서 코딩하기도 하지만 지원하는 면에서 비교가 안된다고 생각한다. 나도 일일이 벌갈아가면서 하지는 않지만 aptana Studio의 기능이 이클립스에서 안되서 답답한 적이 많다.(물론 플러그인형태로도 제공하니까 플러그인을 쓰면 된다.)
그리고 또하나의 장점은 이클립스에서 사용하는 플러그인을 그대로 사용할 수 있다는 것이다. 오픈소스 이클립스를 지원하는 방대한 양의 플러그인의 규모는 엄청난데 SVN, MyLyn등등 그대로 다 쓸수 있는 것이다.
그럼 aptana Studio의 몇가지 기능을 살펴보자. 머 거창한건 아니고 간단한 기본기능들 위주로....이클립스를 안써본 사람도 있겠지만 기본적인 프로젝트 생성같은거는 이클립스랑 동일하기 때문에 굳이 언급하지 않겠다.
IDE의 기본 기능이면서도 개발자에게 가장 크게 와닿는 것중 하나가 코드 어시스트이다. 클라이언트 사이드에서 aptana Studio가 제공하는 코드어시스트는 강력하다. 많은 툴을 다뤄본 것은 아니지만 내가 만져본 것들 중에는 aptana Studio가 제공하는 코드 어시스트가 가장 강력한것 같다.
html, CSS, javascript할 꺼 없이 거의 완벽하게 코드어시스트를 제공해주고 있다. CSS경우는 각 속성에 대한 이름뿐만 아니라 사용할 수 있느 값들까지도 제공하고 있으면 자바스크립트의 경우는 키워드, 함수명, DOM을 다 제공해 줄뿐만 아니라 위의 이미지처럼 사용자가 만든 function까지도 파라미터값까지도 보여준다. 사용할수 있는 키워드를 타이핑할 때마다 직관적으로 보여주고 그 오른쪽에는 지원되는 브라우저가 아이콘으로 표시되기 때문에 크로스브라우징에 맞추어서 개발하는데 정말 편하다. 오른쪽에는 해당 키워드에 대한 간단한 설명까지 나오기 때문에 부족함이 없을 정도이다.
html, css, javascript에서 자주 사용하는 엘리먼트를 바로 추가할 수 있도록 상단에는 아이콘들이 있는데 마우스를 써야 되니까 잘 쓰게 되지는 않는것 같다. ㅎ
코드 어시스트에서 보여주는 브라우저 호환에 대한 부분은 [window] - [Preferences]에 들어가서 [Aptana] - [Browsers/User Agents]에서 설정해 줄 수 있다. 여기서 필요한 브라우저를 체크할 수 있다. (아직 크롬은 없다. ㅎ) 이렇게 설정하면 아래처럼 선택한 브라우저의 호환성을 코드어시스트에서 제공 받을 수 있다.
위에서 본 에디터 부분에서 기본적으로 소스창을 보지만 따로 브라우저를 띄우지 않고 aptana Studio안에서 IE와 FF에서 미리보기를 해 볼 수 있다.
아래쪽 탭을 선택하면 바로 볼 수 있으면 추가를 누르면 미리보기 셋팅을 추가해 볼 수 있다.(현재는 브라우저는 IE, FF만 제공하고 있다.) 여기서 볼때도 스크립트 에러가 나는 경우는 바로 표시가 된다.
CSS파일을 만들때도 preview를 제공하고 있는데(HTML에 들어가는 스타일부분 말고 확장자가 .css로 된 파일들....)
CSS파일을 편집할때는 하단쪽 탭이 Preview로 나오게 되는데 실제 html에 적용된걸 보려면 html을 실행시켜서 봐야하기는 하지만 내가 작성한 css를 바탕으로 기본으로 제공되는 텍스트를 통해서 각 엘리먼트가 어떤식으로 보여지는 지를 간단하게 미리볼 수 있다. 오른쪽 톱니바퀴 아이콘을 눌러서 Edit Default preview template를 누르면 CSS preview에서 제공하는 텍스트를 수정해서 사용할 수 있다. file preview setting을 클릭해서 현재 프로젝트의 html파일을 선택해주면 프리뷰를 원하는 형태로 볼 수도 있다.
그리고 이게 코드어시스트말고 내가 aptana Studio를 좋아하는 큰 이유중 하나인데 html파일에서(jsp, asp, php같은 서버측코드는 해석할 수 없으므로...) Run AS - JavaScript Web Application을 시작하면 aptana Studio 내부의 Jaxer서버가 시작되면서 해당 페이지를 구동시켜준다.(정확히는 프로젝트째..)
http://127.0.0.1:8000/Test/new_file.html 와 같은 형태의 주소로 구동되기 때문에 주소를 이용해서 다양한 브라우저에서 쉽게 테스트해볼 수 있다. 수정하면 바로바로 확인해 볼 수 있고 프로젝트 이름이 붙기는 하지만 적대주소도 사용할 수 있기 때문에 아주 유용하다. ㅎㅎ
Run As에서 Run을 눌러서 설정창을 띄우면 서버실행할 때 자동으로 구동시킬 웹브라우저 및 여러가지 설정사항을 지정해 줄 수 있다.
이렇게 개발하는데 도움이 될만한 대략적인 기능들을 살펴봤다. IDE이기 때문에 그 기능은 엄청나고 많이 알면 알수록 개발의 효율은 높아질 것이다.
이외에도 클라이언트사이드개발을 위해서 많은 기능들을 가지고 있다.
프로젝트를 생성할 때 다양한 자바스크립트 프레임워크들을 선택해서 기본적으로 프로젝트에 포함 시킬수 있고 FTP연결연결하거나 Outline뷰에서 DOM트리를 보거나 js파일에서 함수구조를 본다던가 하는 등 많은 기능을 가지고 있다. aptana Studio 짱좋아.. ㅎㅎㅎ
오랜만에 툴에 대한 소개를 하려고 한다. 내가 클라인트사이드 개발에 주로 사용하고 있는 aptana Studio다. 전에부터 한번 하려고 했는데 IDE를 소개한다는 것은 기능이 워낙 많기 때문에 만만치 않은 일인데 머 간단히 소개정도만 하고 그 뒤로는 새로운 기능파악할 때마다 포스팅해야할 듯 하다.(전체소개 없이 각 기능 소개하기도 좀 머해서....)

제목에는 클라이언트 사이드 IDE라고 소개하기는 했지만 이곳에 중점이 되어 있을 뿐 PHP, Python도 개발이 가능하다. RadRails라고 해서 플러그인을 깔면 Ruby on Rails개발도 할 수 있다. 툴을 이것 저것 써보았지만 클라이언트 사이드(자바스크립트, CSS, HTML)에서는 aptana Studio만큼 맘에 드는 것을 아직 발견하지 못해서 클라언트사이드 개발에는 메인 IDE로 사용하고 있다. (흔히 괜찮은 자바스크립트 에디터가 없다고 하는데 aptana Studio는 그 이상이다.)
aptana사이트에서 다운로드를 받을수 있고 무료이기 때문에 맘편히 사용할 수 있다. 초기에 나올때는 Communication버전과 Pro버전이 나뉘어져 있었는데 이번에 보니까 커뮤니케이션 버전이라는 말은 아예 사라진듯하다. 기본적으로 무료로 이용할 수 있도록 제공하고 있고 추가 기능이 필요한 사람들을 위해서 aptana Studio Pro(Pro의 추가 기능)를 위한 구매메뉴를 제공하고 있다. (Jaxer와 Cloud도 있는데 둘다 사용해 보지는 않은데 내가 대충 개념잡기로는 Jaxer는 서버이고 Cloud는 호스팅서비스 같은거다.)
08년 12월 31일 현재 1.2.1버전까지 나와있고 Standalone과 Eclipse 플러그인 2가지 타입으로 다운을 받을 수 있다. 난 Standalone타입을 선호하는 편인데 취향에 따라 쓰면 되겠다. OS는 Windows, Linux, Mac을 모두 제공하고 있다. Linux나 Mac에서는 안서봤지만 다양한 플랫폼을 지원한다는 것은 무조건 좋은거다.. ㅎㅎㅎ 현재는 Standalone로 풀인스톨러로 받으면 130MB정도 한다. 다운받아서 그냥 설치해주면 된다.

자바개발자라면 너무나도 익숙한 인터페이스이다. 위에서 플러그인 형태로 제공하는 걸 보고 눈치챘겠지만 Aptana Studio는 오픈소스 IDE인 Eclipse를 가지고 만든것이기 때문에 이클립스와 거의 흡사하다. 이클립스기반이기 때문에 이클립스가 요구하는 Requirements는 그대로 요구하고 있다. 1.5이상의 JRE가 필요하다는 얘기이다. 자바런타임환경만 있으면 달리 구성할 환경은 별로 없다.
나는 툴 사용의 효율성에 관심을 많이 가지고 있는데 개발의 속도를 높이려면 툴의 익숙함이 상당히 중요하다고 생각한다. 그런면에서 이클립스를 사용하는 개발자라면 서버사이드와 클라이언트 사이드의 개발툴이 통일화되어서 따로 익숙해지는 과정이 필요없다는 것은 매우 큰 장점이다. 물론 이클립스를 쓴다면 특별히 클라이언트사이드의 코딩이 엄청나지 않는 이상은 이클립스에서 코딩하기도 하지만 지원하는 면에서 비교가 안된다고 생각한다. 나도 일일이 벌갈아가면서 하지는 않지만 aptana Studio의 기능이 이클립스에서 안되서 답답한 적이 많다.(물론 플러그인형태로도 제공하니까 플러그인을 쓰면 된다.)
그리고 또하나의 장점은 이클립스에서 사용하는 플러그인을 그대로 사용할 수 있다는 것이다. 오픈소스 이클립스를 지원하는 방대한 양의 플러그인의 규모는 엄청난데 SVN, MyLyn등등 그대로 다 쓸수 있는 것이다.
그럼 aptana Studio의 몇가지 기능을 살펴보자. 머 거창한건 아니고 간단한 기본기능들 위주로....이클립스를 안써본 사람도 있겠지만 기본적인 프로젝트 생성같은거는 이클립스랑 동일하기 때문에 굳이 언급하지 않겠다.
IDE의 기본 기능이면서도 개발자에게 가장 크게 와닿는 것중 하나가 코드 어시스트이다. 클라이언트 사이드에서 aptana Studio가 제공하는 코드어시스트는 강력하다. 많은 툴을 다뤄본 것은 아니지만 내가 만져본 것들 중에는 aptana Studio가 제공하는 코드 어시스트가 가장 강력한것 같다.
![]() | ![]() | ![]() |
html, CSS, javascript할 꺼 없이 거의 완벽하게 코드어시스트를 제공해주고 있다. CSS경우는 각 속성에 대한 이름뿐만 아니라 사용할 수 있느 값들까지도 제공하고 있으면 자바스크립트의 경우는 키워드, 함수명, DOM을 다 제공해 줄뿐만 아니라 위의 이미지처럼 사용자가 만든 function까지도 파라미터값까지도 보여준다. 사용할수 있는 키워드를 타이핑할 때마다 직관적으로 보여주고 그 오른쪽에는 지원되는 브라우저가 아이콘으로 표시되기 때문에 크로스브라우징에 맞추어서 개발하는데 정말 편하다. 오른쪽에는 해당 키워드에 대한 간단한 설명까지 나오기 때문에 부족함이 없을 정도이다.
html, css, javascript에서 자주 사용하는 엘리먼트를 바로 추가할 수 있도록 상단에는 아이콘들이 있는데 마우스를 써야 되니까 잘 쓰게 되지는 않는것 같다. ㅎ

코드 어시스트에서 보여주는 브라우저 호환에 대한 부분은 [window] - [Preferences]에 들어가서 [Aptana] - [Browsers/User Agents]에서 설정해 줄 수 있다. 여기서 필요한 브라우저를 체크할 수 있다. (아직 크롬은 없다. ㅎ) 이렇게 설정하면 아래처럼 선택한 브라우저의 호환성을 코드어시스트에서 제공 받을 수 있다.

위에서 본 에디터 부분에서 기본적으로 소스창을 보지만 따로 브라우저를 띄우지 않고 aptana Studio안에서 IE와 FF에서 미리보기를 해 볼 수 있다.

아래쪽 탭을 선택하면 바로 볼 수 있으면 추가를 누르면 미리보기 셋팅을 추가해 볼 수 있다.(현재는 브라우저는 IE, FF만 제공하고 있다.) 여기서 볼때도 스크립트 에러가 나는 경우는 바로 표시가 된다.
CSS파일을 만들때도 preview를 제공하고 있는데(HTML에 들어가는 스타일부분 말고 확장자가 .css로 된 파일들....)

CSS파일을 편집할때는 하단쪽 탭이 Preview로 나오게 되는데 실제 html에 적용된걸 보려면 html을 실행시켜서 봐야하기는 하지만 내가 작성한 css를 바탕으로 기본으로 제공되는 텍스트를 통해서 각 엘리먼트가 어떤식으로 보여지는 지를 간단하게 미리볼 수 있다. 오른쪽 톱니바퀴 아이콘을 눌러서 Edit Default preview template를 누르면 CSS preview에서 제공하는 텍스트를 수정해서 사용할 수 있다. file preview setting을 클릭해서 현재 프로젝트의 html파일을 선택해주면 프리뷰를 원하는 형태로 볼 수도 있다.

그리고 이게 코드어시스트말고 내가 aptana Studio를 좋아하는 큰 이유중 하나인데 html파일에서(jsp, asp, php같은 서버측코드는 해석할 수 없으므로...) Run AS - JavaScript Web Application을 시작하면 aptana Studio 내부의 Jaxer서버가 시작되면서 해당 페이지를 구동시켜준다.(정확히는 프로젝트째..)
http://127.0.0.1:8000/Test/new_file.html 와 같은 형태의 주소로 구동되기 때문에 주소를 이용해서 다양한 브라우저에서 쉽게 테스트해볼 수 있다. 수정하면 바로바로 확인해 볼 수 있고 프로젝트 이름이 붙기는 하지만 적대주소도 사용할 수 있기 때문에 아주 유용하다. ㅎㅎ

Run As에서 Run을 눌러서 설정창을 띄우면 서버실행할 때 자동으로 구동시킬 웹브라우저 및 여러가지 설정사항을 지정해 줄 수 있다.
이렇게 개발하는데 도움이 될만한 대략적인 기능들을 살펴봤다. IDE이기 때문에 그 기능은 엄청나고 많이 알면 알수록 개발의 효율은 높아질 것이다.
이외에도 클라이언트사이드개발을 위해서 많은 기능들을 가지고 있다.
프로젝트를 생성할 때 다양한 자바스크립트 프레임워크들을 선택해서 기본적으로 프로젝트에 포함 시킬수 있고 FTP연결연결하거나 Outline뷰에서 DOM트리를 보거나 js파일에서 함수구조를 본다던가 하는 등 많은 기능을 가지고 있다. aptana Studio 짱좋아.. ㅎㅎㅎ
피드 구독하기:
글 (Atom)















