서버 테스트 방법은 지난 포스팅 (http://elky.tistory.com/161)을 보신 분이라면 알겠지만, 테스트의 목적은 개발자의 의도대로 프로그램이 동작하는지를 확인하는 과정이다. 클라이언트가 서버보다 안정성에 대한 이슈에 덜 민감하지만, 클라이언트 역시 안정성 문제에서 자유롭지 못하다. 어떤 프로그램이던 간에 비정상 종료가 되는 프로그램을 좋아할 사용자는 없기 때문이다. 그래서 이번 기회에 클라이언트 프로그램의 테스트에 대한 썰을 풀어보고자 한다. 1. 다양한 운영체제/구동 어플리케이션 환경에서 테스트하라. 특정 어플리케이션이 같이 깔려 있을 경우 동작하지 않는 경우도 있고, 특정 운영체제에서 동작하지 않는 경우도 있다. 이를 위해서는 다수가 사용하는 환경 위주로 테스트 하는 것이 현실적일 것..
Microsoft Specific dllimport, dllexport DLL에서(로) 함수, 데이터, 개체를 내보내는(가져오는) 속성. 함수를 dllexport로 선언하면, 적어도 export된 함수 스펙과 관련된 .DEF (모듈 정의) 파일이 필요없다. 또한 dllexport는 __export 키워드 (16비트 버전의 VC++에서 사용) 를 대체한다. declspec(dllexport) 클래스의 클래스 템플릿 특수화(specialization)는 암묵적으로 declspec(dllexport)가 된다. 즉 템플릿은 명시적으로 인스턴스화(==구체화)되고, 그 멤버들은 반드시 정의되어야 한다. dllexport C++ 함수는 이름장식을 가진 함수를 노출시킨다. C++ 이름장식이 필요없다면, .def 파일 ..
3년 8개월여 다녔던 회사를 그만 두게 되었습니다. 11월 25일이었죠. 병역특례도 이 곳에서 2년 10개월간 복무해왔고... 저의 20대 초반을 대부분 보낸...그런 회사를 그만두기 쉽지 않았죠. 특히나 서버 파트를 관리하신 이사님께서 워낙에 좋은 분이시다보니 쉽지 않았습니다. 흔들리는 시기마다 마음을 다잡고 다시 힘을 내던 계기가 바로 이사님 덕분이었죠. 허나 이번엔 좀 달랐습니다. 마음이 돌아서지 않더군요. 시기상으로도 지금이 아니면 계속 회사에 남는 선택을 할거 같았습니다. 변화가 필요했습니다. 그만두기로 결심하고 바로 보게된 면접에서 좋은 결과가 있어 평소 꼭 다녀보고 싶던 N모사에 입사했습니다. S모 이사님으로 유명한 회사죠. 입사가 결정이 되고 첫출근으로 정한 날짜가...12월 1일... 네..
스택의 크기는 한정되어있다. 그럴 수 밖에 없는 것이, 스택 영역은 스레드 별로 다르게 존재해야 되기 때문이다. Visual Studio .net 2003 환경에서 기본 옵션으로 Build 했을 경우 stack 크기는 1M byte 이다. stack 크기를 늘리고 싶다면, 힙 공간을 사용하거나 project - properties - linker - system에서 stack reserve size를 변경하면 된다. 스택의 크기가 크게 배정된다면, 스택 오버플로우의 가능성은 낮지만 스레드 전환시 복사 비용이 크다는 단점이 생긴다. 스택에는 지역 변수, 함수가 되돌아갈 주소, 매개변수 등이 담기는데, 지역 변수를 남발 할 시에는 스택 크기를 넘어서서 스택 오브 플로우가 발생한다. 스택의 크기는 너무 커도 ..
홀 펀칭 (Hole Punching) - 정확한 명칭은 STUN (Simple Traversal of User Datagram Protocol Through Network Address Translators) 공유기라는 녀석이 라우터의 특성도 함께 가지고 있어 Routing Table 을 작성하기 위해 P2P 통신을 목적으로, 사전에 상대방과 패킷을 주고받고 하여 각자의 공유기에 Routing Table 을 작성하는 것을 [홀 펀칭]이라고 한다. Full Cone NAT 내부에 있는 호스트들의 모든 요청은, 모두 같은 외부 ip, port 로 맵핑된다. 더군다나 어떤 외부 호스트든 공인 IP가 맵핑된 패킷 보내기에 의해 내부 호스트로 패킷을 보낸다. Restricted Cone 목적지의 주소에 따라 NA..
Reliable UDP (이하 RUDP)는 신뢰성을 갖는 UDP를 의미합니다. 일반적으로 TCP는 신뢰성을 갖는 대신 느리고, UDP는 신뢰성이 없고 빠르다고 알려져있죠. 여기에 또 하나의 특징은, TCP는 서버 (Listener)와, 클라이언트 (Connector) 관계가 성립한다는 점입니다. 즉, 서버건 클라이언트건 연결 관리가 필요하다는 것이죠. RUDP의 필요성은, 주로 클라이언트 끼리의 통신에서 대두되었습니다. 우선 일반적인 클라이언트/서버 구조에서의 클라이언트 끼리의 통신은 서버를 경유해서 데이터를 전송함으로써 신뢰성을 갖추는데, UDP보다 느리고 서버에 부하를 주기 때문에 클라이언트 끼리의 통신에서도 TCP의 장점은 신뢰성과, UDP의 장점은 속도를 모두 갖춘 Reliable UDP가 등장하..
C++에서 Memory(auto든 static이든 dynamic이든)를 사용할 때 초기화 하지 않았을 때의 값은 Undefined다. VC++에서는 Debug모드일 때 메모리 관련 오류를 디버깅하기 위해 자동으로 메모리를 초기화 해 주는데, 그 값들은 아래와 같다. 0xcccccccc (3435973836) - 초기화 되지 않은 지역변수. 0xcdcdcdcd (3452816845) - 초기화되지 않은 힙에 할당된 메모리. 0xdddddddd (3722304989) - 힙에서 free된 메모리. 0xfeeefeee (4277075694) - 힙에서 free된 메모리. 0xfdfdfdfd (4261281277) - 힙에 할당된 메모리의 초과범위(할당된 메모리의 양쪽 끝)
- Total
- Today
- Yesterday
- ruby
- 바로가기 프로그램
- 멀티스레드
- ftp
- RoR
- 디자인 패턴
- EzShortcut
- 루비 온 레일즈
- TDD
- 임백준
- 엘키
- svn
- c언어
- Ruby on Rails
- TraceRoute
- perfmon
- Rails
- 조엘 온 소프트웨어
- MS-SQL
- 디버깅
- CppSQLite
- SDL
- 루비
- 게임개발포에버
- NDC2013
- SQLite Spy
- 좋은 프로그래머
- EasyExec
- 리버스 엔지니어링
- 게임데브포에버
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |