달력

10

« 2018/10 »

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  

저희꺼 솔루션이 상당히 무겁고...Eclipse도 버거워하고 (기본적으로 램4기가에서 이클립스+톰켓만 80%~90% 정도...)

게다가 저 같은 경우 좀 포지션이 그러해서 동시에 여러개의 프로젝트를 진행할때가 많습니다.
그러면 더 헬모드가 되는데요.. 그래서 놋북도 사비들여서 업그레이드 하고.. 뭐 여하튼 이런저런 고민 끝에 이클립스를
벗어나기로 결심하였습니다. 밑에는 각 툴을 사용해보면서 느낀점을 적었고요. 자세한 셋팅법은 제외하였습니다.
또한 저 같은 경우는 회사놋북은 우분투와 맥북을 집에서는 윈도우 우분투 맥미니를 사용하기 때문에
최대한 3가지에서 다 돌아갈 수 있는 것 위주로. 찾았습니다.(물론 특화도 있긴합니..다)
그리고 잘되면 회사분들에게도 소개하기 위해 무료 위주로 하였습니다. (몇개제외)
밑에 의견은 "절대적으로 개인적인 의견" 이므로.. 참고만 하시면 될 듯합니다.

1. 넷빈즈
: 이클립스와 크게 다를바 없었습니다. 똑같이 무겁고요.. 거기에 투박한 UI.. 이것을 사용할바에 차라리 이클립스나 쓰는게 낫겠다는 생각이 들었습니다.. 그래서 바로 취소.

2. notepad++
: 윈도우에서만 되는 약점이 있지만 나름 괜찮았습니다. bat파일로 여러 방식을 이용해서 컴파일을 만들어두고 사용하였습니다. 며칠 사용은 재밌게 했으나 코드자동완성등 몇가지 필요기능 부족으로 패스..

3. emacs
: 이맥스는 우분투에서 위주로 테스트해봤습니다. svn, git, 코드완성, ant, maven ,디버그 전부 사용 가능하였고 매크로 작성 및 단축키 맵핑등 상당히 강력한 기능을 제공하였습니다. 또한 마우스 없이 거의 대부분을 진행할 수 있어 무척이나 편했고요.  이것으로 거의 마음을 굳혀가고 있었는데.. 몇가지 부족한 플러그인을 제작하려고 보니 LISP을 알아야된대서.. 오마이갓 하고 패스. (그리고 제가 설정을 잘못한 탓인지 윈도우에서는 잘 안되어서..) 하지만 언젠가는 돌아오게 되리라는 생각을 했습니다.

4. cloud9
: nodejs로 만들어진 웹 에디터 입니다. 왠만한기능은 전부제공하고 git랑도 바로 연동되어서 상당히 편리했습니다. 또한 오픈소스이니 만큼 필요한 기능이 있다 싶으면 커스터마이즈 하기도 좋았고요. 또한 활발하게 개발이 진행되고 있고 업데이트도 편리하게 되어있다보니 참으로 만족스러웠습니다. 그러나..... 회사소스를 올리는 순간 이클립스보다 더한 속도를 내더군요. 코드자동완성창이 뜨려면 버버버벅 .... 다다다다닥 입력하다보면 입력이 안되고있고... 조그만한 프로젝트할때나 좋을것같다는 생각을 하게 하였습니다..

5. jEdit
: 왠간한 기능은 플러그인형태로 제공을 해주기는하는데.. 이상하게 끌리지가 않습니다. 그래서 조금 사용하고 취소..

6. webstorm ( 유료이나 30일은 체험버전이길래 사용해봤습니다.참고로 저는 구매하였습니다__;)
: 사실 webstorm을 추천받은건 nodejs 개발시에 아주 좋은 IDE라는 소리를 들어서 구매하였는디 java도 얼추 되는것같긴합니다. 다만... 차라리 이클립스가 훨씬낫습니다.  그래서 패스
구매한 이유는 자바스크립트는 와 물건이더군요. aptana 보다는 가볍다는 생각이 들고 기능은 그리 부족하지 않고 해서 바로 질러버렸습니다..

7. jsbin
: 요즘은 nodejs를 이용해서 수정한듯 한데 이때쯤 이클립스에서 자바스크립트만이라도 분리해내면 쪼금이나마 안느릴까 라는 생각이 들어서 jsbin을 설치하였고 jsbin자체만으로는 정말 대 만족이었습니다. 버전관리도 되거니와 그나마 php javascript등을 수정하면 되기에 여러 커스터마이즈를 하기 편했고 속도도 상당히 빨라서 자바스크립트만 하기엔 편리했습니다만.. 사실상 회사소스는 무리가 있기에 현재는 개인적인 공부소스 짤때 위주로 사용합니다.

