Search results for '2007/06/18'

관심품목 - ASUS Eee PC

아수스 Eee PC


요즘 블로그스피어 뿐만 아니라.. PC, 노트북 사용자들의 가슴을 설레게 하고 있는
노트북 관련 제품이 하나 있다.

바로 Asus의 EeePC. 이 제품이 관심을 받고 있는 이유는 하나, 성능에 비해 가격이
너무 저렴하다는 이유에서다.

나도 처음엔 별 관심없었는데.. 발매일이 코앞으로 다가오고 그에 따라 웹서핑 하면서
심심찮게 관련 기사를 접하게 되면서 혹하는 마음이 들기 시작했다.

이것도 반복 학습 효과인가?

뭐, 전자 제품이야 출시전 백날 떠드는 것보다 실제품이 나오고 사용자들의 평가가  
나온 후에 정당한 평가가 가능하겠지만, 우선 가격이 너무 착하니... 눈길이 안갈래야 안갈 수가 없다.

해상도가 낮은게 좀 걸리긴 하지만..( 말이 800*480 이지.. 요즘 저 해상도면 문서작업 하기도
버거운 해상도이다...) 왠만한 PMP보다 저렴하니.. 진짜 PC기능이 되는 PMP나 차량용 네비게이션,
이동용 웹 단말로는 그럭저럭 이용 가치가 있어 보인다.

나오면.. 지를까...( 그전에 국내에서도 저런 가격으로 출시 해 줄까..? )

ASUS Eee PC 사양..



좀 더 많은 정보는 http://lazion.com/2510965 에서 보실 수 있습니다.
2007/06/18 19:55 2007/06/18 19:55
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 컥...모니터가 너무 작아요-_-;;
    키보드에 손도 안 올라갈 듯;;
    그냥 웹용인듯..

  2. 저도 아미료님 말씀대로 제품 타켓이 모바일 웹 사용자가 아닐까
    하는 생각이 듭니다.

    키보드라면 LCD 양옆으로 남는 공간만큼의 길이를 확보하고 있어서
    몹쓸 수즌은 아닐거 같아요..

    나중엔 10인치 버전도 나올것 같단 예감이 들어요. ^^

  3. Blog Icon
    오오오렌지라구!!

    200달러란 컨셉에맞게 판매되길바랄뿐입니다.300 400부르는일이나중에없길바랄뿐이죠..전세계 눈팅들을상대로 낙시질하면 아수스나빠요..

  4. 그럼 때찌 해줘야지요.. 하핫

자바 API 항해지도

2007/06/18 01:57

서비 JAVA ,

이것은 개발 플랫폼에 있는 중요한 Java API를 정리한 Java API 지도이다.
여기에는 Java 2SE, Java 2EE, Java 2ME 등이 포함된다.
CORBA와 COM에서 상호 운용될 수 있는 Jini나 다른 API도 포함하였다.
이 도해는 Java API에 대한 빠른 레퍼런스이다.

자바 api flow

2007/06/18 01:57 2007/06/18 01:57
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

CLASSPATH에 없는 클래스 로딩

2007/06/18 01:43

서비 JAVA , , ,

java.lang.reflect를 이용하면 우리가 원하는 클래스에 대한 invoke가 가능하다는 것은 알고 있을 것이다.
하지만 classpath에 등록안되어진 클래스들에 대해서는 어떻게 할 것인가?

일일이 사용자에게 클래스 패스를 설정하게 할수만은 없는 일이다.

보통의 엔진들을 보게 되면 install되어진 디렉토리의 위치만을 세팅하도록 하고 있다.
set JAVA_HOME이라던지
set ANT_HOME이라던지..

쉘스크립트에 의하여 그러한 것들을 정의하여 java process를 띄우곤 하는데 그러면
내가 ant.jar등을 등록하지 않았음에도 불구하고 해당 애플리케이션들이 잘 작동하는 이유는 무엇일까?
그것은 바로 ClassLoader에 숨겨져 있다.
아래에서 보여지는 샘플코드는 classpath 프로퍼티에 등록이 되어지지 않은 클래스들에 대한 조작을 할 것이다.

그렇게 함으로서 이 글을 읽는 당신이 만든 애플리케이션이 별다른 클래스로딩 정책 없이도 작동이 될수 있겠다.
그러려면 또한 잘 알아야 하는것이 reflection API이거늘...
이부분에서는 그러한 것을 생략하고 URLClassLoader를 이용하여 디렉토리나 jar파일을 등록하여 가져오는
방법을 설명하도록 하겠다.

