분류 전체보기582 문자열 복사에 따른 성능 비교 2011.06.30. 목 얼마 전에 알고 지내던 사람의 도움 요청이 있어서, 해당 회사의 서버 프로그램을 볼 기회가 있었습니다. 프로그램의 내용을 보고서, 이렇게 프로그램을 하면 안 되지 않을까, 자꾸 서버가 문제를 일으키는 원인이 있었네하는 생각을 가졌습니다. 모든 소스를 살펴보는 것은 시간적인 문제도 있었지만, 서비스하는 다른 회사의 소스를 마음대로 보는 것도 문제가 있겠지요. 그래서 문제가 일어난 소스만 살펴보았는데요, 그 중 하나 눈에 띈 것이 바로 strcpy 함수를 쓴 내용이었습니다. 길드 이름을 매번 사용자 프로필 구조체에 있는 친구 리스트에 strcpy 함수로 복사해서 넣는 것을 보고서, 나라면, 길드 프로필 구조체를 만들고 길드 데이터베이스에서 길드 프로필을 미리 복사를 하고, 플레이어 .. 2011. 9. 19. Induction I 2010.10.17. 논리를 증명하는데 있어서 자주 언급되는 것들로는 연역법과 귀납법이 있습니다. 위키피디아에 의하면 연역법(deductive reasoning)은 이미 알고 있는 사실로부터 새로운 사실을 추론하는 것이다라고 되어 있습니다. 그에 비해서 귀납법(Induction)은 경험적 근거를 바탕으로 한 사실을 말합니다. 연역법은 논리에 있어서 잘못된 추론이 있을 수 없지만, 귀납법은 잘못된 추론이 발생할 수 있습니다. 현대사회에서 귀납법을 이용하여 많은 사실을 이끌어내기는 하지만, 이것이 100% 올바른 답이라고 할 수 없습니다. 사회적 현상에서 특히 논란을 많이 발생시킵니다. 이 책에서는 일반적인 귀납법이 아닌 수학적 귀납법(Mathematical Induction)을 설명합니다. 수학적 귀납법은.. 2011. 9. 19. Euclid algorithm 유클리드의 소거법은 알고리즘을 설명하는데 자주 등장합니다. 그 이유 중 하나는 알고리즘(Algorithm)이란 말을 자주 사용하게 된 계기가 되었기 때문일겁니다. 유클리드의 소거법은 두 개의 숫자를 나눌 수 있는 최대 자연수를 찾는 과정을 기술하고 있습니다. E. 유클리드의 알고리즘 : m과 n이 주어졌을 때, 두 수를 나눌 수 있는 가장 큰 자연수를 찾는다. E1 : m과 n이 같다면 알고리즘을 종료한다. m이 원하는 답이다. E2 : m이 n보다 크다면 m ← m-n을 하고 그렇지 않다면 n ← n-m을 한다. E3 : E1 으로 돌아간다. 위의 알고리즘 E를 C 언어 함수로 만들면 아래와 같습니다. int foo(int m, int n) { while(m != n) { if( m > n ) m = .. 2011. 9. 19. The Art of Computer Programming 2010.10.10. 제가 개인적으로 읽고 있는 책입니다. 이 책은 Donald E. Knuth라고 하는 분이 쓰신 책인데요. 역작이라고 할 수 있습니다. 그러나 이 책을 읽기 위해서는 수학에 대해서 이해도가 높아야 하죠. 그렇지 않다면 조금 읽고서.. "이해 안 가"하면서 버릴만한 책이죠. 류광씨가 번역한 책이 한빛미디어를 통해서 판매되고 있으니 굳이 원서를 볼 이유는 없습니다. 오탈자가 좀 있는 것은 그런가 보다 이해하면 됩니다만.. 틈나는대로 이 책에 대해서 글을 올릴까 합니다. 물론 책 전체를 다 번역한다는 것은 아닙니다. 제가 이해하는 부분을 쓰기 때문에 혹시 책을 보면서 알고 싶으신 내용있으면 같이 풀어나갔으면 합니다. CHAPTER ONE 1.1 알고리즘(Algorithms) 알고리즘이란 것.. 2011. 9. 19. 알파 오브젝트 정렬 며칠전에 알파 블렌딩 때 오류가 난나는 분의 문의 메일을 받았는데, 이유는 그것이 아니었지만, 알파 블렌딩에서 필요한 요소 기술들을 많이 모르고 있어서 여기에 소개하고자 합니다. 알파 블렌딩을 할 때, 제일 먼저 신경 써주어야 하는 것은 그리는 순서입니다. 불투명 오브젝트는 Z-Buffer(또는 뎁스버퍼)의 도움으로 그리는 순서에 상관없이 카메라로부터 가까운 거리의 오브젝트는 먼 거리의 오브젝트를 가리게 됩니다. 그러나 투명 오브젝트는 Z-Buffer의 도움을 받을 수가 없죠. 그리는 순서에 따라서 결과값이 달라지게 됩니다. 예를 들어서 노란색에 50% 투명도를 가지고 있는 오브젝트 A와 파란색에 50% 투명도를 가지고 있는 오브젝트 B가 있다고 하죠. A 오브젝트가 B 오브젝트에 비해서 카메라로부터 거.. 2011. 9. 19. 렌더러 생성 게임브리오에서는 여러가지 렌더러(Open GL, DirectX 8, DirectX 9, PS2)를 지원하고 있다. 그렇기 때문에 렌더러를 생성할 때 일반화된 프로그램을 작성할 수 없다. 게임브리오에서는 렌더러별로 Create 함수를 이용하여 렌더러를 생성하도록 하고 있다. 모든 렌더러는 NxRenderer 클래스를 상속받고 있으며, 모든 렌더러 함수들은 가상함수로 제공됨으로써 게임브리오 응용 프로그램에서 생성한 렌더러가 실행될 수 있도록 되어있다. Create 함수를 이용한 가상 클래스 생성에 대한 설명은 http://cafe.naver.com/dxgameprogramming/36 을 참조하길 바란다. 렌더러 생성은 다음과 같은 형태로 진행된다. 1) 렌더러 파라미터 검사 - 렌더러 파라미터는 현재 설치.. 2011. 9. 19. 이전 1 ··· 92 93 94 95 96 97 다음 728x90