1) [시작 > 실행 > regedit 입력 > 엔터

2) HKEY_LOCAL_MACHINE > SOFTWARE > MicrosoftWindows NT > CurrentVersion으로 들어가 보면 RegisteredOrganization과 RegisteredOwner라는 값이 있다.

3) 이 값의 RegisteredOrganization은 회사 이름이고 RegisteredOwner는 사용자 이름이다.
이 두 값의 데이터를 수정해 준 후, 로그 오프나 시스템 다시 시작을 하면 변경 사항이 적용된다.

또는 rename.zip을 다운 받아 압축을 풀면 rename.reg 파일이 있는데,
그 안에 있는 항목을 수정한 후 rename.reg를 실행하면 된다.
728x90

A . 레지스트리 편집기를 실행하고(시작메뉴-실행-REGEDIT)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SourcePath
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\SourcePath
를 원하는 위치로 설정한다.(더블클릭하여 변경한후 “확인”버튼을 누른다.)

로긴창에서 “시스템종료” 버튼 없애기
레지스트리 편집기를 실행하고(시작메뉴-실행-REGEDIT)
KHEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon으로 이동하여 ShutdownWithoutLogon 항목의 값을 1에서 0으로 변경한다.
이 작업은 정책편집기(poledit.exe)로 할수도 있다. “Windows NT System”-“Logon”으로 가서 “인증대화상자에서 시스템종료 활성화” 항목을 해제한다.  
728x90
Visual SourceSafe 6.0 #2

4. Check Out / Check In

소스등록을 완료 했으면 이제 준비작업은 다 끝난 겁니다. 지금까지 걸어온 길은 이제 소스의 버전관리를 위한 준비과정이었습니다.
여기까지 셋팅이 완료되면 이제 진짜 버전관리에 들어가는 것입니다.

맨 처음에 언급한 버전관리라는 부분을 읽고 기억하시는 분도 계시리라 믿지만
혹시나 하는 노파심에 다시 버전관리에 정의를 다시 알려드리겠습니다.
 

버전 관리의 핵은 변화된 시점을 정확히 체크해주는 것입니다. 물론 VSS가 어느 정도의 자동화를 해준다고 하지만, 실제 변화된 시점을
알려주는 것은 바로 개발자의 몫입니다. 물론 이렇게 간단하게 끊어 버리면 많은 분들이 의문을 가질 수 있습니다.
무엇을 끊고 무엇이 변화된 시점인지... 전혀 감이 안 잡힌다는 문제죠.
일단 제가 가진 소스를 가지고 어떻게 표현을 하는지 한번 언급을 하도록 하겠습니다.

소스의 변화라는 것은 단순 주석 변경이나, 엔터키 입력, Space 키 입력을 의미하는 것이 아닙니다.
일 예를 들기위해 제 나름대로의 기준은 클래스 추가, 변경, 삭제 입니다.
물론 정책별로 들립니다. 실행되는 모듈을 기준으로 잡을 수도 있고, 기능의 세세한 부분의 변경도 될 수 있겠지만,
저의 기준은 클래스를 두고 봅니다. 그래서 클래스의 추가가 발생하거나, 클래스 내부가 변경되거나, 삭제 될 때
소스의 버전 업 단계를 둡니다.

하나의 가상의 이야기를 적어 보겠습니다.

제가 이 VSS를 설명하기 위해 제 나름대로의 프로젝트인 naoko를 예로 들겠습니다.
하지만 아직 이 naoko는 현재 Dialog-base MFC Application 형태로 Wizard를 사용하여 자동 생성해놓은 상태입니다. (笑)
일단 설명을 위해 작성한것에 불과하니깐요.
그럼 본격적인 설명으로 들어가죠.
일단 모듈을 하나 추가하고 싶습니다. 자동으로 만들어진 클래스 3개 중에 Dialog 부분에서 LButtonDown 시에 확인창을 띄우는 기능을 추가하고 싶어졌습니다.
일단 제 소스형태를 보여드리죠.

  

보시면 알겠지만 뭐 들어 있는 건 거의 없습니다. Dialog-base로 Wizard로 만들어 놓고, 설계만 하고 코딩은 전혀 안 한 상태죠.

모듈 추가이므로 이 부분을 VSS에게 알려야 합니다. 즉 CNaokoDlg 에 LButtonDown을 추가한다는 사실을 VSS에게 알려줘야
하는 것입니다. 게다가, 이 소스는 바로 앞장에서 말씀 드렸듯이 모든 Source에 Read-only가 되어있다는 사실입니다.
어차피 소스의 수정은 안 된다는 의미입니다.

일단 VSS를 띄우고 해당하는 소스부분을 선택합니다. 지금 수정할 Class가 CNaokoDlg 이므로 naokodlg.h 와 naokodlg.cpp를
수정하게 될 것입니다. 이 부분을 VSS 상에서 선택 처리 해야 합니다.


보시면 아시겠지만 왼쪽 트리에서는 naoko를 선택하고 오른쪽 소스 리스트에서는 해당하는 소스 파일이름을 멀티 셀렉트했음을 알 수 있습니다.
일단 이렇게 선택하시고 메뉴의 SourceSafe -> Check Out을 선택합니다.
즉 소스의 수정의 시작을 의미합니다. 이렇게 선택하면 아래와 같은 대화창이 뜹니다.


