본문 바로가기

Skills/mY Technutz

머드서버프로그래밍에서 주의해야 할 사항

* 인덱스는 unsigned 형을 사용하도록 하자.
-> signed 형의 경우 유효성 검사를 위해
"변수>=0 && 변수<=최대값" 이런식으로 두번을 체크해야하지만
unsigned 형의 경우 "변수<=최대값" 으로만 해결 가능하다.

* strcpy 등의 길이제한이 없는 함수는 사용하지 않는다
-> 100% 확실한 경우라도 '\0' 값이 없을경우가 생길수 있다.
무조건 길이제한을 둔다. 그런 함수가 없다면 만들어서 써라.

* 리턴받은 포인터값을 바로 사용하지 말아라.
-> 반드시 NULL이 아닌지 확인하고 사용해야한다.
바로 쓰고 싶을 경우는 레퍼런스를 사용해서 항상 유효한 데이터임을 알린다.

* 로그를 저장할때는 리붓할때마다 시간등을 이용한 고유값으로 분리하고
로그마다 인덱스를 남긴다. 예외 종료시에는 에러 로그를 남긴다.
-> 예외 처리시점을 빨리 알아내고

* 로그는 게임서버에 파일로 저장하지 않도록 하자.
-> SCSI 하드디스크라도 파일저장하는데 있어서 부하는 아주 크다.
물론 사용자가 100명도 안된다면 모르겠지만... 여유가 생기는데로
로그 서버를 구축하도록하자.

특히 fopen("log", "a+"); 식은 매번 파일을 오픈하므로;; 치명적!

* 로그는 알기 쉽게 만든다.
-> 로그는 분석하기 위한 도구다. 어떤 사용자가 무슨 일을 한것인지
사람이 알아보기 쉽게 만들자.
사용된 변수값은 모두 적어주는것이 좋다.

* 서식함수 첫번째 인자는 변수를 사용하지 않는다.
-> printf(msg); 식으로 사용할 경우 자칫 "%s %d" 라는 코드가 있으면
에러난다. (컴파일러 타입은 세그먼트 오류로 방폭-_-)

* 돈은 sigined 형을 사용한다.
-> unsigned 형을 썼다가 자칫 뺄셈을 잘못할 경우 몇십억이 되는 돈이
들어갈수가 있다.

* 사용자에게서 받은 값은 전부 범위체크를 한다.
-> 어떤값이 들어올지 모른다. 신용은 금물!

[펌] 빗자루(송영진:myeven)님글에서..

'Skills > mY Technutz' 카테고리의 다른 글

Tar 간단 패치...  (0) 2006.08.31
Eclipse  (0) 2005.10.30
Table을 쉬게하자...  (0) 2005.07.01
vim에서 자동 한글코드변환하기  (0) 2005.03.26
[Fedora Core3] Yum 레파지토리 변경하기.  (0) 2005.03.21