기사 제목
DB2의 컬럼 그룹 통계에 대한 이해

포스팅 아래 기사원문 주소로 가시면 기사 전체내용과 자세한 설명 쿼리문들 볼 수 있습니다







요약
 옵티마이저는 여러 술어 사이에 상관 관계가 있는 경우 리눅스, 유닉스, 윈도(Linux®, UNIX®, Windows®)용 DB2®에서 다중 컬럼 통계를 사용하여 더 나은 쿼리 접근 계획을 결정하고 쿼리 성능을 높일 수 있습니다. 이 글에서는 다중 컬럼 통계를 사용하여 DB2 9.5에서 술어 사용을 광범위하게 확장하는 옵티마이저의 향상된 기능을 활용하는 방법을 설명합니다.





소개
"Understand column group statistics in DB2"(developerWorks, 2006년 12월)에서는 컬럼 그룹 통계 수집의 중요성과 DB2 SQL Optimizer(이후 옵티마이저)가 두 개 이상의 로컬 술어나 병합 동등 술어(join equality predicate) 사이의 통계적 상관 관계를 검색하는 데 다중 컬럼 통계를 사용하는 방법을 설명한다. DB2 9.5에서 옵티마이저는 다중 컬럼 통계의 사용을 더 광범위한 술어로 확장했다.





목차

여러 로컬 동등 및 로컬 IN 술어의 통계적 상관 관계

Example 1: C1 IN ( <VALUE LIST> ) AND C2 = literal

Listing 1. 샘플의 테스트 환경

Listing 2. SAMPLE 데이터베이스의 EMPLOYEE 테이블에 대한 쿼리

Listing 3. EMPLOYEE 테이블에서 반환된 레코드

Listing 4. EXPLAIN 테이블에 쿼리 접근 계획 세부사항 삽입

Listing 5. 쿼리 접근 계획

Listing 6. 카디널리티 추정이 더 나은 쿼리 접근 계획

예제 2: C1 IN ( <VALUE LIST> ) AND C2 IN ( <VALUE LIST> )

Listing 7. 보너스와 급료 쿼리

Listing 8. EMPLOYEE 테이블에서 반환된 레코드

Listing 9. EXPLAIN 테이블에 쿼리 접근 계획 세부사항 삽입

Listing 11. 카디널리티 추정이 더 정확한 쿼리 접근 계획

예제 3: C1 IN ( <VALUE LIST> ) AND C2 IN ( <VALUE LIST> ) AND C3=literal

Listing 12. 500달러의 보너스를 찾도록 세 번째 술어 추가

Listing 13. EMPLOYEE 테이블에서 반환된 레코드

Listing 14. 쿼리 접근 계획

Listing 15. 인덱스 작성과 통계 수집

Listing 16. 쿼리 접근 계획에서 수정된 카디널리티 추정

예제 4: (C1=literal OR C1=literal2) AND (C2=literal OR C2=literal2) AND C3=literal

Listing 17. IN 술어를 대체하기 위한 해당 OR 술어

Listing 18. 쿼리 접근 계획

Listing 19. 해당 IN 술어로 변환된 OR 술어

예제 5: 인덱스 오링(Index oring)

Listing 20. EMPLOYEE 테이블에서 A00 부서에 속한 모든 직원과 영업 사원을 검색하는 쿼리

Listing 21. 쿼리에서 네 개의 레코드 반환

Listing 22. XML 파일 내용

Listing 23. example5.xml과 example5.del에 함께 사용하는 명령

Listing 24. 최적화 프로필을 사용하여 쿼리 접근 계획 보기

Listing 25. 쿼리 접근 계획

Listing 26. 쿼리 접근 계획의 향상된 카디널리티 추정

OR 연산자의 하위 용어(subterm) 내에 있는 여러 로컬 동등 술어의 통계적 상관 관계

예제 6: (C1=LITERAL1 AND C2=LITERAL2) OR (C1=LITERAL3 AND C2=LITERAL4)

Listing 27. EMPLOYEE 테이블에 대한 쿼리

Listing 28. EMPLOYEE 테이블로부터의 쿼리 결과

Listing 29. 옵티마이저가 선택한 것과 비슷한 쿼리 접근 계획

Listing 30. 카디널리티 추정이 더 정확한 쿼리 접근 계획
 

 