8. vim
: 현재 사용하고 있습니다. 왠간한건 플러그인 제공을 해주긴 합니다만.. 디버깅이 조금 헬모드입니다.. 아직 미숙해서 완벽하게 IDE로 사용하기는 조금 힘듭니다. 문법체크가 없다는게 조금 아쉽습니다.(있다는데 적용해봤는데 별 다른점이;) 자동임포트도 아쉽긴합니다만 그부분은 다 작업하고 한번에 임포트시키니.. 여하튼 쉘에서 여러개 만들어놓고 써먹으니깐 이클립스보단 못해도 왠만한 작업속도는 나오는듯하였습니다. 특히 젤 좋을때가 svn git 이용할때인데요.. 그냥 vim 작성중에도 바로바로 명령어로 가능해서 편리했습니다. 

9. sublime text2
: 대망의 ST2 입니다. 위의 8가지중에 가장 만족했고 좋았고 플러그인은 python으로 소스가 오픈되어있기때문에 조금씩 가져다가 사용하기도 좋았고. 코드어시스트도 어느정도는 지원하고 자동임포트도 어느정도는 지원하고 바로 터미널이랑 연결해서 연계 작업도 가능하고 가장 좋았던건 여러 플러그인이 많아서 동시에 여러작업이 가능했다는 점도 크게 작용했습니다. javascript 도 아주 충실히 지원해주고요.. 대충 보니 500개 정도 되는듯하네요 플러그인이.. evernote랑도 바로 연동되는것도 사랑스럽고요.. 다만 java위주의 개발에서는 약간 불편하실 수 있습니다. 예를들면 디버그(jdb나 jpda사용하셔야하구..) 나 문법체크는 상당히 부실하고요.. 자동임포트가 100%지원되는건 아니라 오류가 많이나고요 (정확히 모르면 ) ctags를 이용해야하는 불편함이 조금은 있고요 .. 그럼에도 현재 vim 아저씨와 같이 사용하고있습니다.

대충 이 9가지 테스트해보는데 4개월 가량 소비했네요. 
현재는 Eclipse + Eclim + vim + ST2 같이 사용하고 있습니다. 디버그 할때나 구조 잡거나 복잡한 알고리즘을 구현할때는 Eclipse를 사용하고요 평소에 편집 수정 구현등은 기분에 따라 VIM, ST2를 사용합니다. Eclim은 사실상 거의 사용하지는 않는데 (왜냐면 잘 몰라서요..) 혹시 관심있는 분은 밑에다 링크 적어 두겠습니다. 간단하게 설명하면 VIM이나 다른 서드파티에서 Eclipse기능을 사용합니다.(100%는 아니고요.) 

많은 분들이 이클립스 쓰면되지 왜 이런 고생을 하냐고 하셨는데요. 사실 처음엔 무거워서 시작한 이유도 있지만 어느 경우에 따라서는 이클립스가 안되는 경우도 있기에..(실제로 경험해보니) 난감하더군요. 그래서 혹시나하여 여러 툴을 어떤식으로 사용하는지라도 익혀보자는 심산으로 경험해본거고요 위의 툴 말고도  인텔리J라던지 BlueJ 라던지 coda라던지  textmate라던지 기타 여러 웹에디터도 많이 시도해보았습니다만..

좀 아쉬운게 제가 emacs가 너무 어려워서 조금 빨리 포기한게 아닌가라는 생각이 듭니다. 기회가 되고 조금더 영어에 실력이 붙으면 여러 정보를 습득해서 emacs로 개발을 해보고 싶더군요 (위의 개발툴들중에 넷빈즈 제외하고는 가장 자바 지원이 잘되는듯했습니다. 한국 자료가 부족해서..c쪽은 많은데..) 나중에 성공한다면 emacs 에대한 정보는 따로 공유하도록 하겠습니다.


이제 최종결론입니다

"큰 규모의 JAVA 개발은 이클립스 가 갑이구나......."

Posted by 유쾌한순례자
2012.10.02 11:42

이미지치환 정규식 Study/Java2012.10.02 11:42

이번 migration 작업 진행 중인데 html 파일안에 있는 이미지 url을 가져와서 전체적으로 치환하는 부분이 있었다.
해당 부분 소스 정리해둔다.


Posted by 유쾌한순례자

http://www.narratage.com/project/TodoList.do

원하는 결과물 /TodoList.do

str.substring(str.lastIndexOf("/"),str.length())
Posted by 유쾌한순례자
2011.07.20 16:51

AWT Frame 윈도우 정 가운데에 오기 Study/Java2011.07.20 16:51


import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;