여기서 보면 각종 여러 가지 옵션들이 있는데, 이 부분은 나중의 연구부분으로 두고 일단은 간단하게 넘어가도록 하죠.
Comment에 무언가를 쓰게 되어 있고, To에는 현재 프로젝트의 소스파일 위치를 알려주고 있죠.
거기에 Don't get local copy 와 Only show this dialog when the Shift key is down 의 체크가 있고,
Advanced 라고 해서 무언가 더 펼쳐 질것 같고요.
체크와 Advanced 쪽은 넘어가죠.
현재 중요한 것은 Comment 정도니깐요.

Comment에 현재 왜 이 소스를 Check-out 하는 지를 적어 줍니다. 물론 Check-out에서 굳이 내용을 적을 필요는 없습니다.
VSS 로그 상에서는 그 부분은 기재하지 않거든요. 그럼 왜 적어 줄까요?
혼자 작업하는 경우에는 거의 쓰이는 경우가 없지만 단체로 작업할 때는 쓰입니다.
즉 A라는 사람이 해당 Source를 Check-out 해버리면 다른 사람들은 VSS상에서 Check-out을 승인 받지 못합니다.
즉 소스를 전혀 수정하지 못하게 되죠. 이 때 Check-out 승인을 받지 않은 사람은 왜 승인을 못 받는지에 대해서
간단한 메시지를 이 Comment를 통해 받게 되죠.

즉 혼자 짤 경우에는 Comment를 비워놓고 OK 하셔도 됩니다. 하지만 팀 플레이 하게 되는 경우가 발생할 수 있으며
좋은 버릇은 처음 부터 들여 놓는 것이 좋으니깐, 가급적 써주세요. 번.거.롭.더.라.도. 말이죠.
원래 버전관리는 무척 번거로운 작업입니다.


Check-out 하시면 드디어 무언가 변화된 모습을 보실 수 있습니다. naokoDlg.cpp와 naokoDlg.h 아이콘에 check 표시가
되어 있죠. 바로 Check-out의 시작입니다. 즉 이 소스는 User에 적힌 ID로 접근한 사람만이 변경을 할 수 있다는 의미입니다.
Check Out Folder의 의미는 해당 ID로 접근한 사람의 로컬 PC내의 Working Folder를 보여줍니다.
사람마다 소스를 넣는 위치는 다 틀리므로 어디에 있는지 알려주는 것이죠 ^^


자, 이제 LButtonDown의 모듈을 넣습니다.


아주 웃기는 내용이지만 일단 모듈 추가를 한 것이죠. 일단 해당 소스를 컴파일 해서 실험을 합니다.
컴파일은 제대로 되는지 정상적으로 작동하는지. 이 부분의 기준은 개인적으로 가지고 있는 점검표를 가지고 점검을 해보세요.
꼭 점검을 제대로 하시는 것이 좋죠. VSS에 등재하기 전에 꼭 이런 테스트를 가지도록 하세요.
번거로운 작업이지만 나중을 위해서는 꼭 해두는 것이 좋습니다.

그리고 난 뒤에 변경된 소스를 저장하세요. 가급적 Files -> Save All을 통해 저장을 해두시기 바랍니다. 단순히 소스상의
변경된 내용이야 소스파일을 선택해서 저장하면 되지만, 파일을 추가하거나 삭제한 경우 *.dsp 파일이 변경이 되는데
대부분 이 파일을 저장하는 것을 잊어 먹는 경우가 많습니다. Save All 하시면 이 파일도 저장이 되므로 꼭 전체 저장을 해주시기
바랍니다.

자 대망의 Check-in.
체크인전 중요한 점을 잊지 않으셔야 될것 같습니다.
물론 추후 Versionning 이라는 주제로 다시 언급하겠지만, 여기서 간단하게 언급을 하자면, Check-in 전에 반드시 정상적으로 실행되는 모듈이여야 합니다.
Check-in 하게되면 VSS 상에 등록이 되는데, 원래대로 돌아가는데 컴파일 오류나 버그가 있으면 굉장히 곤란한 상황에 빠집니다. 반드시 컴파일 하고, 자신만의 테스트 후에 등록하세요


이제 VSS 상에 변경된 내용을 적용을 해야 합니다. 아직까진 자신의 PC내의 소스만 변경된 것이지 VSS 상에서는 저장이 된 것이 아닙니다. 즉, 이젠 변경된 내용을 VSS에 올리는 작업을 해야 합니다. 바로 전에도 언급했듯이 반드시 전체 저장을 해주시기 바랍니다.
오로지 로컬상에 저장된 파일을 올리지, VC에 떠 있는 파일을 올리는 것이 아닙니다 !!!!



check-in 메뉴가 이전과는 다르게 활성화 되어 있죠?
Check-out이 된 상태의 소스만 저렇게 활성화가 됩니다.
일단 저 두 개의 파일을  Check-in 해줍니다.


Check-out과는 다르게 Comment의 크기가 압도적이죠? Check-in이 되는 순간 VSS상에 기록이 완전히 되버리기 때문입니다.
가급적 상세하게 적어주세요. 물론 빈 채로 두어도 되지만, 자신이 왜 현재 소스를 Check-in 했는지의 여부를 나중에 알 수 있게 되기 때문입니다.
나중에 문득 왜 이렇게 수정이 되었는지를 알 수 있게 되는 중요한 단서가 될 수 있기 때문이죠.

