eclipse usage Tips

Java 2009. 8. 1. 09:49
1. File Associations : If you want to use new some EDITOR, Aftre installing that, Go to Window>Preferences>Genernal>Editors>File Associations. You can't miss it!

2. Language encoding setting : if you have some problem to read contents. you have to file encoding setting. Window>Preferences>Genernal>Content Types. and then Fill in the blank with the proper encoding setting like 'utf-8', 'euc-kr' and so on.
If you have same problem with other extention file. you have to add that extension file format to File associations list. For example, Choose HTML on Contens types, Push the 'Add' button, Enter content type association to add:(*.vm).
Posted by 빈솔B
,

eclipse more fast loading

Java 2009. 8. 1. 08:26
v3.1 이상버전은 eclipse.ini 에 설정을 해보자.

-vmargs
-Xverify:none
-XX:+UseParallelGC
-XX:PermSize=20M
-XX:MaxNewSize=32M
-XX:NewSize=32M
-Xmx96m
-Xms96m
Posted by 빈솔B
,

싱글턴(Singleton) 패턴

Java 2009. 3. 5. 21:27
싱글턴(Singleton):자바 언어에서 JVM 내부에 생성되는 객체의 인스턴스 수를 하나로 국한시키고자 할 때 사용
private static MyObject instance = null;
public static MyObject getInstance ()
{
if (instance == null)
{
instance = new MyObject() ;
}
return instance;
}
private MyObject()
{
//객체생성에 필요한 초기화 작업을 여기서 수행...
}

MyObject 라는 이름의 객체를 만들기 위한 클래스를 정의하고 있다. 클래스의 생성자(constructor)가 프라이빗(private) 으로 선언되어 있기 때문에 MyObject의 인스턴스가 필요한 코드는 반드시 public으로 선언되어 있는 getInstace 메소드를 통해 접근해야 한다. getInstance 메소든 static으로 선언되어 있기때문에 MyObject.getInstace()처럼(객체 생성할 필요없이) 클래스에 대한 참조를 이용해서 접근 할수 있다.

연습문제: 위의 코드는 Thread-safe 일까?

패턴은 '생성적' '구조적' '행위적'으로 세 개의 범주로 구분되어진다.
- 프로그램의 '완성도'와 '미학'은 '패턴' 자체에 있는 것이 아닌 그 패턴을 이용하는 프로그래머의 능력과 자세에 달려있다.




refer to '프로그래밍은 상상이다'-임백준




Posted by 빈솔B
,
"설계 패턴은 객체지향 시스템 안에서 반복해서 등장하는 설계와 관련된 문제를 해결하기 위한 일반적인 기법에 이름을 붙이고, 동기를 부여하고, 설명을 한다. 그것은 문제를, 해결책을, 그리고 그 해결책을 언제 적용해야 하는지, 적용한 결과는 무엇인지를 설명한다. 그것은 또한 실직적인 구현에 대한 힌트와 예제도 제공한다. 해결책은 대게 문제를 해결하기 위해서 필요한 객체와 클래스를 일반적인 방식으로 배치한다. 해결책은 주어진 문제를 특정한 문맥(context) 안에서 해결하기 위해서 다음어지고 구현된다." - 1991년 OOPSLA에서 네 명의 일당들(에리히 감마, 리처드 햄, 랄프 존슨, 존 블리시데스 등..)이 한 자리에 모여 여러 개의 패턴을 집대성한 책 [Gof의 디자인패턴] 중에서..

- 패턴은 외워선 아무 소용없다.
- 패턴이 필요한 '동기'
- 패턴이 제공하는 해결책 사용 '시점'
- 해결책 사용한 '결과' 를 이해하는 것이 핵심
- 예, 싱글턴(Singleton):자바 언어에서 JVM 내부에 생성되는 객체의 인스턴스 수를 하나로 국한시키고자 할 때사용, 팩토리(Factory)


Posted by 빈솔B
,

디버깅

Java 2009. 3. 5. 21:06
'안정적인 소프트웨어를 만드는 일은 프로그래머들이 세부사항에 대한 문서를 자세하게 기술하지 않았다는 사실 때문에 어려움에 자주 봉착하게 된다. 따라서 소프트웨어에 대한 문서는 대개 불완전하거나 낡은 것이 된다. 게다가 복잡한 소프트웨어는 덩치가 너무나 커서 한 사람이 시스템의 모든 부분을 파악하는 것이 실질적으로 불가능하다.'

