Subversion Summary
Uncategorized No Comments »개인적으로 프로젝트 개발에 Subversion 을 도입한지 한 1년이 조금 넘은것 같다. 하지만 할때마다 삽질을 하는터라, 이곳에 정리를 하기로 했다.
참고 사이트 : http://www.pyrasis.com/main/Subversion-HOWTO
http://dreamstorm.cafe24.com/cgi-bin/moin.cgi/Subversion
1. 기본 디렉토리 만들기
# svn mkdir svn://<SERVER-IP>/<REPOSITORY>/trunk
# svn mkdir svn://<SERVER-IP>/<REPOSITORY>/branches
# svn mkdir svn://<SERVER-IP>/<REPOSITORY>/tags
2. 저장소 import
처음에 소스코드를 업로드 하는 과정
# pwd
/home/alex/project/myproject1
# ls
main.c func1.c func2.c
# cd /home/alex/project
# svn import myproject1 svn://<SERVER-IP>/<REPOSITORY>/trunk
이러면 main.c, func1.c, func2.c 만 올라간다.
3. Checkout (체크아웃)
# pwd
/home/alex/project
# mkdir myproject1new
# svn checkout svn://<SERVER-IP>/<REPOSITORY>/trunk myproject1new
4. 유용한 기능들
파일 이름 변경하기
sample# svn rename hello.c world.c
sample# svn commit
버전관리 안되는 릴리즈 코드 얻기
sample# svn export http://(SERVER_IP)/svn/sample2/trunk sample
5. 분기 Branch
특징 : Repository 전체를 받음. (Trunk 만 아님, 다받음)
svn checkout http://(SERVER_IP)/svn/sample sample
sample# svn copy trunk branches/sample-branch
sample# svn commit
Branch된 소스를 받기 위해서는 branches/sample-branch를 체크아웃 하면 됩니다. trunk와 branche는 따로 revision을 가지지 않습니다. Subversion의 revision은 저장소 전체의 revision입니다.
# svn checkout \ http://(SERVER_IP)/svn/sample/branches/sample-branch \ sample-branch
6. 병합 Merge
7. 태그 Tag
Tag는 만든 프로그램을 웹 사이트 등에 공개할 때 사용합니다. Tag도 Subversion에서는 Branch와 마찬가지로 디렉토리 복사(copy)와 같습니다. tags 디렉토리 안에는 일반적으로 릴리즈(발표)하는 버전별 디렉토리를 만들어 사용합니다.
0.1 버전을 발표할 때 0.1 버전의 순간을 tags 디렉토리에 복사하는 것입니다. 0.2가 되었을 때 tags아래 0.2 디렉토리로 복사합니다. 이렇게 되면 각각의 버전별로 소스를 관리 할 수 있습니다. 저장소에서는 실제로 복사가 되는 것은 아니고 변경된 점만 복사하기 때문에 저장소의 용량이 소스코드의 크기만큼 배로 늘어나지는 않습니다.
trunk의 소스를 0.1 버전으로 Tag, Branch와 마찬가지로 체크아웃 받은 소스에서도 할 수 있고 원격에서 URL로도 할 수 있습니다. 아래 체크아웃 받은 것은 trunk만 받은 것이 아니고 sample 디렉토리 아래를 전부 받는 것입니다.
# svn checkout http://(SERVER_IP)/svn/sample sample sample# svn copy trunk tags/0.1 sample# svn commit
원격에서 URL로 복사합니다. 이 경우 commit도 같이 이루어집니다. 체크아웃 받은 소스는 update를 해주어야 합니다.
# svn copy http://(SERVER_IP)/svn/sample/trunk \ http://(SERVER_IP)/svn/sample/tags/0.1
이제 0.1로 Tag한 소스를 Export로 받아서 압축한 뒤에 릴리즈(공개)를 하면 됩니다.
# svn export http://(SERVER_IP)/svn/sample/tags/0.1 sample-0.1
8. MSVC 환경에서 Ignore 설정하기
MSVC 에서 개발하면 쓸데없는 바이너리가 너무 많이 생성된다. 따라서 다음과같은 방법으로 Ignore 하자!
# svn propset svn:ignore *.suo . (파일 ignore)
# svn propset svn:ignore bin . (디렉토리 ignore 하기)
Debug Release *.ncb *.plg *.opt *.suo *.user
정도 없애면 될듯.
CMake. 크로스 플랫폼 개발 도우미.
Uncategorized No Comments »CMake 는 아직은 잘 모르겠지만, 크로스 플랫폼 개발을 도와주는 툴인 것 같다.
1. 설치하기
CMake 홈페이지의 다운로드 페이지에서 Windows 용 바이너리를 받을 수 있다.
2. Microsoft Visual C++ (MSVC) / Windows 환경에서 CMake 실행하기
CMakeSetup.exe 를 실행한다. 다음과 같은 GUI 가 뜬다. (버전에 따라 다를 수 있음)
위의 2개 에디트 박스는 각각 소스코드와 바이너리 디렉토리를 의미한다. 컴파일될 소스의 위치와 바이너리가 저장될 위치를 지정하면 된다. 먼저 이 두 변수를 설정해 주어야 한다. 만약 지정한 바이너리 폴더가 없으면, CMake 가 생성할 것이다.
3. Linux 에서 개발된 코드를 Visual C++ 2005 에서 컴파일 가능하게 하기
먼저 프로그램 코드는 다음과 같은 구조를 가지고 있다.
- 루트
- libjbig
- pbmtools
libjbig 는 실행파일이 아닌 라이브러리 파일을 담고 있다. pbmtools 는 라이브러리 파일을 이용한 실행파일이 있는 코드이다. 일단 Makefile 을 살펴서 어떤 라이브러리에 어떤 소스코드가 필요한지, 어떤 실행파일에 어떤 라이브러리와 소스코드가 필요한지 알아 두어야 한다.
일단 루트 디렉토리에 다음과 같은 CMakeLists.txt 파일을 만들어야 한다.
———————————————————————————
cmake_minimum_required(VERSION 2.6)
project(JBIGKIT)
add_subdirectory (libjbig)
add_subdirectory (pbmtools)
———————————————————————————
위 파일이 의미하는 바는 명령어 자체에서 알 수 있다.
그러면, CMake 는 libjbig 안에서 또 CMakeLists.txt 파일을 찾게 되므로 libjbig 디렉토리(라이브러리 디렉토리) 안에 다음과 같이 만들어 주었다.
———————————————————————————
SET(LIBJBIG_SRCS
jbig.c jbig_ar.c
)
add_library (libjbig STATIC ${LIBJBIG_SRCS})
———————————————————————————
그리고 마찬가지로 pbmtools 디렉토리 안에 다음과 같이 만들어 주었다.
———————————————————————————
include_directories (${JBIGKIT_SOURCE_DIR}/libjbig)
link_directories (${JBIGKIT_BINARY_DIR}/libjbig)
add_executable (pbmtojbg pbmtojbg.c)
target_link_libraries (pbmtojbg libjbig)
———————————————————————————
CMake 에서 소스코드 디렉토리 에디트 박스에 기재된 변수는 ${JBIGKIT_SOURCE_DIR} 와 같이 접근 할 수 있다. Binary 도 마찬가지로 ${JBIGKIT_BINARY_DIR} 와 같이 접근한다.
GUI 세팅에서 소스 코드 디렉토리엔 C:\Users\alex\Desktop\JBIG\jbigkit 을, 바이너리 디렉토리엔 C:\Users\alex\Desktop\JBIG\jbigkit\bin 을 입력해 주었다.
그러면 CMakeLists.txt 파일을 쭉 parsing 하기 시작한다. Parsing 이 완료되면, configure 버튼을 누르고 OK 를 누르면, Binary 폴더 안에 MSVC++ 2005 솔루션 파일이 생긴다.
Day 2. First presentation
Uncategorized No Comments »오늘은 첫번째 프리젠테이션이 있는 날이다.
위 사진은 프리젠테이션을 세팅하는 모습이다. 누가 찍었는지 모르겠는데, 플리커에 올라와 있었다. 프리젠테이션은 하나의 방에서 치러진다.
하나의 방에 각 부문별 심판(judge)들이 자리해 있고 정해진 시간에 들어가서 프리젠테이션을 하면 된다.
이날 큰 문제가 있었다. 들어가자 마자 PDP 모니터에 맞추어 해상도를 조정해야 했으나, 해상도가 계속 안맞는 것이었다. 문제는 PDP 모니터가 와이드 이기 때문인데, 게다가 내 노트북(IBM X61) 과 궁합이 안맞았는지 계속 엉뚱한 화면만 출력했다. 다른분이 오셔서 도와주시긴 했었지만 결국 잘 안되다가 TV 쪽 설정 문제인것으로 밝혀졌다. 얼마나 간이 떨렸었는지…
결국 탈 많았던 프리젠테이션이 시작되었다. 위 사진에서 앞줄 맨 왼쪽에 검은 셔츠 옆에 앉으신 분은 실제로 캐나다 British Columbia 에서 오신 분이라서 그런지 굉장히 주의 깊게 발표를 들어 주셨다.
발표 장 뒤에는 한국 기자분들과 한국 MS 의 조성우 차장님이 계셨는데, 왜이리 부담이 되던지 ^^; 지금 글을 쓰는 8월에 올림픽이 한창인데, 국가대표들의 마음이 이러한가 하는 생각이 든다.
발표가 끝난후 무서운 질문/답변 시간이 왔다. 우리는 다양한 질문을 예상해갔다. 한국 MS 에서 미리 시뮬레이션까지 하고 갔는데, 예측한 모든 질문은 빗나가고 마케팅 관련한 질문만 잔뜩… 당연히 당황했다.
뒤에 계신 한국 기자분들과 조성우 차장님이 손을 흔든것도 그쪽으로 시선이 갑자기 쏠려서 당황했다. 모든 부분을 준비해 갔어야 하지만, 그렇지 못한 나를 탓할 수 밖에…ㅋ
아자아자! 내일 데모를 준비하자!!!
Day 1. 파리에서의 첫 일정 시작!
Uncategorized No Comments »드디어 파리다. 파리하면 무엇인가? 바로 에펠탑!
버스를 타고 계속 이동하다가 갑자기 나온 에펠탑에 넋을 잃었다. 너무 컸다. 상상했던것 이상으로~ 왜냐면 난 에펠탑에 대해서 관심이 전혀 없었으니…
무시무시한 에펠탑. 일단은 버스안에서 보는 것으로 만족해야 했다.
제공된 숙소는 노보텔. Novotel. 파리 중심가에 위치한 4성급 호텔이다. 이매진컵 홍보물에서는 에펠탑이 보인다고 했지만, 우리방에서는 공사장 뿐이었다.
우리는 이매진컵 등록을 마친후, 호텔방에서 옷을 갈아입고는 행사장으로 향했다. 행사장은 다름아닌 파리 시청.
파리 시청은 일반 관광객은 들어가기 힘들겠구나 하는 생각이 들어 내심 기대했다.
왼쪽 사진은 마치 영화 시상식을 방불케 하는 파리 시청 계단. 우리는 이곳을 지나서 시청 내부로 들어갔다. 그런데, 이곳에 카메라가 있어 시청 내부에서 생중계 되고 있을 줄은 몰랐다! 그런데도 사진을 찍고 놀았으니(오른쪽 사진) ㅋ
엄청난 인파다. 이만큼이 경진대회 참가자이다. 어마어마 하지 않은가!?
한국대표들과 다같이 함께 했다.
열정적인 자리였다.
내 카메라가 좋지 않은 관계로 다른사람이 찍은 좋은 사진을 보면 더 쉽게 이해가 간다.
시청 내부로 들어가는 길.
내부 인테리어와 학생들.
이곳에서 열정과 패기를 느낄 수 있었다. 나와 아람이형은 이매진컵 경진자들을 일일히 찾아다니며 악수를 나누었다.
Joe wilson 의 인상깊은 오프닝. 친구같은 담당직원??ㅋㅋ
파리의 밤은 밤 10시나 되서야 찾아왔다. 행사장에서는 음악과 와인, 간단한 음식들이 있었다.
호텔로 돌아와서 장비를 풀었다.
본격적으로 내일 발표 준비를 시작했다.
Day -1. ImagineCup 2008 출발 전날
Uncategorized No Comments »드디어 오늘(2008년 7월 3일) 은 파리행 비행기를 타고 출발하는 날이다. 이매진컵 본선행 티켓을 얻은지 약 1달여쯤 지난 시간이다.
근 1달 동안, 무척이나 애를 써서 개발했다. 매일 밤 새다 시피 했다.
(작업 사진 삽입)
본선에서 예상되는 질문들과, Microsoft 한국지사에서 받은 피드백들을 종합하고 우리 나름대로 계속 시뮬레이션을 반복했다.
세계 각지에서 부품을 조달하느라 힘들었고 개발에 드는 비용이 만만치 않았기에 비용 조달 측면에서도 힘들었다. 어쨋든, 오늘은 출발이다.
새벽 2시부터 짐을 챙기기 시작했다. 만약에 있을지 모를 고장에 대비하여 모든 장비들을 챙겼다. 납땜용구 부터 테이프까지. 2시간여쯤 지났을까, 짐 싸기가 겨우 끝나갔다. 8시까지 공항에 가야하는데… 씻고 어쩌고 하면 시간이 부족할지도 모른다는 생각까지 들었다.
우리는 인하대 후문으로 나가 택시를 섭외했다. 오늘 공항까지 우리를 데려다 주는 조건으로 4만원에 합의를 보았다. 우리는 먼저 집에가서 샤워를 하고 다시 학교로 와서 짐을 실은 다음 공항으로 향했다.
첫번째 문제가 발생했다… 말가면을 잃어버린 것이다. 말가면은 우리의 웃음 포인트가 될 예정이었는데… 하지만 시간이 부족했기에 공항으로 향했다.
겨우 도착했다. 8시 근처. 한국팀들과 다시 마주했다. 우리는 진이 거의 빠진채로 공항에서 기다렸다. 10시 보딩인데 생각보다 시간이 촉박했다.
우리의 화두는 장비가 잘 보내질 것인가였다. 왜냐면, 장비 부피가 우리가 에어프랑스 홈페이지에서 본 것과 달랐기 때문이기도 하고 잘 깨질 것 같기도 했기 때문이다. 하지만 예상과 달리 무사통과!
우리의 비행기는 에어프랑스 와 대한항공이 공동으로 운행하는 비행편이다. 우리는 대한항공의 보딩 패스를 받았다. 아마 외국인들은 에어프랑스 였을 것이다. 기내에 앉은지 5분만에 골아 떨어진 것 같다.
이륙하는 장면을 보지 못했는데 일어나보니 하늘이다. 기내식이 나왔다.
잠을 자다 깨다를 반복하던 와중 착륙이 임박했다.
(조성우 차장님, 홍익이형, 아람이형, 나 : 샤를 드골에서 버스를 기다리며)
아람, 나, 형준이형. 나는 이 세명이 프랑스 파리에서 만나게 될줄은 꿈에도 몰랐다. 알던 사람들과 파리에 도착하니 마음도 한결 편안했다.
우리 애기(여자친구)도 샤를 드골 공항에서 만나기로 했는데, 다행이 만났다!~
Video How To : Getting Started with Subversion and Source Control
Technology, Uncategorized No Comments »In this video “how to” presenter walk through the steps required to install and configure Subversion to control your .NET source code revisions. Several commercial options exist for source control of course such as Vault and Microsoft’s Visual SourceSafe to name just two. Subversion is an open source project (it’s freely available) and has excellent documentation and support available. It’s also easy to use through the command-line or through TortoiseSVN.
In the video you’ll see how to install Subversion, configure it, install the TCP/IP service, and add new or existing projects into the source control repository. You’ll also see how to use TortoiseSVN to create repositories and manipulate files in a Subversion repository. Although the video discusses installing the TCP/IP service for accessing a repository remotely, it doesn’t cover how to access the repository through HTTP. You can find more information about that task and how to configure it with Apache here.
Subversion Project Site: http://subversion.tigris.org
Rick Strahl’s Step-By-Step Subversion Article: http://www.west-wind.com/presentations/subversion/
Subversion Online Book: http://svnbook.red-bean.com/nightly/en/index.html
Video URL : http://www.xmlforasp.net/codebank/download/blog/video/Subversion.wmv
Screen geometry for Blackjack (i607)
Uncategorized 1 Comment »This article can help application developer who uses Samsung Blackjack(i-607).
Recently, I play with my Blackjack smartphone. However, Blackjack has Windows Mobile 5 so we can’t use Windows Mobile 6 Standard QVGA (320×240 pixels - 131 dpi) emulator.
I saw an article at MSDN forum written by user who is suffered by the situation that Visual Studio change application UI automatically to Windows Mobile 5 default screen size (Also including me).
The solution is :
In the visual studio 2005, click the menu Tools >> Options and select Device Tools >> Form Factors and select Windows Mobile 5.0 Smartphone and press the Properties button.
And change the Horizontal/Vertical resolution to 131 pixels per inch. Also Screen width to 320, screen height to 240.
After that, restart your Visual Studio 2005. Then, you will see the different screen size on your C# form designer.
If you have any question, please ask to my email : alex at alexlab dot net. (You should replace at and dot to symbol. This is for blocking SPAM)
Debugging CE/Windows Mobile application without ActiveSync
Uncategorized No Comments »I recently developed an application that manipulate wireless device. However, the problem was that activesync automatically disable my wireless device on mobile phone. So, I couldn’t test my apps with debugger. The reason for that situation I think is security problem. Activesync recognizes mobile device as network adopter (RNDIS) so when device bridged to desktop, desktop is more vurnerable. Anyways, I found several ways to resolve those problem.
This article is from <ctacke />’s blog (http://blog.opennetcf.org/ctacke)
If you’ve done much development on non-Windows Mobile CE devices I’m sure your painfully aware of the pain in the ass process of getting Visual Studio 2005 to actually attach to the device. Lately I’ve been doing nothing but non-WM development and deviced to automate and solidify the process, plus document it while I was at it.
We’ve got a (native) tool called CEDbgSetup that you run on your device (x86 or ARMv4I supported) and then you set up Studio once and only once, then you can debug every time using wired Ethernet, 802.11, USB RNDIS (and likely any other transport that uses TCP/IP) and without ActiveSync.
The tool supports auto-launching from \Windows\Startup or by setting up an LaunchXX entry in HKLM\Init in the device registry, or just manual click. It should work headless too, though I’ve not specifically tested it.
It works with native or managed apps.
PDF of how to debug without activesync is here: can be viewed here

Recent Comments