본문 바로가기

프로그래밍

게임 엔진 프레임워크 http://hyeonstorage.tistory.com/99 BASE Framework Core Layer ( 자료 구조 , 알고리즘, 기초 함수들) Rendering Englne 게임로직, 네트워크 스크립트 게임 클라이언트, 툴 스트레티지 (전략) 패턴MVC 패턴 이 기본이 되어 설계 각 기능의 Manager 프레임워크각각의 싱글톤 메니져 들이 하위 객체들의 관리를 담당메니저는 등록된 객체들을 생성/ 갱신 삭제들의 작업처리싱글톤, 프록시패턴, 팩토리 패턴 엔진 프레임워크 아키텍쳐메인스레드 오브젝트 메니져신메니져엑터메니져UI메니져사운드메니져 이벤트 이키텍쳐 리시버된 이벤트를 이밴트 핸들러에 저장해서 이밴트핸들러 업데이트를 통해 처리함옵저버 패턴 게임 프레임워크UIScene(UI인터페이스) -> 인게임 ..
STRING 기본 구현 ftp://ftp.acer.pl/gpl/AS9100/GPL_AS9100/linux-2.4.28/lib/string.c/* * linux/lib/string.c * * Copyright (C) 1991, 1992 Linus Torvalds */ /* * stupid library routines.. The optimized versions should generally be found * as inline code in * * These are buggy as well.. * * * Fri Jun 25 1999, Ingo Oeser * - Added strsep() which will replace strtok() soon (because strsep() is * reentrant and should be..
메모리 할당 참조:http://kcats.tistory.com/145http://vosej_v.blog.me/50169180000http://mlpworld.tistory.com/entry/%ED%9E%99-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A0%A8-API Memory max 0 프로그램을 실행하게되면, OS는 프로그램이 실행에 필요로 하는 자원(memory)을 제공한다.제공된 Memory에는 프로그램의 코드와 함께 프로그램을 실행하면서 생긴 데이터들이 저장되게된다.이때의 메모리구조는 위의 그림처럼 크게 4가지영역으로 나눌수 있다. Text section프로그램의 코드를 포함한다. Data section프로그램이 시작할때 생성되고, 종료시 소멸되는 메모리 영역으로 전역 변수(..
리팩토링 프로그래므이 가치를 높이는 코드 정리 기술 2. 리팩토링의 개론3. 코드의 구린내문서로 정리 4. 테스트 작성리팩토링을 하기 위해서는 테스트가 필요하다 이런 테스트를 위해서는 리팩토링의의 자동화 기능이 갖춰져야 한다. 자가 테스트 코드의 가치 단위 테스트와 기능 테스트 이 프레임 워크는 단위 테스트 용이다. 단위 테스트의 목적은 프로그래밍 생산성 향상이다. 기능 테스트는 단위 테스트와 전혀 다르다 기능 테스트의 목적은 소프트 웨어 전반이 제대로 돌아가는지 확인하는 것이다. 5. 리팩토링 기법 카탈로그에 대해카탈로그 부분의 각 리팩토링 기법은 다음과 같은 5 개의 하위 절로 구성했다 • 이를 :각종 리팩토링 기법을 구별하기 위한 필수적인 요소이며 카탈로그의 각 절 제목으로도 사용했다• 요약 :기법의 적용 시점과 목적을 설명한다. 이 부분을 보면 자..
Windows 메모리/리소스 누수 디버깅 기법들 http://littles.egloos.com/3383811 Windows 메모리/리소스 누수 디버깅 기법들http://littles.egloos.com/3383811 모든 소프트웨어 개발 프로젝트에서 제품을 출시하기 위한 메모리 누수(leak)와의 싸움은 피할 수 없는 어려운 과제이다. 여러 프로젝트에서의 개인적인 경험을 통해, Windows 환경에서 유용한 여러가지 메모리 누수 디버깅 방법 들을 정리해 보았다. 1. Debug CRT Heap의 기본 기능들 사용 Win32 API에 탑재되어 있는 _CrtDumpMemoryLeaks()에 의한 메모리 누수 덤프 기능은 비록 정확히 어느 소스코드에 의해 leak 발생하는지까지 알려주지는 않으나 최소한 leak이 존재하는지 여부는 보고해준다. 따라서 어플리..
데드락, Live락 대드락의 설명 http://blog.naver.com/thdghkstlr/220049048533 1. 데드 락(Dead Lock)이란? 두 개 이상의 작업이(프로세스, 쓰레드) 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를말한다. 하나의 사다리가 있고 두 명의 사람이 각각 사다리 위, 아래에 있다고 가정할 때 아래사람은 위로, 위에 사람은 아래로 내려오려고 한다면 두 사람은 서로 상대방이 비켜줄 때까지 하염없이 기다려야 한다. 2. 스핀 락(Spin Lock)이란? 임계영역이 있고, 한 쓰레드가 크리티컬 섹션에 대한 Lock을 소유하고 있다면 그 Lock이 반환될 때까지 계속 확인하며 기다리는 것을 의미한다. Lock,, Unlock이 자주 일어나는 곳에서는 효율적이다.왜..
java 와 c/c++의 차이 1. 메모리 접근 방식 c/c++ : pointer를 이용한 메모리 접근.java : reference를 이용한 메모리 접근. 자바의 자료형은 크게 기본형과 레퍼런스 타입으로 분류할 수 있다. 레퍼런스 타입은 new 연산자를 통해서 heap 영역에 생성되는 자료형들을 의미한다. 레퍼런스 타입으로는 클래스, 배열, 인터페이스 가 있다. 프로그래밍 언어에서 포인터와 레퍼런스는 다른 메모리 공간에 대한 주소를 가지고 있다는 점에서 매우 유사하기 때문에 혼동되는 개념이다. 포인터 혹은 레퍼런스 타입이 가리키고 있는 곳의 값에 접근하는 것을 dereference 라고 한다.자바는 c++ 와 달리 포인터를 지원하지 않고, 레퍼런스 만을 지원한다. 포인터와 자바언어에서 사용되는 레퍼런스는 다음과 같은 차이가 있다. ..
내가 추구하는, 비효율적이고 불합리한 게임개발. http://blog.daum.net/gdocument/317 처음 프로그래밍을 공부했을때 나의 관심사는 "빠른 렌더링" 혹은 "최적화된 알고리즘" 이였다. 군더더기 없고 빠른 알고리즘이야말로 프로그래머가 추구해야할 가치라고 생각했다. 하지만 실무에서 게임을 개발하면서 "궁극의 최적화된 테크닉" 은 실제로 쓸일이 별로 없었다. 오히려 변화에 대응하기 쉽고, 유지보수가 쉬운 코딩테크닉이 더 실용적이였다. 그래서 나는 나의 가치관을 바꾸었다. "고성능의 코드" 보다는 "유지보수가 쉽고, 컨텐츠변경이 쉬운" 여러가지 프로그래밍 기법에 대해서 관심을 가졌다. 모듈화,디자인패턴,스크립트, 데이트드라이븐, 컴포넌트설계 와 같은것들이다. 어떻게 하면 "빠르고,합리적이고,효율적이고,유지보수가쉬운" 형태로 게임을 개발할..