블로그 이미지
생각처럼

카테고리

전체보기 (209)
TOOL (1)
다이어리 (1)
Bit (200)
HELP? (0)
Total
Today
Yesterday

달력

« » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

공지사항

태그목록

최근에 올라온 글

'폼에 그린 사각형 영역 안에 텍스트를 입력시킬경우 텍스트 문자열의 길이가 사각형 영역보다 클경우 글씨가 잘리는 현상이 발생한다 이현상을 막기위해 MeasureString 를 사용할수 있다.

 

    '화면에 사각형 출력
    Private Sub Screen_Rectangle_Drawing(ByVal D_String As String, ByVal Rectangle_Style As RectangleF)
        eScreen.Graphics.DrawRectangle(blackPen, Rectangle_Style.X, Rectangle_Style.Y, Rectangle_Style.Width, Rectangle_Style.Height) '사각영역을 그려준다

        Dim st = eScreen.Graphics.MeasureString(D_String, drawFont, Rectangle_Style.Size, drawFormat) '그려진사각영역안에 그린 문자열에대한 사이즈를 가지고 온다
        Dim re_font = drawFont
        Dim font_size As Integer
        font_size = drawFont.Size

'문자열의 사이즈가 사각형 영역의 사이즈와 같을경우 글자가 잘린 상태이므로

'반복문 안에 폰트크기를 줄여 줄수있는 루틴을 정의  한다.

        While (st.Height >= Rectangle_Style.Size.Height Or st.Width >= Rectangle_Style.Size.Width) 
            font_size = font_size - 1 ' 추출된 st 의 크기가 사각형 영역보다 크거나 같을경우 폰트크기를 줄인다
            re_font = New Font("돋움", font_size)
            st = eScreen.Graphics.MeasureString(D_String, re_font, Rectangle_Style.Size, drawFormat)

          '폰트 크기를 줄인후 다시 사이즈를 st에 저장시켜본다
        End While

'st 가 사각형 영역의 사이즈보다 작게된경우  반복문을 빠져나오고

사각형 영역안에 DrawString 을 사용하여 문자열을 그려준다.

        eScreen.Graphics.DrawString(D_String, re_font, drawBrush, Rectangle_Style, drawFormat)

    End Sub

Posted by 생각처럼
, |

원격데스크톱 설정방법

Bit / 2012. 2. 3. 17:44

난 집에서 회사 PC 쓴다 

회사에서 퇴근했는데 중요한 자료를 깜박 잊고 사무실 PC에서 복사해오지 않았다. 회사로 다시 돌아가야 할까? 아니면 오늘 할 일을 내일로 미룰까? ‘원격 데스크탑’은 이런 고민을 말끔히 씻어준다. 집에서 회사 PC에 접속해서 파일을 복사해올 수 있어서다. 회사 PC에서 재생한 음악을 집에서 듣기도 한다. 회사 PC의 바탕화면이 집에 있는 모니터에 뜨므로 필요한 작업을 마음껏 할 수 있다. 회사 PC에는 윈도우즈 XP 프로페셔널을 깔아야 한다. 집에서는 윈도우즈 95나 98 등 아무 운영체제나 써도 된다.  

 

회사 PC 설정하기 
집에서 회사 PC에 접속하려면 몇 가지 손을 봐야 한다. 원격 데스크톱을 깔고 방화벽을 없애는 것이 무엇보다 중요하다. 

1단계. 시작 버튼 → 제어판 → 프로그램 추가/제거를 고른다. 

2단계. ‘프로그램 추가/제거’ 창이 열리면 ‘윈도우즈 구성 요소 추가/제거’ 버튼을 누른다. 

3단계. ‘윈도우즈 구성 요소 마법사’가 뜨면 ‘인터넷 정보 서비스(IIS)'를 마우스 왼쪽 버튼으로 두 번 누른다. 

4단계. ‘인터넷 정보 서비스’ 창의 ‘world wide web 서비스’를 체크하고 ‘자세히’ 버튼을 누른다. 

5단계. ‘원격 데스크톱 웹 연결’과 ‘world wide web 서비스’가 체크되었는지 보고 ‘확인’ 버튼을 눌러 ‘윈도우즈 구성 요소 마법사’ 창으로 돌아온다. 그리고 ‘다음’ 버튼을 누른다. 

6단계. 윈도우즈 XP CD를 드라이브에 넣으면 구성 요소가 깔린다. 인터넷 정보 서비스 설치가 끝나면 ‘마침’ 버튼을 누른다. 

7단계. 방화벽을 없앨 차례다. 제어판에 있는 ‘네트워크 연결’을 누르고 ‘로컬 영역 연결’을 마우스 오른쪽 버튼으로 누른 뒤 ‘속성’을 고른다. 

8단계. ‘로컬 영역 연결 속성’ 창의 ‘고급’ 탭에 있는 ‘인터넷에서 이 컴퓨터에 액세스하는…’을 체크하고 ‘설정’ 버튼을 누른다. 

9단계. ‘고급 설정’ 창이 뜨면 ‘원격 데스크톱’을 체크하고 ‘확인’ 버튼을 누른다. 

10단계. 집에서 사무실 PC에 접속할 계정을 등록할 차례다. 시작 버튼 → 제어판 → 시스템을 골라 창을 열고 ‘원격’ 탭에서 ‘사용자가 원격에서 이 컴퓨터에…’를 체크한다. 그리고 ‘원격 사용자 선택’ 버튼을 누른다. 

11단계. ‘원격 데스크톱 사용자’ 창에 계정이 등록되지 않았으면 ‘추가’ 버튼을 누른다. 

12단계. ‘사용자 선택’ 창이 뜨면 고급 버튼 → 지금 찾기 버튼을 누른다. 사용자 계정에 등록된 이름이 모두 뜨면 집에서 접속할 때 쓸 이름을 고르고 ‘확인’ 버튼을 누른다. 

13단계. 접속 권한을 가진 계정이 등록되었다. 

4단계. 집에서 사무실 PC에 접속하려면 IP 주소를 알아야 한다. 시작 버튼 → 모든 프로그램 → 보조 프로그램 → 명령 프롬프트를 띄워 ipconfig를 쓰면 IP 주소가 보인다. 

집에서 사무실 PC에 접속하기 


집에서 사무실 PC에 접속하는 과정은 간단하다. 운영체제가 윈도우즈 98이나 Me이면 윈도우즈 XP 프로페셔널 CD를 드라이브에 넣고 ‘원격 데스크톱’을 깐 다음 IP 주소를 쓰면 된다. 

1단계. 집에 있는 PC에 윈도우즈 XP 프로페셔널 CD를 넣는다. 설치 창이 뜨면 ‘추가 작업 수행’을 고른다. 

2단계. 여러 옵션 중에서 ‘원격 데스크톱 연결 설정’을 고르면 프로그램이 깔린다. 

3단계. 시작 버튼 → 프로그램 → 보조 프로그램 → 통신 → 원격데스크톱 연결을 누른다. 

4단계. ‘원격 데스크톱 연결’ 창이 뜨면 ‘옵션’ 버튼을 누른다. 원격 PC와 파일을 주고받기 위해서다. 

5단계. ‘옵션’ 창이 뜨면 ‘로컬 리소스’ 탭에 있는 ‘디스크 드라이브’를 체크한다. 회사 PC에서 튼 음악을 집에서 들으려면 ‘원격 컴퓨터 소리’ 칸에서 ‘이 컴퓨터에 재생’을 고른다. 

