3.1 MemoryPool 클래스
간단하지 않은 내용이라 따로 포스팅하였다.
3.2 Crypt 클래스
데이터를 암호화해주는 클래스를 설명한 섹션이다. 나는 보안은 정말 모르는 분야라서 설명된 내용을 구글링하여 찾아보았더니, 대략 대칭키 방식의 암호화이며 키 교환 없이 사전 약속된 키를 이용하는 방식인 것으로 보인다. 나름 강점은 베이스 키를 기준으로 1바이트 암호화마다 이전 암호화 바이트 데이터를 기반으로 키를 계속 변경해준다는 점 같다. 즉,
위처럼 단일 키를 암호화 전체에 이용하는 것이 아닌 키 수열을 만들어가면서 암호화를 하기 때문에 해킹이 더 어려울 것 같다.
3.3 Service 클래스
윈도 프로그램은 서비스 모드라는 방식으로 구동할 수 있다. 리눅스의 데몬과 거의 같은 개념이라고 보면 된다. 내용을 살펴보았을 때는 쉽게 서비스 프로그램을 만들어 구동할 수 있기 때문에 필요할 때 찾아서 참조하면 될 것 같다.
3.4 MiniDump 클래스
게임 업계에 종사하기 전에는 상용 윈도 프로그램을 만들 일이 없어서 미니덤프의 필요성을 느끼지 못하였다. 리눅스는 보통 core dump를 남기도록 프로그램을 빌드하고, 커널의 core dump 사이즈만 잘 설정해주면 알아서 dump가 남기 때문이다. 그런데, 윈도 상에서는 core dump를 위해 특별한 후처리 작업을 해줘야 한다는 사실을 몇년 전에야 알게 되었다. 본 교재 역시 그 방법을 설명하고 있었다. 클래스로 구조화해서 이용하도록 안내하고 있는데, 차후에 그대로 활용이 가능할 것 같다.
3.5 MemoryLeak 클래스
나는 개인적으로 윈도 프로그래밍을 할 때 MFC를 쭉 써왔는데, MFC 프레임워크 내에서 디버그 모드로 실행을 하면 자동으로 memory leak 디텍팅 관련한 작업을 해준다. 그런데, MFC가 아닌 애플리케이션(서버든 클라이언트든)을 만들게 되면 수작업을 좀 해줘야 하는 것 같다. 그 수작업 방법을 교재에서 안내를 해주고 있다. 그런데, 내 경험 상 이 방법이 메모리 누수를 찾아내는 완벽한 방법은 아니었던 것 같다. 기본 중의 기본일 뿐이고, 제대로 프로파일링이나 모니터링 하기 위해서는 상용 솔루션을 도입해야 하는 것으로 알고 있다.
3.6 ThreadSync 클래스
MemoryPool 부분과 연결된 중요한 부분이라 따로 포스팅하였다.
3.7 Random 클래스
난수 생성을 system API를 이용하지 않고, 직접하는 방식을 설명하고 있다. 그런데, 경험 상 직접 생성하는 방식이 속도가 더 느렸던 것으로 기억해서 교재의 코드와 rand()의 성능을 비교해 보기로 했다.
방법 | 1회 소요 시간 |
CRandom::SimpleRandom() |
6.5ns |
CRandom::ComplexRandom() |
31.1ns |
rand() |
30.7ns |
'Book Study > 온라인 게임 서버 프로그래밍' 카테고리의 다른 글
Ch.5 네트워크 모듈 적용 예제-온라인 게임 서버 프로그래밍 (0) | 2019.04.23 |
---|---|
Ch.4 네트워크 베이스 제작-온라인 게임 서버 프로그래밍 (0) | 2019.03.18 |
3.6 ThreadSync 클래스 (0) | 2019.03.02 |
3.1 MemoryPool 클래스 (0) | 2019.03.02 |
Ch.2 -JMAN's Study-온라인 게임 서버 프로그래밍 (0) | 2019.02.21 |