123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102#include #include #include #pragma comment(lib, "WS2_32.lib")#include "resource.h" #define WM_NETWORK (WM_USER + 1) HWND hDlgMain; SOCKET Socket, ClntSocket;sockaddr_in Address, ClntAddress; char List..
create table image(ID INT, Image LONGBLOB); insert into image values (1, load_file('c:\\A3.png')); BLOB 타입의 자료형은 위와같이 load_file을 사용하여 쿼리를 날릴 수 있음.단, 이미지 경로에 한글이 들어가면 안됨. 아래 코드는 Database->Database_entry_attribute에서 사용한 코드.12345678 int find = _str.find("\'"); int find2 = _str.find("\'", find+1); string str, imagePact; imagePact = "load_file(\'" + _str.substr(find + 1, find2 - 3) + "\')"; str = "IN..
Proxy Pattern? 초기에 메모리에 올리지 않다가 필요할 때만 메모리에 올림. 메모리 사용 시간을 조금씩 늦쳐서 사용자로 하여금 빠르게 작업할 수 있도록 해주는 역할. 즉, 객체화의 비용을 줄임으로써 초기 시스템의 부하를 줄여주며 조금씩 메모리에 로딩함으로 시스템 자원의 부하를 분산시키는 것을 추구하는 패턴.Virtual Proxy 객체 생성에 많은 비용이 발생하는경우, 실제사용할때 객체가 생성되도록 대리자를 두어 접근하도록 제어한다.Remote Proxy 원격객체에 대한 로컬의 대리자 역활을 한다. Java RMI 를 통하거나 소켓통신을 통하여 원격객체에 데이터를 얻거나 메소드를 호출할 경우 대리자를 통하여 호출이 이루어진다.Protection Proxy 접근제어가 필요한 객체에 대한 접근을 통..
#include /****************** Singleton pattern static 필드는 여러 객체에 의해서 값이 공유된다. 이러한 특징을 이용해서 static을 이용한 패턴이 존재하며 그 대표적인 것이 Singleton 패턴. ******************/class cSingleton{private:static cSingleton*mpSingle; private:cSingleton(){}~cSingleton(){} public:static cSingleton* getSingleton(){if( mpSingle == NULL )mpSingle= new cSingleton(); return mpSingle;} void test(){printf("hi\n");}}; cSingleton* ..
#include #include class cComputer// abstract class (추상클래스){public:enum{NOTEBOOK= 1,DESCTOP}; virtual void getCategory() = 0;}; class cNotebookComputer : public cComputer{public:void getCategory(){printf("Notebook Compuer\n");}}; class cDesctopComputer : public cComputer{public:void getCategory(){printf("Desctop Computer\n");}}; class cComputerManager // Factory Method{public:static cComputer* ge..
* 이 방법은 Project Ex에서 사용한 방법입니다. * DirectX에서 랜더링할때 Radian값을 설정해 회전하는 방식으로 했습니다. 공식자체는 다른곳에서 사용해도 무관할듯 합니다. * 이미지의 중심점을 축으로 회전을 시키는 방식입니다. - 이미지의 밑변과 높이를 구한다. 높이 = 나중좌표.y - 이미지의 중심점.y; 밑변 = 나중좌표.x - 이미지의 중심점.x; * 만약 이미지의 밑변이 0이라면 강제적으로 1로 값을 넣어줘야 정확한 회전각이 나옵니다. 회전은 시계방향으로 회전을 하게 됩니다. 따라서 중심을 축으로 왼쪽은 +각도, 오른쪽은 -각도가 나오게 됩니다.(180도 기준) if(밑변 < 0) 회전각 = 아크탄젠트(높이/밑변) * 180도 / 원주율(3.14); else 회전각 = 아크탄젠트..
float _Height = (float)abs(MOUSEINTERFACE.getPoint().y - mCenter.y); // 현재 캐릭터의 좌표와 마우스와의 좌표 사이의 높이를 구해준다. float _Bottom = (float)abs(MOUSEINTERFACE.getPoint().x - mCenter.x); // 현재 캐릭터의 좌표와 마우스와의 좌표 사이의 밑변의 길이를 구해준다. float _R = sqrt((_Height*_Height) + (_Bottom*_Bottom)); // 빗변을 구하는 공식. // 길이 = 속도(이동픽셀) * 시간 => 시간 = 길이 / 이동 픽셀 float _S = _R/3; // 시간을 X또는 Y축과 나누면 그 축으로 시간만큼 얼마나 이동해야 정해진 시간안에 목표에..
cos(), sin() 함수로 간단하게 구할 수 있다. 우리는 현제 원점(x1,y1)과 또다른 점(x2,y2), 그리고 각도θ를 알 고 있다. 회전운동을 하기 위한 점을 (x3,y3)라 정하면, 먼저 (x1,y1), (x2,y2)의 거리를 구한다.. bottom = (x2 - x1); height = (y2 - y1); 위에서 구한 길이를 토대로, (x3,y3)의 값을 구해준다. x3 = cos(θ) * bottom - sin(θ) * height; y3 = sin(θ) * bottom + cos(θ) * height; 이렇게 구한 (x3,y3)좌표를 계속 구해(x1,y1)과 지속적으로 더하면, x1 += x3; y1 += y3; 최종적으로 저런 형태의 식이 나오며, 직선은 회전운동을 하게 된다.