'소프트웨어 시스템'은 흔히 여러 개의 컴포넌트로 구성되어 있다. 이러한 컴포넌트들은 서로 독립적인 별개의 조직에 속해있는 사람들이 서로 다른 개발과 테스팅 방법론을 이용해서 개발한 경우가 많다. 이러한 시스템의 모퉁이에서 발생하는 버그를 잡는 일은 며칠 혹은 몇 주의 시간이 요구될 수 있다.'

- '완벽한' 소프트 웨어는 세상에 존재 하지 않는다. 사람의 '직관'으로 풀어야 할 문제이다. 하지만 그 '직관'을 과학적 방법론과 결합시키려는 노력은 필요하다. 디버깅은 '내공'이다.


refer to 
'프로그래밍은 상상이다'-임백준
Posted by 빈솔B
,
* 우선 가볍게 키보드를 두드리면서 코드의 전체 윤관을 잡고, 다시 처음으로 돌아가 조금씩 각 부분의 디테일을 살려나가는 방식  - 그레이엄

* 프로그래밍이 '예술성' vs '생산성'

* 예의를 잃지 않는 논쟁은 프로그래밍 실력을 키우는 가장 큰 지름길!

* 서로에게 영향을 주고 받는 변증법적인 과정으로, 서로에게 자극이 되고 자신의 논리를 강화시키는 단계를 밟자.

*  '코딩 컨벤션'을 지키자. 

* '소설처럼 읽히는 프로그램' 작성하자.(요건 3가지, '구조', '코딩 관습', '설명문')

* 다른 사람이 작성한 프로그램 관리하기 = 남이 키우던 강아지 키우기

* 코드의 '가독성(readability)'는 코딩습관을 통한 겉모습만 치중된 것만을 말하는 것이 아니다. '소설처럼 읽히는 프로그램'의 가장 큰 덕목은 프로그램의 '구조'가 잘 짜여져 있는 것이다.

* 양심적으로 주석 달자

refer to 
'프로그래밍은 상상이다'-임백준

Posted by 빈솔B
,
http://java.sun.com/docs/books/tutorial/information/resources.html

Java Developer's Journal 
http://www.sys-con.com/java/
An online subset of a print magazine. Includes source code and selected articles.


Posted by 빈솔B
,

리펑토링(Refuctoring)

Java 2009. 3. 5. 19:57

  • Common sense naming conventions
  • Cohesive and loosely coupled modules
  • Elegant abstractions
  • Lack of duplication
  • A close resemblance to the application domain

'고먼'이 말하는 리펙토링
- 변수, 메소드, 객체의 이름을 상식에 근거해서 붙이기
- 내부로는 강한 결합, 외부로는 유연한 모듈
- 우아한 추상화(elegant abstractions)
- 중복의 부재(lack of redundancy)
- 어플과 도메인과의 밀접한 관련성

'고먼'이 말하는 리펑토링
- '잘 설계된 코드를 작고 가역적인(reversible) 변화를 연속적으로 도입해서 자기 자신을 제외한 그 어느 누구도 관리할 수 없게 만드는 과정'
- 이름 제멋대로 붙이기
- 보물찾기(Treasure Hunt) : 코드가 간단하고 자체적으로 완결된 방식 구성이 아닌, 주로 다른 코드에 대한 참조로 이루어지는 경우.
- 객체지향적인 설계를 수행하여 상속(inheritance), 위임(delegation), 프록시(proxy)와 같은 개념 적용하다 보면 어느 객체가 수행하는 간단한 업무가 실제로 어디에서 이루어지는지 알기 어려운 경우가 생긴다.
- 객체지향의 근본사항은 코드의 관리를 쉽게 하는 것에 있지 추상 계층을 도입해 코드 이해를 어렵게 만드는 것이 아니다.
-  '자기만의 모델링 언어 사용' 워드나, 파워포인트로 그리지 말고 UML쓰자.
- 너무나 명백한 사실을 상세히 설명하지 말라. 주석은 상식선에서 쓰자.
- '비오는 날을 위한 시나리오' 일어나지도 않을 코드를 열심이 작업하지 말라.
- '모듈의 중력장(Module Gravity Well) 오만가지 잡동사니를 전부 한 곳으로 끌어들이는 객체를 만들지 말라. 모듈의 내부로는 응집력이 있어야 한다.(응집력 상승=버그 최소화)

직업 안정도(Job security index) = 1 / 코드 관리의 용이성 (Maintainability)
윗말을 고지고때로 믿지말라;; 역설적 표현이다.


refer to 
'프로그래밍은 상상이다'-임백준
Posted by 빈솔B
,