여기서 잠깐! Check-out 이라는 단어의 의미를 먼저 아시면 헷갈릴 위험이 적죠. 지금 check-out을 사전에서 찾아보시면 "기계의 점검"을 의미합니다.
즉 여기서는 소스의 점검이 되겠죠. check-in은 점검 완료의 등재를 의미하게 되죠. 이 부분을 헷갈리지 마세요.
Check Out으로 시작해서 Check In으로 끝난다는 사실을 기억하시면 됩니다.
728x90
Visual Source Safe 6.0 #1

이제 준비 작업 중 2/3는 끝났습니다. 이제 이용하기 위한 준비를 하도록 하죠.

VSS를 이용하는 방법은 크게 2가지가 있습니다.

1. Microsoft Visual SourceSafe 6.0를 띄워서 하는 경우
2. Visual C++ 에서 직접 하는 경우

1번째 방법은 Visual Source Safe 클라이언트를 직접 띄워 하는 방법입니다. DB에 저장된 내용을 한눈에 볼 수 있고
소스 관리는 한눈에 보면서 합니다. 게다가 버전관리에 관련된 다양한 기능을 다 쓸 수 있습니다. 게다가 소스 위치만
잘 정해 주시면 VC말고도 다른 언어 소스도 버전관리도 할 수 있습니다.  
VC의 자동화 기능을 쓰다가 쓰면 아주, 아주, 불편해 보일 지도 모릅니다.
게다가 소스 창과 이 창을 계속 왔다 갔다 하다 보면 어느새 손이 Alt + Tab을 하염없이 누르고 있는 자신을 바라보게 됩니다 -_-;;;;

2번째 방법은 어차피 VC에서 지원하는 방법인지라 그냥 하시면 됩니다. 거의 완벽에 가까운 자동화죠.
개인적으로는 권장합니다. 편하거든요. 그냥 VC 하면서 자동적으로 버전 관리도 해주고 그냥 그냥 씁니다.
Source 편집 시에 자동으로 Check Out을 해주고 자동으로 VSS 의 DB에 연결해줍니다.
Check In이 되어 있는 경우에 자동적으로 편집도 안되게 해줍니다.

하지만,  여전히 버그는 있는지라 완전 맹신하면 크게 뒤통수 한번 맞습니다. VSS 기능을 뛰어넘는 기묘한 작업
(VSS 설정 파일 손대기 및 소스 위치의 변경 등등)을 하게 되면  갑자기 Check In/Out이 지원 안되거나
이상한 폴더에 소스를 복사해 놓고 멋대로 작동하는 경우가 발생합니다.
자동화에도 한계가 있음을 다시 한번 확인할 수 있다고나 할까요?
- VS 2003 에서는 제대로 되겠죠? 잘 모르겠습니다. 여전히 VC 6.0 Sp5를 쓰는 입장이라 ... -

일단 1번째 방법을 먼저 설명하겠습니다. 그  VSS 6.0 Client  이 Tool 이용하는 법을 어느 정도 익숙해지면 VC에서는 손쉽게 적용이 가능합니다.
게다가 기능도 무지 많아서, 추려서 자주 쓰는 기능들을 언급하도록 하겠습니다.

1.로그인

Visual Source Safe 6.0 을 실행 시키면 제일 먼저 아래와 같은 화면이 뜹니다.


자신이 쓰는 DB 이름이면 그냥 ID와 Password를 넣으시면 됩니다. 만일 아닐 경우
(예를 들면 COMMON 이거나 전혀 다른 DB 이름인 경우) Browse를 눌러 아래와 같은 창이 뜨면 해당하는 DB를 선택해 주시기 바랍니다.
역시 리스트에 없으면 창에서 Browse를 선택해서 해당 DB위치를 잡아주셔서 등록해 주시기 바랍니다.


뭐 이 부분은 앞에서 VS Admin 부분을 통해 알려드렸으니깐 하실 수 있겠죠? VSS에 로그인을 하시면 됩니다.

 

2. VSS Main Window



로그인을 하면 위와 같은 화면이 뜹니다. 일단 간단하게 번호를 매겨서 위치를 설명해 드리겠습니다.

1번 위치 : DB에 저장된 프로젝트 폴더 리스트 입니다. Explore의 폴더 보기와 동일한 트리구조 입니다.
2번 위치 : 선택된 폴더에 있는 파일 리스트 입니다. 1번위치에 해당하는 폴더를 선택하면 그 안의 파일들을 보여 줍니다.
3번 위치 : 각종 기능들이 작동된 Log를 나열합니다. 각종 기능 결과값을 보여 줍니다.
4번 위치 : 메뉴 입니다. (번호를 매기고도 민망합니다.)
5번 위치 : 툴바 입니다. (역시.. 민망 ... _nollll .... )

DB안에 많은 프로젝트를 담을 수도 있고 하나의 프로젝트를 담을 수 있습니다. 일단 $/ 위치 바로 아래 부분을 보통 프로젝트라고
합니다. 물론 루트에다 해당하는 소스를 걸 수 있지만, 일반적으로 바로 아래 단에 프로젝트 이름을 담은 폴더를 만들어 두곤 합니다.
뭐 정책은 자신의 기준에 맞추어 세워 두시면 됩니다.

