[홈으로] [게시판]

모질라로 어플리케이션 만들기

http://books.mozdev.org/html/index.html

번역을 하고 싶지만 분량이 너무 많기 때문에 조금씩 읽으면서 핵심만 정리해 보려고 합니다. yongjoo


제가 이 문서의 10장 전체를 번역해놓은게 있긴 합니다. 말이 번역이지 번역기보다 못하여 공개는 어렵겠지만(사서 욕먹기싫어서) 나름대로 정리는 해보겠습니다. 언제가 될지 장담은 못드리겠습니다만.. 개인적으로 이 문서보다는 Rapid Application Development with Mozilla 이 문서의 구성과 내용이 마음에 듭니다. 링크는 http://www.mozdev.org/docs/ 이고 사이트 맨 하단에 PDF형태로 다운로드 받을수 있습니다. 이런내용을 이곳에 함부로 적은거라면 대단히 죄송하다는 말씀을 드리고 싶습니다. --ryugm

DeleteMe 정리해서 올려주시면 고맙죠... 그런데 DocBook에는 관심 없으신지요? --류광

XUL Tutorial을 번역하고 계시는 분들이 있습니다. 주소는 http://softwant.com/cgi-bin/kimsboard/bbs_xul.php3?table=xul 입니다. --류광


차례 [+]

Preface

모질라는 단지 웹 브라우저가 아닙니다. 모질라는 크로스-플랫폼 프레임워크입니다. 이를 위해 Cascading Style Sheet(CSS), XML, XML-based User-interface Language(XUL), eXtensivle Binding Language(XBL), Resource Description Framework(RDF)와 같은 표준을 사용합니다.

모질라의 렌더링 엔진인 게코(Gecko)는 이 프레임워크의 한 부분입니다. 또한 모질라의 컴포넌트 모델인 XPConnect와 XPCOM 같은 다른 기술들도 이에 포함됩니다. 모질라 개발 프레임워크는 자바스크립트, C++, C, Python, Interface Definition Language(IDL) 같은 프로그래밍 언어를 또한 사용합니다.

모질라 프레임워크는 모질라 기반 브라우저(네스케이프 6.x와7.x), Galeon과 Chamino, 그리고 채팅클라이언트(?ChatZilla?JabberZilla)를 만드는데 쓰입니다.

개발자들은 모질라를 또한 개발툴 만들기, 브라우저 강화, 게임만들기, 다른 타입의 add-on과 어플리케이션 만들기에 씁니다.

이책은 어플리케이션이 Mozilla를 이용해서 어떻게 만들어 지는지 설명하고, Mozilla의 강력한 크로스 플랫폼 개발자 프레임워크를 이용해서 자신만의 어플리케이션을 만드는것을 설명하는 step-by-step 정보를 제공합니다. 이책은 모질라의 개발가능성을 증명하는 다른 어플리케이션에 대한 예제도 포함합니다.

모질라의 배경

네스케이프 커뮤니케이션 회사가 설립 됐을때 NCSA의 Mosaic browser보다 나은 버전을 만들기로 계획이 되었었다. 처음 어플리케이션은 일반유저들이 인터넷 접속을 하는 것이였다(?).

새로운 어플리케이션은 Mosaic Killer가 될거 같았다. 그때, Mozilla가 Mozaic Killer와 네스케이프사의 브라우저의 코드 워드의 약어가 되었다.

Mozilla는 네스케이프사의 한 제품보다 더 크게 되었다. 1998년 3월 31일, http://www.mozilla.org/는 Netscape사의 다음 세대의 Communicator 5.0브라우저가 나오는 곳(? 또는 발표되는곳?)으로 소개 되었다. 그때, Mozilla는 오픈소스 프로젝트가 되었고 Netscape사와 분리되어 다른 운명을 걷게 되었다.

네스케이프사가 그들의 Communicator코드를 오픈소스 공동체에 제공해주었을때, 이일은 전에는 일어나지 않았던 뭔가를 하였다. 다른 큰 소프트웨어 회사는 비밀 제품에 소스코드를 주지 않았고 그때 소프트웨어 회사의 많은 사람들과 기자들이 그 결정이 좋은것인지 아닌지 토론을 하였다. 다른 많은 회사들은 네스케이프사를 따라서 http://www.openoffice.orghttp://netbeans.org/를 포함하는 몇개의 선 마이크로소프트사의 스폰서의 프로젝트들을 포함해서 많은 프로젝트들을 오픈소스커뮤니티에 제공해 주었다.