결론
 옵티마이저가 고려된 각 쿼리 접근 계획의 비용을 올바로 추정하는 것은 정확한 카디널리티 추정에 달려 있다. DB2 9.5에서 다중 컬럼 통계의 확장된 사용을 활용하여 옵티마이저가 최적의 쿼리 접근 계획을 선택하기 위해 카디널리티를 더 잘 추정하도록 많은 정보를 제공할 수 있다.







 기사 원문으로 가시면 에제 코드와 자세한 설명을 볼 수 있습니다
아이베엠 디벨로퍼 웍스 : http://www.ibm.com/developerworks/kr/
기사 원문 주소 : http://www.ibm.com/developerworks/kr/library/dm-0809kapoor/index.html

신고





Posted by 파란물





기사 제목
Android에서 XML과 JSON 사용하기, Part 2: JSON을 사용하여 하이브리드 Android 애플리케이션 전달하기

기사 본문으로 가시면 자세한 코드와 전체 내용을 확인하실 수 있습니다 



요약: 두 개의 파트로 구성된 이 시리즈 기사에서는 현재 인터넷에서 사용하는 가장 일반적인 데이터 형식인 XML과 JSON(JavaScript Object Notation)을 Android 플랫폼에서 처리하는 기술을 살펴봅니다. Part 1에서는 XML과 JSON의 기본적인 사항을 살펴봅니다. Part 2에서는 Webkit으로 호스트하는 Javascript 코드와 Android 애플리케이션의 Java™ 코드 간에 데이터를 교환하는 방법을 살펴봅니다. 이 기사에서는 가장 유용하고 유연한 방식으로 여겨지는 JSON에 대해 집중적으로 살펴봅니다.



소개
휴대전화는 가장 인기 있는 기술 분야이다. 다양한 플랫폼이 판매량과 인지도 면에서 업계 최고의 위치에 오르기 위해 경쟁하고 있다. 이러한 플랫폼은 첨단 기술의 표본이고 할 수 있지만 이러한 플랫폼의 인기가 더욱 많아지는 이유는 이러한 플랫폼에서 사용할 수 있는 매우 다양한 애플리케이션이 우수한 사용자 경험을 제공하기 때문이다. 특히, iPhopne과 Android 플랫폼은 모두 비즈니스 고객과 소비자 고객의 마음을 사로잡아서 이들의 지갑을 열기 위해 경쟁하고 있는 최신 디바이스이다.

Android에 임베드된 Javascript 계산기

그림 1. 작동 중인 Javascript 계산기 표시하기

사용자 인터페이스 설정

Listing 2. 사용자 인터페이스 설정

Listing 3. R.java

Listing 4. WebView 위젯 설정

그림 2. Eclipse에 표시된 프로젝트

Javascript 인터페이스 연결

Listing 5. CalculatorHandler 구현

Listing 6. WebView 제어에서 렌더링하고 실행한 index.html 파일

Javascript 코드 삽입

Listing 7. Java에서 PerformSimpleCalculation() Javascript 함수 호출

Listing 8. JSON 오브젝트를 전달하여 더욱 복잡한 함수 호출하기

JSON 오브젝트 교환하기

그림 3. Javascript에서 전송된 JSON 배열 구문 분석하기

요약
이 기사에서는 WebKit을 활용하는 하이브리드 애플리케이션과 관련된 일반적인 주제뿐만 아니라 Android 애플리케이션의 Java 코드와 WebView의 Javascript 코드 간에 데이터를 전송하는 기술을 살펴보았다. 하이브리드 애플리케이션에는 상상할 수 있는 모든 요소 중에서 유연하고 우수한 모바일 애플리케이션을 전달하는 데 필요한 가장 중요한 요소와 Javascript, JSON, 콜백 함수 및 Android-SDK Java 코드가 함께 결합되어 있다.



 기사 원문으로 가시면 에제 코드와 자세한 설명을 볼 수 있습니다
아이베엠 디벨로퍼 웍스 : http://www.ibm.com/developerworks/kr/
기사 원문 주소 : http://www.ibm.com/developerworks/kr/library/x-html5mobile4/index.html
신고





Posted by 파란물






css 사용에대한 설명입니다
자세한 내용은 기사 원문으로 가시면 모두 보실 수 있습니다



요약: CSS 2.1과 크로스 브라우저 CSS3를 비롯한 표준화된 CSS 스타일 기술을 알아봅니다. 특히, 효과적인 기술을 사용하여 검색 엔진 최적화 기능을 강화하는 방법을 배울 뿐만 아니라 인쇄, 모바일 및 웹 뷰에 적합한 다양한 CSS 스타일을 학습하고 강화된 접근성을 확인합니다.