그리고 원래는 해당하는 부분에서 마우스 R-Click 하면 해당 메뉴들이 쏟아져 나오는데, 이것까지 연동하여 캡춰하기가 그러니깐,
가급적 설명은 메인 메뉴와 툴바를 이용하여 처리하도록 하겠습니다. 마우스 R-Click 메뉴 부분은 알아서 비교 연구를..(죄송 ;;;; )

 

3. 프로젝트 생성과 소스 등록

대충 설명하고 갑자기 실제 기능적인 설명에 어이 없을지는 모르겠지만, 제가 이 VSS에 대해서 이론적인 바탕이 거의 전무합니다.
오로지 사용하닥 깨달아서 나온 경험을 근간하기 때문이죠. 그러므로 실제 설명도 제가 사용해 보았던 방법을 근간으로 말씀드립니다.

여기서는 Folder가 하나의 프로젝트로 생각한답니다. 프로젝트라고 적혀 있어도 그냥 폴더라고 생각해 주시기 바랍니다.

  

먼저 1번 폴더 리스트에서 루트를 선택하시고, Files -> Create Project 를 골라주시기 바랍니다.
그러면 오른쪽과 같은 다이얼로그가 뜨는데, 위 창에 이름을 아래 창에 해당 프로젝트 설명을 넣어 주시기 바랍니다.
물론 Project 이름은 가급적 영어로 써주세요.
한글로 써 본적이 한번도 없어서 잘 모르겠지만, 왠지 위험. 그래서 가급적 영어로 써주세요.

그러면 아래와 같이 등록이 됩니다.



프로젝트 폴더 리스트가 보이는데 거기서 naoko가 등록된 것을 볼 수 있습니다. naoko를 선택하시면
역시 아무것도 등록하지 않았기 때문에 보이는 건 저것 밖에 없지만.. 이제 실제 프로젝트로 사용할 내용을 등록해야 합니다.


등록할 때 쓰는 메뉴는 File -> Add Files ... 입니다. 잠깐 여기서  Add Files 하는 것은 다 좋은데 먼저 파일을
add 할 폴더를 왼쪽 프로젝트 트리 창에서 선택을 해주세요.
루트에 체크된 상태에서 Add 해봐야, 루트에 Add 될 뿐입니다.  꼭 해당하는 위치에서 Add 하세요.
혹시 잘못 Add 했으면 꼭 Add 된 파일을 지우세요.
여기서 Add 된 것은 DB에 기록되는 것 뿐이니깐, 지워도 원래 위치에 있는 파일은 안 지워 집니다.
Add Files를 하시면 아래와 같은 다이얼로그가 뜹니다.


해당 소스가 있는 위치를 잡으세요. 그리고 난 뒤에 List files of type에서 VC 부분을 선택하세요. 모든 파일을 add 할 수 있겠지만, 쓸데 없는 DB 낭비일 뿐이죠.
그러므로 꼭 해당하는 파일만 Add 하시길. 일단 VC로 필터링 된 파일은 다 Add 해도 됩니다.

Add 하면 아래와 같은 대화 창이 뜹니다.


각 파일을 등록할 때 지금 등록된 파일에 대한 설명을 넣으시면 됩니다. 물론 귀찮으신 분은 Apply same comment for all 을 체크하시고 대충 쓰시고 OK 하시면 됩니다.
그러면 지금 Add 파일 모두 로그상으로는 지금 적은 Comment로 등록됩니다. 귀찮더라도, 친절하게 Comment를 넣으시면 나중에 History를 보면서 도움은 많이 됩니다.

첫 Add를 할 때, Set working Folder를 지금 Add한 파일 위치에 넣겠냐고 묻는 대화창이 뜨는데,
그건 그냥 OK 하세요. Working Folder 부분에 대해서는 나중에 설명 드리죠. 일단 이렇게 Add를 했죠.
그러면 아래와 같이 뜹니다.


하지만 다 한 것이 아니랍니다.
보통 Wizard를 통해 VC프로젝트를 만들면 res라는 폴더가 자동으로 생깁니다. 이것도 넣어 주셔야겠죠. 애석하게도 Add File 안에는 Recursive(재귀호출) 방법으로
하위 폴더 까지 Add를 못해주기 때문에 번거롭더라도 프로젝트를 이하에 생성해 주어야 합니다. 마찬가지로 트리에서 해당하는 프로젝트를 선택하시고
위에서 언급한 프로젝트 생성과 동일한 방법으로 res를 생성해 주시기 바랍니다. 그러면 아래와 같은 화면으로 뜹니다.


위에서 마찬가지로 해당하는 소스를 더해서 처리하면 아래와 같이 됩니다.


이런 식으로 소스를 등록해 주시면 됩니다.


------------------ 수정 2005/02/25 ---------------------------------------------------
Add 하는 방법에 대해서 추가적으로 말씀 드릴 것이 있습니다.
위의 방법은 File 한개 한개를 등록하는 방법으로, 만일 프로젝트가 여러개의 폴더일때는..
정말이지 노가다에 가까운 작업을 하게 됩니다.
저도 한동안 VSS를 안하다 보니, 갑자기 빠트리게 되었습니다. -_-;;;;;
요근래 프로그래밍을 하다고 보니, 그 방법을 알게 되었습니다.