애플은 새 운영체제의 코어(중심) 부분을 오픈소스프로젝트인 Darwin(http://developer.apple.com/darwin/)으로 하게 된다. Mozilla소스코드가 공개된지 1년후, 네스케이프사의 높은 관리자, Mike Homer가 "Mozilla는 네스케이프보다 큽니다, 그리고 그것은 계획된것이었습니다. Mozilla는 하나의 상업적인 개체에 의해서 스폰서된 협동 프로젝트입니다. mozilla.org를 지원하는 몇몇의 사람들은 네스케이프에 고용된사람들입니다, 그리고 공개된 코드는 전에 Netscape사가 소유했던겁니다. 그러나, 코드 베이스가 언젠가는 달라질거라는게 사실입니다." 라고 말했다.

Mozilla 프로젝트의 설립 때부터, Netscape사 밖의 많은 사람들이 그 공동체에 들어갔다, 네스케이프(지금은 AOL)에 고용된자들이 아직 그들의 개발상황을 알리고 있었지만 말이다. 모질라 커뮤니티는 mozilla.org에서 자라고 있다. 다른 커뮤니티 리소스는 http://www.mozillazine.org/(뉴스 제공), http://www.mozdev.org(모질라 어플리케이션들을 위한 프로젝트 호스팅 사이트)가 있다.

IBM, ?RedHat, ?ActiveState, Sun Microsystems를 포함함 몇몇 회사는 Mozilla 커뮤니티를 지원해 왔다.

예를 들어, 레드햇은 리눅스 배포판에 있는 소스코드가 공개되지않는 Netscape 4.x대신 있는 Mozilla를 지원해 주고 싶어서 지원해 주었고. AOL도 또한 AOL과 ?CompuServ의 클라이언트로서의 모질라를 시험해 보았다.

왜냐하면 모든 Mozilla의 소스코드는 관심 있는 사람 모두가 볼수 있기 때문이다, 커뮤니티는 늘어가는 제안, 버그 리포트, 패치, 그리고 새로운 개발자들로부터 이득을 얻고 있다.

처음 Mozilla가 오픈소스가 됐을때 관련된 사람들을 따라, 커뮤니티로 들어간 새로운 사람들과 회사들은 Mozilla가 방향을 잡도록 도와 주었다.

Mozilla as Platform

모질라 프로젝트는 1998년 3월에 넷스케이프 커뮤니케이터 4.x버전을 계승하기 위한 개발 작업을 목표로 시작되었습니다. 오늘날 모질라는 어플리케이션을 제작하기 위한 하나의 플랫폼으로 사용되고 있습니다. 이런 어플리케이션들은 로컬에 인스톨해 사용하거나 혹은 인터넷을 통해 원격으로 실행시킬 수도 있습니다.

원래의 개발 목표는 웹브라우저였지만, 당시에도 현재와 같은 크로스-플랫폼 개발 프레임워크로서의 모습이 그렇게 생소한 것은 아니었습니다. 웹브라우저란 것은 애플리케이션 개발 프레임워크와는 거리가 멀어 보이지만, 사실 그 자체입니다. 브라우저는 어떤 종류의 컴퓨터를 사용해서도 "야후! 메일"에서 메일을 읽고 쓸 수 있게 해주고 "아마존"에서 책을 주문하고 "eBay"에서 경매에 참여할 수 있게 해줍니다.

모질라는 브라우저의 이런 아이디어를 확장해, 웹사이트를 만드는 데 사용되는 CSS와 ?JavaScript 같은 기술들을 사용해 애플리케이션을 만들 수 있게 해줍니다. 여기서는 웹 기술과 모질라 기술의 비교하고, 어떻게 모질라 프로젝트가 크로스-플랫폼 어플리케이선을 위한 플랫폼으로 방향을 잡게 되었는지 이야기하겠습니다.

Visualizing Mozilla's Front End

[epigraph]

태초에, 3가지 프론트엔드가 있었다: Mac, Windows와 Unix. 이들을 유지하려면 각각 개발 인력이 따로 필요했다. 새로운 기능을 넣으려면(버튼 한개라도) 세무리 엔지니어들이 하루 이상(자주 한주 이상) 꼬박 개삽질을 했다. 이짓엔 변화가 있어야 했다.

이 인용문은 mozilla.org에 올라왔었던 것으로, 넷스케이프 4.x대의 브라우저들이 각각 다른 플랫폼 위에서도 거의 비슷한 외양을 갖고 있었지만, 그 인터페이스 코드를 유지하기 위해선 각각 다른 무리의 엔지니어들을 필요로 했다는 점을 이야기하고 있습니다.

자사의 어플리케이션이 다양한 시스템에서 널리 활용되기는 바라는 어떤 기업에게, 특정 플랫폼에 국한된 코드를 만드는 일은 엄청난 시간 낭비가 됩니다. XPFE, 즉 모질라의 크로스(X)-플랫폼(P) 프론트(F)엔드(E)는 이런 문제점을 해결하기 위해 설계되었습니다. 개발자는 단지 하나의 인터페이스만 만들면되고, 이는 어떤 운영체제 위에서도 동작합니다.

궁극의 이식성

아마도 개발자에게 모질라가 주는 가장 큰 이점이라면, 모질라 기반의 어플리케이션이 크로스-플랫폼이라는 점일 것입니다. 이것은 프로그램들이 Windows에서든 Unix에서든 Mac OS에서든 똑같이 동작한다는 뜻입니다. 이렇게 어플리케이션들이 플랫폼이 상관없이 동작하는 일이 가능한 것은, 모질라가 운영체제와 어플리케이션 사이에서 통역의 역할을 해주기 때문입니다.

Getting Started

Basic XUL Concept

XUL은 XML 문법을 따르는 텍스트 파일입니다. 아래는 간단한 예와 모질라로 읽어들인 모습입니다.

<?xml version="1.0"?>
<!-- Sample XUL file -->
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box align="center">
  <button label="hello xFly" onclick="alert('Hello World');" />
</box>
</window>
[screenshot]

Basic XUL Layout

XUL의 root element는 <window>입니다.(경우에 따라 dialog와 page도 root element로 쓸 수 있음) HTML의 경우에 root element는 한 페이지를 의미하지만 XUL에 있어서 root element는 어플리케이션 인터페이스의 한 조각일 뿐 웹 페이지가 아닙니다.

Using XUL Windows

<?xml version="1.0"?>
<!DOCTYPE window>
<window
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
</window>

대개의 어플리케이션들은 여러개의 윈도우와 대화 상자를 필요로 하는데, 이것은 window 내에서 page와 dialog를 사용하면 됩니다. page와 dialog는 window에서 파생된 것이며 각각을 root element로서 사용할 수도 있습니다.

프로그램이 복잡해질수록 여러개의 윈도우를 통제해야할 일이 생기는데, 각각의 window는 type 속성으로 식별하면 됩니다. 예를 들어 toOpenWindowByType( ) 같은 funtion으로 특정한 윈도우를 열 수 있습니다.

Window features

window는 또한 id 속성을 가지는데, 이 속성은 window system을 구동하는 데 필수적인 것은 아닙니다. 그러나 각 window가 고유한 id를 가지면 그로부터 node를 쉽게 만들 수 있기 때문에 해당 스크립트를 검색하기에 유리합니다.(예를 들어 getElementByID 같은 DOM method에서 유용함) 다음은 id 속성을 사용한 예입니다

<window
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    id="xflyMain">

onload와 onunload 이벤트 핸들러가 필수적인데, 윈도우에 어떤 입력을 넘겨주거나 환경에 따라 윈도우 내용을 변경해야 할 때 필요합니다.

<window
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    id="xfly-main"
    onload="startUp( )"
    onunload="shutdown( )"
    onclose="onClose( )">

onclose 이벤트 핸들러는 unload 보다 먼저 동작하기 때문에 창이 닫히기 전에 처리해야 할 작업을 실행시킬 수 있습니다. 창이 닫히지 않도록 하려면 onclose가 false를 리턴하게 합니다.

Window behavior

모질라는 자바스크립트 표준 function인 window.open을 지원하며 이 기능을 확장시켜 어플리케이션 개발에 사용합니다. 또한 window.openDialog을 제공하는데 새로운 XUL 창을 띄우기 위해서는 이것을 더 많이 사용합니다.

window.open의 사용법은 다음과 같습니다.

 window.open (url, name, features);


window.openDialog는 기능을 더 확장하여 새로운 argument를 넘겨 줄 수 있습니다. 확장된 argument는 없어도 되고, 또한 필요한 수만큼 계속 덧붙여 사용할 수 있습니다.

window.openDialog (url, type, features, argument1, argument2);
제일 위로
최종 수정 일시: 05월 30일(2006년) 05:33 PM 편집 | 정보 | 차이 | 비슷한페이지 | DebugInfo
유용한 페이지들: 분류 분류 | 자유로운 연습장 SandBox | 무작위 페이지들 RandomPages | 인기있는 페이지들 MostPopular