2010년 3월 28일 일요일

Mac OS X 에서 Android Eclipse 개발환경 설정방법

<목적>
* 시중에 나온 책이나 인터넷에 있는 자료가 대부분  Windows 기준으로 되어 있음
* Mac환경에서 차이나는 부분(특히, Eclipse 설정)에 대한 상세한 설명을 통한 시행착오 개선
 
<환경>
* MacBook : Mac OS X v10.6 Snow Leopard
* Android : 2.1(최신버전) 기준

<내용>
1. JDK 설치(확인)
      Mac은 기본적으로 JDK를 내장하고 있으므로 별도 설치 불필요. 버전만 확인(JDK 5 or later)
      $ java -version
         java version "1.6.0_17"
         Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-10M3025)
         Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)

2. Eclipse IDE Download     
      http://www.eclipse.org/downloads/ 에서
      Eclipse IDE for Java EE Developers (188 MB)Mac Cocoa 64bit 선택

3. Android SDK(Software Development Kit)
   1) Download
    2) PATH 설정
          ~/.bash_profiletools 디렉토리 추가
          export PATH=${PATH}:<SDK Directory>/tools
    3) Eclipse 설정("4. ADT" Install 완료 후 설정 가능)
         [Directory]
         * Eclipse - 환경설정 - Android 선택
         * SDK Location<SDK Directory> 선택(tools 바로 위 디렉토리)

         [Install]
         * Window - Android SDK and AVD Manager 선택
         * Available Packages 에서 원하는 버전의 SDK
           (SDK Platform Android 2.1, API 7, revision 1) 선택 후 "Install Selected" 버튼 클릭
         * Installed Packages에서 설치 확인

4. ADT(Android Development Tools)
   1) Download Site 추가
        * Eclipse - 환경설정 - Install/Update - Available Software Sites 에서 "Add..." 버튼 클릭
        * Name : Android Development Tools,
           Location : https://dl-ssl.google.com/android/eclipse/
    2) Download
        * Help - Install New Software 선택
        * Work with : 앞서 설정한 Android Development Tools 선택
        * Developer Tools 체크 후 "Next >" 버튼 클릭
    3) Install
        * Install 항목 확인 후 "Next > " 버튼 클릭
        * "I accept the term  of the license agreements" 선택 후 "Finish" 버튼 클릭

        * 설치가 완료되면 Eclipse restart 확인 메시지가 나타난다. "Yes" 버튼을 클릭한다.



2010년 1월 24일 일요일

조직의 재발견(우석훈 저,개마고원)

조직의 재발견(★★★★★)

조직에 속한 사람이라면 모두 공감할 수 밖에 없는 글!

조직론의 학문적 가치의 필요성을 느끼게 하는 책
저자의 해박한 배경지식과 학문적 접근을 통해 한국 조직문화의 문제점을 이성적이고 객관적인 시각으로
그 이면의 본질과 핵심을 꿰뚫어 시원스럽게 풀어해친 수작!

특히, 답답하고 꽉막힌 균질화된 조직에 있는 사람일수록 무릎을 치며 "맞어~맞어~"라며
씁쓸한 웃음을 짓는 횟수가 많아질 듯...

My sister's keeper(2009)

My sister's Keeper(★★★★☆)
불치병 환자가 있는 가족의 고통과 좌절 그리고 희망에 대해 현실적인 시각에서 그려낸 영화

삶과 죽음
권리와 의무
그리고 희생의 가치와 한계

에 대해 생각하게 만든 작품

2010년 1월 9일 토요일

The Presentation Secrets of Steve Jobs

1. Set the Theme

   * Make your theme clear and consistent
   * Create a headline that sets the direction for your meeting
2. Provide the Outline
3. Open & Close Each Section with a Clear Transition
   * Make it easy for your listeners to follow your story
4. Demonstrate Enthusiasm
   * Wow your audience
5. Sell an Experience
   * Make numbers and statistics meaningful
   * Analogies help connect the dots for your audience
6. Make it Visual
   * Paint a simple picture that doesn't overwhelm
7. Give'em a Show
   * Identify your memorable moment and build up to it
8. Rehearse Rehearse Rehearse
   * Spend the time to rehearse
9. One more thing...
   * Give your audience and added bonus to walk away with











[JVM] ClassLoader, Hot Deploy

ClassLoader와 Hot Deploy의 개념에 대해 잘 설명한 글

2009년 12월 25일 금요일

[JDBC]일반 JDBC와 Oracle JDBC 성능비교(Java 배치) #2



에서는 일반 JDBCOracle JDBC간의 "조회+등록"이 함께 있는 시나리오에 대해 성능비교를 해보았다.

번에는 "조회"만 있는 경우에 대해서 성능비교를 해보면 아래와 같다.


<시나리오>
□ 100건씩 조회(rownum <=100)
□ 위 작업을 1~100,000 반복

※ 타 조건은 "성능비교 1차"와 동일


<총 소요시간(총 응답시간) 비교>










※CASE1:일반JDBC, CASE2:Oracle JDBC

<결론>
1."조회"만 있은 경우 70% 이상의 성능개선효과 발생
   o 반복횟수가 증가할수록 개선율은 낮아지지만, 최소 70%이상의 개선효과 발생

2. "조회+등록"이 있는 경우가 성능개선 효과가 더 높은 것으로 판단
   o "조회+등록" 이 있는 경우, 90%이상 성능개선효과 발생


 ※ "조회+등록" 이 있는 경우, 등록에 대한 일괄처리로 인한 성능개선효과가 크게 나타나는 것으로
      조회 부분(Parse+Fetch)에 대한 성능개선은 상대적으로 미미해 짐.
      (조회부분은 약 5% 정도만 개선)






2009년 12월 23일 수요일

[사진] Apple Team

 (출처 : flickr.com)
From Left...
Tony Fadell(engineering vice president),
Jon Rubinstein(iPod head),
Jonathan Ive(industrial design chief),
Steve Jobs(CEO),
Philip Schiller(marketing director).

최고의 멤버! 최고의 팀!
(Force가 느껴진다...그들 뒤에 있는 사무실도 예사롭지 않아 보인다.)

2009년 12월 17일 목요일

[IBM dW] 자바 EE 6에서 의존성 주입

이창신씨가  IBM developerWorks에 연재한 글이다.


J2EE6 에서의 Dependency Injection의 Spec확정에 대한 내용이며,
이를 Servlet 예제와 함께 소개하고 있다.

IoC나 AOP의 개념이 이제 J2EE에서 표준 패러다임으로서 정착해가는 느낌이다.








[FW] Application Framework in J2EE

J2EE 환경에서
Open Source Frameworks를 이용한 아키텍처 구성도(예시)

  • Presentation Tier : Struts
  • Business Tier : Spring
  • Persistence Tier : iBatis

2009년 12월 16일 수요일

[dW]7 Roles of Architect

2003.11.2 IBM developerWorks에
"아키텍트가 갖출 일곱 가지 자질 "이라는 제목으로 실렸던 글이 새삼 와 닿는다.
("Applied Software Architecture" 책의 내용을 정리한 글이다.)

이 글에서 말하는 일곱가지 자질은 아래와 같다


1. 비전 제시자(creating vision)

2. 핵심 기술 조언자(the architect as a key technical consultant)

3. 의사 결정자(The architect makes decisions)

4. 코치(The architect coaches)

5. 조정자(The architect coordinates)

6. 구현 능력(The architect implements)

7. 대변자(The architect advocates)

2009년 12월 15일 화요일

[JDBC]일반 JDBC와 Oracle JDBC 성능비교(Java 배치) #1

만약, 한 아키텍트가 JAVA로 배치 아키텍처를 제안한다면,

그 아키텍트는 대용량처리 시 응답속도에 대한 것을 포기하는 것이냐는  핀잔을 들을지도 모른다.

(아마,  JAVA가 느린것도 모르냐며 무능한 아키텍트로 낙인찍힐 수도 있다.)


하지만,  Oracle JDBC 를 이용할 경우 이야기는 달라질수 있을 듯하다.


JAVA기반의 배치프레임워크를 지원하는 상용제품(CASE1)

동일한 로직을 Oracle JDBC(CASE2)로 구현하여 총 소요시간(응답시간)을 비교하여 보면 아래와 같다.

※ 상용제품은 표준(일반) JDBC로 구현



<시나리오>

100 건 select 후 insert

    ※ 모든 SQL(select, insert SQL)문은 동일

    ※ commit 단위 : 100건

□ 위 작업을 1/10/100/1,000회 반복 수행 후 총 소요시간(응답시간) 비교



<테스트 서버환경>

□ OS : IBM AIX 5.3(64 bit)

□ CPU / RAM : 12 / 3 GB

□ Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit

□ JVM : build 1.4.2, J2RE 1.4.2 IBM AIX 5L for PowerPC (64 bit JVM)



<설정비교>









 JDBC 각 처리단계(Parse, Execute, Fetch)별 관련 클래스 및 메소드 비교표임

※ CASE2(Oracle JDBC)의 설정값은 테스트 및 관려자료를 참고하여 결정한 수치임.



<총 소요시간(응답시간)비교>













<결론>

위와 같이 일반 JDBC와  Oracle JDBC를 이용할 경우 98% 이상의 Dramatic한 성능개선을 보였다.

 

물론, 이는 지극히 단순화된 조건하의 극단적인 비교치일 수 있다.

즉, 일반 JDBC를 이용하더라도 addBatch등을 통해 Execute 등의 속도를 높일 수는 있으니 말이다.

 

하지만 확실한 것은,

Parse, Execute, Fetch 작업이 반복될수록 Oracle JDBC의 성능개선 효과가 더 커진다는 것이다.

 

