• 2007-09-28

    Ideal Build System

    integrating-mantis-and-subversion을 보고, 이상적인 통합 개발 지원 시스템에 대해서 생각해봤다. 일단 맨티스에서 버그는 물론 new feature (or issue, whatever)를 관리한다고 가정하면,

    • SVN에서 커밋할때 특정한 패턴의 로그를 남기면, SVN의 post-commit 훅과 맨티스의 commit 스크립트를 이용해서, 특정 버그 리포트의 상태를 변경하거나 코멘트를 달 수 있다. (다만 SVN과 맨티스가 동일한 머신이어야만 하며, 다른 머신일 경우 좀더 많은 설정을 해줘야 한다)
    • 빌드 머신에서 자동으로 빌드 넘버를 증가시키고, 동시에 맨티스에다가도 동일한 빌드 넘버(버전)를 등록한다.
    • 당연히 MSBuild를 이용해서 원클릭 만으로 빌드가 가능해야 한다.
    • 나아가서 post-commit를 이용해서 커밋하면 처음부터 체크아웃받아서 빌드하고 패치까지 하는 스크립트도 제작한다. (또는 SVN Notifier와 같이 주기적으로 체크하다가 틈틈히 빌드해도 무방하다)
    • 맨티스의 ChangeLog 를 패치 노트 파일로 추출해서 보여준다. 맨티스로의 하이퍼링크까지 제공하면 금상첨화!
    • 이 모든 과정을 웹에서 제어할 수 있으면 좋겠다. 빌드 결과(Build.htm)도 웹으로 업로드해서 볼 수 있으면 더욱 좋다. (특히나 빌드 시간 변화량 같은 것을 그래프로 보여주면 좋을 것 같다)

    자. 만들어주세요. -_-;;

  • 2007-09-16

    SyntaxHighlighter on Wordpress

    드디어 wordpress.com 에서 공식적으로 syntax highlighter 를 지원하는 모양이다.

    
    otl_stream stmt(1,"{CALL get_multi_resultset(:p<int,in>)}",conn,otl_implicit_select);
    stmt << (int)1;
    otl_cur &amp; s = (**stmt.ss).cursor_struct;
    SQLRETURN result = SQLMoreResults( s.cda );
    

    지원하는 언어 및 사용법은 how-do-i-post-source-code를 참조하기 바란다. 다만 아직 몇 가지 HTML entity 들의 변환에 문제가 있는 듯하다.

  • 2007-09-15

    SVN Notifier

    hey 님의 SVN MSN Bot 을 약간 수정해서 사용하던 중, 뜻밖의 복병을 만났다. 귀찮다는 이유로 팀원 중 두 명이나 봇을 MSN에서 차단해버리고 만 것이다. 내막을 물어보니

    "메시지가 왔길래 반가운 마음에 클릭해보면 맨날 BOT 이어서 화가 났다"

    는 이유였다. 물론 우리처럼 하루에도 수십차례 커밋이 이루어지는 환경에서는 충분히 이해가 가긴 한다. :)

    그 외에도 동일한 repository 의 다른 팀의 커밋이 보이는 현상이라든지 (이건 코딩으로 해결할 수 있었지만 ㅎㅎ), 메시지를 보내느라 커밋이 대략 10초 정도 느려지는 문제가 있긴 했는데, 결정적으로 며칠전 SVN 을 Windows Server 2003 으로 옮긴 다음부터 또 한글이 깨지는 현상이 발생해서 결국 post-commit.bat 는 폐기되고 말았다.

    그러던 와중에 오늘 KAISTIZEN 님의 SVN Notifier 소개글을 발견했다. hook 방식이 아니라 아래와 같이 트레이에 숨어 있다가 주기적으로 update 를 체크하는 방식의 프로그램이니, 너무 반가워서 실망한다든지, 차단당할 염려는 없을 듯하다. 단점이라면 추가적으로 subversion 과 .NET 1.1 프레임워크를 깔아야 된다는 점이랄까?

    http://svnnotifier.tigris.org/img/1.jpg

  • 2007-07-16

    Visual C++ 2005 express 의 한계

    연휴동안 정말 할 일이 없어서 ASIO 코드를 살펴보고 있다. 몇 달전에 깔아둔 VC++ express 를 띄워서 예제 코드를 빌드하니 winsock2.h 가 없다는 에러가 뜨는게 아닌가? 찾아보니 Platform SDK를 설치한 후, 몇 가지 설정을 손봐줘야 한다는 내용을 발견할수 있었다. 열심히 다운로드를 받다가, 문득 professional 이나 standard 보다이 놈이 못한게 무엇무엇이 있는지 궁금했다. 구글링해본 결과 다음과 같은 내용을 발견할 수 있었다.

    Visual Studio 2005 Product Line Overview

    간단히 요약해보면,

    • 생산성에 가장 지대한 영향을 미치는 제약 조건은, 바로 매크로라든지 Visual Assist 같은 외부 애드인들을 지원하지 않는다는 것이다.
    • 소스세이프와의 연동을 지원하지 않지만, svn 같은 다른 툴을 사용하고 있다면 그다지 심각하지는 않다.
    • 리모트 디버깅을 지원하지 않지만, 사실상 회사 내부 외에는 이 기능을 사용할 확률이 적으므로 충분히 극복할수 있다.
    • Data Access Designer 는 로컬에서만 지원한다든지, SQL 2005 통합 기능을 미지원하는 것도 아쉽다.

    이 정도의 제약 조건이라면 사실상 제약이 거의 없다고 봐도 무방하다. 최악의 경우 express 만으로도 헝그리하게 개발할 수도 있을 정도이니 말이다. (FAQ 4번에 의하면 상업적 용도로 사용해도 된다고 나온다) 가까이로는, 빌드 머신 같은 데 설치해두면 VC의 카피수를 줄이는데 많은 도움이 될 듯하다. 여력이 되면 전 사원들의 컴퓨터에 깔아두고 테스트하다가 크래시될 때 자동으로 뜨도록 해두는 것도 괜찮을것 같다.

    그나저나, Team System 에서 Code Profiling - Static Analysis - Code Coverage - DB refactoring - DB schema compare 같은 기능을 지원한다는 것은 이번에 처음 알았다. 흐음. 써볼만 하겠는걸? 이라고 생각하는 순간 Visual Studio 2008 이 조만간(?) 출시된다는 걸 보고 슬그머니 귀찮아졌다. :)

  • 2007-06-20

    basecamp, trac, xampp

    최근 살펴본 몇 가지 툴들을 간단히 소개해본다.

    Basecamp logo

    BaseCamp : 37signals호스팅형 프로젝트 협업툴. 그동안 본 웹 기반의 협업툴 중에서 가장 깔끔하고 단순한 인터페이스를 자랑한다. 따라서 이런 툴을 쓰는데 거부감을 가진 일부 개발자들도 쉽게 적응할 수 있을 것이다. 웬만한 기능은 무료 모드로 다 쓸 수 있는 반면, time tracking 과 ssh 는 월 $49를 지불해야만 한다. 아쉬운 점이라면 커스터마이징 옵션이 거의 없어서, 그냥 있는 그대로만 써야 한다는 정도? 쓸만한 협업툴을 아직 찾지 못하거나 대체품을 원하는 분은 Tour 페이지에서 스크린샷과 동영상을 쭈욱 훑어보는 것도 좋겠다.

    Trac

    trac 0.11 : 아직 개발중인 버전이라서 그런지, AccountManagerPlugin 같은 플러그인들이 제대로 동작하지 않았다. 0.10 버전부터 easy_install 스크립트를 이용한 자동 플러그인 설치 기능을 지원해서 꽤 편해졌다. 그러나, 웬지 다들 거부감을 가져서 일단은 봉인 상태. 대신 Trac-Hacks.org 같은 보물창고를 찾게 되어서 무척 기쁘다.

    http://images.apachefriends.org/images/1240.jpg

    xampp : apache + php + mysql 의 통합 설치 버전 중에서 가장 깔끔한 넘이다. 특히나 윈도우에서는 단지 몇 분만에 wiki 나 trac 을 위한 환경을 설치할 수 있다. 다만 최신 버전인 1.6.2은 최근 오픈소스로 전환된 zb5 와 호환이 되지 않는다.

    http://media.xircles.codehaus.org/_projects/xplanner/_logos/medium.png

    xplanner 는 설치 매뉴얼이 너무 무성의해서 포기했다. JDK도 설치하고 tomcat 도 xampp 에서 배포하는 넘을 깔았지만, 그 다음 무엇을 어떻게 해야 할지를 이해할 수 없었다.