반응형

분류 전체보기 221

빌보드(Billboard) 구현하기

빌보드는 항상 카메라를 바라보는 평면이라고 정의할 수 있다. 응용의 한 예를 살펴본다면 3D에서 멀리 있는 객체와 같은 경우 메쉬가 아닌 카메라를 바라보는 평면에 텍스처로 구현 할 수 있다. 이렇게 하면 직접 메쉬를 그리는 것에 비하여 그래픽 처리량이 줄어든다. IT EXPERT 3D 게임프로그래밍 같은 경우 Y축 행렬 부분만 역변환하여 구현하는 빌보드가 나와 있다. 위의 예제는 개인적으로 작성하는 프로그램에서 응용하기에는 적합하지 않아 아래와 같은 방법으로 구현하였다. 카메라와 객체 간의 각도를 구한다. (두 점 사이의 각도를 구하는 방법) 둘 사이의 각도를 역으로 객체에 회전시켜 객체가 카메라를 보이게 하였다. 객체를 역으로 회전시키는 이유를 간단히 설명하면 아래와 같다.

두 점 사이의 각도 구하기: atan2

두 점 사이의 라디언 각도는 아크탄젠트라는 수학 함수를 통하여 구할 수 있다. 프로그래밍 함수로는 atan2(y의 차이, x의 차이)로 구할 수 있다. 아크탄젠트는 개념적으로 아래와 같이 라디언 각도를 구한다. 라디언 각도 Θ = atan(Ry / Rx) 프로그램밍 적으로는 atan2(y2-y1, x2-x1)으로 구할 수 있다. 인자를 보면 점2 – 점1으로 Rx와 Ry를 구하는 것을 알 수 있다.

윈도우 할당 메모리 개념(Private, Virtual, WorkingSet)

윈도우 할당 메모리는 아래와 같은 3가지 형태로 확인할 수 있습니다. 작업 세트(Working Set)작업 관리자에서 메모리로 보이는 항목으로 현재 프로그램이 사용하고 있는 물리 메모리의 양을 나타냅니다. 윈도우는 현재 불필요하거나 현재 여유가 없을 경우 프로그램 메모리를 디스크에 저장합니다. 소위 말하는 스왑(SWAP)이라고 표현되는 부분입니다. 즉 작업 세트는 해당 프로그램 중에 스왑되지 않고 현재 물리 메모리에서 차지하는 양입니다. 여기서 좀 더 깊이 들어간다면 보통 윈도우 프로그램은 실행 프로그램이 다른 공유 라이브러리를 참조하는 경우가 많고 그럴경우 작업 세트의 메모리는 참조하는 공유 라이브러리를 위하여 할당한 메모리도 포함하고 있을 수 있습니다.거기에 윈도우가 현재 메모리 상태와 프로그램 상태..

[서평, 소개] 클라우드 디자인 패턴(Cloud Design Patterns)

Cloud Design Pattern은 MS에서 나온 책자로 NoSQL을 활용한 최신 트랜드의 모바일용 서버를 만드는 다양한 패턴들에 대한 설명을 하고 있습니다. 패턴이라는 표현을 썼는데 우리가 흔희 아는 GOF의 Design Pattern처럼 코딩에 대한 이야기라기 보다는 좀 더 큰 범위의 모바일 서버 구성 요소에 대한 알고리즘에 관한 책이라고 보시면 될 듯 합니다. 최신 트랜드를 담고 있는 책인 관계로 CQRS, Materialized View, Event Sourcing 등등 최근에 논의되고 있는 많은 모바일 서버 디자인들에 대한 설명을 담고 있습니다. 참고로 이 중 상당수의 내용은 NoSQL 기반의 패턴입니다. 책 자체는 전반적으로 조금은 거대 시스템에서 사용할 만한 기술들에 대한 이야기가 많은데..

[서평, 소개] NoSQL

NoSQL은 이미 모바일 개발에는 흔한 개발 솔루션 중에 하나이다. 몽고DB, Redis 등등 이미 몇 년전까지는 신기술이라고 불리던 것들은 어느세 자리를 잡아가는 형세이다. 이는 NDC등 각종 컨퍼런스에서 고생하면서 튜닝하거나 부족한 많은 툴들을 만든 발표만 보아도 그렇게 느껴집니다. 솔직히 NoSQL은 Key-Value로 이루어지는 해쉬 자료 구조 및 JSON 포맷, 분산처리를 위한 샤딩 처리, 적절한 사용을 위한 CAP 정도를 이해하고 있으면 그 다음부터는 어떻게 사용한 것인가를 고민하면 된다고 봅니다. 이런 NOSQL을 아직 해보지 않았지만 알아야 하고 어떻게 기본 개념을 잡을까가 고민이라면 짧고 간략하게 잘 설명한 아래 책을 소개할까 합니다. 2명의 공저가 작성한 책으로 그 중 한명이 리팩토링책..

32bit 윈도우 어플리케이션 사용 가능 최대 메모리 (확장 옵션 설명 포함)

