Boost & Tips2010-05-11최성기
agendaboost::assignboost::timerboost::formatenum을 쓰기 편하게 만들자서버 다운시 재실행 스크립트문법 변경사항 ( vc++ 8.0 )
assign to std::vector
boost::assignsince boost 1.32operator, / operator()를 활용컨테이너에 값을 쉽게 넣어보자편리한 인터페이스를 만드는 방법
std::map에 원소를 넣는 기존 방법
assign to std::map
queue, list, stack… 다양한 아이디어http://www.boost.org/doc/libs/1_43_0/libs/assign/doc/index.html
클래스 만들 때, interface design에 참고
GetTickCount()
boost::timertimer.hpp
boost::format
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
해결방법 1 - 자체제작기획자분들잘 들으세요.($nick)은 닉네임,($job)는 직업이름,($lv)는 캐릭터레벨입니다.자꾸 물어보지 마시고 책상에 적어서 붙여두세요.어서 오시오, ($nick).그대를 기다리고 있었소.우린 ($job) 만렙이 필요하오.($nick), 하루빨리 만렙을 찍으시오.($nick)가 없으니 지금 다른 직업 다 있고 ($job) 만 없소.지금 레벨이 ($lv) 가 뭡니까…blah..
해결방법 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
해결방법 2 – CString::FormatMessageCString::FormatCString::FormatVCString::FormatMessage%1!d! 따위를 기획자에게 가르치느니,직접 만드는 게 정신건강에 좋다.
해결방법 3 – boost::format어서 오시오, %1%.그대를 기다리고 있었소.우린 %2%만렙이 필요하오.%1%, 하루빨리 만렙을 찍으시오.%1%가 없으니 지금 다른 직업 다 있고 %2%만 없소.지금 레벨이 %3%가 뭡니까…blah..strNickname / 뉘집딸래미strJobName / 사냥꾼nCharLevel / 77
boost::format, excel, lua
enum + macroMajorCode.h#define _ENUM( id, desc ) id,enumSomeType{#include “SomeType.enum.h”}SomeType.enum.h_ENUM( ST_ABC, 철수 )_ENUM( ST_DEF, 영희 )_ENUM( ST_GHI, 바둑이 )
공통 에러코드 처리
서버 다운 -> 업데이트 -> 재실행Demo
function-try block in vc++ 7.0
for each in vc++ 8.0 (비표준)
keyword __super in vc++ 8.0 (비표준)
__VA_ARGS__ in vc++ 8.0
오늘 한 이야기, 앞으로 할 이야기boost:assignboost::formatboost::timerboost:threadboost::smart_ptrboost::bindfunctor와 boost:rambda, C++0x rambdastd::ostream과 호환되는 class data dump systemenum정의를 문자열로 만드는 괜찮은 방법서버 다운 재실행 스크립트디버깅 환경 구축 : dump analysis system, bugtrap디버깅 환경 구축 : symbol server settingDaily build & Release Tag(version) 관리RTTI code – from Gamebryo메시지 드리븐 아키텍쳐 만들기 : state pattern, message pattern새로 추가됐지만, 잘 모르는 문법들… and more

100511 boost&tips 최성기

  • 1.
  • 2.
    agendaboost::assignboost::timerboost::formatenum을 쓰기 편하게만들자서버 다운시 재실행 스크립트문법 변경사항 ( vc++ 8.0 )
  • 3.
  • 4.
    boost::assignsince boost 1.32operator,/ operator()를 활용컨테이너에 값을 쉽게 넣어보자편리한 인터페이스를 만드는 방법
  • 5.
  • 6.
  • 7.
    queue, list, stack…다양한 아이디어http://www.boost.org/doc/libs/1_43_0/libs/assign/doc/index.html
  • 8.
    클래스 만들 때,interface design에 참고
  • 9.
  • 10.
  • 11.
  • 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
  • 13.
    해결방법 1 -자체제작기획자분들잘 들으세요.($nick)은 닉네임,($job)는 직업이름,($lv)는 캐릭터레벨입니다.자꾸 물어보지 마시고 책상에 적어서 붙여두세요.어서 오시오, ($nick).그대를 기다리고 있었소.우린 ($job) 만렙이 필요하오.($nick), 하루빨리 만렙을 찍으시오.($nick)가 없으니 지금 다른 직업 다 있고 ($job) 만 없소.지금 레벨이 ($lv) 가 뭡니까…blah..
  • 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
  • 15.
    해결방법 2 –CString::FormatMessageCString::FormatCString::FormatVCString::FormatMessage%1!d! 따위를 기획자에게 가르치느니,직접 만드는 게 정신건강에 좋다.
  • 16.
    해결방법 3 –boost::format어서 오시오, %1%.그대를 기다리고 있었소.우린 %2%만렙이 필요하오.%1%, 하루빨리 만렙을 찍으시오.%1%가 없으니 지금 다른 직업 다 있고 %2%만 없소.지금 레벨이 %3%가 뭡니까…blah..strNickname / 뉘집딸래미strJobName / 사냥꾼nCharLevel / 77
  • 17.
  • 18.
    enum + macroMajorCode.h#define_ENUM( id, desc ) id,enumSomeType{#include “SomeType.enum.h”}SomeType.enum.h_ENUM( ST_ABC, 철수 )_ENUM( ST_DEF, 영희 )_ENUM( ST_GHI, 바둑이 )
  • 19.
  • 20.
    서버 다운 ->업데이트 -> 재실행Demo
  • 21.
  • 22.
    for each invc++ 8.0 (비표준)
  • 23.
    keyword __super invc++ 8.0 (비표준)
  • 24.
  • 25.
    오늘 한 이야기,앞으로 할 이야기boost:assignboost::formatboost::timerboost:threadboost::smart_ptrboost::bindfunctor와 boost:rambda, C++0x rambdastd::ostream과 호환되는 class data dump systemenum정의를 문자열로 만드는 괜찮은 방법서버 다운 재실행 스크립트디버깅 환경 구축 : dump analysis system, bugtrap디버깅 환경 구축 : symbol server settingDaily build & Release Tag(version) 관리RTTI code – from Gamebryo메시지 드리븐 아키텍쳐 만들기 : state pattern, message pattern새로 추가됐지만, 잘 모르는 문법들… and more