'인터페이스'에 해당되는 글 2건

  1. 2010.02.25 E-Book의 Next, Prev 버튼 위치에 대해.
  2. 2009.09.02 CQ Workflow Viewer - 1 Day.

사실 다양한 제품을 만져보지는 못했고, 고작해봐야 삼성 SN-60E가 전부다.

(마음같아서는 다양한 E-Book 모델을 사가지고 만지작 대고 싶지만, 돈이 없으므로 패스)

지금까지 웹을 통해 본 E-Book들의 버튼 배열은 좀 이상한 느낌이다.

왜 다들 책을 아래로 잡고 읽는 형태로 만들었을까 하는 의문이다.

물론 버튼 배열이나, 회로등의 고려를 하다가 보니, 맨 아래쪽에 배치했는지도 모르겠다.




아이리버 스토리


삼성전자 SNE-60K

키보드의 유무는 둘째 치고라도, 일단 이전 페이지, 다음 페이지 가는 부분이 맨 아래에 위치되어 있음은 쉽게 알 수 있다.그런데 우리가 보통 책을 쥔다는 느낌은 어떤 걸까?

핸드폰 처럼 키 패드 잡고 위를 바라보는 느낌일까?

일단 내 생각에는 책을 읽는 느낌은 책을 감싸는 느낌으로 드는게 가장 일반적이라고 생각한다.

그런데 키가 맨 아래에 있으니, 당연하 손은 아래로 들고 비록 가볍기는 하지만 무게 중심을 아래로 잡고 있기 때문에, 손가락이나 손목에도 그다지 편하지는 않다.


그렇다면?

아마존에서 만든 킨들을 보자.


아마존 킨들

저기 잘은 안보일지는 모르겠지만, 킨들 분해한 사진을 보면 좀 더 가깝게 볼 수 있다.

Prev, Next Page 버튼이 어디 있는가?

다른 부분은 다 어떻게 배치하든 큰 문제가 없다. 사실 자주 쓰이는 키가 아니기 때문이다.

하지만, E-Book을 PDA라든가, 기타 다른 장비로 즐겨 보신 분들은 뼈져리게 느끼지만, 다음 페이지를 읽을 때 누르는 버튼에 따라 E-Book 사용법에 바로 영향을 끼치게 된다.


최소한 E-Book 장치는 다음 그림과 같은 형태가 되어 줬으면 한다.

mydesign

Prev, Fwd 버튼은 최소한 화면 좌우측에 배치되어 있어야 하지 않을까?

책을 쥐든 잡든 들기 좋고 다음 페이지를 향하게 할 때 어느 정도의 고려는 해줬으면 하는게 바램이다.

또, 꼴에 번쩍이는 효과 넣겠다고, 버튼에 색 칠하거나, 크롬 도금 따윈 절대 하지 말고,

차라리 내구성이 튼튼하게 아무리 눌러도 변색이나 부서짐이 없는 그런 재질로 만들었으면 한다.


우리나라 E-Book 디바이스 디자이너들.

물론 예쁘장하게 만드는 것도 중요하지만, 그보다 먼저 실용성에 대한 이해가 먼저 선결좀 되어 줬으면 한다.

좀 사용해 보고 디자인좀 해보세요!!!! 이거다.


에효...

신고
Posted by 하인도

이 작업에서 기술적으로 풀어야 되는 최고의 숙제는 COM 개체를 CPP 코드를 이용하여 붙이는 작업이다.
그렇다고 COM 관련 API를 직접 붙여 만들기는 귀찮기도 하고, 기술적으로 능력이 딸리기 때문에, 힘들고, 대신 Visual Studio의 기능을 십분활용하는 방법으로 진행한다.

이 중 MFC 기반으로 만드는 응용 프로그램인 경우, 전체 프로그램의 사이즈는 커지지만,
그래도 편하게 작성할 수 있는 장점은 확실히 이용가능하다고 본다.
여기서 작업 결과물은 ActiveX로 나와야 겠지만, 먼저 COM 연결과 같은 테스트에 가까운 작업 부분에 대해서는 MFC 기반 응용 프로그램으로 만들어 직접 테스트와 디버깅을 하여 결과물을 만든 후 그 내용을 ActiveX로 붙이는 것이 좋을 것 같다.
이를 위해 하는 작업은 COM의 TypeLib를 사용하여 ProxyClass를 자동으로 생성하는 방법을 적용한다.
TypeLib에서 ProxyClass를 만드는 방법은 Visual Studio 버전에 따라 틀리지만, 여기서는 모든 작업을 Visual Studio 2005로 할 것이며, 이 방법을 중심으로 펼칠 예정이다.

Proxy Class 만들기.

  • 프로젝트에서 컨텍스트 메뉴를 띄우고 추가를 선택한다.
  • 추가 아래에서 클래스를 선택한다.
  • 클래스 추가라는 제목의 마법사가 뜨면, 그 중 MFC 항목을 선택한 후 템플릿 중 TypeLib의 MFC 클래스를 선택한다.
  • 사용 가능한 형식 라이브러리에서 원하는 COM을 선택한다. 여기서는 ClearQuest OleServer를 선택한다.
  • 그러면 이 COM에 딸린 각종 인터페이스들이 나열되는데, 그 중 필요한 인터페이스를 선택한다. 여기서는 CQ Workflow의 작업에 필요한 IOAdEntityDef, IOAdEntityDefs, IOAdSession 세가지가 필요하다. 그래서 그 클래스를 추가한다.
  • 그러면 프로젝트의 헤더 파일 목록에 위의 세가지에 대한 프락시 클래스 정의 내용이 담긴 헤더 파일(*.h) 파일이 추가된다.

 

일단 위의 헤더 파일이 만들어졌으면 1차적으로 완성된 것이다.

 

Proxy Class 활용하기.

COM에서 인터페이스를 이용하여 사용하려면, COM에 대한 인스턴스가 필요하다. 지금 위의 작업까지 된 부분은 운영체제 내 등록되어 있는 COM 자체의 설정 값들을 읽어온 것이 전부이다. 이 설정 값만으로는 실제 메모리 존재하는 것이 아니다. 그렇다고 단순하게 Proxy Class를 new 해서 만드는 것은 사실 아무 의미 없다. Proxy Class를 new해서 만드는 것 만큼이나, COM 자체에 대한 인스턴스를 만드는 것이 같이 병행 되어야 하고, 인스턴스화 된 COM 개체를 new해서 만드는 Proxy Class와 연결하면 되는 것이다. 이제 이 COM을 메모리에 올리고 new 해서 만드는 Proxy Class와 연결하는 작업을 수행할 것이다.

ClearQuest OleServer를 사용하려면, 최초 Session 이 필요하다. 즉 이 Session에 대한 인스턴스가 있다면, 이 인스턴스를 통해서 각종 하위 내용들을 끄집어 낼 수 있다. 즉 시작점 같은 의미를 하는 부분을 먼저 인스턴스화 하는 것이 핵심인 것이다.  그래서 다음과 같은 순서로 실행하면 된다.

먼저 Proxy Class를 new 해준다. 여기서는 시작 인스턴스로 사용할 IOAdSession 이라는 것을 먼저 시도하게 된다.
COAdSession *pSession = new COAdSession();

이제 만들어진 ProxyClass에 COM 인스턴스를 싣는다. 이 Proxy Class들은 모두 COleDispatchDriver를 상속받는데, 그 상위 클래스에 정의된 CreateDispatch 함수를 실행하면 된다. 이 때 Program ID 혹은 CLSID를 알아야 하는데, 이 중 제일 접근하기 쉬운 Program ID로 정의해서 넣는다.
pSession->CreateDispatch(_T(“CLEARQUEST.SESSION”));

이제 인터페이스에 정의된 매소드를 실행해 본다.
pSession->UserLogon(_T(“admin”), _T(“”),_T(“udb1”), 1L, _T(“7.0.0”));

 

정리를 하자면, 일단 TypeLib를 통해 ProxyClass를 만든다. 이 작업은 직접 만들 수 있지만, 귀찮으니, MFC에서 제공하는 자동화 도구를 사용해서 만든다. 그리고 난뒤, Proxy Class의 인스턴스를 만들고, 그 안에서 다시 COM 자체의 인터페이스를 생성한 뒤, 실제로 사용한다는 것이다.

신고
Posted by 하인도


티스토리 툴바