본문 바로가기
728x90

분류 전체보기255

2016 유니티 로드쇼 서울지역 10월 29일 마지막 유니티 로드쇼가 개최 되었다. 기존에 대전 지역을 신청했지만, 학교 중요한 알고리즘 시험이 겹쳐있어 아쉽게 참석하지 못했었고, 그리하여, 유니티 관계자분께 따로 전화를 드려 알아보니 오프라인 접수도 받는다고 했다. 그동안 학교에 아직까지 게임개발 쪽에 흥미가있고 공부하는 학우는 찾지 못하여, 혼자 공부하는데 어려움이 많았다. 정확히 말하면, 기간도 짧지만 엔진에 대한 정보나 모르고 있는 사실들이 너무 많아, 책으로 공부하기에는 제공되는 다양한 서비스를 아는데에는 한계가 있었다 로드쇼에서 제공하는 정보들 중에는 유익한 것들이 많이 있었다. □ 유니티 VR관련 내용 을 요약하자면처음에 인상 깊었던점은 가상현실 기술을 활용한 Unity Editor 였다. 위 동영상은 현재 구현된.. 2016. 11. 21.
Player basic move □ Vector3 ◆ 방향을 지시하는 용도로 사용할 때는(x,y,z)값을 0과 1로 표시한다. 각 방향에 대한 상수값을 사용할 수도 있다.◆ 거리를 지시하는 용도로 사용할 때는 (x,y,z) 값을 해당 크기 만큼 표시한다. .벡터3(Vector3)는 오브젝트의 이동 방향을 지시하거나 이동 거리, 회전을 표시할 때 사용한다. □ 프레임 시간의 보정 Update 메서드는 iOS나 안드로이드 모바일 기기에서는 1초당 최대 60프레임이 호출된다. 그런데 Update 메서드가 호출되는 횟수가 모든 기기에서 정확하게 똑같지는 않다. Update 메서드에서 처리하는 내용이 많은 경우 최신 기기는 빠르게 처리해 초당 60번 호출하는 데 문제가 없을 수 있지만, 오래된 기기는 성능이 떨어져 초당 20프레임만 호출할 수도.. 2016. 11. 21.
K-means, Approx_k Clustering(의사코드, 근사비율) □ K-means 알고리즘 - k평균 클러스터링 알고리즘은 클러스터링 방법 중 분할법에 속한다. ex) N개의 데이터 오브젝트를 입력 받았다면, 분할법은 N보다 작거나 같은 K개의 그룹으로 나누는데, 이 때 각 군집은 클러스터를 형성하게 된다. (1개 이상의 데이터 오브젝트로 구성된 k개의 그룹으로 나누는것) 이 때 군집을 나누는 과정에서 같은 그룹 내 데이터 오브젝트 끼리 유사도는 증가 다른 그룹에 있는 데이터 오브젝트와의 유사도는 감소. - 최초에는 무작위 k개의 중심 1)데이터를 선정하고, 해당 데이터로부터 각 2)데이터의 거리(유클리디언, 맨하탄 등)을 계산한다. 그 거리의 평균이 작은 곳으로 3)중심점을 변경하고, 4)다시 거리를 계산하는 것을 반복하여 최적의 군집을 찾을 수 있다. (유클리디언.. 2016. 11. 16.
함수 포인터(Function Pointer) 와 보이드 포인터(Void*) □ 함수 포인터 - 실행 코드인 함수의 주소를 다루는 포인터 - 함수의 이름은 함수가 있는 메모리의 시작주소가 된다. 함수명이 함수의 메모리의 주소이므로, 함수 포인터에 저장하면 함수를 다양한 방식으로 호출 할 수 있다. 함수 형태는 매개변수의 개수와 자료형, 그리고 반환값의 자료형으로 정의 한다. □ 함수 포인터 배열 - 함수 포인터를 배열에 저장하여 사용할 수 있다. □ 예제로 함수 포인터 살펴보기 함수 포인터를 선언할때 매개변수의 타입 또는 갯수를 설정해주지 않은 경우에는 가리키는 함수의 매개변수 형태와 상관없이 (반환값은 일치해야함) 정상적으로 실행되는 모습을 볼 수 있다. 하지만, 함수 포인터의 매개변수 형태(갯수)를 지정해놓은 경우, 갯수가 맞지 않아 컴파일시 다음과 같은 오류를 보게된다. 에.. 2016. 11. 2.
데몬(daemon) 정리. 중지시켜도 되는 서비스 acpid : ACPI(Advanced Configuration and Power interface)방식의 시스템 전력 관리를 위한 데몬 anacron : 시스템이 꺼져있을 경우 수행되지 못한 작업 확인 및 수행 atd : at 작업 스케쥴러 auditd : 리눅스 감시 데몬 /etc/audit autofs: 자동마운트 데몬의 작동을 제어하는 프로그램 avahi-daemon : 네트워크 서비스를 인식하는 멀티캐스트 DNS서비스 Avahi 데몬 avahi-dnsconfd : DNS 재설정 기능을 위한 데몬 bluetooth : 블루투스 장치를 사용하기 위한 데몬 capi : Comman ISDN API conman : 콘솔 관리 지원 서비스. 다수의 콘솔 장치와 동시 접속자에 대한 .. 2016. 10. 1.
크러스컬 알고리즘(KruskalMST) □ 크러스컬 알고리즘은 최소비용 생성나무(spanning tree 스패닝 트리)를 찾는 알고리즘이다. (생성나무란 그래프 이론에서 모든 꼭짓점을 포함하는 부분 나무이다.) 크러스컬의 알고리즘은 최소 비용 신장 트리가 최소 비용의 간선으로 구성됨과 동시에 사이클(cycle)을 포함하지 않는다는 조건에 근거하여, 각 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택. □ 크러스컬 알고리즘의 순서 - 먼저, 그래프의 각 간선(edge)들을 가중치의 오름차순으로 정렬. - 정렬된 간선들의 리스트에서 싸이클을 형성하지 않는 간선을 찾아 최소비용신장 트리(MST)의 집합에 추가 - 만약 사이클을 형성하면 그 간선은 버린다. □ 시간 복잡도KruskalMST(G)입력 : 가중치 그래프 G=(V,E), |V|=n,.. 2016. 9. 29.
Ctags를 이용한 소스분석 □ ctags - ctags를 이용하여 작업 디렉토리 혹은 그 하위 디렉토리 내의 소스파일에 정의되어있는 함수들로 진입하거나 다시 목록으로 돌아와 소스분석을 빠르게 할 수 있는 기능을 제공한다. 즉, 프로그램 소스내 변수 및 함수의 위치를 인덱스하여 바로바로 찾아볼 수 있게 만들어주는 것이다. □ ctags 설치/ vi와 함께 사용법 - 우분투 기준 설치 sudo apt-get install ctags 명령어를 통해 설치 할 수 있다. - ctags * : 현재 디렉토리내 모든 소스파일에 대해 tags 정보를 만들어 tags 파일을 생성한다. - ctags -R 현재 디렉토리와 하위디렉토리를 포함한 모든 소스파일에 대해 tags 정보를 만들어 tags 파일을 생성. - vi로 생성된 tags 파일을 살펴.. 2016. 9. 25.
포인터와 배열(Pointer & Array) -(2/2) □ 2차원 배열 ○ 2차원 배열은 1차원 배열처럼 배열명과 첨자를 사용하여 선언한다. - 각 배열요소의 형태는 int형 변수 4개짜리 1차원 배열이다. - 전체 배열은 12개의 int형 기억공간이 1차원 배열의 형태로 할당된다. ○ 2차원 배열에서의 1차원배열은 2차원배열의 일부. □ 2차원 배열의 초기화 ○ 1차원 배열처럼 초기화하며 초기화 값은 행 단위로 차례로 저장됨. ex) int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 로 선언과 함께 초기화 된다면 int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ○ 만약 해당 배열 요소를 초기화하지 않으면 0으로 채워진다; ex) int array[3][4]={{1},{5,6},{9.. 2016. 9. 24.
구조체(struct) □ 왜 구조체를 사용하는가? - 구조체를 사용하는 이유에 대해서는 특정한 객체(object)에 연관된 추상화된 정보들을 하나로 묶어 구조체 타입으로 정의하여 다루기 쉽게하기 위하여 사용한다. □ 구조체를 정의하는 방법 - struct 구조체이름{데이터타입 변수명;데이터타입 변수명;데이터타입 변수명; ..................}; □ 구조체 . 멤버 접근 연산자 & 함수 인자로서의 구조체 - 18~26행에서 처럼 멤버 접근 연산자(.)를 통하여 구조체 멤버에 접근할 수 있다. - 34번행에서 처럼 함수 파라미터로 구조체 변수를 넘겨줄수도 있다. □ 포인터 구조체 - 포인터의 표현방법은 ->와 .이 있다. -> : 화살표 앞의 변수가 포인터 변수이면 화살표를 사용한다. . : 점 앞의 변수가 포인터가.. 2016. 9. 23.
Clean Code: A Handbook of Agile Software Craftsmanship -저(Robert C. Martin) -Chapter(1) Chapter1 : Clean Code 처음 챕터에서는 가볍게 좋고 나쁜 코드가 무엇인지에대해 설명하고, 안좋은 코드가 만들어지는 원인과, 그걸 개선할 수 있는 몇가지 방법의 예시를 전문가들을 인용하여 설명하고있다, 안좋은 코드가 시간이 지날수록 생산성이 떨어진다는 자료와, 저명한 전문가들의 일부 방법들을 소개하며, 좋은 코드라는게 정확히 왜 좋은지 코드내에 문법적 오류는 없으나 왜 이런걸 쓰고 제거해야하는지 간략히 소개한다. 2016. 9. 12.
728x90