iPod Touch 2세대 8기가 짜리 구입.
현재 하루 써봤는데 엄청나게 만족하고 있다.
지난주에 S9를 봤는데 역시 차이가 많이 나는군..
해킹도 했고 어플도 슬슬 설치중이고 PDA + mp3로 써야할듯
요즘 계속 일적으로 프로그래밍만 하다보니까.
스터디를 할 생각도 못했는데 우연히 Erlang 이라는 언어에 대한
포스팅을 읽고 Erlang에 대해 한번 공부해 보려고 합니다.
혹시 관심있으신분은 댓글을
머 아니면 혼자 공부해도되고요.. ㅎㅎ
현재 회사에서 현재 구현중인 것은 바로 그림자 -_-;
왜 지금 엔진은 Stencil Shadow Volume만을 지원하는지 -_-;
엄청나게 무겁기 땜시 좀더 가벼운 그림자로 변형해야할듯 한데..
단순히 라이트맵을 구현? PRT 구현? Shadow Mapping 구현?
오늘까지 고민하고 선택해할듯...
Visual Studio 2003 부터 DLL 이 엉키는걸 방지하기 위해서
MS에서 만들어 놓은게 (엄밀하게 말하면 net frame work 2.0나왔을때)
side by side 라는 것이다. 이게 대충 뭐냐면 컴파일할때의 환경에 맞는 어셈블리를
정확히 실행할때 참고 하기 위하여 예전에는 무조건 Windows\System32 에만 있으면 실행되었는데 이제는 Windows\WinSxS 안에 배치되어있음.
예전엔 이럴 경우에 그냥 dll만 넣어도 됬는데 이제는 mainfest까지 같이 배포를 해야된다는 귀찮은 문제가 -_-;
대충 해결방법은 4가지 정도가 있다고 한다.
1. Install 버젼으로 배포한다. - VS2005의 배포 프로젝트를 만들고 Merged Module을 포함시켜서 만들어 놓으면 된다.
2. Redistructable package를 설치한다. - 엠에스에서 배포하는 이것 다운받아서 설치.
3. Crt 파일을 수동으로 패치해서 컴파일하고 배포한다. - crt 소스를 보면 이걸 체크하는 부분이 있는데 이를 예전처럼 해당 폴더에만 있으면 가능하게 수정후 컴파일하고 이걸 쓰면될듯
4. 직접 배포 - Visual Studio 의 redist 파일을 mainfest를 포함해서 실행 폴더에 첨부한다.
요 dll을 참고할때는 맨먼저 WinSxS에 있는지 확인하고 그다음은 실행 폴더를 살펴보기 때문에 이렇게 하면 가능하다.
더 좋은 방법 없을라나?
아직 프로그래머와 그래픽 다지이너가 한명씩이지만 앞으로 프로젝트가 커질 것으로 예상하고
효율적인 개발 프로세스를 위하여 현재 프로젝트에 CI를 도입하기로 하였다.
2. 개발 프로세스
위 그림은 다음과 같은 프로세스를 표현하고 있다.
1) 프로그래머는 개발을 하고 컴파일이 완료(배포 가능)할 경우 개발용 저장소에 저장을 한다.
2) CI 서버는 주기적으로 (현재는 1분에 한번) 개발자용 저장소가 Update 되었는지를
확인하고 Update 되었을 경우 자동으로 배포용 버전으로 컴파일을 한다. (Release버젼)
3) CI 서버는 컴파일된 배포용 바이너리를 배포용 저장소에 저장을 한다.
4) 디자이너는 수정 또는 추가한 리소스를 배포용 저장소에 저장을 한다.
5) 배포용 바이너리가 필요할 경우 언제나 배포용 저장소에서 가져와 실행한다.
3. 구축
3.1 Repository 서버
공용 저장소 서버는 개발자용 , 배포용 모두다 Subversion을 사용하였다. 우선 Subversion은
공개 버젼이지만 이미 많은 프로젝트에서 사용하여 신뢰성을 인정받고 있으며 본인도
기존의 프로젝트에서 Subversion을 많이 사용하였기 때문에 이를 사용하였다.
3.1.1 Subversion 설치
1) Subversion (http://www.collab.net/downloads/subversion/) 과 Subversion
메니져 (http://www.pyrasis.com/main/SVNSERVEManager) 를 다운받는다.
2) Subversion과 Subversion 메니져를 설치한다.
3) 클라이언트용 거북이svn 을 다운 받고 설치한다. (http://tortoisesvn.tigris.org/)
4) 용량이 넉넉한 파티션에 폴더를 생성하고 해당 폴더를 저장소로 만든다. - 거북이가 깔려있다면 간단히 폴더를 선택하고 오른쪽 버튼을 눌러 Create repository here를 선택하면 간단
5) 저장소를 세팅한다. conf\authz, passwd, svnserve.conf 를 편집한다.
6) Subversion 메니져를 사용하여 Subversion 서버를 시작한다.
3.2 CI 서버
CI 서버는 Cruise Control .Net을 사용하였다. 다들 알다싶이 Java용(?) Cruise Control의 .Net 버젼으로 MSBuild , Devenv등 윈도우즈 환경을 지원한다. (웹서버는 IIS를 사용)
3.2.1 CC.Net 설치
1) Cruise Control .Net 서버를 다운 받는다. (http://confluence.public.thoughtworks.org/display/CCNET/Download)
2) IIS 를 인스톨 한다. XP 기준으로 제어판 -> 프로그램 추가/제어 -> Windows 구성 요소
추가/제거 -> 인터넷 정보 서비스 클릭하고 다음 확인
3) ASP .net 을 활성화 시킨다. (.net framework 2.0 이 깔렸다는 가정하에)
c:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
4) 웹 루트에 대쉬 보드를 복사한다. (이부분은 가상 디렉토리로 해도될듯)
5) CCNet 서버 설정
c:\Program Files\CruiseControl.NET\server\ccnet.conf 파일을 편집한다.
(CCNetConfig (http://ccnetconfig.org/Download/Default.aspx) 를 사용하면 편하게 편집가능하다.)
6) CC.Net 구동한다 (CCNet의 server폴더안의 ccnet.exe를 사용해도 되고 서비스의
Cruise Control .Net을 시작 시켜도 구동한다.)
3.3 MSBuild
MSBuild 는 VS2005와 .Net Framework 2.0이 나오면서 같이 나온 MS의 make이다. NAnt가
아직은 C++을 지원을 안하고 있기 때문에 devenv.exe를 바로 써버릴까 하다가 MSBuild를
쓰게 되었다. 이유는 devenv.exe를 바로 사용하면 문제 생겼을때 어디가 문제인지 로그가
안나온다는 치명적인 단점 때문이다. 어쨌든 MSBuild를 설치하고 Visual Studio 2005를
설치하면 빌드는 큰 문제 없이 돌아간다. (C++로 된 프로젝트를 make할때는 Visual Studio 2005에 있는 vsbuild를 쓰고 있음, Visual Studio 2005 안깔고 하는법 아시는분?) 약간 오늘
몇시간 고생한 점이라면 라이브러리를 직접 링크 안하고 프로젝트끼리 종속성을 사용할 경우
A프로젝트가 B프로젝트에 종속되어있고 B프로젝트가 C프로젝트에 종속되어있을때 B는 A를
추가하고 C는 B만 추가하면 VS2005에서는 정상작동하지만 MSBuild 에서는 C에 A까지 넣어야
빌드가 가능함. (제가 잘못알고 있는거면 말씀해주시길) 어쨌든 몇가지 종속성 문제를 제외
하고 바로 도입이 가능하여 적용하였다.
3.5 프로젝트 세팅
우선 하나의 물리적 Repository 에 두개의 논리적 Repository 를 구축 하였다.
(단순 폴더로 구분, 하나의 Subversion서버에 개발용, 배포용 Repository 구축) 그다음 개발용에는 기존의 프로젝트를 전체다 Commit 하였다. CI 서버가 있는 컴퓨터에 개발용 Repository의 내용중 소스 관련 내용을 Checkout 받고 나머지는 Export로 받았다.
그다음 CI를 사용하여 (또는 수동으로 빌드) 배포용 버젼을 생성하였다. 그리고 그버젼을
배포용 Repository에 Commit하였다.
개발자는 바이너리를 제외한 나머지를 개발용 Repository를 Checkout하고 바이너리 부분을
배포용에서 Checkout하였다. 개발자는 개발용 Repository 만을 Commit한다. (물론 배포용을
해도되긴 하지만 CI에 의해 최신버젼 Release로 바뀔것이다)
디자이너는 배포용 Repository에서 Checkout하였다. 그다음 내용이 바뀌면 Commit한다.
테스터는 배포용 Repository 에서 받아 테스트를 한다.
4. 문제점 및 개선점
현재는 테스트 버젼까지만을 염두해 두고 구축하였다. 실제 배포용 버젼은 위에서 말한
기존의 배포용 버젼을 인스톨 버젼으로 바꿔야 하는 작업이 필요할 것이다. CI 서버를
하나를 더 꾸며 배포용 Repository의 버젼을 인스톨용으로 바꾸는 자동화를 해야할 것 같다.


이올린에 북마크하기
이올린에 추천하기