리눅스에서의 컴포넌트 소프트웨어 kom/openparts

27
리리리리리리 리리리리 리리리리리 KOM/OpenParts 리리리 ([email protected]) 리리 리리리 http://www.mizi.co.kr

Upload: imelda

Post on 05-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts. 서영진( [email protected]) 미지 리서치 http://www.mizi.co.kr. 미지 리서치의 목표 데스크탑에서 사용할 수 있는 리눅스. 어플리케이션 개발에 주력 hwp/x, hwpview, hwp.cgi hanIM HTM 한글 설치 Qt/KDE 한글화 노력. 컴포넌트 SW 의 정의 & 목표. 엑셀의 차트를 워드에 복사하는 기술 Office Suite 의 토대 인터넷의 기반 기술 ( MS 의 ActiveX) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

리눅스에서의 컴포넌트 소프트웨어KOM/OpenParts

서영진 ([email protected])미지 리서치

http://www.mizi.co.kr

Page 2: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

미지 리서치의 목표 데스크탑에서 사용할 수 있는 리눅스

어플리케이션 개발에 주력•hwp/x, hwpview, hwp.cgi•hanIM•HTM•한글 설치•Qt/KDE 한글화 노력

Page 3: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

3

컴포넌트 SW 의 정의 & 목표

• 엑셀의 차트를 워드에 복사하는 기술• Office Suite 의 토대• 인터넷의 기반 기술 (MS 의 ActiveX)

• 여러 회사 , 학교 , 연구소의 자원을 공유하기 위한 공통의 방법론

• 데스크탑 OS 에서 시장 점유율 2000 년 10%, 장기적 25%

Page 4: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

4

왜 데스크탑인가

• 충분한 경제적 가치• KDE, Gnome 등 기술적 토대 마련• 레퍼런스 사이트만 있다면 승산• 당위성 : 상대는 MicroSoft

데스크탑을 공략하지 않는다면 MS 는 Netscape 을 공격한 것과 같이 PC 시장의 독점적 지위를 이용할 것이다 .

Page 5: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

5

Component SW 의 History

• 1990 Microsoft DDE 기반의 OLE1• 1993 Microsoft COM 기반의 OLE2• 1994 OCX• OCX 의 인터넷화 ActiveX• 1993 Apple, IBM, Novell, Oracle. Taligent,

SunSoft, WordPerfect OpenDoc• Taligent CommonPoint• NeXT PDO

Page 6: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

6

현재의 상황

• KDE 와 Gnome - 충분한 어플리케이션• 공통의 Look & Feel

• Gnome : Object Model design stage

• KDE : KOM/OpenParts 기반의 KOffice

현재의 구현 상태는 Microsoft DCOM/ActiveX IBM/Apple SOM/OpenDoc 의 중간 정도

Page 7: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

7

KOffice (1)

KOM/OpenParts 기반의 office suite

Page 8: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

8

KOffice (2)

• SpreadSheet

• Presentation

• Charts

• Image viewer

• Korganizer

• Kmail

• Kword

Page 9: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

9

KOffice 의 평가 (3)

• 개별 프로그램의 완성도 미흡• Gnome 등 다른 API 와의 자료 호환

미흡• Office 슈트의 큰 틀을 잡고 실제로

구현하였다는 점 높이 평가• 다른 Office Suite 의 교본

Page 10: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

10

KDE KOM/OpenParts

• Document Layout Service

• Structured Storage

• Scripting and Automation

• Uniform Data Transfer

• CORBA 에 기초하고 있다 .

• 실제로 동작한다

Page 11: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

11

Component Selection Process

• Word processor 가 GIF 그림을 삽입하려 시도• “image/gif” 를 지원하는 컴포넌트 요청• 사용자 설정 전달• 조건에 맞는 서버 리스트 전달 받음• 서버를 실행하고 component 생성

• 메뉴 , 툴바 등 GUI 변경• XML 등 자료 교환

Page 12: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

12

Server & Factories

• Server– implementation repository 에 등록– Unix process– factory set 제공

• Factories– simple CORBA 개체– 하나의 Factory 는 하나의 개체를 생성한다 .

Page 13: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

13

KOM 의 사건 처리

• Filter 1: Recording

• Filter 2: Absorbing, modifying

• Filter 2: Alternative implementation

Receiver

Filter 1

Filter 2

Filter 3

Sender

Page 14: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

14

Signals & Slot

• Smart replacement of callback

• auto connection closing

• Type save

Sender 1

Sender 2

Receiver 1

Receiver 2

Page 15: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

15

OpenParts - Control

• Component 와 X11 윈도우 연결• other process or shared library

• parent window 에 삽임 (swallow)

• Control-Frame 이 존재해서 native toolkit을 사용하기 쉽게

• Mixing different toolkit

• MS ActiveX 에 해당

Page 16: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

16

Parts

• Toolbar, Menubar, Statusbar 등의 공유되는 리소스

• 특수한 Toplevel 윈도우 : Shells

• Shell 은 File 메뉴와 Toolbar 를 가진다 .

• 활성화된 Part 가 리소스 접근 가능• Part 는 다른 Part 에 포함 또는 삽입될 수

있다 .

Page 17: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

17

Serialization

• XML

• Mime-Multi-Part

• White Box

• OLE 의 Persistent Storage 는 해석 불가

• Black Box

Mime Header

Text Doc(XML)

Table(XML)

Image(Base64)

Page 18: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

18

KOM/OP 의 구성

• CORBA– MICO (Corba 2.2 compliant) 사용

• KOM– CORBA 의 기능 보충 (Event 처리등 )

• OpenParts– User Interface 부분 ( 메뉴 , 툴바 등등 )

Page 19: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

19

클래스

• KoApplication : KApplication 에 해당하는 클래스

• KoMainWindow : KTopLevelWidget 에 해당하는 클래스

Page 20: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

20

IDL precompiler

View_skel Doc_skel KoViewIf

View

KoDocument

Document

KoM

ainWindo

w

상속입력 / 생성포인터

Shell

Widget

KoApplication

프로그램 구성

Page 21: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

21

Kimage.idlmodule KImage{

interface View : KOffice::View

{

// Edit

slot void editEditImage();

slot void editImportImage();

slot void editExportImage();

};

interface Document : KOffice::Document, KOffice::Print

{

};

interface DocumentFactory : KOffice::DocumentFactory

{

};

};

Page 22: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

22

class KImageView : public QWidget,

virtual public KoViewIf,

virtual public KImage::View_skel

{

Q_OBJECT

public:

KImageView( QWidget *_parent, const char *_name, KImageDoc *_doc );

~KImageView();

KImageDoc* doc() { return m_pDoc; } // IDL

void editEditImage();

void editImportImage();

void editExportImage();

public slots:

// Document signals

void slotUpdateView();

Kimage_view.h

Page 23: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

23

protected:

// C++

virtual void init();

virtual bool event(const char* _event, const CORBA::Any& _value);

virtual bool mappingCreateMenubar(OpenPartsUI::MenuBar_ptr _menubar);

virtual bool mappingCreateToolbar(OpenPartsUI::ToolBarFactory_ptr _factory);

... // edit menu

OpenPartsUI::Menu_var m_vMenuEdit;

CORBA::Long m_idMenuEdit_Edit;

CORBA::Long m_idMenuEdit_Import;

CORBA::Long m_idMenuEdit_Export;

KImageDoc *m_pDoc;

};

Kimage_view.h (cont’d)

Page 24: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

24

한국에서 사용하려면 (1)

• CORBA– 이론적인 문제는 없다 .– MICO ORB– KOM, OpenParts

• XML– 이론적인 문제 없다 .– 누구도 해보지 않았다 .

Page 25: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

25

한국에서 사용하려면 (2)

• Qt 한글화 – 현재 진행 중– 인력 부족으로 어려움

• KDE 라이브러리• 글꼴 및 Metafile 의 한글화

– 요원하다

Page 26: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

26

한국에서 사용하려면 (3)

• 인쇄– Ghostscipt 에서 가능– 글꼴 확보가 문제

• 기타 많은 유틸리티– Spell 검사– 로컬 검색 엔진– 터미널 , 메일 리더 , ….

Page 27: 리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts

27

결론

• 성공할 것인가– Linux 에 이은 또 하나의 기적

• Unix 계열 운영 체제에서의 혁명적 시도– 동작하는 예제로서 의의 있음

• 성공한다면– 획기적 경쟁력– Desktop OS 점유율 25%