SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Boost & Tips 2010-05-11 최성기
agenda boost::assign boost::timer boost::format enum을 쓰기 편하게 만들자 서버 다운시 재실행 스크립트 문법 변경사항 ( vc++ 8.0 )
assign to std::vector
boost::assign since boost 1.32 operator, / 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::timer timer.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::FormatMessage CString::Format CString::FormatV CString::FormatMessage %1!d! 따위를 기획자에게 가르치느니, 직접 만드는 게 정신건강에 좋다.
해결방법 3 – boost::format 어서 오시오, %1%. 그대를 기다리고 있었소. 우린 %2%만렙이 필요하오. %1%, 하루빨리 만렙을 찍으시오. %1%가 없으니 지금 다른 직업 다 있고 %2%만 없소. 지금 레벨이 %3%가 뭡니까…blah.. strNickname / 뉘집딸래미 strJobName / 사냥꾼 nCharLevel / 77
boost::format, excel, lua
enum + macro MajorCode.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: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

Weitere ähnliche Inhalte

Was ist angesagt?

Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
흥배 최
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
지수 윤
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
SeongHyun Ahn
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Esun Kim
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트
효준 강
 

Was ist angesagt? (20)

C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crow
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
 
Go
GoGo
Go
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트
 

Ähnlich wie 100511 boost&tips 최성기

Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
Ji Hun Kim
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park
 

Ähnlich wie 100511 boost&tips 최성기 (20)

파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
Changes in c++0x
Changes in c++0xChanges in c++0x
Changes in c++0x
 
DEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptxDEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptx
 
Boost pp 20091102_서진택
Boost pp 20091102_서진택Boost pp 20091102_서진택
Boost pp 20091102_서진택
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
[170327 1주차]C언어 A반
[170327 1주차]C언어 A반[170327 1주차]C언어 A반
[170327 1주차]C언어 A반
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7
 
배워봅시다 머신러닝 with TensorFlow
배워봅시다 머신러닝 with TensorFlow배워봅시다 머신러닝 with TensorFlow
배워봅시다 머신러닝 with TensorFlow
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
3ds maxscript 튜토리얼_20151206_서진택
3ds maxscript 튜토리얼_20151206_서진택3ds maxscript 튜토리얼_20151206_서진택
3ds maxscript 튜토리얼_20151206_서진택
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
객체지향 정리. Part1
객체지향 정리. Part1객체지향 정리. Part1
객체지향 정리. Part1
 
Deview 2019 눈발자국
Deview 2019 눈발자국Deview 2019 눈발자국
Deview 2019 눈발자국
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 

Mehr von sung ki choi

[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
sung ki choi
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장
sung ki choi
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
sung ki choi
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
sung ki choi
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표
sung ki choi
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32
sung ki choi
 

Mehr von sung ki choi (15)

[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32
 

100511 boost&tips 최성기

  • 1. Boost & Tips 2010-05-11 최성기
  • 2. agenda boost::assign boost::timer boost::format enum을 쓰기 편하게 만들자 서버 다운시 재실행 스크립트 문법 변경사항 ( vc++ 8.0 )
  • 4. boost::assign since boost 1.32 operator, / operator()를 활용 컨테이너에 값을 쉽게 넣어보자 편리한 인터페이스를 만드는 방법
  • 7. queue, list, stack… 다양한 아이디어 http://www.boost.org/doc/libs/1_43_0/libs/assign/doc/index.html
  • 8. 클래스 만들 때, interface design에 참고
  • 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::FormatMessage CString::Format CString::FormatV CString::FormatMessage %1!d! 따위를 기획자에게 가르치느니, 직접 만드는 게 정신건강에 좋다.
  • 16. 해결방법 3 – boost::format 어서 오시오, %1%. 그대를 기다리고 있었소. 우린 %2%만렙이 필요하오. %1%, 하루빨리 만렙을 찍으시오. %1%가 없으니 지금 다른 직업 다 있고 %2%만 없소. 지금 레벨이 %3%가 뭡니까…blah.. strNickname / 뉘집딸래미 strJobName / 사냥꾼 nCharLevel / 77
  • 18. enum + macro MajorCode.h #define _ENUM( id, desc ) id, enumSomeType { #include “SomeType.enum.h” } SomeType.enum.h _ENUM( ST_ABC, 철수 ) _ENUM( ST_DEF, 영희 ) _ENUM( ST_GHI, 바둑이 )
  • 20. 서버 다운 -> 업데이트 -> 재실행 Demo
  • 22. for each in vc++ 8.0 (비표준)
  • 23. keyword __super in vc++ 8.0 (비표준)
  • 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