윈도우 32bit 어플리케이션의 최대 사용가능 메모리는 공식적으로는 2 기가입니다. 이건 보통 기초 윈도우 프로그래밍 책자에서 유저모드 메모리 2기가 + 커널모드 메모리 2기가로 잘 설명되어 있습니다. 하지만 32bit로 만들어졌구 아직 64bit로 포팅안된 서버 등을 유지보수 해야 한다면 때로는 더 많은 메모리가 있었으면 좋겠다는 생각이 들 수도 있을거 같습니다. 이럴때 32bit 윈도우에서는 부팅시 /3GB 옵션을 주거나 (윈도우 2003 서버, 2000, XP) 혹은 BCDEdit에서 IncreaseUserVA를 사용하면(윈도우 Vista, 7, 8, 10) 32bit 윈도우 어플케이션은 3G의 메모리를 사용할 수 있습니다. 만약 64bit 윈도우에서 실행시킨다면 컴파일시 /LARGEADDRESSA..

비주얼스튜디오(Visual Studio) 시작 중에 비정상 종료될 때(Crash) 해결법

비주얼 스튜디오가 시작 중에 비정상종료(크래쉬) 될 때가 있습니다.뭐 보통은 다시 인스톨하면 될 듯하지만 그래도 같은 현상이 계속 일어날 수 있습니다.개인적인 경험으로는 비주얼 스튜디오를 언인스톨할 때, 각종 설정은 초기화 하지 않기 때문에 일어나는 현상인 듯 보입니다. 여기서는 해당 문제를 해결하기 위한 방법을 소개할까 합니다. 이 방법은 설정을 완전히 초기화 하는 것이기 때문에 실행을 하게 되면 설정을 처음부터 다시 물어볼 것이며 각종 확장기능(플러그인)을 처음부터 다시 인스톨해야 하는 점 참고하여 실행하여 주시기 바랍니다. 1. 아래와 같은 폴더를 완전히 삭제하여 주십시오.C:\Users\\AppData\Local\Microsoft\Team FoundationC:\Users\\AppData\Loca..

SMT (AMD 젠, Intel) vs CMT (AMD 불도저)

AMD가 드디어 Zen아키텍처로 개발한 Ryzen을 발표하였습니다. 예상한 대로 제대로된 가성비로 승부를 한 듯 보입니다. 솔직히, 기존 제품은 가성비로 따지기에도 인텔과 차이가 있어보였는데 이번 CPU는 굉장히 괜찮은 듯 보입니다. 관련 아키텍처에 대한 아래 글을 보다가 CMT 구조를 포기하고 SMT 구조를 채택했다고 해서 좀 찾아보았습니다. 믿을 수 없는 가성비, AMD '라이젠 프로세서' 성능 확인! SMT, CMT 용어를 자세히 이해하기 위해서는 CPU 내부 아키텍처를 조금 이해하고 있어야 합니다. 하지마 여기서는 간략히 인텔의 하이퍼스레딩 (Hyper Threading)을 기반으로 설명할까 합니다. 하이퍼스레딩은 SMT이고, SMT은 Simultaneous MultiThreading의 약자로 1..

기타 2017.03.05

라인 레인저스(Line Rangers) 서버 구조 소개

라인 레인저스는 라인쪽에서 만든 위와 같은 형식의 게임입니다. 조금 된 글이기는 하지만 라인 레인저스에 대한 기본 서버 구조에 대해서 잘 설명한 글이 있어서 소개할까 합니다. 모바일 서버는 온라인 게임보다 사용 기술의 폭이 넓어서 워낙 다양한 기술을 사용하기에 어떤 것이 정석이라고 말하기는 힘들지만 기본 골격 잡을 때 참고 자료로는 훌륭한 듯 합니다. 라인 레인저스 서버와 같은 경우는 MySQL, Redis (Cache) 그리고 Tomcat을 사용한 것으로 보아 Java쪽 Http 관련 기술을 사용한 듯 보입니다. [LINE Rangers 신입사원의 서버 분석기] - 서버 구조 및 인프라 환경 LINE Rangers 게임 클라이언트/서버 아키텍쳐 세미나 PPT 뒤에는 서버 관련 내용이 있는데 대부분 위 ..

More C++ Idioms

Idioms이란 구글의 정의에 따르자면 영어에서 둘 이상의 단어들이 연결되어 그 단어들이 가지는 본뜻 이외의 특별한 의미를 나타내는 관용어 혹은 숙어라는데 찾아보니 프로그래밍에서는 공통적으로 흔히 발생하는 문제 해결 코드라고도 쓰이는 듯 하다. 근데 개인적으로 보기에는 프로그래밍에서의 뜻은 일종의 언어에 기반한 팁 혹은 패턴으로 볼 수 있는거 같다. 물론 해당 패턴이나 팁들은 특정 상황에 대한 해결법을 제공해 준다고 보면 될 듯 하다. 여기서는 More C++ Idioms를 소개할까 한다. 관련 주소는 아래와 같다. More C++ Idioms 위키에 한창 정리되고 있는 것으로, 물론 내가 해당 이디엄을 습득해서 쓰면 좋겠지만 그 보다 더 좋은 것은 다양한 C++ 테크닉을 이해할 수 있다는 점과 유명 라..