6단계. 원격 속도를 최대한 높이려면 ‘고급’ 탭에서 통신 속도를 정확히 고른다. 

7단계. 이제 IP 주소를 써서 회사 PC에 접속한 뒤 계정 이름과 비밀 번호를 쓴다. 

8단계. 회사 PC에 접속되었다. 탐색기를 띄우면 회사 PC와 집 PC의 드라이브가 모두 나타난다. 여기서 파일을 주고받는다. 또 회사 PC에서 음악을 틀면 집에서 들을 수 있다. 


Posted by 생각처럼
, |

// 방화벽 등의 이유로 원격데스크탑(터미널 서비스)의 디폴트 포트(3389)로 
외부에서 원격데스크탑 연결을 열수 없을 경우 아래와 같이 포트 번호를
바꾸면 지정한 포트번호로 연결할 수 있습니다. 



1. registry edit 실행.
2. HKEY_LOCAL_MACHINESystemCurrentControlSetControl
  TerminalServerWinStationsRDP-TcpPortNumber 
  의 포트번호 값을 변경한다. 
3. registry edit 종료.

이렇게 포트가 변경된 원격 데스크탑에 연결할 경우 aaa.bbb.ccc:8080 과 같이
컴퓨터 주소 뒤에 포트번호를 쓰시고 접속하면 됩니다. 

