270 likes | 393 Views
리눅스에서의 컴포넌트 소프트웨어 KOM/OpenParts. 서영진( yjseo@mizi.co.kr) 미지 리서치 http://www.mizi.co.kr. 미지 리서치의 목표 데스크탑에서 사용할 수 있는 리눅스. 어플리케이션 개발에 주력 hwp/x, hwpview, hwp.cgi hanIM HTM 한글 설치 Qt/KDE 한글화 노력. 컴포넌트 SW 의 정의 & 목표. 엑셀의 차트를 워드에 복사하는 기술 Office Suite 의 토대 인터넷의 기반 기술 ( MS 의 ActiveX)
E N D
리눅스에서의 컴포넌트 소프트웨어KOM/OpenParts 서영진(yjseo@mizi.co.kr) 미지 리서치 http://www.mizi.co.kr
미지 리서치의 목표데스크탑에서 사용할 수 있는 리눅스 어플리케이션 개발에 주력 hwp/x, hwpview, hwp.cgi hanIM HTM 한글 설치 Qt/KDE 한글화 노력
컴포넌트 SW의 정의 & 목표 • 엑셀의 차트를 워드에 복사하는 기술 • Office Suite의 토대 • 인터넷의 기반 기술 (MS의 ActiveX) • 여러 회사 , 학교, 연구소의 자원을 공유하기 위한 공통의 방법론 • 데스크탑 OS에서 시장 점유율 2000년 10%, 장기적 25%
왜 데스크탑인가 • 충분한 경제적 가치 • KDE, Gnome 등 기술적 토대 마련 • 레퍼런스 사이트만 있다면 승산 • 당위성 : 상대는 MicroSoft 데스크탑을 공략하지 않는다면 MS는 Netscape을 공격한 것과 같이 PC 시장의 독점적 지위를 이용할 것이다.
Component SW의 History • 1990 Microsoft DDE 기반의 OLE1 • 1993 Microsoft COM 기반의 OLE2 • 1994 OCX • OCX의 인터넷화 ActiveX • 1993 Apple, IBM, Novell, Oracle. Taligent, SunSoft, WordPerfect OpenDoc • TaligentCommonPoint • NeXT PDO
현재의 상황 • KDE와 Gnome - 충분한 어플리케이션 • 공통의 Look & Feel • Gnome : Object Model design stage • KDE : KOM/OpenParts 기반의 KOffice 현재의 구현 상태는 Microsoft DCOM/ActiveXIBM/Apple SOM/OpenDoc의 중간 정도
KOffice (1) KOM/OpenParts 기반의 office suite
KOffice (2) • SpreadSheet • Presentation • Charts • Image viewer • Korganizer • Kmail • Kword
KOffice의 평가 (3) • 개별 프로그램의 완성도 미흡 • Gnome 등 다른 API와의 자료 호환 미흡 • Office 슈트의 큰 틀을 잡고 실제로 구현하였다는 점 높이 평가 • 다른 Office Suite의 교본
KDE KOM/OpenParts • Document Layout Service • Structured Storage • Scripting and Automation • Uniform Data Transfer • CORBA에 기초하고 있다. • 실제로 동작한다
Word processor가 GIF 그림을 삽입하려 시도 “image/gif”를 지원하는 컴포넌트 요청 사용자 설정 전달 조건에 맞는 서버 리스트 전달 받음 서버를 실행하고 component 생성 메뉴, 툴바 등 GUI 변경 XML 등 자료 교환 Component Selection Process
Server & Factories • Server • implementation repository에 등록 • Unix process • factory set 제공 • Factories • simple CORBA 개체 • 하나의 Factory는 하나의 개체를 생성한다.
KOM의 사건 처리 Filter 1 • Filter 1: Recording • Filter 2: Absorbing, modifying • Filter 2: Alternative implementation Receiver Sender Filter 2 Filter 3
Signals & Slot Sender 1 Receiver 1 • Smart replacement of callback • auto connection closing • Type save Sender 2 Receiver 2
OpenParts - Control • Component와 X11 윈도우 연결 • other process or shared library • parent window에 삽임(swallow) • Control-Frame이 존재해서 native toolkit을 사용하기 쉽게 • Mixing different toolkit • MS ActiveX에 해당
Parts • Toolbar, Menubar, Statusbar 등의 공유되는 리소스 • 특수한 Toplevel 윈도우: Shells • Shell은 File 메뉴와 Toolbar를 가진다. • 활성화된 Part가 리소스 접근 가능 • Part는 다른 Part에 포함 또는 삽입될 수 있다.
Serialization • XML • Mime-Multi-Part • White Box • OLE의 Persistent Storage는 해석 불가 • Black Box Mime Header Text Doc(XML) Table(XML) Image(Base64)
KOM/OP 의 구성 • CORBA • MICO (Corba 2.2 compliant) 사용 • KOM • CORBA 의 기능 보충(Event 처리등) • OpenParts • User Interface 부분 (메뉴, 툴바 등등)
클래스 • KoApplication : KApplication 에 해당하는 클래스 • KoMainWindow : KTopLevelWidget 에 해당하는 클래스
프로그램 구성 precompiler IDL KoDocument View_skel Doc_skel KoViewIf KoMainWindow Document View Shell Widget 상속 입력/생성 KoApplication 포인터
Kimage.idl module 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 { }; };
Kimage_view.h 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 (cont’d) 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; };
한국에서 사용하려면(1) • CORBA • 이론적인 문제는 없다. • MICO ORB • KOM, OpenParts • XML • 이론적인 문제 없다. • 누구도 해보지 않았다.
한국에서 사용하려면(2) • Qt 한글화 • 현재 진행 중 • 인력 부족으로 어려움 • KDE 라이브러리 • 글꼴 및 Metafile의 한글화 • 요원하다
한국에서 사용하려면(3) • 인쇄 • Ghostscipt에서 가능 • 글꼴 확보가 문제 • 기타 많은 유틸리티 • Spell 검사 • 로컬 검색 엔진 • 터미널, 메일 리더, ….
결론 • 성공할 것인가 • Linux에 이은 또 하나의 기적 • Unix 계열 운영 체제에서의 혁명적 시도 • 동작하는 예제로서 의의 있음 • 성공한다면 • 획기적 경쟁력 • Desktop OS 점유율 25%