티스토리 툴바




현재 예약 판매 중이고, 7월 6일 출간 예정이랍니다.

이 책은 사용자 경험(User Experience)을 어떻게 측정할 것인가에 대한 책이다. 그 중에서도 유저빌러티(Usability), 즉 사용자가 제품을 잘 사용할 수 있는지 그렇지 않은 지에 대해 중점적으로 다루고 있다. 이를 측정하기 위해서는 유저빌러티 매트릭스라는 도구를 사용하는데, 그동안 유저빌러티 분야에서 연구된 다양한 측정 방법들이 풍부하게 다루어진다.

유저빌러티 매트릭스는 그동안 애매했던 사용자 경험을 수치화 시키는 데에 의미가 있다. 아주 간단한 예로, 핸드폰 메뉴에서 5단계에 걸쳐 실행했던 작업을 3단계로 줄인다면 보다 사용하기 편리해졌다고 말할 수 있을 것이다. 이처럼 기업에서는 수치화된 유저빌러티 측정 결과를 바탕으로 구체적인 사용자 경험 목표를 세울 수 있다.

여전히 많은 경영자들이 사용자 경험이라는 용어를 모르고 있고, 업계의 실무자들도 사용자 경험이라는 단어를 제대로 이해하고 있지 못하는 실정이다. 그런 상황에서 이 책은 사용자 경험 분야의 실무자들이 수치화된 결과물로써 그간의 성과에 대해서 설명할 수 있도록 돕고, 궁극적으로는 사용자 경험에 대한 투자가 필요한 이유에 대해 경영진을 설득하는데 있어서 도움을 줄 수 있다. 여러분이 사용자 경험 전문가로써 제품 향상에 실질적인 도움이 되고자 할 때 이 책에 소개된 내용들은 여러분에게 든든한 지원군이 될 것이다.

그렇다면 이 책은 사용자 경험 전문가에게만 도움이 되는 책일까? 이 책은 유저빌러티가 어디에서 비롯되는지에 대해 이해하는데도 도움을 준다. 보다 사용하기 편리하고 쾌적한 제품을 만들고자 하는 사람들이라면 누구라도 이 책의 내용을 통해서 어떻게 사용자 경험을 개선할 수 있을지에 대한 아이디어를 얻을 수 있으며, 최근 세계적으로 일어나고 있는 사용자 경험을 고려한 제품 설계와 디자인 프로세스에 대해서 배우는 기회를 얻을 수 있을 것이다.

'> GUI > User eXperience' 카테고리의 다른 글

[UX도서] 사용자 경험 측정  (0) 2009/06/30
시작발표용 UX PhotoShop Image  (0) 2009/06/06
[UX도서] 컨텍스트를 생각하는 디자인  (0) 2009/06/02
UX (User eXperience)란?  (0) 2009/06/02
GUI Link-IN 설계2 Hand Design  (0) 2009/06/01
Board 내부 구성  (0) 2009/05/22
Posted by Hazi

Plugin

분류없음 2009/06/20 17:09

플러그인(Plugin)은 윈도우즈의  dll, Linux의 so, Mac의 dylib등의 동적라이브러리 모듈이다.
동적 라이브러리(dynamic library)는 디스크에 별도의 파일로 저장되어 여러 개의 응용프로그램이 접근할 수 있는 독립 된 모듈이다. 프로그램은 보통 링크 시 필요한 동적 라이브러리를 지정하는데, 이렇게 하면 이 라이브러리들은 응용프로그램이 시작될 때 자동으로 로드 된다. 이러한 동적 라이브러리를 지정하는 방법은, 해당 라이브러리와 그의 포함 경로를 응용프로그램의 .pro파일에 추가하는 과정과, 관련된 헤더 파일을 소스 파일 내에서 include 하는 과정이 필요하다.

QT는 플랫폼 독립적인 방법으로 수행하기 위한 QLibary 클래스를 제공한다. 라이브러리의 기본적인 이름이 주어지게 되면, QLibary는 플랫폼의 라이브러리 표준 위치를 탐색해 그에 해당하는 적절한 파일을 찾는다. 예를 들어, myfile이란 이름이 주어진다면, QLibary는 리눅스의 경우 myfile.so란 이름을 찾을 것이다. QT에서는 플러그인 확장개념과 특정 QT응용프로그램을 전용 플러그인을 제작하는 것이 가능하다. 
* 응용프로그램이 플러그인을 통해 확장될 수 있도록 플러그인 지원 기능
* 응용프로그램을 위한 커스텀 플러그인 제작법
 

1. QT 플러그인 확장
QT는 이미지 포맷, 데이터베이스 드라이버, 위젯 스타일, 텍스트 인코딩등 자신만의 플러그인 인터페이스 집합을 인식한다. 최소 두 가지 클래스가 필요하다. (플러그인 API함수를 구현하는 플러그인 래퍼 클래스와 특정 플러그인 타입을 위한 API를 구현하는 하나 이상의 핸들러 클래스)
핸들러 클래스는 래퍼 클래스를 통해 접근 된다.

필요한 것 : .pro 파일, 동작을 위한 Plugin 클래스를 제공하는 .h 파일 및 .cpp 파일

.h 에서는 key()함수와 create()함수를 제공해야한다. key()함수는 플러그인이 생성할 수 있는 객체들의 리스트를 리턴한다. create()함수는 주어진 키에 대한 객체를 리턴한다.

.cpp 에서 익스포트하기 위해서는 반드시 .cpp 파일 끝에 아래 매크로를 추가해야한다.
Q_EXPORT_PLUGIN(libary_name, classname)매크로를 추가
첫번째 인자는 확장자나 접두어 또는 버전 번호가 제외된 대상 라이브러리 이름이다.
두번째 인자는 플러그인 클래스 이름이다.

.pro 에서는 lib 탬플릿을 지정해야 한다.
TEMPLATE=lib
CONFIG+=plugin
DESTDIR : 플러그인이 위치될 디렉토리

사용
QApplication::setStyle("PluginName"); 과 같이 지정
./실행 파일 -style PluginName

2. 플러그인 인식 가능한 응용프로그램 만들기 - (응용프로그램에서 인터페이스를 통한 플러그인 사용하는 방법)
응용프로그램 플러그인은 하나 이상의 인터페이스를 구현하는 라이브러리다.
인터페이스란 순수 가상 함수만으로 구성된 클래스로 응용프로그램과 플러그인 간의 통신을 인터페이스의 가상 테이블을 통해 이뤄지게한다.
Text Art 응용프로그램은 각 플러그인이 제공하는 텍스트 효과를 QListWidget에 개별적인 아이템으로 보여주는 것이다.

Text Art 응용프로그램을 만든다고 가정하면..먼저

인터페이스 클래스에는 가상 소멸자 하나와, QStringList를 리턴하는 가상함수하나, 하나 이상의 가상 함수를 선언한다. effects() 함수는 플러그인이 제공할 수 있는 텍스트 효과를 담은 리스트를 리턴한다.
Q_DECLARE_INTERFACE() 매크로를 사용해 , 인터페이스에 식별자 하나를 연관하면 된다.
식별자는 4가지 컴포넌트를 갖는데 제작자를 나타내는 도메인 이름, 응용프로그램 이름, 인터페이스 이름, 버전번호이다.

응용프로그램은 Dialog라는 한개의 클래스에 구현된다. 사용가능한 효과를 보여주기 위하여 QListWidget을 생성한다. 생성자는 private 함수 loadPlugins()를 호출해 TextArtInterface를 구현하는 모든 플러그인을 찾아 읽어드린다. 또 다른 함수는 호출에 앞서 만든 리스트 위젯을 채운다.

3. 응용프로그램 플러그인 만들기 
응용프로그램 플러그인은 QObject 의 하위클래스이자 제공하고자 하는 인터페이스의 하위 클래스다.

1. 인터페이스를 구현한다.
moc와 qobject_cast<T>() 간의 협력을 위해서 인터페이스 마다 Q_OBJECT, Q_INTERFACES() 매크로를 사용해야한다.
2. 리턴할 수 있는 함수를 제공한다.
3. 플러그인의 기능을 제공하는 함수를 만든다.
4. .cpp파일의 끝부분에 Qt에서 사용 가능하도록 Q_EXPORT_PLUG2() 매크로를 사용한다.
5. .pro파일은 앞에서 말한 것과 비슷하다.

Posted by Hazi

Signal & Slot

> GUI/QT 2009/06/19 17:19

Signal & Slot
일반적으로 GUI 어플리케이션의 기본적인 용도는 사용자의 요구에 대한 적절한 응답을 제공하는 것이다. 이러한 응답을 제공하기 위해서 QT에서는 시그널/슬롯 방식을 제공하고 있다. 예를 들어 사용자가 메뉴의 아이템을 클릭하면 프로그램은 프로그램의 코드를 실행한다. 여기서 시그널과 슬롯은 QT에서 객체간에 통신을 하기 위해서 사용된다.

QObject를 상속받아 객체간의 메세지 전달을 위해 signal/slot을 사용한다.
시그널과 슬롯의 예를 더 들면 버튼 위젯이 있을 때 버튼을 클릭하는 행위는 시그널이 되고 버튼을 클릭 할 때 프로그램을 종료하는 행위는 슬롯이 된다. 시그널과 슬롯을 하나로 묶기 위해서는 connect()함수를 사용한다. 마찬가지로 묶여 있는 시그널과 슬롯을 분리시키기 위해서는 disconnect()함수를 사용하면 된다.

시그널과 슬롯을 연결할 때 connect() 함수를 사용하는데 connect()함수는 QObject 클래스의 정적 함수로서 QObject 클래스나 이로부터 상속된 객체의 특정 함수를 호출할때 다른 객체의 함수를 자동으로 호출하도록 연결해준다.

Connect() 함수
QObject::connect(sender, SIGNAL(signal), receiver, SLOT(slot))
sender : 시그널을 발생시킬 객체의 포인터를 지정
signal : 첫번째 매개 변수로 지정된 객체(sender)가 발생시키는 시그널을 지정한다.
receiver : 첫번째 매개변수로 지정된 객체에 의해 발생된 시그널을 받을 객체의 포인터
slot : 세번째 매개변수에 지정된 객체(receiver)에 정의되어 있는 슬롯을 지정한다.


사용자가 직접 시그널과 슬롯을 정의하고 사용하기 위해서는 moc(Meta Object Compiler)로 컴파일 하는 절차가 추가로 필요하다. moc는 시그널과 슬롯이 있는 클래스의 선언으로부터 C++컴파일러가 사용할 수 있는 소스 파일을 자동으로 생성해 준다.


시그널
프로그램 사용자가 마우스로 클릭하거나 마우스를 이동, 또는 키보드를 입력하는 것 모두 프로그램이 받아서 처리해야 할 내용들이다. 이것은 마치 사용자가 프로그램에 어떻게 하라는 지시와 같은 것이므로 이와 같은 지시를 시그널 이라고 한다. 

슬롯
시그널을 받았으면 해당되는 일을 처리해야 되는데, 시그널에 따라 처리하는 내용을 슬롯이라고 한다. 슬롯이라고 특별한 것은 없다. 컴퓨터 프로그램에서 어떤 일을 처리하도록 작성한 것은 곧 함수 인데 슬롯은 일을 처리하기 위한 함수이며, 객체 안에 포함된 멤버함수일 뿐입니다. 슬롯은 멤버함수이면서 시그널, 즉 이벤트가 발생했을 때, 처리할 수 있도록 준비된 조금은 성격이 다른 멤버함수입니다. 좀 특이한 점은 각 위젯별로 기본 슬롯함수가 있습니다.

예로 라벨위젯 같은 경우 화면에 보이거나 감추는 슬롯이 있고, 델파이의 Appcliation 객체와 비슷한 qapp 는 프로그램을 종료하는 quit() 슬롯이 있습니다.

'> GUI > QT' 카테고리의 다른 글

Signal & Slot  (0) 2009/06/19
QT GUI Component  (0) 2009/06/19
Qt 설치하기 3 (qtopia-core) - Aesop board 환경기반  (2) 2009/06/09
Qt 설치하기 2 (qt-x11) - Aesop board 환경기반  (0) 2009/06/09
Qtopia Phone Edition image  (0) 2009/05/30
가상 프레임 버퍼 QVFB 설치에서 사용법  (0) 2009/05/29
Posted by Hazi
12345 ... 13

Hazi

달력

태그목록