XUL 을 사용하고 싶어요~

Posted: December 8th, 2006 | Author: weongyo | Filed under: XUL | 21 Comments »

오늘은 XUL 의 어떤 이야기를 할껀가요?

오늘은 XUL 프로그래밍을 하면서 도움을 많이 받았던 사이트들을 정리할려고 합니다.  음.. 많은 정보들이 있는데요.  결국 그 정보들이 어디에 있는지 북마크로 정리해 두면 좋을 것 같아서요.

그럼 이것부터 말씀해 주세요.  XUL 를 시작하는데, 가장 쉽게 접근할 수 있는 방법을 설명하고 있는 사이트는 어디인가요?

음.. 어디일까요..  역시 XUL 로 무엇을 할 수 있는지 바로 볼 수 있는 XUL Periodic Table 사이트가 제일 좋은 것 같아요.  Firefox 브라우저만 있으면 바로 바로 XUL 로 무엇을 할 수 있는지 볼 수 있잖아요.

그럼 Tutorial 쪽은요?

당연히 XUL Planet 의 튜토리얼이죠.  여긴 Mozilla 재단에 운영하는 건가요?  이 사이트는 항상 최신의 정보를 유지하는 것 같아요.  레퍼런스 사이트로 그만이예요.  아~ 튜토리얼이랑 레퍼런스 문서들을 다운로드 받을 수 있는 형태로도 제공하거든요.

이전에 잠시 인터넷이 안되는 곳에서 XUL 개발을 하다가 XUL Planet 에 접근할 수 없을 때가 있었는데, 그 때 정말 답답해 죽는 줄 알았어요. ㅋ

다른 사이트들은 없어요?  좀 더 끝내주는 것들요.

