2011년 6월 30일 목요일

매뉴얼 작성시 아주 유용한 프로그램을 출시했습니다.

그간 제품 출시에 모든 여력을 쏟느라 블로그는 개점 휴업 상태였습니다.

블로그를 꾸준히 유지한다는 것도 보통일은 아니라고 생각합니다.

드디어 2년간 심혈을 기울인 제품을 출시했습니다.

웹, PDF, EPUB 형식으로 효과적인 매뉴얼 작성이 가능한 프로그램입니다.

상업적 용도가 아닌 개인적인 용도로는 무료로 사용하실수 있으며,
30일간의 무료 평가판도 제공하고 있습니다.

매뉴얼을 작성하시려는 분들은 한번씩 방문해서 제품을 사용해보고 판단해 주시면 감사하겠습니다.

제품을 확인하시려면 홈페이지를 방문해 주시면 됩니다.

홈페이지 : http://www.3rabbitz.com

2010년 12월 14일 화요일

Reflection을 이용하여 Inner Class Object 생성하기

예제로 아래의 Parent Class를 이용한다.

public class Parent {
    public class Inner {
        public Inner() {
            System.out.println("Inner constructed");
        }
    }
} 
 
Reflection을 이용하여 Inner Class를 Object로 만들기 위해서는 일반적인 과정보다
한단계의 절차가 더 필요하다. 먼저 방법을 보면 다음과 같다.

Object parent = Class.forName("Parent").newInstance();
Object innerObject = null;
for (Class each : parent.getClass().getDeclaredClasses()) {
    if (each.getSimpleName().equals("")) {
        Constructor construct
           = each.getDeclaredConstructor(new Class[] { parent.getClass() });
        innerObject = construct.newInstance(new Object[] { parent });
    }
}

핵심적인 사항은 다음과 같다.

1. Contruct를 이용하여 Object를 생성해야 한다
2. Construct 조회시 Parent Class를 파라미터로 제공해야 한다.
3. 객체 생성시 Parent Object를 파라미터로 제공해야 한다.

아주 제한된 상황에서 사용되기는 하지만 이런 방법을 통해서 해결된다.

Powered by 쓰리래빗츠

2010년 12월 9일 목요일

Eclipse 사용시 Static import가 자동으로 되도록 하기 - 방법 두번째

최근에 Favorite를 이용하는 방법을 소개하였다.

오늘 다른 방법을 제시하는 글을 보았다.

테스트 코드에서 static import를 편하게 넣는 방법

테스트 코드 작성을 위해서 Favorites 기능을 추천해주는 사람을 보면 과연 테스트 코드를 제대로 작성하고 있는 사람인지 의심부터 간다.
이렇게 개인적으로 유괘하지 않은 부분도 있다.

나와는 코드를 짜는 습관이 다른것 같다. 나는 코드를 짤때 코드 어시스트(ctrl - space)를 무척이나 많이 사용한다. 보통 한두자 치고는 누르는게 습관인 것 같다. 그래서 편했는데 아닌 사람도 있구나 하는 생각이 들었다.

인용한 방법대로 하는 것도 좋은 방법이라고 생각된다. 특히 많은 static import를 사용할 경우에는 매우 효과적이다.

다만 모든 Static class의 함수를 한번이라도 이용하지 않는 경우 저장은 하지 말아야 한다. 저장과 동시에 Organize Import가 작동하면서 사라지기 때문이다. 이 부분을 설정할 수 있는 다른 방법도 있을 것이다.

하지만 나는 favorites를 이용하는 것이 더 좋은 방법이라는 생각이 든다.

Powered by 쓰리래빗츠






2010년 12월 7일 화요일

Better for Loops Pattern in javascript

javascript에서 for Loops를 사용할 경우에 이제껏 다음과 같이 사용했다.

for(var i = 0; i < myArray.length; i++) {
    do something with myArray[i];
}


JavaScript Patterns 에서는 이런 방식의 사용이 성능에 아주 좋지 않은 영향을 미친다고 한다.
특히 DOM과 관련된 array를 다루는 경우에는 특히 그 영향이 크다고 할 수 있다.

document.getElementsByName()
document.getElementsByClassName()
document.getElementsByTagName()

이런방식으로 반환되는 Array의 경우이다. 이런경우에는 다음과 같이 사용하는 것이 좋다.