레지스트리 변경후 리부팅해야 적용되는 것 같습니다. 
(아니면 터미널 서비스를 restart해도 될 것 같습니다. 

출처 :winbbs 글쓴이 : 최윤상(heiyo) 


=====================================================================

http://url/tsweb 을 사용하면 포트번호를 붙이지 않아도 접속이 됩니다.

또한 리부팅은 하지 않아도 적용됩니다. (2003에서만 가능한걸지도 모름)
Posted by 생각처럼
, |

출처 Chul's blog time | Chuls
원문 http://blog.naver.com/silent1002/10031917310 
CCL

Visual Studio를 사용하여 간편하게 설치파일을 만드는 방법에 대해서 알아보자.

인트톨팩토리나, 인스톨 쉘드를 사용하면 조금 더 복잡한 과정이 필요하지만..

아래 방법을 사용하면 손쉽고 간편하게 간단한 설치파일정도는 만들 수 있다.

 

우선 자신이 설치 및 배포파일을 만들고자 하는 프로젝트를 열고

파일 -> 추가 -> 새 프로젝트 순서데로 따라가면 아래와 같은 화면이 나온다.

여기서 기타 프로젝트 형식 -> 설치 및 배포 템플릿은 설치 플젝트로 선택한다.

CAB은 Mobile장치의 설치파일이므로 WinApp개발자라면 그다지 알 필요는 없다.

 

 

프로젝트 명을 입력하고, 확인을 클릭한다. (필자는 라크슈미라고 입력하겠다.)

그러면 아래와 같이 솔루션 탐색기에 새로운 프로젝트가 하나 더 생성된 것을 알 수 있다.

 

 

 

 

여기서 그림과 같이 생성된 새 프로젝트에서 마우스 우클릭 후 추가 -> 프로젝트 출력으로 간다.

그러면 아래와 같은 대화상자가 뜨는데, 여기서 기본출력을 선택하고 확인을 누른다.

 

 

 

그러면 아래처럼 기본출력(활성)이라는 내용이 솔루션 탐색기에 새롭게 등장한다.

여기까지 됬다면 잘하고 있는 것이다.

그리고 여기서 보면 3개의 mdb파일이 추가되어있는데 여러분에게는 없는 파일이다.

mdb는 데이터 베이스와 관련된 파일로써 필자의 개인적인 용도로 추가된 것들이다.

 

여기보이는 mdb파일들은 설치파일을 사용해서 설치시 함께 설치되어질 파일들이다.

이것 외에도 프로그램 사용 메뉴얼 등도 이처럼 포함시킬 수 있을 것이다.

자.. 그럼 필요한 파일들을 어떻게 추가하는지 알아보자.

 

 

 

아래 그림처럼 설치 및 배포프로젝트에서 마우스 우클릭 -> 보기 -> 파일시스템을 선택한다.

 

그러면 오른쪽의 메인 Viewer에 파일시스템창이 생성되면서 편집을 할 수 있다.

아래 그림처럼 응용 프로그램 폴더 -> 추가 -> 파일을 선택한다.

 

추가하기 원하는 파일은 선택한 후 열기를 누른다.

그러면 자신이 추가하고자 하는 파일이 솔루션 탐색기에 추가된다.

 

 

이 정도 했다면 어느정도 설치파일이 완성되어 간다.

이제 설치파일에 버전을 부여하여, 이전버전이 설치되어있다면 삭제하고, 새로 설치하는 것을 설정해보자.

아래 그림의 속성창에서 속성과 설명을 주의깊게 읽어보도록하자.

 

여기서 RemovePreviousVersions에 대한 속성을 True로 하면 이전버전을 제거한다.

그리고 아래 Version 속성을 설정하여 버전을 부여할 수 있다. 높은 버전이 우선순위가 있으므로 업데이트된 내용이 있다면

설치파일의 버전도 더욱 높게 설정해야 한다. 이전의 버전으로 돌리고 싶다면..

백업해둔 설치 및 배포프로젝트에 버전만 높게 부여하여 설치하면 이전의 버전으로 돌아가는 기능을 구현할 수 있다.

주의할 점은 버전은 x.x.x의 형식으로만 부여할 수 있다는 점이다.

 

 

마지막으로 자신의 프로젝트에서 필요에 의하여 사용한 구성요소에 대한 설치를 알아보자.

기타 컴포넌트들을 추가하여 사용하고, 배포할 때 이에 필요한 내용을 함께 배포해주지 않으면

프로그램이 실행되지 않거나, 정상적으로 작동하지 않을 수도 있으니, 확인 후 아래 내용을 참고로하여 자신에게 맞는 구성요소들도 함께 설치파일에 추가하도록 하자.

 

 

 

자신이 구현한 프로젝트에서 .net 구성요소 혹은 DB를 사용하는데 필요한 MDAC등을 사용했다면..아래 과정이 추가되어야 한다. 침착하게 따라해보자.

동일하게 솔루션 탐색기에 보이는 설치 및 배포프로젝트에서 마우스 우클릭 -> 속성을 클릭한다.

 

그러면 대화상자가 하나 등장하는데 여기서 필수구성요소를 클릭하면 아래와 같은 화면이 등장한다.

여기서 필자는 .NET Framework 2.0과 MDAC 2.8 을 추가했다.

MDAC는 필자의 프로그램에서 mdb파일을 다루고 있어서 추가하였다.  여러분에게 맞는 구성들을 추가하고

대화상자의 하단으로 시선을 옮기면, 3가지 요소가 보이는데..

여기서 2가지만 알면된다.

 

구성 요소 공급업체의 웹 사이트에서 필수 구성 요소 다운로드를 선택하고 확인을 누르면..

설치파일은 설치시 필요 구성요소가 있는지 없는지 확인하고, 자동으로 구성요소를 다운로드하여 설치한 후 설치를 시작한다.

그러나 내 응용 프로그램과 동일한 위치에서 필수 구성 요소 다운로드를 선택하면

설치파일과 함께 구성요소 설치에 필요한 내용들이 배포된다. 이 점을 알아두고 다음 과정으로 넘어가자.

필자는 두번째는 선택하여 따로 다운로드가 필요없이 설치파일과 함께 배포되도록 설정하였다.

모두 했으면 확인을 클릭한다.

 

자 그러면 여기서 배포하기를 원하는 프로젝트 (실제로 코드가 구현된 프로젝트)를 먼저 빌드하도록 한다.

그리고 설치 및 배포 프로젝트를 빌드한다. 빌드하는데 시간이 어느정도 소요되므로 차분하게 기다리도록한다.

 

 

 

빌드가 완료되면 설치 및 배포 프로젝트를 생성했던 폴더의 Debug폴더로 이동해보자.

그러면 아래와같이 파일과 폴더들이 생성되었을것이다.

여기서 생성된 폴더를 좀 전에 우리가 추가한 구성요소 설치에 필요한 설치파일이므로, 배포시 함께 배포하도록 한다.

필수구성요소 추가시, 필수 구성요소 설치 위치를 첫번째인 해당 회사의 웹에서 다운로드 하는 것으로 선택하면 이런 폴더는 생성되지 않는다.

 

여기까지 함으로써 간단하게 Visual Studio 2005를 사용해서 설치파일을 만들어 보았다.

이제 생성된 내용을 배포하여 Setup파일을 실행하면 정상적으로 설치가 되는 것을 확인 할 수 있을 것이다.

 

 

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

 

여기까지가 기본적인 사항이다.

더욱 세심하게 설치파일을 만들고 싶다면 아래 내용을 참고하면 되겠다.

 

C# MVP 엄준일님 블로그 - 설치프로젝트 이용한 배포파일 만들기

(아래 동영상에서는 기본적인 설치 프로젝트를 제작하고, 설치 시작/커밋/롤백/제거 시에 어셈블리를 호출하여 특정 동작을 수행하는 방법을 소개합니다.)

 

[웹케스트] 설치 프로젝트를 이용하여 배포하기 #1

 

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

 

MSDN: http://msdn.microsoft.com/en-us/library/wtzawcsz(VS.80).aspx

* 이하 위 원문에서 가장 많이 쓰이는 부분 번역

 

1. 바로 가기 아이콘 추가

File System->Application folder(응용 프로그램 폴더)에서 바로 가기 아이콘을 추가하기 원하는 파일 선택 -> 마우스 우측 클릭 -> Create Shortcut to xxxx (바로 가기 만들기) 선택 -> 만들어진 바로 가기를 드래그 드랍해서 사용자 바탕 화면(User's Desktop)으로 이동.

그러면 바로 가기가 User's Desktop 안에 생긴것을 알수 있는데 적절한 이름으로 고쳐준다. 이 이름이 바로 설치가 완료되었을때 사용자의 바탕화면위에 나타날 "바로 가기" 이름이다.  

 

2. 아이콘 추가

기본값으로 아이콘이 설정되어 있지 않으므로 원하는 아이콘 파일을 File System -> Application Folder안에 복사해 넣고, 속성->Icon으로 가서 Browse를 선택한후 이미 복사해둔 아이콘 파일을 선택한다. 

 

3. 설치 경로 설정

File System->Application folder(응용 프로그램 폴더)의 속성 선택해서 DefaultLocation의 값을 변경시켜준다. 기본값은 "[ProgramFilesFolder][Manufacturer]\[ProductName]" 이다.

 

 

4. 대화 상자 추가(User Interface)

Solution Explorer에서 View ->User Interface 선택하면 설치 과정에서 쓰일 여러가지 대화 상자를 볼수 있다. 만약 또 다른 대화 상자를 추가하고 싶다면 Add Dialog를 이용해서 할수 있다. 

 

5. OS 버전에 따른 조건부 설치

특정 OS 버전에 따라 특정한 파일을 설치하거나 설치하고 싶지 않다면 그 파일(File System -> Application Folder)을 찾아 Condition 속성을 바꾸어 준다. (i.e. Windows XP 이상에서만 설치하고 싶다면 "VersionNT >= 501")

 

6. 설치에 필요한 Microsoft 프로그램(i.e. .NetFramework 2.0, Visual C++ Runtime Libraries, etc.)도 같이 배포하고 싶다면 Solution Explorer -> 마우스 우측 클릭 ->Properties -> Prerequisties.

여기서 설치에 필요한 파일들을 선택할수 있고, 또한 어디서 그 파일들을 구할수 있는지 설정할수 있다. 만약 두번째 옵션인 "응용 프로그램과 같은 로컬 경로(Download prerequistites from the same location as my application)"을 선택하면 빌드시 별도의 폴더가 설치 실행 프로그램과 함께 생성된다.

 

7. 특정한 설치 시작 조건

만약 설치를 하기 위해 특정한 파일이 있어야 하거나 특정한 레지스트리 값이 일치해야 한다면, Solution Explorer에서 View->Launch Condition을 이용하도록 한다.

 

8. 특정한 파일 확장자에 특정한 프로그램이 실행되도록 하려면

Solution Explorer에서 View->File Types->Add File Type를 통해 원하는 파일과 확장자를 지정하도록 한다.

Posted by 생각처럼
, |

 Uninstall 을 시작메뉴에 어떻게 등록하나요?  | WinForm Program 2004-06-22 오후 3:00:31
신동윤 번호: 39648  / 읽음:419
SetUp 프로젝트를 사용해서, 배포 파일을 만들었습니다.

실행아이콘, 도움말 등은 다 시작메뉴에 등록할 수 있는데요..

Uninstall을 등록하는 방법을 모르겠습니다.

지금은 임시로 카스터마이즈에서 Uninstall에 exe파일을 등록시켜서...

msi파일에 오른쪽 마우스 누르면 삭제하도록 하고 있습니다.

아시는 분, 답변 부탁드립니다.
 [답변][자답] 2004-06-30 오후 2:11:21
신동윤 번호: 39864  
콘솔에서
msiexec.exe /x {1A1FED41-A75A-414A-85E9-0812C3E1B3D7}

이렇게 치면 되면, 언인스톨이 되기 때문에.. ({}안은 ProductCode)

아래와 같은 exe파일을 만들고 난 뒤에, SetUp프로젝트에 추가 시켰습니다.

더 좋은 방법이 있겠지만, 일단 이렇게 할 수 밖에 없네요..




 [STAThread]
static void Main(string[] args)
{
    //
    // TODO: アプリケーションを開始するコードをここに追加してください。
    //
    Remove("msiexec.exe",  "/x {1A1FED41-A75A-414A-85E9-0812C3E1B3D7}");
}
public static void Remove(string procName, string args)
{
    try
    {
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName  = procName;
        proc.StartInfo.Arguments = args;
        proc.Start();
    }
    catch(Exception e)
    {
        System.Diagnostics.EventLog.CreateEventSource(e.ToString(), "");
    }
}
 [답변]배치파일로 만들어도 되지요. 2005-09-16 오전 11:38:02
김규원 (letszzz)   번호: 54023  
Body {font-size:12px;font-family:굴림} P {line-height:120%; margin-top:0; margin-bottom:0;}

 @echo off

 msiexec.exe /x {1A1FED41-A75A-414A-85E9-0812C3E1B3D7}

 

이걸로 Uninstal.bat 만든 다음에 프로젝트에 포함시키고

 

사용자 프로그램 메뉴에 바로가기를 만든 후

 

이 파일 설치 속성 중 ShowCmd 항목의 값을 vsdscMinimized로 해도 되지요...

 

물론 아쉬운 방법이지요...ㅎㅎㅎ

Posted by 생각처럼
, |
저자: Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato, 역 한동훈(traxacun at unitel.co.kr)

원문: http://opensource.oreilly.com/news/subversion_ch01.html

[편집자 노트: 이 기사는 오라일리에서 출간예정인 Version Control with Subversion 1장의 일부분입니다]

버전 컨트롤은 정보의 변경 사항을 관리하는 예술이다. 소프트웨어에 작은 변경을 가하고, 다음날 다시 그 변경사항을 원래대로 복원하는 일에 하루를 보내는 프로그래머들에게 없어서는 안될 도구였다. 그러나 버전 관리 소프트웨어가 소프트웨어 개발에만 쓰이는 것은 아니다. 어디서든지 자주 변경하는 정보를 관리하기 위해 컴퓨터를 사용하는 사람들을 볼 수 있으며, 이런 사람들을 위한 버전 컨트롤이 필요하다. 그리고, 바로 그런 사람들을 위해서 Subversion이 있는 것이다.(또는 등장한 것이다)

1장에서는 Subversion의 주요 기능들을 소개할 것이다. 즉, Subversion이 무엇인지, 무엇을 하는지, 어떻게 Subversion을 얻을 수 있는지에 대해 설명할 것이다.

Subversion이란?

Subversion은 공개 오픈소스 버전 컨트롤 시스템이며, 시간에 따라 파일과 디렉터리를 관리한다. 파일 트리는 한 곳에 집중된 리파지터리(repository, 역주; 흔히 레포지토리로 말하는 것으로 '정보의 저장 장소'라는 의미로 사용된다)에 보관된다. 리파지터리는 보통의 파일 서버와 다를 것이 없지만 파일과 디렉터리에 적용된 모든 변경사항을 기록한다는 점만 다르다. 이를 이용하여 오래된 버전의 데이터를 복구하거나 데이터 변경사항에 대한 과거기록을 열람하는 것도 가능하기 때문에 대부분의 사람들은 버전 컨트롤 시스템을 시간에 따라 기록하는 타임 머신의 일종으로 생각한다.

Subversion은 네트워크에서 리파지터리에 접근할 수 있기 때문에 다른 컴퓨터에서 사용중인 사람들도 리파지터리를 이용할 수 있다. 즉, 여러 사람이 각자의 장소에서 동일한 데이터를 수정하고 관리하는 것이 가능하며 협업이 가능하다. 모든 변경사항이 한 곳에 적용되므로 다른 사람의 진척에 관계없이 작업할 수 있으므로 작업진행도 보다 빨라진다. 모든 작업은 버전으로 관리하기 때문에 다른 사람의 작업을 손상시킬 염려도 없다. ? 만약 변경이 잘못되었다면 단지 변경사항을 원상태로 돌려놓기만 된다.

몇몇 버전 컨트롤 시스템은 소프트웨어 설정 관리(SCM, Software Configuration Management) 시스템으로 사용된다. 이런 시스템은 소스 코드 트리 관리에 특화되어 있으며, 프로그래밍 언어의 구문을 인식기능, 소프트웨어 빌드를 위한 도구 지원과 같은 소프트웨어 개발에 중점을 둔 다양한 기능들을 갖고 있다. 그러나 Subversion은 소프트웨어 개발에 특화된 시스템이 아니다. 이것은 모든 종류의 파일을 관리하기 위한 범용적인 시스템이다. 예를 들어, 개발자는 소스 코드를 관리하기 위해 사용할 수 있으며, 다른 사람들은 쇼핑 목록에서 디지털 비디오에 이르기까지 다양한 것들을 관리하기 위해 사용할 수 있다.(역주: CVS와 같은 기존 버전 관리 시스템은 미디어 파일에 대한 관리기능이 없으며, 바이너리 파일 형태로만 관리할 수 있다)

Subversion의 역사

2000년 초에 CollabNet, Inc.(http://www.collab.net/)에서 CVS를 대체할 소프트웨어를 작성할 개발자를 찾기 시작했다. CollabNet은 SourceCast라는 협업을 위한 소프트웨어를 개발하는 곳이며, SourceCast의 컴포넌트 중에 하나가 버전 컨트롤이었다. SourceCast는 초기에 버전 컨트롤 시스템으로 CVS를 사용했지만 CVS의 한계는 제품 초기부터 명확했으며 결국 CollabNet은 보다 나은 것을 찾아야 했다. 불행히도 오픈소스 세계에서 공개 라이선스(Free License)중에 보다 나은 것이 없다는 이유로 CVS는 거의 표준이 되었다. 그래서 CollabNet은 CVS의 기본 아이디어는 이어가면서 CVS의 버그와 잘못된기능들을 제거한 새로운 버전 컨트롤 시스템을 처음부터 작성하기로 결정하였다.

2000년 2월에 CollabNet은 Open Source Development with CVS(Coriolis, 1999)의 저자인 Karl Fogel과 접촉하여 새로운 프로젝트에 대한 일을 제안했다. 우연하게도 그 시기에 Karl은 그의 친구 Jim Blandy와 함께 새로운 버전 컨트롤 시스템에 대한 디자인을 논의하고 있었다. 1995년에 이들 두 사람은 CVS에 대한 기술 지원을 제공하는 Cyclic Software를 설립했으며, 회사를 팔아버린후에도 여전히 직업적으로 CVS를 사용하고 있었다. CVS에 대한 실망으로 Jim은 버전을 부여한 데이터를 관리하기 위한 보다 나은 방법에 대해 생각하였으며 Subversion이라는 이름 뿐만 아니라 Subversion 리파지터리의 기본적인 설계까지도 하게 된다. CollabNet이 접촉했을 때 Karl은 바로 프로젝트에서 일할 것을 동의하게 되며, Jim이 일하고 있는 레드햇(RedHat) 소프트웨어는 이 프로젝트를 위해 무기한으로 기부하게 된다. CollabNet은 Karl과 Ben Collins-Sussman을 고용했으며, 세부 설계는 5월에 시작했다. CollabNet의 Brian Behlendorf(브라이언 베렌도르프)와 Jason Robbins, Greg Stein(당시 WebDac/DeltaV 스펙 프로세스 과정에 독립 개발자로 일하고 있었다)의 도움으로 Subversion은 빠르게 개발자 커뮤니티를 끌어들였으며, CVS에 대해 비슷한 실망을 느꼈던 많은 사람들로부터 환영받았다.

초기 디자인 팀은 단순한 목표만을 정했다. 버전 컨트롤 방법에 있어서 새로운 것을 도입하는 것을 원하지 않았으며, CVS에 대한 수정만을 원했기 때문에 Subversion도 CVS의 기능을 따르며, CVS의 개발 모델을 보존하지만 결점까지 옮겨오지는 않았다. 그렇다고 이것이 CVS의 축소판을 의미하는 것은 아니다. 그보다 CVS 사용자가 보다 적은 노력으로 Subversion으로 바꿀 수 있게 하기 위한 것이다.

14개월의 코딩끝에 Subversion은 2001. 8. 31에 소개되었다. 결국, Subversion 개발자들은 Subversion 소스 코드 관리를 위해 사용하던 CVS의 사용을 중지하고 Subversion을 사용하기 시작했다.

CollabNet이 프로젝트를 진행하는 동안 대부분의 작업에 대한 자금을 제공했다.(또한, Subversion 풀타임 개발자들의 월급도 포함). Subversion은 대부분의 오픈소스 프로젝트와 마찬가지로 운영된다: 느슨한 통제, 실력있는 사람의 참여를 장려하기 위한 투명한 규칙들.

CollabNet의 저작권은 Debian Free Software Guidelines을 전적으로 따른다. 즉, 누구나 다운로드하여 수정, 재배포할 수 있으며, 이 과정에 CollabNet으로부터의 허가나 다른 누구의 허가도 필요없다.

Subversion의 특징

Subversion의 기능을 논할 때 표를 사용하는 것은 CVS의 디자인을 어떻게 향상시켰는가 하는 관점에서 유용하다. 그러나 CVS에 익숙하지 않다면 이런 기능들을 모두 이해할 수 없을 것이다. 마찬가지로 버전 컨트롤에 대해 생소하다면 1장과 2장까지는 눈으로 훑어보는 것으로 만족해야할 것이다. 1장과 2장에서는 버전 컨트롤 시스템의 일반적인 특징에 대한 소개만 나와있다.

Subversion의 기능들:
디렉터리 버전관리(Directory versioning)
CVS는 각각의 파일에 대해서만 히스토리를 관리하지만 Subversion은 가상 버전관리 파일 시스템(Virtual Versioned filesystem)을 구현하여 시간에 따른 모든 디렉터리 트리의 변경사항을 추적한다. 파일과 디렉터리 모두 버전으로 관리된다.

진정한 버전 히스토리(True version history)
CVS는 파일에 대한 버전 관리만 할 수 있기 때문에 파일의 복사, 이름변경이나 디렉터리에 있는 내용의 변경등은 제공되지 않는다. 뿐만아니라 CVS에서는 버전부여된 파일을 이름이 같은 다른 파일로 대체할 수 없으며, 대체하게 되면 기존의 버전 히스토리를 이어받게 된다. Subversion에서는 파일과 디렉터리 모두 추가, 삭제, 복사, 이름변경을 할 수 있으며, 새로 추가된 모든 파일은 고유의 히스토리를 갖는다. 

최소단위 적용(Atomic commits, 역주: commit(커밋)은 변경사항 적용으로 옮길 수 있다)
모든 변경사항을 리파지터리에 전부 저장할 수도 있으며, 그렇지 않을 수도 있다. 이와 같은 방식을 사용하면 개발자가 논리단위로 변경사항을 구성하고 적용할 수 있으며, 일부만 변경하여 리파지터리에 저장했을 때 발생할 수 있는 문제들을 예방할 수 있다.

메타데이터 버전관리(Versioned metadata)
모든 파일과 디렉터리는 속성 키와 값을 가지므로 원하는 키/값을 생성하여 저장할 수 있다. 속성도 파일의 내용과 마찬가지로 시간에 따라 버전관리가 된다.

네트워크 레이어 선택
Subversion은 리파지터리 액세스를 위해 별도의 추상화된 표기법을 이용하여 새로운 네트워크 메커니즘 구현을 쉽게 해준다. Subversion은 아파치 HTTP 서버에 확장 모듈로 추가할 수 있으며, 이로인해 안정성과 상호운용성에 있어서 큰 이점을 갖는다. 기존 웹 서버의 인증, 압축기능 등을 그대로 사용할 수 있다. 게다가 가볍고, 독립실행이 가능한 Subversion 서버 프로세스를 이용할 수도 있다. 독립실행 서버는 SSH를 이용해서 쉽게 이용할 수 있는 고유의 프로토콜을 사용한다.

일관된 데이터 처리
Subversion은 사람이 읽을 수 있는 텍스트 파일과 사람이 읽을 수 없는 바이너리 파일에 모두 사용할 수 있는 바이너리 식별 알고리즘(Binary Differencing Algorithm)을 사용하여 파일의 변경사항을 찾아낸다. 두 가지 유형의 파일 모두 압축하여 리파지터리에 저장되며, 변경사항은 네트워크상에서 양방향으로 전송된다.

효율적인 트리 분할과 태그 명명(Efficient branching and tagging)
트리 분할과 태깅에 따른 비용은 프로젝트 크기에 비례하는 것은 아니다. Subversion은 하드 링크(hard-link)와 비슷한 방법을 사용하여 프로젝트를 복사하는 것으로 트리 분할과 태그를 생성한다. 따라서, 트리 분할과 태그 작업은 매우 작은 공간과 시간만 사용한다.
(역주: 소스 코드 트리는 1.0에서 1.1, 1.2, 1.3과 같이 하위 버전으로 나뉘어 작업을 하게 되며, 각 하위 버전에 따른 트리 구조도 다르게 된다. 이처럼 새로운 하위 버전으로 나뉘어가는 과정을 트리 구조로 그리면 '가지가 뻗어가는 모습'을 닮았으며 이를 branch라고 한다. 굳이 번역하면 '가지치기'라고 할 수 있으나 보통 이것을 '소스 코드 트리 분할'이라고 하며, 간단히 브랜치라고도 한다. 그러나 '브챈치'보다 '소스 코드 트리 분할'이 머리속에 더 감각적으로 들어올 것이다.
태그 명명(tagging)은 각 파일마다 다른 버전을 가질텐데 버전 1.0 출시에 사용된 소스 코드와 버전 2.0 출시에 사용된 버전에 사용된 각 파일에 대해서 RELEASE_1_0과 RELEASE_2_0이라는 태그를 부여한다면 언제든지 이들 태그를 사용하여 1.0 출시에 사용된 소스 코드를 받아올 수 있으며, 2.0 출시에 사용된 소스 코드를 받아올 수 있다. 만약 태그 작업이 없다면 항상 리파지터리에서 최신 버전의 소스만 받아오거나 과거의 파일을 버전별로 일일이 가져와야 한다.)

Hackability
Subversion은 시대에 뒤쳐진 관습을 따르지 않는다. 즉, 잘 정의된 API로 구성된 공유 C 라이브러리로 구현했으므로 유지보수하기 쉬우며 다른 응용 프로그램이나 언어에서도 사용할 수 있다.

Subversion의 구조

그림 1-1은 Subversion의 디자인을 설명하고 있다.

Fingure1
그림 1-1.Subversion의 구조

그림에서 맨 끝에는 버전별 데이터를 저장하는 Subversion 리파지터리가 있으며, 다른 반대편 끝에는 Subversion 클라이언트 프로그램이 있다. 클라이언트 프로그램은 버전별 데이터의 로컬 복제본(이를, Working Copies(작업 사본)을 이라한다)을 관리한다. 이 두 사이에는 다양한 RA(Repository Access) 계층을 통해 다양한 경로가 존재한다. 몇몇 경로는 컴퓨터 네트워크를 거쳐서 리파지터리에 액세스하며, 다른 경로는 네트워크 서버에 액세스한다. 다른 것들은 네트워크를 모두 무시하고, 직접 리파지터리에 액세스한다.

Subversion 설치

Subversion은 APR(Apache Portable Runtime library)이라 부르는 Portability 레이어에 구축된다. 즉, 아파치 httpd 서버가 실행되는 운영체제라면 어디서든 Subversion이 동작한다는 것을 의미한다. 다시말해, 윈도우, 리눅스, BSD 계열의 운영 체제들, Mac OS X, Netware등에서 동작한다.

Subversion을 사용하는 가장 쉬운 방법은 운영체제에 맞게 빌드된 바이너리 패키지를 다운받는 것이다. Subversion 사이트에서 패키지를 다운받을 수 있다. 이 사이트는 마이크로소프트 운영 체제를 위한 설치 패치지도 제공한다. Unix 계열 운영체제에서 실행하려면, 각 운영체제의 패키지 배포 시스템(RPM, DEB, Ports Tree 등)에 해당하는 패키지를 받으면 된다.

다른 방법은 소스 코드를 다운 받아 직접 Subversion을 빌드하는 것이다. Subversion 사이트에서 최신 소스 코드를 다운받는다. 압축을 풀고 INSTALL 파일에 있는 지시사항에 따라 빌드하면 된다. 제공되는 소스 패키지는 원격 리파지터리와 통신할 수 있는 명령줄 클라이언트를 포함한 모든 것을 포함하고 있다.(특히 arp, arp-util, neon 라이브러리). 그러나 Subversion의 부가기능들은 다양한 의존성을 갖고 있다. 예를 들어, 버클리 DB와 아파치 httpd가 대표적이다. 빌드를 완료하려면 INSTALL 파일에 명시된 모든 패키지가 시스템에 설치되어 있는지 확인해야 한다. Subversion을 직접 작업하고 싶다면 클라이언트 프로그램을 사용하여 가장 최신의 소스 코드를 받을 수 있다. 이에 대해서는 "Get the Source Code" 문서를 참고하기 바란다.

Subversion의 컴포넌트

Subversion은 수많은 컴포넌트로 구성되어있다. 다음은 이들 컴포넌트의 간단한 개요다. 여기에는 간단한 설명만 있다고 걱정할 것은 없다. 책에서 수십페이지에 걸쳐서 자세히 설명하고 있다.
svn
명령줄 클라이언트 프로그램
svnversion
작업 사본의 상태를 보기 위한 프로그램
svnlook
Subversion 리파지터리를 조회하기 위한 도구
svnadmin
Subversion 리파지터리를 생성, 최적화 또는 수정하기 위한 도구
svndumpfilter
Subversion 리파지터리 덤프파일 포맷 스트림을 필터링하기 위한 프로그램
mod_dav_svn
아파치 HTTP 서버를 위한 플러그인 모듈. 네트워크에서 리파지터리를 다른 사람들도 사용할 수 있게 해준다.
svnserve
독립실행 서버 프로그램으로 데몬 프로세스로 실행하거나 SSH에 의해 호출되는 형태로 이용가능하다. 리파지터리를 네트워크상의 다른 사람들이 이용할 수 있게 해준다.

Subversion이 올바르게 설치되었다면 시작할 준비를 해야한다. 다음에 2개 장에 걸쳐서 Subversion의 명령줄 클라이언트 프로그램 svn의 사용법을 살펴볼 것이다.
Posted by 생각처럼
, |

64-bit 모드(IA64, X64)

Bit / 2012. 2. 3. 17:42

MS Windows가 지원하는 64bit 플랫폼은 x64와 IA64

 

IA64는 진정한 Real 64bit 운영체제를 위한 CPU로써 인텔 HP Microsoft의 공동 작품
x64는 AMD에서 인텔의 64비트 프로세서에 대응하기 위해 Memory Addressing 영역을 2의 64승까지 늘린 프로세서

 

■ X86: 우리가 흔히 알고 있는 IA32 명령어 기반의 프로세서를 말한다.

■ IA64(EPIC instruction set): 인텔 Itanium 프로세서부터 채용된 새로운 명령어 집합. 기존 IA32와 호환이 되지 않는다. EPIC(Explicitly Parallel Instruction Computing) instruction set을 가지며, 많은 차이점이 있겠지만, predicated instructions을 지원한다는 것과 최소 6개의 floating point unit은 기억할만하다. 
MS Windows가 지원하는 64bit 플랫폼은 x64와 IA64


IA64는 진정한 Real 64bit 운영체제를 위한 CPU로써 인텔 HP Microsoft의 공동 작품


x64는 AMD에서 인텔의 64비트 프로세서에 대응하기 위해 Memory Addressing 영역을 2의 64승까지 늘린 프로세서

 


■ X64: AMD Opteron 프로세서부터 채용되었고, AMD64, Intel64(EM64T)으로 소개되었지만, 지금은 X64로 보통 부른다. IA32를 64-bit을 지원하기위해 확장한 것으로, IA32와 완전한 호환을 가지는 Compatibity mode와 64-bit mode를 지원한다. 우리가 흔히 말하는 64-bit 모드이다.  

- 64-bit mode에서는 명령어에 8-bit REX prefix를 붙여서, 64-bit 레지스터를 사용할 수 있다. 또한, 64-bit mode에서는 레지스터 개수도 기존의 8개에서 16개로 다음과 같이 늘어났다.
   - Long mode - Compatibility mode: eax, edx, exc, ebx, esi, edi, esp, ebp
   - Long mode - 64-bit mode: rax, rdx, rxc, rbx, rsi, rdi, rsp, rbp, r8,r9,r10,r11,r12,r13,r14,r15

- AMD64에서는 Operating mode로서 총 5개가 지원된다.
   - Long mode - Compatibility mode
   - Long mode - 64-bit mode
   - Legacy mode - Protected mode
   - Legacy mode - Virtual 8086 mode
   - Legacy mode - Real mode

- AMD64의 어드레스는 레지스터 값은 64bit으로 부호확장되어 보이며, 현재는 다음과 같은 범위를 가진다. 
 - physical address: 1TB (40-bit)
 - virtual address: 256TB (48-bit) : 부호확장이 되었으므로, 유효한 virtual address는 다음 두 영역으로 된다.
   - 0x0 ~ 0x00007FFF_FFFFFFFF
   - 0xFFFF8000_00000000 ~ 0xFFFFFFFF_FFFFFFFF  

Posted by 생각처럼
, |

출처 나는 공돌이다. - 퇴폐한 게임 프로그래머 이야기 | 주이리
원문 http://blog.naver.com/ibsofty/140050824571

블로그 만든 이래 가장 길게 작성한 이름같다.

워낙 이름이 길다보니 두개의 패키지의 이름뿐인데, 이름이 저리길다.

뭔가 맘을 단단히 먹을때마다 하는 짓이라곤 윈도우 새로 설치하고 개발툴 새로 셋팅하기...

이건 뭐 오랜만에 하는 집안 대청소같은 기분이다.

그동안 쌓인 이것저것 프로그램들을 정리하는것보다 그냥 처음부터 새로설치하는게 어쩌면 더 빠를지도 모르기 때문에...^^

집에서 설치해서 쓰는 프로그램이라고 해봐야 몇개 안된다.

지금 설치한 목록을 보면...

 

Autodesk 3ds Max 2009

Microsoft Visual C++ 2005 Express Edition

Microsoft DirectX SDK (March 2008)

Microsoft Windows SDK v6.1

 

지금 설치된 프로그램은 이게 다다...쩝...진짜 별거 없군...

앞으로 추가해서 설치해야 할 프로그램은 포토샵과 오피스정도에 기타 유틸리티 프로그램들이겠지...

나머지것은 시간날때 천천히...^^

 

이번에 윈도우를 새로 설치한 것은 최근 SDK 들의 개발환경을 맞추기 위해서였다.

그리고, 처음으로 Express Edition 을 이용하여 개발환경을 구축해보는것이었다.

Express Edition 은 최신버전은 Microsoft Visual C++ 2008 Express Edition 이지만, 다른 SDK 에서 직접적으로 지원하는 것은 Microsoft Visual C++ 2005 Express Edition 라서 Microsoft Visual C++ 2008 Express Edition 은 지우고 Microsoft Visual C++ 2005 Express Edition로 설정하다보니 이것저것 설치된것들이 너무 많아서 하나하나 지우기도 귀찮아서 (게으름...) 그냥 새로 싹 밀어버리고 Microsoft Visual C++ 2005 Express Edition 의 환경으로 개발 환경을 구축하기로 마음 먹었다.

그 동안 집에서도 공부와 개발을 게을리 했더니 머리에 잡념도 많아지고 타이핑도 느려지고, 머리도 점점 굳어지는 것 같아서 다시 10년전의 마음으로 되돌아가려고 맘먹고 마음 먹은김에 깨끗한 개발환경을 구축하기로 했다.

 

프로그래밍 중에 가장 시스템 성능이 좋고, 프로그램을 가장 많이 설치해야 하는 파트가 그래픽 프로그래밍이지 않을까 싶다.

나처럼 올라운드플레이어처럼 혼자 이것저것 다 하려면 더 많은것을 필요하다.

 

뭐...여기까지만 하고...

 

기본적으로 Microsoft Visual C++ 2005 Express Edition 는 Win32 응용 프로그램을 개발할 수 없다.

콘솔 프로그램을 개발할 수 있어서, C 언어를 배우는 입장에서 콘솔에 이것저것 출력해볼 사람들에게는 관계가 없지만, 윈도우 프로그래밍으로 넘어가려면 기본 구성으로는 불가능하다.

그렇다고 돈많은 Microsoft 가 학생들의 꿈을 져버리지는 않는다.

Win32 윈도우 응용 프로그램을 개발하라고 Windows SDK (이전 이름은 Platform SDK) 를 공개해서 (이건 윈도우 정품사용자들에게만 다운로드받을 수 있도록 해놓았지만 요즘은 거의 그냥 인증되니....) Windows SDK 를 이용하여 Win32 Window Application Program 을 개발할 수 있도록 해주었다.

물론, M$ 는 모든것을 허락하진 않는다.

Win32 API 를 이용하는것은 허락이 되지만, MFC 나 ATL 은 사용할 수 없도록 조치하였다.

하지만, 나처럼 게임쪽에 일하는 사람은 MFC 나 ATL 은 잘 사용하지 않기 때문에 저 두가지를 막았다 해도 별로 답답한 감은 없다.

거기에다 이번에 추가된 .NET Framework 3.5 에는 WPF 3.5 (Windows Presentation Foundation 3.5) 라는 것을 이용해서 Microsoft Windows Vista 형식처럼 Tools 도 멋지게 표현할 수 있다. (물론 .NET Framework 라 C# 이긴 하지만....)

난 Tools 프로그래밍은 거의 안해서 이런쪽으로 공부는 많이 하지 않았지만, WPF 가 3.0 에서 3.5 로 바뀐점 중에 눈에 들어오는것이 하드웨어 가속이 되는 3D 그래픽을 표현할 수 있다는 것이다.

이전에 게임엔진은 C++ 로 개발하기 때문에 엔진과 연동되는 툴도 C++ 로 개발할 수 밖에 없었는데 C# 이 여러가지면으로 편한면이 있어서 C# 으로 개발하면 여러가지 장점이 있으니, 툴을 C# 을 이용하는 방법도 생각해볼만 하다.

자세한 것은 WPF 문서를 보는 것이 더 자세히 알 수 있을 것이다.

 

위에서와 같이 Microsoft Windows C++ 2005 Express Edition 에서 Win32 Application Program 을 개발하기 위해서는 Windows SDK 를 이용해야 하는데, Windows SDK 만 설치한다고 되는것이 아니고, Microsoft Windows C++ 2005 Express Edition 에서 사용하는 몇가지 파일의 내용을 수정해 주어야 한다.

그 내용은 다음과 같다. (원본 출처 :http://www.microsoft.com/express/2005/platformsdk/default.aspx)

번역해서 적을까 했다가 내가 볼 수 있는 정도면 남들도 보겠지 하고 그냥 복사해서 올려버린다.

예전엔 영문서 있으면 사전 찾아가면서 번역하는 재미도 쏠쏠했는데 나이들면서 번역해서 누구보기가 어찌나 민망한지...

전문 번역자도 아니라서....

어쨌거나 내가 볼 정도면 남들도 잘보리라 생각하고 그냥 붙혀버린다.

Using Visual C++ 2005 Express Edition with the Microsoft Platform SDK
By Brian Johnson, 
Microsoft Corporation

 

You can use Visual C++ Express to build powerful .NET Framework applications immediately after installation. In order to use Visual C++ Express to build Win32 applications, you'll need to take just a few more steps. I'll list the steps necessary for building Win32 applications using Visual C++ Express.

 

Step 1: Install Visual C++ Express.
If you haven't done so already, install Visual C++ Express.


Step 2: Install the Microsoft Platform SDK. 
Install the Platform SDK over the Web from the Download Center. Follow the instructions and install the SDK for the x86 platform.


Step 3: Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box. 
Add the paths to the appropriate subsection:

Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin 
Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include 
Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
Note: Alternatively, you can update the Visual C++ Directories by modifying the VCProjectEngine.dll.express.config file located in the \vc\vcpackages subdirectory of the Visual C++ Express install location. Please make sure that you also delete the file "vccomponents.dat" located in the "%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" if it exists before restarting Visual C++ Express Edition.


Step 4: Update the corewin_express.vsprops file.
One more step is needed to make the Win32 template work in Visual C++ Express. You need to edit the corewin_express.vsprops file (found in C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults) and

Change the string that reads:

AdditionalDependencies="kernel32.lib"

to

AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"


Step 5: Generate and build a Win32 application to test your paths. 
In Visual C++ Express, the Win32 Windows Application type is disabled in the Win32 Application Wizard. To enable that type, you need to edit the file AppSettings.htm file located in the folder %ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\".

In a text editor comment out lines 441 - 444 by putting a // in front of them as shown here:

// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true; 
// DLL_APP.disabled = true; 
// DLL_APP_LABEL.disabled = true;

Save and close the file and open Visual C++ Express.

 

From the File menu, click New Project. In the New Project dialog box, expand the Visual C++ node in the Product Types tree and then click Win32. Click on the Win32 Console Application template and then give your project a name and click OK. In the Win32 Application Wizard dialog box, make sure that Windows application is selected as the Application type and the ATL is not selected. Click the Finish button to generate the project.

As a final step, test your project by clicking the Start button in the IDE or by pressing F5. Your Win32 application should build and run.

Posted by 생각처럼
, |

출처 지식iN >게임 프로그래밍
질문: 게임엔진개발을 하려면 어떤공부를 해야하나요 deangel / 2004-10-17 00:45
현재..

c,c++,api공부하고 mfc를 보고 있는데

여전히 감이 안옵니다. 그냥 이런걸 공부해 나가다보면

감이 잡힐것이다라 하지만..

궁금한건 그겁니다.

아직 우리나라에는 게임엔진을 개발한적이 없다고 들었습니다.

맞죠?

머가 안되서 못한건가요? 코딩능력의 한계(이건아닐꺼 같고..)

프로그래머들의 물리실력이 딸려서?

정확히 궁금한건 도대체 게임엔진이라는게 어떤걸 말하는건가요?

게임을 만들게하는 툴? 그러니까 프로그램을 만들게하는 툴이 자바나 C 기타

등등인것처럼 게임을 만들기위한 툴인가요? 워크의 맵에디터 같은거?

그런것들은 다 C언어로 짭니까? (자바나..)

공부를 시작한지는 얼마안됬지만 확실한 길을 알고 싶거든요..

direct x 를 배우는 단계에서 이해할거라고 하는데..

으음...해보신분이나..이 길을 걷고 있는 선배님들은 제가 머가

궁금한지 아시겠져?

게임엔진을 설계하는 사람이 되고싶은데요..

어떤 공부를 하는게 좋을까요?

또...코딩할때는 어떤걸 해보는게 좋을까요? 수많은 알고리즘을 보면서

이해해보고 자신만의 알고리즘을 만들어내는거?

항상 이곳저곳에 올라온 질문과 답변은 뜬구름 잡는거 같아서요..

정확한 지표를 알려주십시오...부탁드립니다.
답변: re: 게임엔진개발을 하려면 어떤공부를 해야하나요 imays / 2004-10-17 12:05
국내에서 만들어지는 게임 10개중 9개는 외부에서 엔진을 사오지 않고 직접 해당 게임회사에서 직접 게임엔진을 만듭니다. 즉 웬만한 게임회사는 자기들만의 게임엔진이 있습니다. 예를 들자면 대박친 게임중 라그나로크,뮤온라인,리니지,RF온라인,팡야 등은 모두 국내에서 자체 개발한 엔진을 쓰고 있으며 리니지2만이 외부 엔진을 사서 쓰고 있습니다.

해외에서 만들어지는 게임엔진은 30개중 1개 업체만이 국내 게임회사가 살 뿐입니다. 게임제작의 개발범위(Scope)는 워낙 다양하기 때문에 이를 완전히 만족시키는 경우는 드물기 때문에 차라리 직접 만드는게 더 싸게 먹힙니다.

해외 게임엔진을 사는 30개중 1개 업체는 돈이 매우 많은 업체(예: NC,웹젠 등)나 운이 좋아서 게임엔진이 요구사항에 확실하게 맞아떨어지는 곳입니다. 그러나 이들도 게임엔진을 사서 그 게임엔진의 일부를 뜯어고치거나 버리고 씁니다. 

국내 게임회사의 분위기는 게임엔진을 사서 쓰는 것을 꺼리는 분위기입니다. 돈이 많더라도 말이죠. 쓰기가 매우 어렵기 때문에 차라리 만드는게 더 쉽다고 생각하는 경우도 흔합니다.

이건 참 다행스러운 부분인데, 대한민국의 온라인 네트워크,서버 관련 게임 기술은 세계 최고라고 불립니다. 미국이나 일본에서도 배워가려고 하는 수준입니다. 네트워크,서버쪽에 특화된 게임엔진 중 해외산은 국내에 한개도 수입되지 않았습니다.

외국산 게임 엔진을 잘 도입하지 않는 주요 이유는 비싸며(3~8억원) 쓰기 어려우며(언리얼엔진의 경우 완전히 소화하는데 대략 5개월 소요) 요구사항이 안맞는 경우가 흔하며(언리얼엔진이 심리스월드를 제공하지 않아서 NC에서 엔진을 뜯어고쳤다고 하죠)...가장 중요한건 대성공을 한 게임에 사용된 엔진만이 그나마 좀 팔린다는거죠. 언리얼엔진이 국내에 가장 많이 팔렸는데(아마 10개정도? -_-) 그 이유도 언리얼 엔진이 있기 전에 언리얼이라는 게임이 큰 충격을 줬기 때문이죠. 다른 게임엔진은 거들떠도 안봅니다. 사실 충격은 퀘이크라는 게임에 쓰인 퀘이크엔진이 더 컸지만 이건 갖다 쓰려면 1년은 걸릴겁니다. 그래서 국내에서는 잘 안쓰이는거죠.

30개중 29개 회사는 게임 엔진을 어떻게 뽑아내냐? 얼핏 들으면 이상하게 들리겠지만, 회사 외부의 관점에서, 게임이 먼저 나오고 그 회사의 게임엔진이 나중에 나옵니다. 왜 그러냐면, 게임을 만드는동안 그 게임의 엔진이 동시에 제작됩니다. 게임이 계속 만들어지면서 그 게임의 자체제작엔진이 다듬어집니다. 그리고 게임이 완성되면 그때부터 그 엔진을 범용화할 수 있게 수정하면서 적출합니다. 그것이 게임 엔진이 되는거죠. 그라비티 핵심층이 악튜러스를 만들고 나서 거기서 엔진을 적출한 후 그걸로 라그나로크를 만들고 거기서 라그나로크 서버엔진을 적출하고 그걸 직접 쓰지는 않았겠지만(회사가 달라졌으니까) 짬밥을 기반으로 그라나도에스파다를 만들고 있는겁니다. 눈여겨 봐야 할곳은 악튜러스,라그나로크,그라나도에스파다에 쓰였던 자체제작엔진은 제품이 나올 때마다 거의 완전히 새로운 모양으로 진화한다는겁니다. 즉 있는 그대로 재사용되는게 얼마 안된다는거죠.

반대로, 성공게임이 없는 게임엔진은 인기가 없습니다. 국내에도 게임없는 게임엔진만 만든 곳들이 여럿 됩니다. 심지어 정부산하연구기관에서도 나왔습니다. 그러나... 정부산하연구기관에서 나온것 마저도 0카피 팔렸습니다. 게임없는 게임엔진만 만든 곳들은?? 그래도 팔긴 팔았습니다. 문제는 그걸 판 개인이나 업체 사람들이 에진을 산 업체에 통째로 합병되는 조건이라는거죠. -_-

질문하신 분이 게임엔진쪽으로 가고 싶다고 하셨죠? 그렇다면 먼저 시장에서 성공하는 게임을 먼저 만들어야 합니다. 그리고 나서 엔진을 적출해서 판다면 승산이 높습니다. 물론, 게임을 만드는 과정에서 차별화된 기술을 이것 저것 넣어야 추후 엔진으로서의 가치가 높아집니다.

게임엔진 이전에 게임 제작을 공부하셔야 하는데요, 이건 이미 알려진 곳이 많죠. 그래도 기술적인 면을 좀 치우쳐야 엔진쪽으로 쫌 초점을 맞출 수 있겠죠. 제가 이래저래 본 바, 김용준씨가 저술하거나 번역한 책 중에서 게임엔진에 다소 치우친 서적들이 있습니다. DIRECTX사용법 정도의 설명이 아니라 여러가지 알고리즘 구현에 관련된 설명들이 있습니다. 확실한 차별화를 꿈꾸신다면 해외 여러가지 학술 논문을 뒤지는 것도 추천합니다. 많은 게임관련 차별화 기술이 해외 학술 논문을 응용한데서 시작됐습니다. www.gpgstudy.com 등 국내 포럼도 참고하세요.

아 참고삼아... 엔진의 양적인 부분을 귀뜸하자면... 제가 만들었던 온라인 게임의 자체개발엔진의 예를 들께요. 엔진쪽만 떼어서 추측한다면 총 개발비 3억원,총 개발시간 1년,총 개발인력 3명,총 12만 라인 정도 될겁니다.



Posted by 생각처럼
, |

VB ListView DragDrop

Bit / 2012. 2. 3. 17:40

 

속성설정에서 AllowDrop True 설정

이벤트는

ItemDrag = 이벤트 시작

DragEnter = 내부영역 이동시

DragDrop = 드래그드랍 사용자 정의

 

Public Class Form1

 

    Private Sub ListView1_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag
        ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Copy Or DragDropEffects.Move)
    End Sub

 

    Private Sub ListView1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop

        Dim Items As ListView.SelectedListViewItemCollection = e.Data.GetData(GetType(ListView.SelectedListViewItemCollection))

        Dim child As ListViewItem

        For Each child In Items

            ListView1.Items.Add(child.Clone())
            child.Remove()

        Next
    End Sub

 

    Private Sub ListView1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter
        e.Effect = DragDropEffects.Copy
    End Sub


End Class

Posted by 생각처럼
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함