팀 내 프로그램 세미나 자료.
업무 외 시간에 제작되었으므로 저작권은 본인에게 있습니다.
프로젝트에 직접적인 관계가 있는 내용은 포함되어 있지 않습니다.
URL
EMBED
Page 0:
Page 1: Boost & Tips
2010-05-11 최성기
Page 2: agenda
• • • • • • boost::assign boost::timer boost::format enum을 쓰기 편하게 만들자 서버 다운시 재실행 스크립트 문법 변경사항 ( vc++ 8.0 )
Page 3: assign to std::vector
Page 4: boost::assign
• since boost 1.32
• operator, / operator()를 활용
• 컨테이너에 값을 쉽게 넣어보자 • 편리한 인터페이스를 만드는 방법
Page 5: std::map에 원소를 넣는 기존 방법
Page 6: assign to std::map
Page 7: queue, list, stack… 다양한 아이디어
http://www.boost.org/doc/libs/1_43_0/libs/assign/doc/index.html
Page 8: 클래스 만들 때, interface design에 참고
Page 9: GetTickCount()
Page 10: boost::timer
timer.hpp
Page 11: boost::format
Page 12: printf(…)를 레벨업 시키자.
어서 오시오, %s. 그대를 기다리고 있었소. 우릮 %s 만렙이 필요하오. %s, 하루빨리 만렙을 찍으시오. %s가 없으니 지금 다른 직업 다 있고 %s만 없소. 지금 레벨이 %d가 뭡니까…blah..
• • • • • • strNickname.c_str() / 뉘집딸래미 strJobName.c_str() / 사냥꾼 strNickname.c_str() / 뉘집딸래미 strNickname.c_str() / 뉘집딸래미 strJobName.c_str() / 사냥꾼 nCharLevel / 77
Page 13: 해결방법 1 - 자체제작
어서 오시오, ($nick). 그대를 기다리고 있었소. 우릮 ($job) 만렙이 필요하오. ($nick), 하루빨리 만렙을 찍으시 오. ($nick)가 없으니 지금 다른 직업 다 있고 ($job) 만 없소. 지금 레벨이 ($lv) 가 뭡니까 …blah.. 기획자분들 잘 들으세요. ($nick)은 닉네임, ($job)는 직업이름, ($lv)는 캐릭터레벨입니다. 자꾸 물어보지 마시고 책상에 적 어서 붙여두세요.
Page 14: 해결방법 1 - 자체제작
while( token = _strtok( szCopy ) ) { if( strcmp( token, “($nick)” ) == 0 ) { // … 어우… 귀찮음… } else …
boost::replace_all( strDesc, “($nick)”, strNick.c_str() ); boost::replace_all( strDesc, “($job)”, strJob.c_str() ); boost::replace_all( strDesc, “($lv)”, nCharLv ); // error
Page 15: 해결방법 2 – CString::FormatMessage
CString::Format CString::FormatV CString::FormatMessage
%1!d! 따위를 기획자에게 가르치느니, 직접 만드는 게 정신건강에 좋다.
Page 16: 해결방법 3 – boost::format
어서 오시오, %1%. 그대를 기다리고 있었소. 우릮 %2% 만렙이 필요하오. %1%, 하루빨리 만렙을 찍으시오. %1%가 없으니 지금 다른 직업 다 있고 %2%만 없소. 지금 레벨이 %3%가 뭡니까…blah..
• • • strNickname / 뉘집딸래미 strJobName / 사냥꾼 nCharLevel / 77
Page 17: boost::format, excel, lua
Page 18: enum + macro
MajorCode.h
#define _ENUM( id, desc ) id, enum SomeType { #include “SomeType.enum.h” }
SomeType.enum.h
_ENUM( ST_ABC, 철수 ) _ENUM( ST_DEF, 영희 ) _ENUM( ST_GHI, 바둑이 )
Page 19: 공통 에러코드 처리
Page 20: 서버 다운 -> 업데이트 -> 재실행
Page 21: function-try block in vc++ 7.0
Page 22: for each in vc++ 8.0 (비표준)
Page 23: keyword __super in vc++ 8.0 (비표준)
Page 24: __VA_ARGS__ in vc++ 8.0
Page 25: 오늘 한 이야기, 앞으로 할 이야기
• • • • • • • • • • • • • • • • • boost::assign boost::format boost::timer boost::thread boost::smart_ptr boost::bind functor와 boost::rambda, C++0x rambda std::ostream과 호환되는 class data dump system enum 정의를 문자열로 만드는 괜찮은 방법 서버 다운 재실행 스크립트 디버깅 환경 구축 : dump analysis system, bugtrap 디버깅 환경 구축 : symbol server setting Daily build & Release Tag(version) 관리 RTTI code – from Gamebryo 메시지 드리븐 아키텍쳐 만들기 : state pattern, message pattern 새로 추가됐지만, 잘 모르는 문법들 … and more
Page 26: