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