Contenu connexe Similaire à 어플 개발자의 서버개발 삽질기 Similaire à 어플 개발자의 서버개발 삽질기 (20) 어플 개발자의 서버개발 삽질기2. 발표자 소개
• 이름 : 김연기
– @scor7910
– http://scor7910.tistory.com
• 2008.10 ~ 2011.10 Microsoft Visual
C++ MVP
• 2007~2011/03 : Visual C++ 로 이런저런
어플 개발
• 2011/05 : 네시삼십삼분에서 서버 플랫폼
개발 삽질 시작…
8. 왜 삽질을 했는가?
• 플랫폼 아키텍처 이해 부족.
• 경험 부족.
– Boost::asio
– WEB
– Database
9. Boost::asio
• 멀티쓰레드 I/O 조심!!
– 외부 쓰레드에서 소켓핸들의 close/write는 Io_service::post를 사용.
• template< typename CompletionHandler> void
post( CompletionHandler handler);
• 종료는 우아하게(Graceful closure)
•
11. Dead Lock
const BOOL& CAxisOfDevil::DoSomething()
{
EnterCriticalSection(&m_CS);
UINT i=0;
while(1)
{
++i;
if(i==1000)
{
Sleep(10);
return FALSE;
}
}
LeaveCriticalSection(&m_CS);
return TRUE;
}
12. Dead Lock
const BOOL& CAxisOfDevil::DoSomething()
{
EnterCriticalSection(&m_CS);
UINT i=0;
while(1)
{
++i;
if(i==1000)
{
Sleep(10);
return FALSE;
}
}
LeaveCriticalSection(&m_CS);
return TRUE;
}
13. DUMP Analysis
• !analyze –v –hang
• Kn , .frame, dv, dt
• !for_each_frame dv /i /t /V
03 0532fdc8 00414834 mtgdi!CBallThread::SingleStep+0x147
[c:downloadsmtgdithreads.cpp @ 180]
prv local 0532fdc4 @ebp-0x04 class CBallThread * this = 0x043349f0
________________
04 0532fe20 00414d8c mtgdi!CGDIThread::InitInstance+0x44
[c:downloadsmtgdithreads.cpp @ 65]
prv local 0532fe1c @ebp-0x04 class CGDIThread * this = 0x043349f0
14. DUMP Analysis
• ProcDump
– Procdump –ma –t –e <process name>
– http://technet.microsoft.com/ko-
kr/sysinternals/dd996900(en-us).aspx
15. Googleing
– 내가 격고 있는 문제는 대부분 누군가 격은
문제.
– 단어 조합을 잘 하자 힠~
• 영어와 친하게 지내요~
– Google 미쿡을 기본 검색 페이지로~~
• Error/Exception 코드 + when + …
17. HTML 5
• 안드로이드는 무조건 안된다고 보자.. @,.@
• C++에 Boost가 있다면, 웹엔 Jquery??
• 모바일 플랫폼에서 적용 가능한지 검증이 중요!