ClassLoader클래스는 이미 1.0API부터 존재해왔으면 URLClassLoader는 1.2에 새롭게 추가된 클래스이다.
우리가 사용하는 파일시스템이 URL이란 이름하에 조작이 될 수 있다는 것을 우선 명심하기 바란다.
왜냐면 file:/// 이란 URI를 사용하기 때문이다.

아래에서는 특정한 디렉토리 안의 jar파일에 대한 class loading샘플을 보여준다..

  1. import java.io.*;
  2. import java.net.*;
  3. public class ClassLoading {
  4.   public static void main(String [] args) throws Exception {
  5.     // Create a File object on the root of the directory containing the class file
  6.     File file = new File("D:/_Develop/jmxSamples/customMBean/log4j-1.2.8.jar");
  7.      
  8.     try {
  9.       // Convert File to a URL
  10.       URL url = file.toURL();          // file:/D:/_Develop/jmxSamples/customMBean/log4j-1.2.8.jar
  11.       URL[] urls = new URL[]{ url };
  12.       System.out.println(urls);
  13.        
  14.       // Create a new class loader with the directory
  15.       ClassLoader cl = new URLClassLoader(urls);
  16.       System.out.println(cl);
  17.        
  18.       // Load in the class; Logger.class should be located in
  19.       // the directory file:/D:/_Develop/jmxSamples/customMBean/log4j-1.2.8.jar
  20.       Class cls = cl.loadClass("org.apache.log4j.Logger");
  21.       System.out.println(cls);
  22.      
  23.     } catch (MalformedURLException e) {
  24.       e.printStackTrace();
  25.     } catch (ClassNotFoundException e2) {
  26.       e2.printStackTrace();
  27.     }
  28.    
  29.   }
  30. }

위에서 보는 것처럼 디렉토리를 설정하거나 특정 jar파일을 사용할 수 있도록 작성한다.
특정파일이 가르키지 않으면 해당 디렉토리의 class파일들을 package형태로 참조하도록 할 수 있는데
해당 디렉토리에 대한 클래스 로딩 샘플을 아래와 같다.

  1. import java.io.*;
  2. import java.net.*;
  3. public class ClassLoading {
  4.   public static void main(String [] args) throws Exception {
  5.     // Create a File object on the root of the directory containing the class file
  6.     File file = new File("D:/_CVSDevelop/jca_hello_adapter/build/classes");
  7.      
  8.     try {
  9.       // Convert File to a URL
  10.       URL url = file.toURL();          // file:/D:/_CVSDevelop/jca_hello_adapter/build
  11.       URL[] urls = new URL[]{ url };
  12.       System.out.println(urls);
  13.        
  14.       // Create a new class loader with the directory
  15.       ClassLoader cl = new URLClassLoader(urls);
  16.       System.out.println(cl);
  17.        
  18.       // Load in the class; Test.class should be located in
  19.       // the directory file:/D:/_CVSDevelop/jca_hello_adapter/build/classes/com/bea/jca/test/Test
  20.       Class cls = cl.loadClass("com.bea.jca.test.Test");
  21.       System.out.println(cls);
  22.      
  23.     } catch (MalformedURLException e) {
  24.       e.printStackTrace();
  25.     } catch (ClassNotFoundException e2) {
  26.       e2.printStackTrace();
  27.     }
  28.    
  29.   }
  30. }

위와 같은 경우에는 classpath의 루트로 잡은 디렉토리를 기준의 package형태로 설정되 파일을
로딩하여 사용할수 있도록 한다.

이 이후의 코딩에는 class가 newInstance를 취한 후 method를 invoking해야 하는 과정을 거치게 되는데
한 가지 주의할 점은 해당 클래스를 반드시 reflection API를 이용하여 호출해야 한다는 점이다.

대략 아래의 코드정도를 이용하여 main 메소드등을 호출하는 클래스를 작성할 수 있을 것이다.

  1. public void invokeClass(String name, String[] args)
  2.     throws ClassNotFoundException,
  3.           NoSuchMethodException,
  4. {
  5.     Class c = loadClass(name);
  6.     Method m = c.getMethod("main", new Class[] { args.getClass() });
  7.     m.setAccessible(true);
  8.     int mods = m.getModifiers();
  9.     if (m.getReturnType() != void.class || !Modifier.isStatic(mods) ||
  10.         !Modifier.isPublic(mods)) {
  11.         throw new NoSuchMethodException("main");
  12.     }
  13.     try {
  14.         m.invoke(null, new Object[] { args });
  15.     } catch (IllegalAccessException e) {
  16.         // This should not happen, as we have disabled access checks
  17.     }
  18. }