저도 뭐 그리 대단하게 많이 알고 있는 것이 아니기 때문에, 제가 알고 있는 사이트들만 한번 나열해 볼께요.  제 북마크에 모두 기록되어 있는 사이트들이예요.

  • XUL Programmer’s Reference
    (http://www.mozilla.org/xpfe/xulref/)
    여긴 모질라 재단에서 제공해 주는 레퍼런스 사이트예요.  근데 솔직히 저 입장에서 눈에 잘 들어오는 건 아니더군요.
  • Developing XUL-Applications with Mozilla
    처음 RDF 를 다루게 되면서 context-type 을 제대로 정해주지 않아 애먹었을 때 찾은 사이트입니다.  처음 RDF 를 다룰 때 만나게 되는 바로 그 문제!  :-D
    여러분도 같은 어려움에 빠지지 마세요. ㅋㅋ
  • Creating Applications with Mozilla
    이건 책인것 같은데, 웹에 있군요.  근데 별로 도움받은 기억이 없어요.
  • XUL tree NEW
    나중에 한번쯤은 사용하게 될 tree 를 어떻게 만들 수 있는지 자세하게 설명한 문서예요.
  • XUL Tutorial: Styling a Tree
    여러분의 Tree 를 좀 더 colorful 하게 만들 좋은 방법이 없을까요?  CSS 파일과의 조합이 제대로인 XUL 프로그래밍을 해보세요. ㅋ  각 열마다 다른 색상을 입히거나 열의 특정 부분만 색상을 바꾼다거나 여러가지 재미있는 색상입히기를 할 수 있습니다.
  • Creating a C++ XPCOM component
    생각보다 유명한 사이트인지 모르겠지만, XPCOM 을 짜고 싶은 사용자라면 꼭 한번쯤은 방문해 봤은 궁긍의 one click 예제가 있는 곳~  XPCOM 예제가 있어서 너무 행복한 곳이죠? ㅋ 근데 나중에 Javascript 로도 XPCOM Interface 를 작성할 수 있다는 사실을 알고 멍해졌다는..
  • Debugging a XULRunner Application
    역시 개발의 백미?는 디버깅.. XUL 환경에서 디버깅하는 것은 그렇게 어렵지 않지만, 역시 gdb 같이 breakpoint 걸고 싶은 기분은 왜 일까요.  좋은 디버거가 있을려나 모르겠습니다. 
  • Adding a New Protocol to Mozilla
    만약 여러분이 http:// 라는 프로토콜 대신에 blahdotcom:// 과 같은 새로운 프로토콜을 정하고 싶다면 어떻게 하실 건가요?  iTunes 의 경우 자기들 프로토콜인 items:// 사용하던데..  저도 이걸 이용해서 fileauction:// 이걸 넣었습니다. ㅋ
  • Profile folder
    만약 여러분의 XUL 프로그램이 임시 파일이나 기록 파일을 생성해야 되면 어디에 저장해야 할까요?  바로 Profile Folder 입니당~  이에 대한 자세한 정보를 볼 수 있는 곳.
  • nsIAlertService
    Firefox 의 경우, 다운로드가 완료되면 윈도우즈 혹은 리눅스 용의 경우 오른쪽 하단에서 alert 이 멋있게 뜨고 사라집니다.  바로 그 서비스를 여러분의 XUL 프로그램에서 할 수 있도록 하는 정보.
  • Using the Clipboard
    XUL 프로그램과 시스템의 클립보드와의 연동을 어떻게 하는지 알려줍니다.

위의 링크들을 보시면 의외로 XPCOM 부분이 좀 있습니다.  시스템 및 OS 와 연동되어야 하는 작업들은 대부분 XPCOM 으로 구현이 되어 있으며, Javascript 에서는 XPCOM Interface 를 통해서 접근할 수 있도록 되어 있어요.

@_@ 왜 이렇게 좀 어려운 것 같죠?  개념 잡기가 힘들어요..  그냥 튜토리얼부터 봐야 할 것 같아요.

ㅠ.ㅠ 저도 첨에 개념잡기 힘들었어요.  이젠 좀 적응이 되서 그나마 좀 나아진 거예요.  튜토리얼부터 차근차근 조금씩 보세요.  직접 XUL 프로그램이라도 간단한 것을 짜보는게 가장 중요하거든요?

전 영어 free-talking 하러 갈 시간이예요~  나중에 더 잼나는 거 많이 해 줄께요. 담에 봐요.


XUL 이 뭐예요?

Posted: December 7th, 2006 | Author: weongyo | Filed under: XUL | 1 Comment »

[항상 feedback/의견 댓글로 받습니다.  오류 사항, XUL에 관한 질문이 있을 경우, 모두모두 댓글로 남겨주세요.] 

Q. XUL 이 뭐예요? 

저도 잘 모릅니다.  조금 밖에 지식이 없으며, ‘파일경매‘라는 프로그램을 만들면서 처음 접한 언어이기도 합니다.

이게 XUL 을 설명한 한국어 버전입니다.

XUL (XML User Interface Language)은 Mozilla의 XML 기반 언어로 인터넷과 연결되거나 또는 연결되지 않은 채로 동작하는 풍부한 기능을 제공하는 크로스 플랫폼 응용프로그램을 만들 수 있게 해줍니다. 이렇게 만들어진 응용프로그램은 텍스트나 그래픽, 배치 등을 쉽게 바꿀 수 있기 때문에 여러가지 요구에 맞게 즉시 상품화나 지역화 해 내어놓을 수 있습니다. 다이나믹 HTML (DHTML)에 친숙한 웹 개발자들은 XUL을 금방 배워서 바로 응용프로그램을 만들어 볼 수 있을 것입니다.

이해가 되나요? 단순하게 말하면 XML 로 UI 를 만들 수 있다는 말인 것 같네요.  대부분 HTML 코드를 읽을 줄 알고 쓸수 있는 사람이면 쉽게 XUL 로 프로그래밍을 할 수 있는 것 같습니다.

Q. 그럼 UI 만 XUL 로 작성하고 안에 내부 루틴은요? Visual Basic 으로 내부 루틴을 작성하고 UI 만 XUL 로 하면 안될까요?

제가 조사한 바에 의하면 XUL 로 UI 로 작성하였다면 Javascript 로 내부 루틴을 작성하면 되었습니다.

Q. 그럼 모든 루틴을 Javascript 로 작성하란 말입니까?  우리에겐 속도가 생명입니다.  제일 빠른 C 나 C++ 로 작성하고 싶은데..

속도가 생명이라구요? 근데 왜 XUL 로 작성하세요?  다른 솔루션들이 많을텐데.. 꼭 XUL 작성이 필요하다면 걱정하지 마세요.  Javascript 의 친구 XPCOM 이 있거든요.  XPCOM 은 나중에 얘기되겠지만 채워주지 못했던 2% 를 보충해 주지 않을까 생각이 되네요.

음.. 그럼 대충 프로그램은 어떻게 작성할지 윤곽이 나오는군요.  UI 는 XUL 로 하고 내부 루틴은 Javascript 와 XPCOM 으로 한다라..  괜찮은 조합인지는 좀 더 살펴봐야 하겠어요.  근데 뭐가 대단하길래 XUL 을 써서 프로그래밍하라고 하는지 이해를 할 수 가 없군요.

그러게요.  저도 처음엔 XUL 을 가지고 어떻게 프로그래밍할지도 몰랐고 뭐 부터 시작해야 할지 몰랐는데요.   저에게 가장 큰 문제는 UI 였어요.  비록 wxWindows 나 gtk, 매우 기본적인 윈도우즈 UI 는 할 수 있었는데요.. 왜 제 머리 속에서는 그렇게 복잡하던지.. ㅋㅋ

아! 저에게 제일 중요한 것은 label 이나 button 같은 것들은 1px 단위로 정교하게 조절하는 것이였어요.

근데 XUL 같은 경우는 HTML 코드에서 CSS 로 margin 주고 padding 주고 더군다나 *-top, *-left, *-right, *-bottom 같은 문법으로 정교하게 할 수 있으니까, 지금 가진 지식가지고 나름대로 쉽게 UI 를 할 수 있을 것 같더라구요.

그리고 Firefox 내 확장 모듈로 작성할 수 있고, standalone 형식으로 할려면 XULRunner 를 사용해서 배포할 수 있다고 장점으로 말하길래, 먼가 대단한 줄 알고 사용해 보게 되었죠. 

그리고 XULRunner 가 윈도우즈용, 맥용, 리눅스용 전부 지원한다고 하길래, 우와! XUL 로 한번 만들어 놓으면 모든 플랫폼에서 다 쓸 수 있는거야? 라고 생각했죠. -_-;

왜 이리 말투가 썩소를 지으며 말하는 것 같죠?  뭐 별로 안좋은 기억이라도 있나봐요?

ㅡ.ㅡ;  말투가 그래요?  흠흠.. 뭐 원래 제 말투가 썩소가 주가 되기 때문에 크게 마음 상하지 마세요.  좋지 않은 기억이라…  생각을 좀 해봐야 알겠지만..

근데 저의 경우, XULRunner 를 이용해서 standalone 형식으로 배포를 해봤기 때문에 다른 확장팩 배포가 아니라 그냥 안좋은 기억 말해도 돼요?

음.. 배포판 크기가 넘 커요.  최소 배포판 크기가 6M (lzma? 로 압축을 극한으로 해서) 정도 되요.  이게 생각보다 걸리더라구요. ㅋ  어떻게 alert 하나 뛰우고 끝내는 프로그램 배포판 크기가 6M 씩이나 해야 하는 거냐구요.  ㅋ 물론 XUL 프레임워크이 있어야 하니까, 어쩔 수 없이 같이 배포해야 하니 당연히 용량이 커지는 건 마땅한데 말이죠.  제 생각에서는 윈도우즈 비스타에 built-in 되서 마이크로소프트에서 배포해 줬으면 좋겠어요.  아니면 XP 서비스팩에 넣어서 배포해 주면 빌에게 유혹의 키스를 보낼텐데..

음.. 다른 건.. XUL 어플리케이션을 만들면서 “그냥 차라리 XUL 프로그램으로 만들지 말고 웹 어플리케이션으로 만들 걸 그랬어“라고 한번쯤 생각해 봤다는 거예요.  XUL 프로그램도 HTTP 서버랑 통신할 때 Ajax 처럼 통신을 하기 때문에 (물론 다른 방법 많지만..), 그냥 웹 어플리케이션으로 만드는 거랑 XUL 랑 만드는 거랑 뭐가 이점인지 헷갈릴 때가 있더군요.  웹 어플리케이션으로 XUL 인터페이스를 대체할 경우, 사용자는 배포판을 설치할 필요도 없을꺼고, 웹 브라우저 성격도 타지 않을 꺼고, 오히려 이득인데 말이죠.

그럼 XUL 어플리케이션에는 XUL 만 할 수 있는 기능을 중점으로 최소화해서 배포하면 되잖아요?

음.. 좋은 생각이지만 그것도 생각해 봤죠.  XULRunner 를 통해서 standalone 형식으로 실행할 경우, local 자원을 모두 access 할 수 있기 때문에 많은 일을 할 수 있었는데요, 문제는 그럼 그냥 윈도우즈 UI 로 짜지 구지 XUL 로 짤 필요가 있을까?  배포판도 6M 가 넘고, 리눅스용 맥용은 10M 하는데..

크로스 플랫폼이라고 하지만 XPCOM 단에서는 결국 크로스 플랫폼 생각하면서 C/C++ 코딩해야 하니..

그럼 뭐가 장점이지?  헷갈리더라구요.

아닛! 이사람이.  XUL 을 써라는 거야 말라는 거야?

지금 머리 속의 결론은 써도 그만, 안써도 그만.  단 firefox 확장팩은 저도 몰라요.

간단한 UI + 간단한 내부 루틴이 필요하다면 해당 플랫폼 언어를 사용하는 것을 추천하고, 복잡한 UI + 복잡한 내부 루틴을 쓴다고 해도 해당 플랫폼 언어를 추천합니다.

크로스 플랫폼을 지향하며, 윈도우즈용, 맥용, 리눅스용 모두 같은 look & feel 을 원한다면 잠시 XUL 사용을 권해드리지만 원츄!하지는 않아요.

어차피 XPCOM 단에서는 모두 크로스 플랫폼으로 코딩을 하는게 필수~

새로운 UI 언어에 대한 경험을 원한다면 원츄!  XPCOM 을 알고 배우고 사용해 보고 싶다면 원츄!

[항상 feedback/의견 댓글로 받습니다.  오류 사항, XUL에 관한 질문이 있을 경우, 모두모두 댓글로 남겨주세요.]