public class MyFrame {

public static void main(String[] args){

Frame f = new Frame("AWT TEST");

//윈도우 사이즈 구하기
Dimension dim1 = Toolkit.getDefaultToolkit().getScreenSize(); 

//Frame 사이즈 구하기
Dimension dim2 = f.getSize();  

f.setVisible(true);

//Frame 윈도우 가운데에 띄우기 공식
f.setLocation((int)dim1.getWidth()/2-(int)dim2.getWidth()/2, 
                                                         (int)dim1.getHeight()/2-(int)dim2.getHeight()/2);

}

}


 

TAG awt, 자바
Posted by 유쾌한순례자

기존에 논리연산자의 경우 앞 조건으로만도 판단 할 수 있다는 것은 알고 있었지만

오늘 솔데스크 최용석 강사님의 아주 좋은 예제를 바탕으로 쉽게 이해 할 수 있는 예제를 보았다.


이 소스는 솔데스크 자바반 최용석 강사님께서 작성하신 코드입니다.

① int i=1;
② int j=i++;
③ if((i>++j)&&(i++==j)){
④        i+=j;
 }

i 와  j의 값은 ?.
② 에서 = 연산자는 후위식 ++ 보다 우선순위기 때문에 j 에 먼저 i 값이 들어가 j=1 이되고 i=2 가 된다
③ 에서 i>++j 에서 j=2 가 되고 2>2 라는 조건은 거짓이기 때문에 false가 된다.

여기서 논리연산자 ( && , || ) 의 경우 해당 앞조건만으로도 참 , 거짓이 판단이 가능한 경우
뒷조건을 실행하지 않는다.

즉 i++=j 라는 식은 실행하지 않기 때문에 그대로 i=2 , j=2 라는 값을 가지게 된다.

※여기서 비트논리연산자(&,|) 를 사용하면 뒤의 식도 계산을 한다.

Posted by 유쾌한순례자
2011.03.20 16:23

캡슐화 Study/Java2011.03.20 16:23

데이터가 유효한 값을 유지하도록 또는 비밀번화와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다.

이것을 데이터 감추기. 객체지향개념의 캡슐화에 해당하는 내용이다. 

(자바의 정석 259p)

한마디로 말하면 public 으로 멤버 변수에 직접 접근하는 것이 아닌 private 나 protected로 멤버변수를 제한하고

멤버변수의 값을 읽고 변경할 수 있는 public 메소드를 제공하여 간접적으로 다룰 수 있도록 함이 바람직하다.

더보기

 
Posted by 유쾌한순례자
2011.03.20 16:03

final Study/Java2011.03.20 16:03

final 제어자는 변수에 사용되면 값을 변경할 수 없는 상수로.
메소드에 사용되면 오버라이딩을 할 수 없고
클래스에 사용되면 자손클래스를 정의하지 못한다. 
Posted by 유쾌한순례자
2011.03.19 21:08

static 메소드 Study/Java2011.03.19 21:08

자바의 정석 182 page. 

자초스 카페 http://cafe.naver.com/javachobostudy/1667 참고

더보기

 
Posted by 유쾌한순례자
2011.03.19 20:46

JVM 메모리 구조. Study/Java2011.03.19 20:46

자바의 정석을 공부하면서 상당히 고심했던 부분.

잊지 않게 정리하기..

Method Area

Call Stack

Heap

영역으로 나누어짐.

1. Method Area

 어떤 클래스가 사용되면 해당 클래스의 클래스파일을 분석하여 클래스에 대한 정보를 이곳에 저장함.
 해당 클래스 영역의 클래스 변수도 이 영역에 생성.

2. Call Stack

 메소드 작업에 필요한 메모리 공간을 제공함. 메소드가 호출되면 수행에 필요한 만큼 메모리를 스택에 할당받음.
 수행을 마치면 메모리 반환후 스택에서 제거.
 호출 스택 제일 위 메소드가 현재 실행 중인 메소드.
 아래에 있는 메소드가 바로 위 메소드를 호출한 메소드.

 예제는 따로 자바의 정석을 참고. 이 부분 이해하고 가기.

3. Heap
 
 인스턴스가 생성되는 공간. 
Posted by 유쾌한순례자
2011.03.19 20:32

변수의 종류 Study/Java2011.03.19 20:32

인스턴스 변수 

클래스영역에 선언. 인스턴스가 생성되었을 때 생성 됨.

클래스변수 (static)

클래스영역에 선언. 클래스가 메모리에 올라갈때 생성. public을 앞에 붙이면 전역변수 처럼... 

지역변수

클래스 외에 영역. 변수 선언문이 수행되었을 경우. 
Posted by 유쾌한순례자