reflection에 대한 샘플은 몇가지에 대하여 놀새~ 사이트에 이미 올려져 있으므로 참조하기 바란다.
위와 같은 샘플을 이용하게 되면 서버측 프로그램에 대한 작성을 해볼 수 있는 좋은 기회가 아닐까 한다.

원문 출처 : http://ienvyou.egloos.com/?doc=bbs/gnuboard.php&bo_table=sample_code&page=1&wr_id=68


2007/06/18 01:43 2007/06/18 01:43
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

이클립스를 빠르게. Eclipse IDE Performance Tips

최근 Eclipse 유저가 Netbeans로 이동한다는 몇몇 article을 보면서 eclipse의 속도 문제 등 기사에서 제기한 문제들에 공감을 한다. 하지만 Netbeans보다는 기능의 완성도가 일부 뒤떨어지는 부분도 있지만 확장성이나 UI는 Netbeans 이상이라고 한다. 오랫동안 사용해온 이클립스의 장점은 누리면서도 답답한 속도 문제를 개선할 수 있는 방법은 없을까 이클립스 performace 최적화에 대한 기사가 있어 인용해본다.

JVM Heap memory 설정
JVM은 기본적으로 최소한의 메모리만을 사용하게 된다. 하지만 eclipse 프로젝트가 커지면 100M 이상을 사용하게 되는데 이클립스 실행시 사용할 heap 메모리 사이즈를 지정할 수 있다. eclipse.exe 실행시 -Xms128m -Xmx256m처럼 할당할 메모리를 설정해준다.

Automatic folding 죽이기
Window->Preferences->Java->Editor->Folding 옵션을 모두 해제(disable)한다. 폴딩은 에디터 내에서 코드 블록을 숨기고 펼치는 기능이다.

Automatic Code Insight 죽이기
Window->Preferences->Java->Editor->Code Assist 에서 Enable auto activation 항목을 해제(disable)한다. 자동으로 동작하는 code insight 기능은 죽였지만 ctrl+space러 여전히 code insight를 사용할 수 있다.

Close Projects
현재 작업과 직접 관련이 없는 프로젝트를 모두 닫는다. 이렇게 함으로써 이클립스가 접근하는 파일의 수를 줄여준다.

플러그인 삭제
각종 플러그인의 지원이 이클립스 사용의 혜택이긴 하지만 과도하게 많은 플러그인을 설치하는 것은 이클립스 실행시 각 플러그인들이 초기화 과정을 거치기 때문에 처음 실행시간이 오래 걸리게 된다. 사용하지 않을 플러그인이라면 설치하지 말자.

KeepResident 플러그인
메모리에 여유가 있다면 KeepResident Eclipse plugin for Windows - KeepResident Eclipse plugin 플러그인을 설치한다.
MS Windows에서 이클립스를 사용한다면 이클립스 창을 최소화(minimized)하게되면 Windows는 시스템 자원 사용을 효율화하기 위하여 이클립스의 working set의 크기를 줄여버린다. 이것은 firefox나 netbeans의 경우에도 적용된다. 문제는 최소화된 창을 복구하게 되면 장시간 garbage collection이 진행되게 되는데 이때 이클립스는 때론 몇분 동안 아무런 반응 없이 멈추게 된다. KeepResident 플러그인은 창이 최소화되더라도 working set을 유지시켜 이러한 문제를 차단해준다.

시작을 빠르게
이클립스를 종료할 때 모든 에디터를 닫는다. 이것이 귀찮다면 Window > Preferences > General > Editors > close all editors on exit 항목을 설정(enable)한다.
Window > Preferences > General > Startup and Shutdown에서, 불필요한 플러그인을 startup list에서 제외한다.

2007/06/18 01:29 2007/06/18 01:29
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 좋은 글이네요 제 블로그에 스크랩 해가도 될련지요... 허락안하시면 지우겠습니다 ^^;;

  2. 옙~ 스크랩 해 가셔도 됩니다.
    제 URL을 링크해 주시면 더욱 감사드리겠습니다. ^^