var i = 0,
     max,
     myarray = [];
// ...
for (i = 0, max = myarray.length; i < max; i++) {
    // do something with myarray[i]
}

이럴 경우 Safari3 브라우저에서는 2배, IE7에서는 190배 빠르다고 한다.
이유는 length를 가져오는 로직이 시간이 걸리기 때문이다.

참고로 성능이 매우 중요한 프로그램에서는 다음과 같이 성능 향상도 가능하다.

var i, myarray = [];
for (i = myarray.length; i--;) {
    // do something with myarray[i]
}

또는

var myarray = [],
      i = myarray.length;
while (i--) {
    // do something with myarray[i]
}

Prototype 이나 JQuery 같은 Javascrip 라이브러리의 DOM 관련 fuction의 경우에는 어떤지 잘 모르겠다.



2010년 12월 2일 목요일

Eclipse 사용시 Static import가 자동으로 되도록 하기

JAVA 1.5 버전에서 소개된 static import는 사용여부를 두고 찬반이 갈린다. 하지만 다른 경우는 별도로 하고서라도 Junit에서 assert Mehod 시리즈들을 사용할때에는 편리하다고 판단된다.

Eclipse로 작업하다 보면 최초에 static import를 수동으로 해야 되는 경우가 많다.
이 경우 환경설정 값을 조금만 수정하면 method를 타입핑시에 assert method를 code assist 기능을 이용하여 선택할 수 있고 선택됨과 동시에 static import 구문도 동시에 삽입된다.


위와 같이 Java > Editor > Favorites 에 New Type으로 사용하고자 하는 static Class를 추가하고(Junit인 경우에는 org.junit.Assert) 저장하면 Java 코딩시 "ass" 만 치면 Assert class의 method들이 아래 그림과 같이 나타나고 선택하면 자동으로 static import가 된다.


모든 Static Class를 대상으로 된다.

2010년 11월 30일 화요일

Eclipse Helios (3.6) Update 후기

Eclipse Galileo (3.5)를 사용하다가 Eclipse Helios (3.6)로 업데이트를 했다.

결론부터 말하면 호완성과 관련하여 발견된 문제는 없다.
기존에 사용하던 workspace와도 아무런 문제가 없다.

Workbench User Guide, Java development user guide의 What's news  부분만 살펴보니
많은 개선이 된거같다.

기존 버전의 완성도도 매우 높은 편이라 당장 느껴지는 점은 없다.

다만 개인적으로 기존의 몇가지 아쉬운 점이 해결되어 만족한다.

XP인 경우 발생하는 Eclipse start Error 가 해결되어 별도의 처리가 줄어 들었다는 점이 만족스럽고,

java 스크립트에서 "{}" 자동완성이 된다는 점은 더욱더 만족스럽니다.
JavaScript Development Toolkit (JSDT) 플러그인이 업데이트 되면서 해결된 것으로 생각된다.

2010년 11월 21일 일요일

윈도우에서 부팅시 토글키 제어 num lock, caps lock, scroll lock

윈도우 시작시 토글키는 선택되지 않은 상태가 기본이다.
항상 선택해 주는 것이 번거러운 키는 특히 num key이다.

그래서 찾아보니 역시 방법이 있었다.

출처 :


도우키 - 시작 - 실행 클릭후 regedit를 입력하고 엔터.
 
레지스트리 편집기에서 아래 두 곳을 모두 지정하면 대부분 될 것입니다
 
1. HKEY_USERS.DEFAULTControl PanelKeyboard
2. HKEY_CURRENT_USERControl PanelKeyboard
 
위 모두 InitialKeyboardIndicators 의 값이 2로 되어 있는지 확인함.
 
InitialKeyboardIndicators의 값이 0이면 Num Lock Off
InitialKeyboardIndicators의 값이 2이면 Num Lock On이 되는 것임.
 
 0 - all indicators off
 1 - Caps Lock on
 2 - Num Lock on
 4 - Scroll Lock on

또는 2개 이상을 셋팅할수도 있습니다:

 3 - Caps Lock and Num Lock on
 5 - Caps Lock and Scroll Lock on
 6 - Num Lock and Scroll Lock on
 7 - Caps Lock, Num Lock, and Scroll Lock on