앞에서는 Project를 Add 할 때, 위에서는 Add 할 위치를 Create Project를 이용하여 생성했습니다.
하지만, 이번에 하는 방법에서는 그럴 필요가 없습니다. 폴더 채로 등록하는 것이니깐요.

현재 프로젝트 폴더가 어딘지 그 위치를 보세요. 위치상으로는 1번 창에 나오는 부분인데, 지금 커서가
등록할 위치에 해당하는지를 확인하는 것입니다.

그리고 등록을 할 폴더를 Add 하는 작업입니다. Add는 물론 위에서 처럼 File -> Add Files ... 를 통해
시작합니다. 그러면 다음과 같은 화면이 뜹니다.


여기서 이전에는 소스를 선택했다면, 이번에는 폴더를 선택하는 것입니다.
예제 화면을 기준으로 하면 오른쪽에 보이시는 NAOKO라는 폴더를 선택하시면 됩니다.
왼쪽의 소스부분말고, 오른쪽의 폴더를 선택하는 것입니다.
물론 맨 아래에 있는 파일 종류를 선택해 주시기 바랍니다. 그러지 않으면 잡스런 파일이 다 Add되니깐..
가급적 파일 종류를 선택해 주세요. 물론 지금은 VC용이니깐, 당연히 VC용을 선택하시면 됩니다.
그리고 OK 하세요.
그러면 파일 등록할 때와는 약간 다른 화면이 뜹니다.

저 창의 아래부분을 보시면 색다른 체크가 있습니다.
바로 RECURSIVE. 이것이 바로 이하 폴더까지 전부 긁어 주는 훌륭한 기능을 하는 체크 버튼 입니다.
이 체크 버튼을 체크 해주시고 OK 해주세요.

그러면 이전에 파일만 등록하는 것과는 다르게, 이하 폴더의 내용까지 전부 Add 하게 됩니다.

--------------------------------------------------------------------------------


자, 등록된 파일을 확인해보도록 하겠습니다. 현재 VSS 등록된 파일들을 열어보시면 신기한 광경을 구경할 수 있습니다.


현재 VSS에 등록된 파일들이 전부 Read-only가 되었다는 사실입니다. 즉 아무렇게나 편집되지 않도록 Read-only를 자동으로
걸어주는 것입니다. 요즘은 Read-only에 대해서 그다지 특별한 안전장치는 아닙니다. 간단하게 Read-only를 풀수는 있죠.
하지만, 중요한 것은 Read-only가 걸린 파일은 꼭 VSS를 거쳐 달라는 의미라는 것입니다.
즉 소스 편집을 한다고 무조건 Read-only를 멋대로 풀고 소스 작업을 하는 것이 아니라, 꼭 VSS 를 통해서 작업을 해달라는 것입니다.
이점을 꼭 기억하세요!!!!!
728x90
이 Visual Source Safe(이하 VSS)는  Visual C++(이하 VC) 또는 Visual Studio(이하 VS)를

디폴트로 설치할 때 늘 같이 설치되는 Application 입니다.

이 프로그램의 역할을 잘 알지 못하는 사람이 대부분 이여서 설치되어 있어도 그냥 방치하거나

VS을 설치할 때 Custom을 선택해서 설치 옵션에서 빼버리기도 합니다. 하지만 조금만 내용을 아시게 되면 이 프로그램을 꼭 설치할

수 있게 됩니다. 일단 VSS를 설명하기 전 소스 버전 관리라는 것을 먼저 알려드려야 할 것 같습니다.

 

1. 소스 버전 관리 (Source Version Management)

하나의 Application을 만들 때 많은 개발자가 함께 개발을 하게 됩니다. 다양한 사람들이 다양한 생각을 가지고 소스를

다루게 되죠. 이 때 소스의 많은 부분이 붙었다가 떼어졌다가 하게 됩니다. 일부분이 수정되어 지기도 하고 일부분이 추가 되기도

하죠. 물론 회사 나름대로의 정책을 세워 만들어 나가 정리할 수 있겠지만, 악의가 전혀 없는 한 개발자의 실수로 만든

프로그램이 실행도 안되게 만들 수 있겠죠. 이런 것이 누적되었으면 누가 어디를 수정했는지 알 수 없게 되고,

그 실수한 사람이 원래대로 돌릴 수 없는 불상사가 벌어지게 됩니다.

이런 문제를 발생하지 않게 하기 위해 하는 방법이 버전 관리입니다.

즉 소스에 변화가 발생된 시점을 나누어 해당 소스를 저장해 놓는 것이죠. 그래서 변화된 것이 이상이 없는지 확인한 후

버전 대로 Release를 하게 되는 것입니다. 만일 문제가 생겼으면 이전 버전을 다시 돌려놔서 문제가 발생한 부분을 적절하게

고치고 문제가 발생시킨 개발자에게 응징(?)을 날리죠 ^^;;;;;

여러 가지 Application 의 About를 보시면 (V.11.516.589) 이런 것을 보실 수 있을 텐데 이게 바로 Release 버전을 말합니다.

즉 소스에서 버전을 매기고 만든 결과 입니다. 물론 해당 회사의 버전 정책에 따라 틀리겠지만 일반적으로 다음을 말합니다.

11번의 큰 틀의 변경과 516번의 주요 모둘 변경, 그리고 516번째에서 589의 작은 변경을 한 것이죠.

 

