Review2010. 12. 3. 15:28

어제 세미나 갔다 왔습니다.
MS 세미나는 지식 공유는 거의 없고 뭘 계속 사라고만 해서 왠만해선 잘 안 갔었는데,
MS Visual C++ MVP에다가 온라인 상에서 활발한 활동을 펼치시고 계시는 최흥배님께서 마이크를 잡으셨다고 해서 한 번 가봤네요.

강연 주제는 크게 3가지로 나뉘어졌습니다.
- Visual Studio 2010으로의 IDE Upgrade시에 발생하는 문제점들
- Visual Studio 2010 IDE의 편리한 기능
- C++0x 추가된 키워드 및 라이브러리 소개

강의 내용은 꽤 좋았습니다. 두 번째 밤도 완전 기대됩니다!!

다음 세미나는 11월 16일 목요일에 있습니다. 관심 있으시면 참가해보는 것이 어떨까요?
https://msevents.microsoft.com/CUI/Register.aspx?culture=ko-KR&EventID=1032470468&CountryCode=KR&IsRedirect=false


자세한 내용은 최흥배님의 블로그와  VS2010 팀블로그 참조.
여기선 간단히 요약 정리만.

Visual Studio 2010으로의 IDE Uprade 시에 발생하는 문제점들

  1. WIN32_WINNT
    1. 디파인되어 있지 않다면 디파인 해주면 됨
    2. #ifndef ~ #endif 사용하란 말
  2. /MAPINFO:LINES
    1. 의미 없어진 컴파일 옵션
    2. 지우면 됨
  3. time_t
    1. 사이즈 변환: 4BYTE -> 8BYTE
    2. 포인터로 사용한다면 주의 요망
  4. MiniDump
    1. 예외 처리시 try/catch 구문 내에서의 MiniDump 남기는 루틴이 동작하지 않음
    2. Exception Translator 설정 관련 문제라고 함
    3. Google Breakpad 라는 것을 사용한다고 하심
    4. 근데 우리겜은 try/catch로 하진 않으니까 일단 패스
  5. TR1
    1. tuple관련 문제.
    2. 최신 버전 받아서 사용하세요

 

MSVS 2010 IDE의 편리한 기능

  1. Multi-Monitor 지원
    1. 파폭이나 크롬 웹 브라우저 처럼 파일 탭이 IDE에서 분리 가능
  2. Box Selection
    1. 이거 괜찮은 거 같음ㅋ
  3. Navigate To
    1. VA의 Alt + G와 동일
  4. Temp Project
    1. 저장할 필요없는 프로젝트 생성 가능
  5. 시작 페이지 설정 가능
    1. 나만의 시작 페이지 만들기
    2. 자주 여는 프로젝트 설정
    3. 보고 싶은 탭, 링크 설정
  6. VisualStuio Gallary
    1. Products and Extensions for Visual Studio
    2. 아 이거 대박. 마치 파폭의 플러그인 같음.
    3. 추천하신 것들
      1. PowerCommands
      2. ItaStartPage
      3. Productivity Power Tools
      4. Microsoft All-In-One code Framework

C++0X

 키워드  내용 
 auto  Iterator때 편리. But, unsigned/signed 구별 잘 못함
 decltype  편리함. Template시에...
 static_assert  정확성. 컴파일 단계 어서트. 부스트에 있는 것과 동일
 Rvalue Reference  성능
 Lambda  표현력. auto에 할당해서 사용. boost::bind보다 뛰어난 성능
 NullPtr  정확성
* 자세한 내용은 "Visual C++ 10과 C++0X"라는 단행본(최흥배) 참조


추가적인 내용들...

병렬 프로그래밍을 위한 Concurrency Runtime을 사용하자.
Concurrency Runtime (ConcRt)
    - Concurrent Collections
        - 큐랑 벡터 존재. 와우!
    - Concurrent Algorithms
        - 이미지 처리 같은거 아니면 잘 쓰이기 힘들다
    - Synchronous Agents Library
        - 범용적 사용 가능
