요즘 정말 날씨가 좋은 것 같습니다. 그래서 저도 오전에 일찍 남산으로 벗꽃 구경을 다녀왔습니다. 오전에 다녀와서인지 날씨도 선선하고 사람도 많지 않아 좋았습니다. 국립중앙극장에서 북측순환로로 약 3.3km를 산책하였습니다. 중간중간에 벗꽃들이 상당히 이쁘더군요.

오전에 잠시 산책을 한 뒤, 오늘도 열심히 과제를 했습니다. 그래도 주말이라서 그런지 약간의 여유가 느껴져서 오랜만에 컴퓨터 관련 URL들을 돌아다니며 웹서핑을 했습니다. 그 중 찾은 것이 <Design Principles for Windows 7>이라는 영상입니다. 작년에 있었던 Microsoft 행사인 PDC2008에서 나온 세션 중에 하나 입니다.

영상 URL은 아래와 같습니다.

Design Principles for Windows 7 http://channel9.msdn.com/pdc2008/PC22/

약 50분간의 영상이고, 테스크바의 새로운 모습들과 여러 가지 변경된 UI에 대해서 보여주었습니다. 테스크바 오른쪽 끝에 마우스를 위치해서 데스크탑 보기 기능을 처리한 것은 상당히 마음에 들더군요. 그리고 몇몇 변경된 UI들에 대해서도 ‘아 이제야 제대로 만들어지고 있구나.’라는 생각도 들었습니다.

저는 프로그램 개발에 있어서 사용자 인터페이스는 그 중요도가 아주 높다고 생각합니다. 아무리 퍼포먼스가 좋고 내부 코드가 깔끔하더라도 그 것을 사용하는 사용자에게는 우선적으로 어떻게 사용하는가가 중요하기 때문입니다.

그래서 또한 이런 정보들을 많이 봐두는 것은 매우 유용합니다. 나중에 아이디어를 제공하거나 이를 더 확장시켜나갈 수 있는 능력을 제공하기 때문입니다.

에디트플러스 3.10 릴리스

December 19th, 2008

에디트플러스 3.10이 새로 릴리스 되었네요. 여러가지 기능이 추가/개선되고, 버그가 몇 가지 수정되었다고 합니다. 현재 이전 버전을 사용하시는 분들은 새로 다운로드를 받아서 설치하시면 좋을 것 같습니다.

에디트플러스 http://www.editplus.com/kr/

WordPress 2.7 릴리스

December 17th, 2008

관리자 UI가 개선된 워드프레스 2.7이 릴리스 되었습니다. 버전 2.7에는 이름이 있는데, “Coltrane” 이라는군요. 한글 발음으로는 ‘콜트레인’, 미국의 유명한 색소폰 연주자의 이름에서 따왔다고 합니다. 이번 버전에서는 관리자 UI가 크게 변경되었고, 이전 버전에 비해 속도도 조금 개선되었다고 합니다.

이제 블로그 애플리케이션을 워드프레스로 바꾼지 벌써 약 2개월 정도 되는군요. 처음엔 사용이 조금 서툴었지만 이젠 많이 좋아진 편입니다. 하지만 아직 여러가지 플러그인들을 사용하지 못하고 있습니다. 그리고 블로그 테마도 개선할 계획이 있었지만 그것도 점차 미뤄지네요. ㅎㅎ

WordPress http://www.wordpress.org/

C++ 개발자라면 한 번은 사용하는 라이브러리가 바로 Boost 입니다. C++ 표준 위원회 사람들이 대거 참여하여 개발되고 있는 라이브러리이기도 하고요. C++의 추가 표준 라이브러리인 TR1도 이 라이브러리를 기반으로 만들어졌습니다.

Boost는 라이브러리 모음으로, 그 안에 좋은 라이브러리들이 많이 있습니다. 초급 개발자들은 그것들을 한 번씩만 사용해보더라도 능력이 대단히 향상되는 것을 느낄 수 있습니다.

Boost의 라이브러리 중에는 헤더 파일만을 사용하는 것도 있지만, 사용하기 전에 빌드를 먼저 해주어야 하는 라이브러리들도 있습니다. 따라서 Boost 빌드가 필요한 것이지요. 지금부터 Boost 빌드에 대해서 알아보도록 하겠습니다.

Boost는 bjam이라는 자체적인 빌드 모듈을 사용하여 라이브러리를 빌드 합니다. 다중 플랫폼과 다중 개발 툴에서 쉽게 빌드 하기 위함으로 알고 있습니다. 그래서 bjam이 있어야 하고, Boost 빌드 옵션을 알아야 합니다.

다음 URL에서 Boost의 최신 패키지를 다운받습니다.

Boost http://www.boost.org/

Boost를 다운받아서 압축을 풀게 되면 많은 폴더가 있습니다. Boost 빌드를 하기 전에 bjam 프로그램이 필요한데, 빌드 된 것을 다운로드 받거나, Boost에 포함되어 있는 bjam 폴더에서 빌드를 하면 됩니다.

