Neozest입니다.

개발자에게 많은 지적 자극을 주는 부분은 바로 다른 사람의 코드를 읽는 순간이 아닐까 생각됩니다. 그 사람이 자신보다 실력이 뛰어나다면 가슴에서 우러러 나오는 존경심 + 더 공부해야겠다는 열정이 나올 것이고, 그 사람이 못하다면 자신이 배운 지식을 동원해서 다시 한번 정리할 수 있는 기회가 됩니다.

어제는 구글이 만든 오픈소스 브라우저인 크롬이 베타를 떼고 정식버전으로 출시되었습니다. (먼저 구글 크롬팀에 축하를...)
브라우저는 아주 많은 모듈들로 이루어져 있기 때문에 쉽게 전체적인 코드를 한눈에 보기는
불편하죠. 사실 웹킷코드를 리뷰한 적이 있는 저로써는 웹킷이외에 뭐가 사용되었을까가 더 궁금하기도 했죠. 그래서 구글 크롬에 사용된 third-party library들과 그들의 역할이 뭔지를 살펴보도록 하지요.(이미 구글과 같은 큰 조직에서 충분히 안정성이나 견고성을 검증했기 때문에 이런 모듈은 국내에서도 목적에 맞다면 사용해 보는 것도 좋겠죠.)


1. Google BreakPad (http://code.google.com/p/google-breakpad/)
프로그램을 개발하다보면 어쩔 수 없이 crash가 발생하게 됩니다. 그런데 이 crash에 대한 정보를 최대한 수집하여 분석할 수 있다면 해당 crash가 발생한 정황을 알 수 있겠죠. 마치 윈도우의 Dr.watson처럼 말이죠. 구글에서 만든 BreakPad는 멀티플랫폼에서 동작하는 crash report 시스템입니다. 이 글을 적고 있는 현재 Revision이 304이군요.

2. Google URL (http://code.google.com/p/google-url/)
크롬이 브라우저인 관계로 URL을 다룰 일이 많죠. 그 부분을 처리하는 작은 모듈입니다. 그런데 개인적으로는 이런 모듈이 이미 많은 언어에 foundation library에 포함되는 추세이기 때문에 코드 읽기 차원에서 볼 수는 있겠지만, 유용성은 떨어지지 않나 생각되네요.

3. ICU38(http://www.icu-project.org/)
유니코드는 이제는 익숙한 용어가 되었습니다. VC 최신 버전에서는 프로젝트를 생성할 때 기본으로 유니코드 기반으로 만들어지지요. 그렇지만 아직까지도 유닉스나 기존 레거시코드들에서 유니코드를 사용하기 위해서는 코드 페이지 변환등의 작업을 담당할 라이브러리가 필요하지요. 이 역할을 맡고 있는 것이 IBM에서 만든 ICU38입니다. (코드 변환 이외에도 정규표현식이나 형식화(formatting) 등의 작업을 제공하는군요.)


흠. 겨우 3개를 봤을 뿐인데...시간이 많이 걸리는군요.
나머지는 계속해서 다음 포스트에 정리해 보겠습니다.

눈큰아이입니다.

소프트웨어를 개발하다보면 최종적으로 빌드라는 과정을 거친후 실행모듈들이 나오게 되고,
이러한 실행모듈들이 정상적으로 동작할 수 있도록 부가 파일들을 묶어서 설치함으로써 사용자는 소프트웨어의 가치를 누리게 됩니다.

결국 소프트웨어의 가치는 존재하는 것이 아니라 설치해서 사용해야 하는 것이지요.
특히 설치과정과 관련하여 늘 언급되는 것은 바로 "사용자에게 첫경험은 바로 설치 UI라는 점"이죠. 그만큼 첫인상을 심는 가장 중요한 요소중의 하나이기도 하지요.

국내에서도 개발측면의 빌드 자동화는 많이 논의되는데, 패키징(배포) 자동화는 아직 논의가 별로 없는것 같습니다. 정확히 말하자면 아직까지는 중요성에 대한 인식이 낮고, 이슈화가 안되는 것이죠.

그런데 개발현실을 살펴보면 국내 대다수 소프트웨어들이 인스톨쉴드라는 특정 제품으로 패키징이 되는데, 이 프로그램의 가격이 생각보다는 좀 비싼(개발자 PC에 모두 설치하기엔 비싸다는 의미임) 이 상용프로그램을 아무곳에나 설치할 수 없기 때문에 빌드 담당자와 패키징 담당자가 분리되게 되고, 여기에서 릴리즈 준비를 하면서 병목이 발생하게 됩니다.

또한 QA팀이 존재할 경우(저희회사에는 전문적인 QA팀이 있지요.), 실행가능성이 아니라, 사용자의 입장에서 테스트를 진행해야 하므로 설치과정에서 시작하는데...패키징작업을 개발자들이 통합할 수 있어야 속도나 여러가지 측면에서 편리해지겠더군요.

그래서 가격이 저렴하거나 공짜인 오픈소스 진영에서 개발한 패키징 도구를 찾아본 적이 있습니다. 결국 세개를 찾았는데요. 이를 공유해 볼까 합니다.


만약 윈도우 버전만 존재한다라고 하면 MS의 WiX(Windows Installer XML)을 고려해봄직 합니다.
Wix는 마이크로소프트사에서 오픈소스로 개발하는 패키징 소프트웨어입니다.
XML로 작성한 규칙에 따라 MSI파일이 생성됩니다.
사실 문서들에서는 간단한 XML로 패키징이 이루어진다고는 하지만, 글쎄요..조금 공부는 필요합니다.

WIX 관련 자료 더 보기



간단하게 만들고 싶다면 NSIS도 괜찮습니다.
WinAmp를 만든 널소프트에서 개발한 인스톨러입니다.
간단한 스크립트와 INI파일을 통해 단일설치파일을 만들 수 있습니다.
GUI와 CUI를 모두 지원하기 때문에 편리하구요. 다른 의존성이 없습니다.
개발스크립트는 이클립스를 IDE로 사용하여 개발이 가능합니다.






룩앤필이 인스톨쉴드와 유사하죠?  곰플레이어도 이걸 쓰는것 같더군요.

NSIS 관련 자료 더보기



그리고 마지막으로 우연찮게 알게된 패키징 소프트웨어.
IZPACK. 이지팩은 자바로 동작하며 JRE가 필요합니다.
장점은...아무래도 자바로 개발된 솔루션 패키징에 적합할 것 같고,
자바의 특성을 이어받은 관계로 크로스플랫폼을 지원합니다.
즉, 윈도우나 리눅스 등에서도 동일한 룩앤필을 가지는 인스톨러를 만들 수 있습니다.

IzPack / X Windows

깔끔하죠?

IZPACK 관련 자료 더보기



눈큰아이는 IZPACK을 제외하고 WIX와 NSIS를 사용해 보았는데요.
아무래도 NSIS가 편한 느낌을 주더군요. 제가 예전에 사용하던 방식과 유사해서 그런 느낌을 받았을 수 있어요.
한번씩 사용들 해보시고...도움이 되는 정보였으면 좋겠군요 :)

  1. Favicon of http://6feetsong.tistory.com 하얀사자 2008.04.11 18:44 신고

    NSIS쓰면서 깝깝했는데, 좋은 정보 얻었습니다.
    지금 WIX설치중입니다. ^^

+ Recent posts