대충 이 정도로 하도록 하죠. 버전을 나누는 방법은 상당히 전문적인 내용이 될 수 있습니다.

특히 그룹단위 프로그래머 팀에서야 엄청난 정책이 난무하게 되죠.

하지만 여기는 제목을 보시면 아시겠지만, 혼자 짜는 Application 을 위한 VSS 입니다 ^^;

그러므로 이 기준은 자신이 알기 편하게 나누시기 바랍니다 단순 소스 변화에서도 넣으셔도 좋고, 굵직한 모듈을

붙이고 떼셔도 무방합니다.

 

2. About VSS

일단 버전 관리라는 것을 대략적으로 대충은 아셨으리라 봅니다.

그럼 이 VSS란 무엇일까요? 바로 그 버전 관리를 편하게 도와주는 툴입니다.자동으로 버전을 매겨주고

그 정보를 자동으로 보관해줍니다.게다가, MS에서 만든 것이라서 MS에서 만들어진 개발 툴 모두를 지원합니다.

하지만 워낙 가볍게 만들다 보니 큰 단위의 프로젝트에서 보다는 중,소 규모의 팀 단위 작업에 보통 이용됩니다.

(MS에 다니시는 분들은 다른 툴을 쓰시는 지... 아니면 여러 개의 VSS를 연결해서 쓰시는 지는 잘 모르겠습니다 ^^;;)

워낙 VC 나 VB같은 MS 제품은 VSS에 연계가 잘돼서 상당히 편하게 작업할 수 있게 됩니다.

보통 설치되면 프로그램 메뉴 안에 "Microsoft Visual SourceSafe" 안에 있게 됩니다.  

 

3. 그럼 VSS이 왜 필요할까요?

버전 관리에 여러 사람이 붙어서 개발할 때는 쓸모가 있겠지만,

과연 홀로 프로그래밍하는 사람에게 이 버전 관리 도구가 필요할까요? 라는 반문이 올지 모르겠습니다.

물론 1000 라인 이하의 Source나 2~3개의 Class로 충분히 Application을 만든다면 별 필요는 없을 것입니다.

되려 번거럽기만 하겠죠. 단순히 Source내에 주석만으로 충분히 Version 관리를 수행할 수 있기 때문이죠.

그러나 그 이상의 규모의 Application을 짠다고 한다면, 이야기가 틀려지게 됩니다.

 

VC로 제작하다 보면 Wizard로 소스가 자동으로 생성되고 거기에 자신의 소스를 붙이기 시작합니다. 그러다

이런 저런 생각이 치밀어 올라 CodeProejct 나 CodeGuru 같은 데서 이런저런 소스를 퍼와서 적용하기 시작합니다

그렇게 이곳 저곳을 고치고 난 뒤 다른 곳에서 빌려온 소스를 추가 했습니다.

경험이 있으신 분은 아시겠지만, 처음에는 잘 되다가 어느 순간부터 생각 치도 못한 오류가 발생하기도 합니다.

다행이 늘 소스를 백업을 했다면 다행이지만, 그렇지 않다면 슬슬 문제가 돌출하기 시작합니다.

어디를 고치고 어디를 삭제하고 어디를 추가했는지 모르기 때문에, 전부 실행하면서 Trace를 하게 되고

그 문제점을 찾기에 여념이 없게 됩니다.

그러면서 혼자 "아.... 백업을 충실하게 할걸...." 이라고 한숨을 쉬며 후회를 합니다.

 

이럴때 버전관리를 하고 VSS를 이용하면 손쉽게 위의 문제를 벗어날 수 있게 됩니다. 버전을 되돌려 가면서 어디서 부터는 제대로 돌아갔다는

것을 알기 시작하면 손쉽게 처리 되기 시작합니다. 그리고 그 당시로 소스를 되돌려 찬찬히 다시 작업을 할 수 있겠죠.

지금 부터 홀로 프로그램을 짜시는 분들을 위해 VSS를 설명하기로 하겠습니다.

 

아, 먼저 이 강좌를 실천하려면 VSS가 필요하므로 만일 VSS가 설치되지 않았다면 Visual C++ / Visual Studio 시디로

프로그램 추가/삭제 를 통해 VSS를 설치해 주시기 바랍니다.

VSS를 설치했으면 다음과 같은 메뉴를 보실 수 있습니다.



Analyze & Fix VSS DB, Analyze VSS DB, Microsoft Visual SourceSafe 6.0, Visual SourceSafe 6.0 Admin

이렇게 메뉴가 있을 겁니다. 여기서 실제로 자주 사용하는 것은 두가지 입니다.

Microsoft Visual SourceSafe 6.0 / Visual SourceSafe 6.0 Admin

위의 프로그램을 중심으로 설명해 드리도록 하겠습니다.
728x90

1.
아래 위치의 폴더를 없애거나 백업한다.
C:\Documents and Settings\자신의 아이디\Application Data\Microsoft\ActiveSync\Profiles

2. Regedit 를 열고, 아래의 위치에서 자신의 PDA ID가 있는 내용을 지운다.
(해당 위치에서 찾기(Find)를 해서 PDAID로 찾으면 나온다.)
HKEY_USERS\S-1-5-21-1220945662-412668190-839522115-1107\Software\Microsoft\Windows CE Services\Partners