여기서는 Boost에 포함되어 있는 bjam 폴더에서 새롭게 빌드를 해 보도록 하겠습니다.

  1. Boost의 하위 폴더인 .\tools\jam 폴더로 이동합니다.
  2. build_dist.bat을 실행합니다. (빌드)
  3. 빌드가 완료되면 .\tools\jam\ 폴더 하위에 stage 폴더에 생성됩니다.
  4. 생성된 stage의 하위 폴더 bin.ntx86로 이동을 하면 bjam.exe 파일이 생성되어 있는 것을 확인할 수 있습니다.

이제 이 bjam을 이용하여 Boost을 빌드 하기 위해서 bjam.exe을 Boost 최상위 폴더로 복사하면됩니다. (환경변수의 Path로 설정하셔도 됩니다.)

다음으로는 Boost 빌드를 위한 옵션들에 대해 알아보겠습니다.

참고로 Boost Getting Started on Windows(http://www.boost.org/doc/libs/1_37_0/more/getting_started/windows.html)와 “bjam.exe –help” 커맨드에서 설치 방법을 파악할 수도 있습니다.

Boost의 빌드 방식은 크게 두 가지로 구분할 수 있습니다. install 방식과 stage 방식입니다. install의 경우에는 헤더 파일과 컴파일 된 라이브러리 파일을 아예 새로운 폴더에 생성하는 방식이고, stage의 경우에는 현재 boost 폴더에 있는 헤더 파일을 그대로 이용하고 컴파일 된 라이브러리 파일만 생성하는 것입니다. 따라서 install을 한 경우에는 새로 생성된 폴더만 남기고 기존 폴더는 삭제해도 됩니다.

  • install의 경우,
    –prefix 옵션으로 헤더 파일과 라이브러리 파일이 생성될 경로를 지정합니다. (기본값은 “C:\Boost”)
  • stage의 경우,
    –stagedir 옵션으로 라이브러리 파일이 생성될 경로를 지정합니다. (기본값은 “.\stage”)

일단 다른 옵션들은 제외하고 지금까지 이야기한 옵션들로만 예제 명령어를 만들어보면 다음과 같습니다.

  • bjam.exe –prefix=”C:\Lib\Boost” install
  • bjam.exe –stagedir=”.\stage” stage

이 다음으로 알아볼 것은 –build-type 옵션입니다.

–build-type에는 minimal과 complete 옵션을 사용할 수 있습니다. (기본값은 minimal) 그리고 추가적으로 release와 debug 옵션을 줄 수 있습니다. (이외에도, threading이나 link 등 세부적인 옵션을 줄 수 있습니다.) 따라서 꽤 많은 조합으로 빌드를 할 수 있습니다.

현재까지 이야기한 옵션으로 예제 명령어를 만들어 보겠습니다.

  • bjam.exe –build-type=complete release debug install
  • bjam.exe –build-type=complete release stage
  • bjam.exe release debug stage

그리고 마지막으로 알아볼 옵션은 –toolset 옵션입니다.

시중에는 꽤 다양한 C++ 컴파일러가 있습니다. 그 컴파일러마다 조금씩 옵션이 다르기 때문에 Boost에서는 –toolset 옵션을 제공합니다. Visual C++의 경우에는 msvc, Borland의 경우 borland, GCC의 경우 gcc 처럼 옵션을 줄 수 있습니다. (지원하는 툴셋에 대한 자세한 정보는 http://www.boost.org/doc/libs/1_37_0/more/getting_started/windows.html#identify-your-toolset을 참조하세요.)

그럼 마지막까지 이야기한 옵션까지 이용하여 예제 명령어를 만들어보겠습니다.

  • bjam.exe –toolset=msvc –build-type=complete release debug –prefix=”C:\Lib\Boost” install
  • bjam.exe release debug stage

앞서 각각에 대해 설명을 했지만, 그것이 복잡하다고 생각된다면 다음처럼 전체 설치를 하시면 됩니다.

bjam.exe –toolset=msvc –build-type=complete release debug install

C:\Boost에 헤더 파일과 라이브러리 파일이 생성되고, 빌드 시 사용했던 Boost 폴더는 삭제하시면 됩니다.

Boost 빌드에서 한 가지 아직 이야기 하지 않은 것이 있다면 iostream 라이브러리에서 사용하는 외부 라이브러리 이야기입니다. Boost의 라이브러리 중 iostream에서는 외부 라이브러리로 zlib와 bzip2 라이브러리를 사용합니다. (http://www.boost.org/doc/libs/1_37_0/libs/iostreams/doc/installation.html#ide 참조) 따라서 bjam으로 Boost를 빌드하기 전에 다음과 같은 설정을 해주어야 합니다.

  1. zlib(http://www.zlib.net/)와 bzip2(http://www.bzip.org/)를 다운로드 받습니다.
    (여기에서 다운로드는 소스코드를 말하는 것입니다.)
  2. 두 압축 라이브러리 모두 적당한 경로에 압축 풉니다.
  3. 다음과 같이 두 라이브러리의 경로를 환경변수로 설정합니다.
    set ZLIB_SOURCE=”C:\Lib\zlib”
    set BZIP2_SOURCE=”C:\Lib\bzip2″
  4. 위의 Boost 빌드 방법으로 Boost를 빌드합니다.
    (예, bjam.exe –toolset=msvc –build-type=complete release debug install)

위와 같이 환경변수를 설정하면 bjam으로 빌드 시, 해당 환경변수를 찾아 빌드 시 사용합니다.

이제 Boost 빌드에 관한 이야기를 어느 정도 마무리 지은 것 같습니다. 필요에 따라 Boost를 개별 라이브러리로 빼서 사용하는 사람들도 있고, 자신의 프로젝트에 포함해서 사용하는 사람들도 있을 겁니다. 그리고 Boost를 사용하다 보면 자신이 맛깔나게 일부 코드를 수정한다거나 라이브러리의 문제점을 찾아 공식 홈페이지에 보내줄 수도 있을 거라고 생각합니다. 저도 Boost에 있는 라이브러리들을 모두 다 사용해보지는 못 했지만, 점점 커지는 라이브러리를 볼 때마다 또 좋은 코드가 추가되는구나 라는 생각을 합니다.

그리고 최근에는 C++0x에 대한 이야기가 많이 들리는데요. 이에 대한 관련된 이야기도 나중에 기회가 있다면 포스팅 하도록 하겠습니다.

Boost http://www.boost.org/
Boost Getting Started on Windows http://www.boost.org/doc/libs/1_37_0/more/getting_started/windows.html

Xpress Engine (구 제로보드)

November 26th, 2008

최근, 작업을 위해 보고 있는 것이 Xpress Engine(구 제로보드)입니다. 제로보드는 버전 4.0을 출시하고 상당히 인기를 끌었습니다. 그리고 한동안 큰 업데이트가 없다가 제작자가 NHN의 지원을 받아 오픈 소스로 새로이 제로보드를 개발하여 내놓았습니다. 그것이 바로 ‘제로보드 XE’였습니다. 그리고 이때부터 게시판 솔루션보다는 통합 사이트 솔루션이 되었습니다.

그리고 며칠 전 11월 20일에 버전 1.1을 새롭게 출시하였습니다. 관리 UI가 꽤 변경되었고, 그보다 더 중요한 것은 프로그램 이름이 Xpress Engine(XE)으로 변경되었다는 점입니다. 게시판 솔루션을 연상시키는 ‘제로보드’보다는 통합 사이트 솔루션으로서의 새로운 이름을 지어준 것이죠.

제가 이번에 XE를 사용하게 된 이유는 공개된 다른 통합 사이트 솔루션을 아는 것이 없기 때문입니다. (물론 다른 솔루션을 자세히 찾아보지는 않았습니다.) 이렇게 XE를 선뜻 선택하였으나, 조금 사용해본 경로 아직은 좀 부족하다는 생각입니다. 일단 사용하기가 어렵습니다. 그리고 복잡하죠. 또한 버그들도 아직 많이 존재합니다. 물론 심각한 버그는 그리 많다고는 생각되지 않습니다만 그래도 사용에 불편함을 주는 버그가 몇 가지 보입니다.

사용에 익숙해지기 위해 공식 사이트에서 매뉴얼을 찾아보았습니다. 하지만 그곳에서 제공하는 매뉴얼은 부실하고 업데이트가 제대로 안 되어있더군요. 그런 부분은 조금 실망스러웠습니다. 물론 개발자의 입장은 이해를 합니다. 많은 개발자들이 문서화시키는 것을 싫어하고, 그것을 작업한다고 해도 업데이트가 상당히 늦죠. 그리고 모듈화와 모듈별 스킨 개념은 좋은 편이지만, 그 또한 개발자 중심적이고 사용하기가 불편하다는 것이 제 생각입니다. 현재 개발자들이 지금 방식에 너무 익숙해져 버린 나머지 다른 사람들도 그 툴을 쉽게 사용할 수 있다고 생각하게 되어 버린 것일지도 모르겠습니다.

하지만 XE는 좋고 강력한 툴임에는 인정하지 않을 수 없습니다. 게다가 대한민국에서 오픈 소스로 프로젝트가 진행된다는 것 자체가 큰 자랑거리라고 볼 수 있겠죠. 앞으로 Xpress Engine이 살아남기 위해서는 지속적이고 빠른 업데이트로 프로그램을 안정화 시키는 것이 가장 좋은 방법일 것이라 생각합니다.

Xpress Engine http://www.zeroboard.com/