JAVA 기반에 Oracle Database만 사용하는 환경에서 대용량 배치프로그램의 속도가 고민이라면,

Oracle JDBC를 이용한 속도향상에 대해 심각히 고려해 볼 필요가 있어 보인다.


 

<추신>

1) 테스트 소스나 DB 스크립트를 개시하지 못하는점 양해바람.

  -  소스는 상용프레임워크 소스가 그대로 보이고,

  -  DB스크립트는 실제 사용테이블 명이 나타나 보안상 문제가 될수 있어 생략함.

2) 위의 비교는 상용프레임워크의 문제점에 대한 논의가 아니라

    일반 JDBC와 Oracle JDBC 비교를 위해 편의상 현재 사용중인 상용프레임워크를 사용하였을 뿐임.

3)  각자 개발이나 운영중인 환경이 있다면 

     현재 사용하고 있는 JDBC방식을 Oracle JDBC 방식으로 변경하여 비교해 볼 것을 강력히 권장함

 

※ “Pro*C와 Java와의 Batch BMT(성능비교)라는 흥미로운 글이 있어 소개한다. 

    JDBC의 addBatch를 이용해도 Pro*C보다도 빠를 수 있다는 내용이다.

    (아마 Oracle JDBC의 setExecuteBatch를 이용하였다면 더욱 높은 속도개선이  가능했을 듯 하다.)

2009년 12월 10일 목요일

[기사] 아이폰 구입하면 '매국노', 국산폰 사면 '애국자'?

오마이뉴스 김인성 기자(09.12.10 10:46)



말이 필요없다. 읽어보면 다들 공감할듯.
완전공감, 개념기사다.
김인성 기자님께 감사드린다.

아이폰으로 인해 쓰레기 같은 Active-X좀 안쓰고,
웹환경도 표준좀 지키고 다양한 browser좀 쓸 수 있기를 간절히 바랄뿐이다.
(특히, 금융권들 제발....)





2009년 12월 7일 월요일

[Java] Effective Java - Still Effective After All These Years

 

Effective Java를 쓰신 Joshua Bloch(Chief Java Architect at Google)의 강의모습이다.

Java의 기본개념에 대한 내용들을 Quiz 형식을 통해 수강자들과 소통하며 즐겁게 진행하는 모습이 인상적이다.


<추신>

그의 모습에 열정과 즐거움이 묻어나온다... Google에 다녀서 그런가? ㅋ

(이런 Guru는 어디에서 일할까 궁금했는데, 역시.....Google에 있었다! ^^)


그리고 그가 공저한 "Java Puzzlers"라는 책도 한번 읽어봐야 겠다.

 

2009년 12월 6일 일요일

[Tx.]Connection Sharing 기능

[JEUS 5.0 #23 이상 버전 patch 기능 중 Connection Sharing 기능에 대한 설명]

UserTransaction tx = new UserTransaction();
tx.begin();
Connection con1 = ds.getConnection(); //ds : DataSource
Connection con2 = ds.getConnection();
Connection con3 = ds.getConnection();
...
tx.commit();

위와 같은 Global Transaction 로직에서,
일반적인 경우, con1, con2, con3은 3개의 다른 connection 객체이다.

connection sharing이란,
동일 Global Transaction에서는 여러번 connection객체를 요청하더라도
WAS단에서 동일한 connection 객체를 리턴시켜 주는 기능이다.
즉, con1, con2, con3은 모두 1개(con1)의 동일한 connection 객체이다.

즉, 위의 Connection Sharing 기능을 어플리케이션 측면에서는
tx.begin();
Connection con1 = ds.sgetConnection();
con2=con1;
con3=con1;
tx.commit();
와 같이 Connection을 재사용하도록 코딩한 것과 같은 의미가 된다.

정리하면, Connection Sharing 기능이란,
하나의 Global Transaction에서
어플리케이션에서 명시적으로 connection 객체를 재사용하지 않더라도
WAS단에서 동일한 connection 객체를 리턴하여 공유(재사용)하도록 하는 기능이다.

[장점]
이와 같은 기능은 하나의 Global Transaction에서 빈번히 getConnection을 수행하는 어플리케이션에서는
connection open 시간이 줄어들어 전체 response time 감소한다.
(즉, XA DataSource를 이용한 다수건 connection 사용환경에서 개선효과 발생)

[단점]
하지만, 단일 connection만 이용하는 어플리케이션에서는 connection 관리기능 추가로 인한 overhead로
connection open 시간이 더 늘어나서 전체 response time 증가한다.
(즉, Non XA DataSource를 이용한 connection 사용환경에서는 역효과 발생)








2009년 12월 5일 토요일

[Books]컨설팅의 비밀



누구에게 컨설팅이라는 행위를 하기 전에 컨설턴트로서 주의해야 할 사항들에 대한 정리!
특히, 돈이라는것을 받고 누구에게 충고(?) 할때에 고려해야할 사항들!

(※ 번역문맥이 다소 읽기에 어려웠음)