3. 내문서(My Documents) 에 자신의 PDAID와 겹치는 My Documents를 지우거나 백업한다.
(이 부분은 특별히 할 필요는 없으나, 혹시 생길 문제를 대처하기 위함)
728x90
만약에 qmail을 howto대로 설치하셨거나 lwq 대로 설치하셨다면 MS에서 사용하는 SMTP를 사용하는 경우  
모든 메일은 "status 256" 이라는 로그파일만을 남기고 수신이 거부되어집니다.

만약에 recordio를 사용하시거나 qmail-scanner등을 사용하셔서 debug 하신다면 아래와 같은 log를 보실 수 있을 겁니다.

w_c: STDOUT undefined - qmail-smtpd must be rejecting Email - exit

이와 같은 현상이 생기는 이유는 메일 서버로 사용하는 것이 아마도 MS-SMTP를 사용하기 때문에 생기는 것입니다.
혹은 exchange를 사용하더라도 실제 메일 을 발송하는 스크립트에 문제가 있기 때문이지요.

문제는 헤더에서 줄바꿈을 할때 CR/LF 의 스타일을 따르지 않고 dos스타일의 방식을 따르기 때문에
qmail-smtpd가 수신을 거부하는 것입니다.

qmail의 저자인 djb는 표준을 엄격히 준수해서 qmail을 코딩 하였기 때문에, 이런 형식에 어긋난 메일은 수신 거부를 하도록 코딩한 것 같습니다.

물론 그에 대한 해결방법도 djb가 마련해 놓았습니다.

ucspi-tcp 를 0.88버젼을 사용하신다면 /usr/local/bin 디렉토리에 fixcrio 라는 프
로그램이 있을 것이고, 그 이전 버젼을 사용하신다면 fixcr 이라는 프로그램이 있을
것입니다.

이 프로그램을 qmail-smtpd 앞에서 실행해 주시면 됩니다.

즉...

lwq스타일을 따른다면..

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 1000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 /usr/local/bin/smtplog \
/usr/local/bin/fixcrio /var/qmail/bin/qmail-smtpd 2>&1

이런식으로..
혹은 fixcr을 사용하신다면

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 1000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 /usr/local/bin/smtplog \
sh -c '/usr/local/bin/fixcr | /var/qmail/bin/qmail-smtpd' 2>&1

이런식으로 적어주신후 qmail을 restart하시면 해결됩니다..

728x90
5. Hosts.Rules 설정
  - 자 여기 까지 설치되었으면 기본적인 설정은 거의 끝난것 같네요.
     아, 제일 중요한 부분. 이 FTPD안에는 자체적인 IP Filter 기능이 있습니다. 그덕에 default로 된 내용은
     모든 접속을 deny로 되어 있죠.. 이것을 allow로 해놔야 접속이 가능하답니다...-_-;  (이거 몰라서 1시간 헤맸다는...)
     위의 파일은 /etc 안에 Hosts.Rules 라는 이름으로 있습니다.
     그 안을 열어 보면 별 잡시려운 내용이 다 보일겁니다. 거의 예제 수준이구요..  아래의 내용이 디폴트 내용입니다.
                #       Default policy
                #
                #       POLICY  ACCEPT  CONNECTIONS_PER_IP
                #       POLICY  DENY
                #
                #POLICY        ACCEPT        2
                ## PLEASE REMOVE LINE BELOW
                POLICY DENY
                
                #        Classes
                #
                #        CLASS        CLASS_NAME        TOTAL_CONNECTIONS_PER_CLASS
                CLASS        NORDIC        25
                CLASS   ADMIN   -1

                #       Rules
                #
                #       ACCEPT  I|H     IP|HOSTNAME     CLASS_NAME      CONNECTIONS_PER_IP
                #       DENY    I|H     IP|HOSTNAME     LOG_STRING
                #
                
                ACCEPT  I 192.168.2.    ADMIN   -1
                ACCEPT  I 127.0.0.      ADMIN   -1
                ACCEPT        H .fi                NORDIC        2
                ACCEPT        H .se                NORDIC        1
                ACCEPT        H .no                NORDIC        1
                DENY    I 192.168.      "Banned network address"
                DENY        I 10.                "Banned network address"
                DENY        H .tw                "Access from taiwan is prohibited"

   그런데, 실제 필터링은 어지간하면 필터링에 대한 내공을 쌓은후 손보는 것이 좋습니다. 어설프게 하면 사이트 안열립니다. ^^;
   그래서 처음 이 내용을 접하시는 분은 이 내용을 전부 주석 처리 - 문자열 앞에 "#" 넣는 것입니다. - 하시고 "POLICY ACCEPT -1" 이라는 문장을 추가해 주세요. 그러면 해결. 하지만 보안이 두렵다 하면.. 필터링 공부하셔서 정책을 세워 적어 주세요. 대략 iptable과 유사한 것 같으니깐요.

6. Service 등록
  -  대략... 이 공식 홈페이지에서는 Linux용과 Window용을 구분하기 위해서 인지.. 퀵인스톨 문서에는 이 내용이 빠졌더군요. 그래서 제가 대신 넣습니다 -_-;
     아까 준비하라고 말씀 드린 파일들 있죠? 그 파일을 /system 폴더에 넣어주세요. instsrv.exe 와 srvany.exe 입니다. 그 것을 복사해 넣으시구요. 지금 부터의 설명은 모두 저의 설치 위치인 "c:\ioFTPD"를 기준으로 설명합니다. 다른 위치에 설치하신 분은 각기 알아서 바꿔서 처리하세요.
      c:\ioFTPD\system\instsrv ioFTPD "c:\ioFTPD\system\srvany.exe"
