Top Banner
Boost & Tips 2010-05-11 최성기
25

100511 boost&tips 최성기

Jul 11, 2015

Download

Technology

sung ki choi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 100511 boost&tips 최성기

Boost & Tips

2010-05-11

최성기

Page 2: 100511 boost&tips 최성기

agenda

• boost::assign

• boost::timer

• boost::format

• enum을 쓰기 편하게 만들자

• 서버 다운시 재실행 스크립트

• 문법 변경사항 ( vc++ 8.0 )

Page 3: 100511 boost&tips 최성기

assign to std::vector

Page 4: 100511 boost&tips 최성기

boost::assign

• since boost 1.32

• operator, / operator()를 활용

• 컨테이너에 값을 쉽게 넣어보자

• 편리한 인터페이스를 만드는 방법

Page 5: 100511 boost&tips 최성기

std::map에 원소를 넣는 기존 방법

Page 6: 100511 boost&tips 최성기

assign to std::map

Page 8: 100511 boost&tips 최성기

클래스 만들 때, interface design에 참고

Page 9: 100511 boost&tips 최성기

GetTickCount()

Page 10: 100511 boost&tips 최성기

boost::timer

timer.hpp

Page 11: 100511 boost&tips 최성기

boost::format

Page 12: 100511 boost&tips 최성기

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: 100511 boost&tips 최성기

해결방법 1 - 자체제작

기획자분들 잘 들으세요.

($nick)은 닉네임,

($job)는 직업이름,

($lv)는 캐릭터레벨입니다.

자꾸 물어보지 마시고 책상에 적

어서 붙여두세요.

어서 오시오, ($nick).

그대를 기다리고 있었소.

우린 ($job) 만렙이 필요하오.

($nick), 하루빨리 만렙을 찍으시오.

($nick)가 없으니 지금 다른 직업

다 있고 ($job) 만 없소.

지금 레벨이 ($lv) 가 뭡니까

…blah..

Page 14: 100511 boost&tips 최성기

해결방법 1 - 자체제작

boost::replace_all( strDesc, “($nick)”, strNick.c_str() );

boost::replace_all( strDesc, “($job)”, strJob.c_str() );

boost::replace_all( strDesc, “($lv)”, nCharLv ); // error

while( token = _strtok( szCopy ) )

{

if( strcmp( token, “($nick)” ) == 0 )

{

// … 어우… 귀찮음…

}

else …

Page 15: 100511 boost&tips 최성기

해결방법 2 – CString::FormatMessage

CString::Format

CString::FormatV

CString::FormatMessage

%1!d! 따위를 기획자에게 가르치느니,

직접 만드는 게 정신건강에 좋다.

Page 16: 100511 boost&tips 최성기

해결방법 3 – boost::format

어서 오시오, %1%.

그대를 기다리고 있었소.

우린 %2% 만렙이 필요하오.

%1%, 하루빨리 만렙을 찍으시오.

%1%가 없으니 지금 다른 직업 다

있고 %2%만 없소.

지금 레벨이 %3%가 뭡니까

…blah..

• strNickname / 뉘집딸래미

• strJobName / 사냥꾼

• nCharLevel / 77

Page 17: 100511 boost&tips 최성기

boost::format, excel, lua

Page 18: 100511 boost&tips 최성기

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: 100511 boost&tips 최성기

공통 에러코드 처리

Page 20: 100511 boost&tips 최성기

서버 다운 -> 업데이트 -> 재실행

Page 21: 100511 boost&tips 최성기

function-try block in vc++ 7.0

Page 22: 100511 boost&tips 최성기

for each in vc++ 8.0 (비표준)

Page 23: 100511 boost&tips 최성기

keyword __super in vc++ 8.0 (비표준)

Page 24: 100511 boost&tips 최성기

__VA_ARGS__ in vc++ 8.0

Page 25: 100511 boost&tips 최성기

오늘 한 이야기, 앞으로 할 이야기• 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