CSS(Cascading Style Sheet)는 (X)HTML 웹 페이지 위에 매우 간단하게 계층적으로 적용할 수 있는 디자인 기술이다. 스타일 시트를 "계단식"화하면 스타일 시트를 전체 사이트에 적용할 수 있다. 다시 말해서 스타일을 해당 웹 사이트에 적용하면 스타일이 각 페이지의 각 요소 전체에 적용된다.
웹 사이트에서는 데이터를 디자인과 분리하는 개념이 중요하다. 데이터는 (X)HTML을 사용하여 브라우저로 전송하며 디자인은 CSS를 사용하여 데이터에 적용한다. 이렇게 데이터를 디자인과 분리하면 특정한 접근성이 필요한 경우에 직접 디자인하지 않아도 사용자가 웹 페이지를 렌더링할 수 있을 뿐만 아니라 "이러한 방식으로 된" 디자인이 없어도 검색 엔진과 같은 시스템에서 웹 사이트를 색인화할 수 있다.
이 기사에서는 웹 사이트의 모습을 개선할 수 있는 기존의 다양한 최신 CSS 기술을 자세하게 살펴본다. 이 기사에서는 (X)HTML에 대한 몇 가지 지식을 생각해보고 이 지식을 웹 사이트 디자인에 필요한 초기 플랫폼으로 역할을 할 수 있게 하고 작동개발에 필요한 기준점으로 삼는다.



내용 목차

CSS의 형식

기본 스타일

목록 1. body 태그용 CSS 기본 스타일

(X)HTML에 CSS 적용

빠르지만 지저분한 style 태그

빠르고 깔끔하며 드러나지 않는 CSS 링크

스타일 지정 지침

간단한 <div> 태그

CSS 2.1의 표준 <div> 효과

CSS3에서 강화된 <div> 효과

목록

링크

목록 2. CSS 링크 데코레이션 예제

목록 3. 일부 CSS3 특성을 사용하여 기능을 개선한 CSS 탐색 예제

테이블을 사용하지 않고 열 생성

목록 4. div를 사용하여 열을 생성하는 (X)HTML 예제

목록 5. div 열을 생성하는 CSS 예제

글꼴 타이포그래피

글꼴 다운로드


 
 결론
CSS2.1과 CSS3는 책에서 다룰만한 중요한 주제이다. 이 기사에서는 스타일시트를 제대로 작성하는 방법을 피상적으로 살펴보았으므로 독자가 웹에서 CSS 참고자료를 찾고 있는 경우에는 이 기사를 바탕으로 지식을 넓혀갈 수 있을 것이다.
(X)HTML과 CSS를 서로 독립적으로, 드러나지 않게 사용하여 표준 호환성, 접근성 및 검색 엔진 최적화 가능성을 극대화할 수 있다. CSS는 XHTML 및 HTML과 마찬가지로 우수한 기술이지만 반드시 표준화된 방식으로 사용해야 한다. 이러한 표준은 웹 디자인에 필요한 기본 요소가 될 수 있지만, 디자인 자체는 아니다. 우수한 디자인은 실용적이고 완벽해야 한다.



 기사 원문으로 가시면 에제 코드와 자세한 설명을 볼 수 있습니다
아이베엠 디벨로퍼 웍스 : http://www.ibm.com/developerworks/kr/
기사 원문 주소 : 
http://www.ibm.com/developerworks/kr/library/wa-getstartedcss/index.html
신고





Posted by 파란물







기사 원문으로 가시면 자세한 설명과 소스코드 자료를 볼수 있습니다



요약: 웹 애플리케이션은 전통적으로 싱글스레드 세상에 갇혀 있었습니다. 너무 복잡하면 애플리케이션의 UI가 멈추는 위험을 감수해야 하기 때문에, 실제로 개발자들은 코드에서 할 수 있는 것에만 활동이 제한되었습니다. Web Workers는 멀티스레드를 웹 애플리케이션에 도입하여 이 모든 과제를 극복했습니다. 이는 대부분 애플리케이션의 로직이 클라이언트측인 모바일 웹 애플리케이션에 특히 유용합니다. 이 기사에서는 Web Workers로 작업하는 방법을 살펴보고, 이에 가장 적합한 태스크가 무엇인지 알아봅니다. 다른 HTML 5 기술을 사용하여 어떻게 이러한 기술의 효율성을 높일 수 있는지 살펴볼 것입니다.



모바일 장치에서 멀티스레드 JavaScript
멀티스레드 또는 동시 프로그래밍은 대부분의 개발자에게 익숙한 것이다. 이는 대부분의 현대 프로그래밍 언어에서 어떤 방식으로든지 지원된다. 그러나 JavaScript는 동시 프로그래밍을 지원하는 언어가 아니다. 작성자는 웹 페이지에서 단순한 태스크를 수행하도록 설계된 JavaScript와 같은 언어에 대해 이러한 작업이 너무 문제가 많고 불필요하다고 생각했다. 그러나 웹 페이지가 웹 애플리케이션으로 진화하면서 JavaScript로 수행된 태스크의 복잡도는 JavaScript를 다른 언어와 동등한 수준으로 끌어 올렸다. 동시에 동시 프로그래밍을 지원하는 다른 언어로 작업하는 개발자들은 스레드와 뮤텍스와 같은 동시 프리미티브에 수반되는 놀랍도록 높은 복잡도로 인해 애를 먹으며 고생했다. 사실 최근에는 Scala, Clojure 및 F#과 같은 많은 수의 새 언어 모두 동시성의 간소화를 보장하며 진화하였다.



Listing 1. 페이지 스크립트에서 Web Worker 사용하기

Listing 2. Worker 스크립트

장치 지원

Workers로 성능 개선하기

Listing 3. 거래 애플리케이션 HTML

Listing 4. loadDeals 함수

그림 1. 모바일 거래 UI

Listing 5. 거래 세부 사항 프리페치하기

Listing 6. 거래 세부 사항 Worker 스크립트

Listing 7. Worker로 가져온 스크립트

그림 2. 표시된 거래 세부 사항

Listing 8. showDetails 함수

요약
Web Workers는 웹 개발자에게 이국적인 새로운 기술처럼 보인다. 그러나 이 기사에서 살펴본 것과 같이 이는 매우 실용적인 애플리케이션이다. 모바일 웹 애플리케이션의 경우에는 특히 더하다. Workers는 데이터를 프리페치하거나 다른 앞선(ahead-of-time) 조작을 수행하는 데 사용되어 훨씬 더 생생한 UI를 제공할 수 있다. 이는 잠재적으로 느린 네트워크를 지나 데이터를 로드해야 하는 모바일 웹 애플리케이션의 경우에 특히 더할 수 있다. 이를 캐싱 전략과 결합하면 사용자는 애플리케이션의 간결함에 감탄할 것이다.


 
 기사 원문으로 가시면 에제 코드와 자세한 설명을 볼 수 있습니다
아이베엠 디벨로퍼 웍스 : http://www.ibm.com/developerworks/kr/
기사 원문 주소 : http://www.ibm.com/developerworks/kr/library/x-html5mobile4/index.html

신고





Posted by 파란물







기사 원문으로 가시면 자세한 설명과 소스코드 자료를 볼수 있습니다



요약: 모바일 애플리케이션의 장점은 사용자가 이동하는 곳이면 어디에서나 애플리케이션과 애플리케이션 데이터를 사용할 수 있다는 점입니다. 그러나 실제로는 모바일 장치를 인터넷에 연결할 수 없는 경우가 있습니다. 모바일 웹 애플리케이션에서는 이러한 문제점을 피할 수 없을 것처럼 보입니다. 그러나 웹 애플리케이션은 진화되어 이제는 오프라인에서도 작동할 수 있게 되었습니다. 이 기사에서는 모바일 웹 애플리케이션을 오프라인에서 사용할 수 있게 하는 방법과 애플리케이션의 상태가 오프라인에서 온라인으로 또는 그 반대로 변경되는 시점을 발견하는 방법을 살펴봅니다.