ConcRt 사용하면
    - 추상화, not Thread but Task, avoid Lock, extendable memory allocator...


'Review' 카테고리의 다른 글

G-Star 후기  (0) 2010.11.23
프로그래머의 길, 멘토에게 묻다  (0) 2010.09.11
Posted by codevania
Tip2010. 11. 23. 18:10

봄공책에 적었던 내용을 옮겨 본다.

내 PC에서는 잘 되는데, 디자이너나 기획자의 PC에서는 비정상 동작을 할 경우가 있다.
무턱대고 로그를 기록하기도, 다른 사람의 PC에 비쥬얼 스튜디오를 설치하기도 부담스럽다.
이때 리모트 디버깅을 하면 편하게 원격 PC의 실행파일을 디버깅 할 수 있다.
리모트 디버깅에는 두 가지 타입이 있다. "실행중인 프로세스에 어태치"하는 것과
 "프로세스를 실행"하는 것인데, 보통 첫번째 방법이 많이 쓰이고 웹상에 설명도 많다. 두 가지 방법 모두 Remote-side와 Client-side에서 설정해 줘야할 몇가지가 있는데 그것들을 알아보자.


[ Remote-side ]
MSVS를 사용하든, WinDbg를 사용하든 아래의 설정을 해줘야 한다.

  1. 디버깅하고자 하는 원격 컴퓨터에 remote debugging을 위한 파일들을 준비한다.
    1. Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x86 또는,
    2. Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x64 중에
    3. Remote의 OS 맞는 폴더의 파일들을 원격 컴퓨터에 위치시킨다. 
  2. 폴더 안 파일 중에 msvsmon.exe라는 파일을 실행시킨다.
    1. 메뉴>도구>옵션
      1. 컨트롤 설정: 인증 안함 > 모든 사용자가 디버깅할 수 있도록 허용
        (인증 모드도 가능함. 여기선 인증 안함을 선택)
      2. 서버이름을 클라이언트에게 알려준다. 세미콜론(:) 앞에까지가 서버이름임.
  3. 디버깅하고자 하는 어플리케이션(이하 디버기)의 폴더를 공유시킨다
    1. 실행파일과 PDB의 공유 때문임
    2. Client-side 심볼 설정시 경로 필요
    3. 동일한 PDB를 가지고 있다면 폴더를 공유시킬 필요는 없음

[ Remote-side 2 ]
"CODEVANIA-DEV"가 Remote server name이다.



처음에 언급했던 두 가지 방법 모두를 설명한다. 원하는 방법 하나를 택하면 됨.

[ Client-side ]
공통으로 PDB파일의 경로를 설정해 줘야함

  1. MSVS 실행
  2. 메뉴>도구>옵션>디버깅>기호
    1. \\원격 컴퓨터 ip\디버기가 위치한 원격 컴퓨터의 공유 폴더 이름
      예) \\192.164.0.1\Play
    2. \\원격 컴퓨터 이름\디버기가 위치한 원격 컴퓨터의 공유 폴더 이름
      예)\\CODEVANIA-DEV\Play
    3. 동일한 PDB를 가지고 있다면, 꼭 Remote의 경로로 설정할 필요는 없다.




[ Client-side : 실행중인 프로세스에 어태치 ]

  1. 메뉴>디버그>프로세스에 연결
    1. 전송: 원격
    2. 한정자: [Remote-side 2.1.2]에서 획득한 서버이름
    3. '새로고침'하여 디버깅하고자 하는 어플리케이션에 Attach & 디버깅  :)




[ Client-side : 프로세스 실행 ]

  1. 프로젝트>프로퍼티>디버깅
  2. Debugger to launch -> Remote Windows Debugger
    1. Remote Command: Remote PC상의 디버깅하고자 하는 바이너리 경로
    2. Remote Server Name: 리모트 서버 이름
    3. Connection: 리모트 서버에서 설정한 것과 동일하게 맞춤
    4. Attach: Yes로 하면 바로 위의 [ Client-side : 실행중인 프로세스에 어태치 ]와 동일함
    5. 설정 저장 후 F5 눌러서 디버깅  :)