C++ 프로그래밍 2017.02.19

안드로이드 프로그래밍 정복

윈도우즈 API 정복으로 유명한 김상형씨가 저술한 안드로이드용 개발서이다. 이 책을 읽은 이유는 폰개발 방법이 궁금한 것 이상으로 김상형씨가 저술한 책이기 때문이었다. 왜 저자를 이야기하는가 하면 윈도우즈 API 정복을 읽었을 때 이 분의 예제가 너무도 인상깊었기 때문이다. 이 분이 저술한 윈도우즈 API 정복이나 이 책이나 군더더기 없는 예제는 여전히 일품이다. Java는 10년 전에 공부한 것이라 기억이 가물가물하지만 모바일 프로그래밍 공부하는 셈치고 한 번 흩어보았다. 전반적으로 잘짜여진 예제로 인하여 빠르고 쉽게 안드로이드 개발을 공부하기에 좋은 책인 듯 보인다. 남에게 추천해주고 싶은 책이지만 Java를 모른다면 언어를 먼저 공부하고 공부해야하는 책일 듯 보인다. 좀 더 빠르고 쉽게 보려면 디자..

PC 앞으로 5년간의 모습에 대한 단상

뉴아이패드를 산 후로는 PC는 게임이나 개발 혹은 ActiveX를 이용할 때 외에는 거의 키지 않는 기기였다. 아이패드를 경험한 후 PC는 너무 느린 기기였다. 빨라졌다는 윈도우7의 부팅도 느리게 느꼈졌고 모든 것이 너무도 무겁게 느껴졌다. 보안문제로 윈도우 업데이트를 하는데 윈도우7 서비스팩1이 깔리지 않는 문제가 발생하였는데 해결할 방법이 없었다. 결국 윈도우7을 다시 깔기로 하였다. 윈도우를 다시 깔때 PC를 업그레이드하기로 하였다. PC를 업그레이드 할 때 현 PC의 문제를 유심히 관찰한 결과 아래와 같은 문제를 발견할 수 있었다. 윈도우7의 체험지수에서 7400 rpm SATA2 500G 시게이트 HDD만이 체험지수 5.9를 받아 전체적인 성능에서 낮게 나온다. 아이패드와 PC의 연동관련 itu..

기타 2012.10.03

탑밴드2 16강 예선전

어제는 우연히 탑밴드2를 보았다. 여러 언더밴드들의 실제 모습을 볼 수 있어 좋았지만 한편으로는 웃겼고 한편으로는 슬펐다. 개인적으로 음악을 많이 안다고 말하거나 혹은 락은 이런거야 라고 들먹거릴 정도의 사람하고는 거리가 멀다. 하지만 적어도 60, 70년대 한국 락부터 찾아들었을 정도로 (그래봤자 신중현이나 사랑과 평화, 한대수, 산울림 뭐 이정도 수준이지만, 그래두 신중현과 엽전들의 음악이 싸이키델릭 했다는건 안다.) 약간은 매니아적인 측면도 있는 사람이다. 솔직히 TOP밴드1에서 신해철이 번아웃하우스에게 하는거 보고 굉장히 실망했었다. 대학가요제 나올때 부터 온갖 멋이란 멋은 다 보이고 자기 하고 싶은 음악이란 음악은 다했던 사람이 애들에게 잘난체 하며 카라의 음악같은 쇼음악 시키고 말안듣는다고 화..

기타 2012.07.02

LG 옵티머스 LTE 배터리 최적화 (안드로이드 폰 배터리 최적화)

프롤로그 옵티머스 LTE를 샀을때 배터리 소모되는 것에 솔직히 놀랐다. 약간 과장해서 표현한다면 인터넷 조그만 하면 그후로 대기모드로 만들어도 8시간 버티기 힘든 것이 너무 선명하게 체감되었다. 배터리 30% 남기고 잠을자고 오전에 일어났을 때 배터리가 없어 꺼진 것을 보고 놀랐다. 내가 12시간을 잤다고 가정했을 때, 배터리 30%로 12시간 대기모드를 못 버틴다는 것은 잠자는 동안의 주요 전화를 놓쳐 결국은 전화로서의 가치는 잃어버린다는 의미로 다가왔다. 물론 이 경험은 내가 깔아놓은 어플과 여러가지 셋팅과 연관이 있을테니 옵티머스 LTE의 심각한 문제라고 단정할 수는 없다. 또한 1번의 경험을 일반화 시킬 수도 없다. 마지막으로 다른 LTE폰들도 이 문제에 자유롭지 못한 것으로 알고 있다. 흔히들 ..

기타 2012.06.24
반응형