애플리케이션을 오프라인에서도 작동할 수 있게 해야 하는 이유
여러 가지 이유로 오프라인 웹 애플리케이션은 사용자와 개발자 모두에게 매력적이다. 대다수의 개발자들은 각 플랫폼에 적합한 특정 애플리케이션을 작성하기보다는 인기있는 모든 스마트폰에서 작동하는 하나의 웹 애플리케이션을 작성할 수 있기를 원한다. 단지, 개발자들에게 편리하다고 해서 그것이 사용자가 원하는 것이라고 볼 수는 없다. 이러한 이유로 모바일 웹 애플리케이션은 특정 모바일 웹 애플리케이션이 제공할 수 있는 기능과 동일한 기능을 대부분 제공할 수 있어야 한다. 오프라인에서 작동하는 것도 이러한 기능에 해당한다고 할 수 있다. 애플리케이션 유형(모바일 또는 데스크탑)에 관계없이 일부 애플리케이션은 데이터와 서비스를 대부분 인터넷을 통해 이용한다. 이러한 애플리케이션에서는 사용자가 인터넷에 연결된 상태가 좋지 않으면 기능이 저하될 수 있다. 그러나 단지 인터넷 연결 상태가 좋지 않다고 해서 애플리케이션의 작동이 완전히 중단되어서는 안 된다. 기존의 웹 애플리케이션에서는 이러한 상황이 필연적으로 발생하게 된다.
오프라인 기능을 이용하면 모바일 웹 애플리케이션을 데스크탑 애플리케이션과 유사하게 작동하게 할 수 있다. 또한, 몇 가지 다른 혜택도 얻을 수 있다. 웹 브라우저는 언제나 정적 자원을 캐시한다. 또한, 웹 서버에서 전송한 HTTP 응답 헤더의 메타데이터에 의존하여 페이지를 렌더링하는 데 필요한 이미지와 HTML, Javascript, CSS를 검색한다. 페이지를 렌더링하는 데 필요한 모든 자원이 캐시되면 페이지가 매우 빠르게 로드된다. 그러나 일부 자원이 캐시되지 않으면 이로 인해 모든 기능이 극도로 저하될 수 있다. 이러한 상황은 생각보다 자주 발생한다. 다른 모든 파일보다도 하나의 CSS 파일에 다양한 캐시 제어 헤더가 있었을 수 있으며 그렇지 않으면 할당된 공간 밖에서 브라우저가 실행 중이었기 때문에 캐시가 제거되었을 수도 있다.
오프라인 애플리케이션에서는 모든 자원이 캐시된다. 캐시에서 제공되지 말아야 하는 자원을 사용자가 제어할 수 있기는 하지만 브라우저는 언제나 캐시에서 모든 자원을 로드한다. 특별한 시간소인 매개변수를 Ajax GET 요청에 추가하여 브라우저에서 응답을 캐시하지 않게 하는 것이 일반적인 Ajax 핵이며 그렇지 않고 GET이 적합한 경우에 POST를 사용하면 상태가 훨씬 더 나빠진다. 오프라인이 지원되는 웹 애플리케이션에서는 이러한 핵이 필요 없다.
오프라인 애플리케이션은 기능이 우수하므로 작성하기가 복잡할 것 같다. 과연 그럴까? 실제로는 매우 단순하다. 다음과 같은 세 가지 작업을 수행하면 된다.
온라인 매니페스트 파일 작성
브라우저에 매니페스트 파일 정보 전달
서버에서 MIME 유형 설정


 
 오프라인 매니페스트 파일

Listing 1. 간단한 캐시 매니페스트 파일

Listing 2. 웹 애플리케이션의 디렉토리 구조(텍스트 버전)

브라우저에 매니페스트 파일 정보 전달

Listing 3. 오프라인에서 사용 가능한 웹 페이지

그림 1. iPhone 시뮬레이터에서 실행 중인 오프라인 웹 애플리케이션

웹 서버 구성

Listing 4. web.xml을 구성하여 MIME 유형 설정하기

Listing 5. mime.types에서 MIME 유형 설정

고급 예제

Listing 6. 수정된 HTML

Listing 7. 페이지 초기화 Javascript

Listing 8. Gym 트윗 표시

Listing 9. 수정된 캐시 매니페스트 파일

요약
Mosaic가 개발된 이후 웹 애플리케이션은 크게 발전하였다. 모바일 웹 애플리케이션은 훨씬 더 진보했다. WML(Wireless Markup Language)만 사용하는 WAP 폰의 시대는 거의 사라졌다. 이제는 개발자들이 데스크탑 브라우저에 대해서조차 질문하지 않는 사항을 모바일 브라우저에 대해서는 질문을 한다. 오프라인 기능은 이러한 기능 중 하나라고 할 수 있다. HTML 5에 지정된 표준은 크게 발전하였으며 이제는 개발자들이 모바일 웹 애플리케이션을 오프라인에서 사용할 수 있게 하는 과정이 단순해졌다. 이 시리즈의 다음 기사에서는 또 다른 HTML 5 표준인 Web Brokers를 사용하여 모바일 웹 애플리케이션의 성능을 대폭 개선하는 방법을 살펴볼 예정이다.



기사 원문으로 가시면 에제 코드와 자세한 설명을 볼 수 있습니다
아이베엠 디벨로퍼 웍스 : http://www.ibm.com/developerworks/kr/
기사 원문 주소 : http://www.ibm.com/developerworks/kr/library/x-html5mobile3/index.html

신고





Posted by 파란물