위의 문장을 도스 창에서 한번 실행해 주세요. 그러면 Service로 정상적으로 등록되었다고 나옵니다. 만일 안나온다면 폴더이름이 틀렸든가, 파일이름이 틀렸든가 합니다. 그리고 중간에 ioFTPD 라고 넣어주셔야 잘 찾을 수 있습니다. 다르게 집어넣으면 서비스 이름도 다르게 찍혀 나와 나중에 대략 낭패 상황에 빠집니다. (아무리 찾아도 안나오죠.. 저같은 경우 opFTPD 라고 적는 바람에.. 못찾다가... 나중에 알았다는...-_-;)
     그 다음은 레지스트리를 하나 등록해주어야 합니다.
      2가지 방법이 있는데요.. 하나는 .reg 파일을 만들어 실행하는 것이고.. 다른 하나는 직접 regedit을 해서 고치는 것입니다.

      1. .reg 파일 만들기.
         text 파일을 하나 만드세요. 빈거. 그 파일이름은 적당히 넣고.. 확장자만 .reg로 바꿔주세요. 저같은 경우 a.reg로 바꾸었습니다.   그 파일을 열어서 아래의 내용을 넣어 주세요.
      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ioFTPD\Parameters]
      "Application"="C:\\ioFTPD\\system\\ioFTPD.exe"
          -- 저.. 당빠.. 위의 폴더 위치는 설치위치로 바꿔줘야 되요...-_-; 아, 그리고 각 폴더 명칭에 "\" <- 요게 한번 들어가지 않고 두번씩 들어간 이유는 이 문서가 단순 text 문서라서 그래요. 한번씩 넣지 말고 꼭 2번씩 넣어주세요.
       저장하시고... 이 문서를 실행해주세요.. 정상적으로 되었다면 아래의 2번은 볼필요 가 없습니다.

       2. 직접 등록하기
           이 문서에 온신경을 더한다면.. 분명 저처럼 실패하신 분이겠군요. 그렇다면 이렇게 하세요. regedit를 실행하세요.
           그리고 HKEY_LOCAL_MACHINE 를 찾고 그 다음에 있는 SYSTEM 을 찾으시고.. 그 다음의   CurrentControlSet 을 찾으시고 그 다음에 있는  Services 를, 그리고 ioFTPD 찾아 주세요. 여까지 왔으면 성공입니다.
           일단 ioFTPD 레지스트리 항목에서 오른쪽 버튼을 눌러 메뉴중의 "새로만들기" 에서 "키"를 선택하신 후 키 이름 "Parameters" 라 해주세요. 스펠링 틀리면 안됩니다 ^^;
            Parameters를 열어보시면 (Default)   REG_SZ   (value not set) 이 보일 것입니다. 아랫쪽 허연 공간에서 다시 오른쪽 버튼을 누르시고 "새로 만들기" 에서 "문자열 값" 을 선택하세요. 그럼 (Default) 및에 New Value#1 이라는 것이 보이는데 그 곳에서 오른쪽 버튼을 눌러 이름 바꾸기를 해서 "Application" 이라고 넣어주시구요.. 그리고 해당 값을 클릭하면 실제 값을 넣는 것이 나오는데 그 안에 c:\ioFTPD\system\ioFTPD.exe 을 넣어주세요. 스펠링이 틀렸나 다시 한번 확인해 보시고, 자신이 설치한 위치에 제대로 파일이 있는지 확인하세요.... 여기 까지 왔으면 정상적인 설치는 된 것입니다.

7. Service 기동!!!!
  - 자 설치는 거짐 끝난 것이구요, 실제 서비스의 기동은 다음과 같습니다.
    1. 리부팅 한다.
    2. 서비스 항목을 열어 시작을 한다
    저렇게 두가지 방법이 있는데요. 서비스 항목은 제어판 -> 관리도구 -> 서비스 를 열면 됩니다. 그 안에 보시면 ioFTPD 라는 서비스가 보이는 데 그것을 시작하시면 됩니다.

8. 최종 점검!!!
   - 제대로 띄워졌는지를 보시려면, ftp://해당주소:포트번호 하시면 됩니다. 아무것도 설정안한 상태라면 Admin의 아이디와 암호는
     ioFTPD 과 ioFTPD 입니다. !!!!!주의!!!!!! 여기서는 암호건 아이디건 대소문자 구분합니다. !!!!!
     접속이 잘된다면 되구요.. 안된다면 지금까지 설치된 내용을 점검 해보세요.
     제가 겪었던 문제들은 다음에 언급해 정리하겠습니다.
     접속이 되면 연결된 상태에서 암호를 바꿔 주세요.
     FTP 중에서 직접 명령어 치기 라는 것이 있습니다 (만일 FTP 프로그램을 쓰지 않고 cmd에서 ftp로 접속했다면 간단하겠네요)
     명령어를 다음과 같이 넣어 주세요.
       SITE PASSWORD <new_password>
     <new_password>에다 자신이 새로 변경할 패스워드 넣으시면 됩니다.



728x90

+ Recent posts

728x90