참조: Project Settings for a C++ Debug Configuration

'Tip' 카테고리의 다른 글

Rvalue References and Perfect Forwarding  (0) 2011.01.12
Set a Thread Name in Native Code  (0) 2010.12.03
IsNaN  (0) 2010.11.02
Failed to create .NET Frameworks PropertyGrid component  (0) 2010.08.20
Access Violation 발생시 무사히 빠져나오기  (2) 2010.08.20
Posted by codevania
Review2010. 11. 23. 18:07

스펙
◆ 파워 서플라이
- 10의 전력을 필요로 하는 스펙에 8의 전력을 제공하는 저급 서플라이를 맞춤
- 서플라이도 엄연히 컴터의 일부. 기본 스펙은 맞춰줘야 함.
- 때문에, 스킬 이펙트와 같이 많은 연산이 순식같에 필요해 지는 상황에서 셧다운

◆ 디스플레이 복제
- 디스플레이를 복제하여 외부장치에서 게임 플레이를 보여준 PC에서 렌더링 버그 발생
- G-Star에 대한 경험이 있었다면, 이런 상황에 대해서 미리 테스트를 해봤을 텐데.


인테리어
◆ 통풍
- 3 방향이 막힌 인테리어. 통풍불가.
- 너무 더워서 쾌적하지 못한 환경을 제공했습니다. 찾아주신 분들에게 죄송.
- 온도 문제로 그래픽카드에 문제가 생길 것을 염려(-_-;)해서 생쇼를 하기도...
- PC의 리붓, 환기, 휴식 등은 사실 쌩쑈가 아니었을까...
 
◆ 디스플레이
- 보이지 않는 곳에 비싼 디스플레이를 설치
- 모두 부스 밖에서 대기중. 부스 안에는 플레이중인 유저뿐.
- 존재하지도 않았던 "부스 안에서 대기중인 유저"를 위한 인테리어


운영
◆ 동영상 V.S. 플레이
- 게임 플레이 후에 동영상을 관람하는 방식의 진행
- 동영상을 먼저 봤다면, 게임에서 어떤 것들이 가능한지를 알 수 있었을 듯.
- 동영상에서 호기심을 유발하고 게임에서 그것을 해소하는 식의 진행이었다면 어땠을까?
 
◆ 게임 설명
- 게임 설명서 색상 선택 실패.
- 어두운 색상의 배경과 어두운 색상의 글로 된 설명서가 어두운 부스 안에 배치.
- 캐릭터 마다 분배되는 히어로 스킬과 부대 스킬이 다르지만, 모든 자리의 설명서는 동일했고 스킬 설명은 없었음.
- 인터페이스와 같은 설명들은 플레이메이트들이 구두로만 설명해 줘도 됨
- 게임 특유의 시스템은 뭔가 알기 쉽게 설명이 되어 있었어야 했음.


프로그램 
◆ 콜스택
- 어서트, 크래쉬 시에 콜스택 기록하는 기능은 이미 존재
- 하지만, G-Star용 빌드에서는 이 기능이 무효한 상태. ㅜㅜ왜?
- G-Star용이라고 하더라도, 실행파일과 PDB가 유출되지 않도록하고,
   G-Star동안의 어서트, 크래쉬 등의 소중한 정보들을 얻었으면 좋았을 듯.
 
◆ 플레이 로그
- 인기 스킬 카운트. 어떤 스킬이 어떤 상황에 유리한가?
- 부대 컨트롤 유무. 부대가 유용한가? 부대 컨트롤이 가능한가?
- 콤보 사용 유무. 콤보가 유용한가?
- 등등, 모든 컨트롤에 대해서 로그를 기록했다면 좋았을 듯.

'Review' 카테고리의 다른 글

Visual Studio 2010 겨울밤 세미나 - 첫번째 밤  (0) 2010.12.03
프로그래머의 길, 멘토에게 묻다  (0) 2010.09.11
Posted by codevania