Programming/web 관련2013. 7. 9. 08:03
는 안되는 기분인데..

서버 자체가 공유기 뒤에 있어서 인지
공유기 내부 사설망 이외에는 전부 mac을 얻어오지 못한다 ㅠㅠ

어찌보면 당연한거긴 한데..(mac은 lan에서 사용될뿐 wan에서는 ip로 하니)
웬지 억울한건 기분탓인가...?

[링크 : http://superuser.com/questions/188799/how-to-find-the-mac-address-of-a-remote-computer]

'Programming > web 관련' 카테고리의 다른 글

NoSQL  (0) 2014.04.09
w3c 규격 번역  (0) 2014.03.17
축약주소 만들기 서비스  (0) 2013.07.08
php-mobile-detect  (0) 2013.02.23
php if/else/echo  (0) 2012.11.30
Posted by 구차니
Programming/web 관련2013. 7. 8. 22:00

'Programming > web 관련' 카테고리의 다른 글

w3c 규격 번역  (0) 2014.03.17
wan 에서 mac address 얻기  (0) 2013.07.09
php-mobile-detect  (0) 2013.02.23
php if/else/echo  (0) 2012.11.30
TD 태그 - Chrome 과 IE 차이?  (0) 2011.05.30
Posted by 구차니
Programming/php2013. 7. 7. 20:21
$_SERVER[] 변수는 서버에서 관리되는 내용을 받을수 있다.
단, Mac address는 php만으로는 안되고
exec를 통해 arp 조회를 하거나 javascript의 허가 하에 받아올수 있다고 한다.


또한, REMOTE_ADDR은 proxy 사용시 제대로 표기 안되므로
HTTP_X_FORWAREDE_FOR를 써야 한다고 한다.

'REMOTE_ADDR' The IP address from which the user is viewing the current page.
'REMOTE_HOST' The Host name from which the user is viewing the current page. The reverse dns lookup is based off the REMOTE_ADDR of the user.
'REMOTE_PORT' The port being used on the user's machine to communicate with the web server.
'REMOTE_USER' The authenticated user.

If you are serving from behind a proxy server, you will almost certainly save time by looking at what these $_SERVER variables do on your machine behind the proxy.
$_SERVER['HTTP_X_FORWARDED_FOR'] in place of $_SERVER['REMOTE_ADDR']

[링크 : http://php.net/manual/en/reserved.variables.server.php]

'Programming > php' 카테고리의 다른 글

php framework / 읽을꺼리  (0) 2014.04.09
php 메뉴얼  (0) 2014.03.28
index.php가 다운받아지는 문제점 -_-  (0) 2013.02.22
php ++,-- 연산자  (0) 2012.12.03
php 간단정리  (0) 2012.11.26
Posted by 구차니
Programming/C Win32 MFC2013. 6. 15. 19:13
유니코드 문자열 출력에 %S를 사용하면 매우 좋다
(웬지 리빙 포인트 기분인데?)

조이스틱 이름 받아오는데
JOYCAPS pjc;
pjc.szPname 에 조이스틱의 이름이 'M' 만 출력되서 혹시나 출력을 바꾸어 보니
"Microsoft PC-joystick driver"

윈7은 내부적으로도 문자열을 유니코드로 사용하나 -ㅁ-?

[링크 : http://www.jiniya.net/wp/archives/4299]

'Programming > C Win32 MFC' 카테고리의 다른 글

const / pointer  (0) 2014.02.25
assert()  (0) 2013.12.18
win32api - joystick 예제  (0) 2013.06.15
Windows IME  (0) 2013.02.14
== 와 = 의 실수를 피하기 위한 트릭  (2) 2013.01.06
Posted by 구차니
Programming/C Win32 MFC2013. 6. 15. 19:06
어디다 넣어야 하는지 몰라서 대충.. 투척
일단 winmm.lib를 링크 해야 하고
winmm.dll을 해도 된다는데 dll은 쓸줄 모르니 패스 -ㅁ-


windows.h와 MMSystem.h를 포함하면된다.
사용한 함수들은 아래 예제 참고.

요즘 조이스틱은 4축 지원(X/Y/Z/R)를 많이 지원하므로
joyGetPos보다는 joyGetPosEx를 사용하는 것이 좋을듯 하다.
버튼은 1번 부터 1bit씩 LBS에서 MBS로 하나씩 올라간다(버튼이 12개 있으면 2^12 = 2048까지 올라가게 된다.

드라이버의 이름(제품명)은 Unicode로 저장되어 있으니 필요하면 %S로 출력하면 된다.

#include "stdafx.h"
#include "windows.h"
#include "MMSystem.h"

int _tmain(int argc, _TCHAR* argv[])
{

	JOYINFO joyinfo; 
	JOYINFOEX joyinfo2; 
	JOYCAPS pjc;
	UINT wNumDevs, wDeviceID; 
	BOOL bDev1Attached, bDev2Attached; 

	if((wNumDevs = joyGetNumDevs()) == 0) 
	{
		return MMSYSERR_NODRIVER;
	}

	joyGetDevCaps(JOYSTICKID1, &pjc, sizeof(JOYCAPS));

	printf("%d %d %S\n%d %d %d %d %d %d\n%d %d %d\n%d %d %d %d %d %d\n%d %d %d %d\n%S %S\n",
	pjc.wMid, 
	pjc.wPid, 
	pjc.szPname, 

	pjc.wXmin, 
	pjc.wXmax, 
	pjc.wYmin, 
	pjc.wYmax, 
	pjc.wZmin, 
	pjc.wZmax, 

	pjc.wNumButtons, 
	pjc.wPeriodMin, 
	pjc.wPeriodMax, 

	pjc.wRmin, 
	pjc.wRmax, 
	pjc.wUmin, 
	pjc.wUmax, 
	pjc.wVmin, 
	pjc.wVmax, 

	pjc.wCaps, 
	pjc.wMaxAxes, 
	pjc.wNumAxes, 
	pjc.wMaxButtons, 
	pjc.szRegKey, 
	pjc.szOEMVxD);

	printf("%d\n",wNumDevs);
#if 1
	for(;;)
	{
		bDev1Attached = joyGetPosEx(JOYSTICKID1,&joyinfo2) != JOYERR_UNPLUGGED; 
		printf("X:%05d Y:%05d Z:%05d R:%05d H:%d %d\n",
			joyinfo2.dwXpos, // X
			joyinfo2.dwYpos, // Y
			joyinfo2.dwZpos, // Z(throttle)
			joyinfo2.dwRpos, // R(Rudder)
			joyinfo2.dwPOV,  // POV(Hat)
			joyinfo2.dwButtons);

		Sleep(100);
	}
#else
	for(;;)
	{
		bDev1Attached = joyGetPos(JOYSTICKID1,&joyinfo) != JOYERR_UNPLUGGED; 
			printf("%d %d %d %d\n",
			joyinfo.wXpos,
			joyinfo.wYpos,
			joyinfo.wZpos,
			joyinfo.wButtons);

		Sleep(100);
	}
#endif
	system("pause");

	return 0;
}


[링크 : http://msdn.microsoft.com/en-us/library/ms709377.aspx]

[링크 : http://msdn.microsoft.com/en-us/library/ms709352.aspx] joyGetPos
  [링크 : http://msdn.microsoft.com/en-us/library/ms709359.aspx] JOYINFO
[링크 : http://msdn.microsoft.com/en-us/library/ms709354.aspx] joyGetPosEx
  [링크 : http://msdn.microsoft.com/en-us/library/ms709358.aspx] JOYINFOEX
[링크 : http://msdn.microsoft.com/en-us/library/ms709350.aspx] joyGetDevCaps
  [링크 : http://msdn.microsoft.com/en-us/library/ms709348.aspx] JOYCAPS
 

'Programming > C Win32 MFC' 카테고리의 다른 글

assert()  (0) 2013.12.18
printf의 %s와 %S  (0) 2013.06.15
Windows IME  (0) 2013.02.14
== 와 = 의 실수를 피하기 위한 트릭  (2) 2013.01.06
c 변수범위 헤더  (0) 2012.07.02
Posted by 구차니
Programming/openGL2013. 4. 9. 22:45
나중에 해봐야징~
아무튼 기본 컨셉은 AVI 파일을 BMP로 변환해서 그걸 texture로 주기적으로 바꾸어 주는 것.

[링크 : http://nehe.gamedev.net/tutorial/playing_avi_files_in_opengl/23001/] << visual Studio / linux용 코드 존재
[링크 : http://blog.naver.com/treewild/20005011394] << 한글 번역본 

'Programming > openGL' 카테고리의 다른 글

GL2PS : an OpenGL to PostScript printing library  (0) 2014.03.06
openGL state variables  (0) 2013.12.12
openGL gcc에서 컴파일 하기  (0) 2012.06.02
glsl과 glew의 연관관계  (0) 2011.11.22
GLSL 관련 링크  (0) 2011.11.20
Posted by 구차니
Programming/openMP2013. 3. 16. 17:34
#pragma omp 확장 외에도
openMP 지원을 위한 런타임 함수들과 환경변수들을 지원하는데
런타임 함수에 은근히 lock 관련이 있다는 사실에 놀라는 중.

2 Runtime Library Routines
  2.1 omp_get_active_level() - Number of parallel regions
  2.2 omp_get_ancestor_thread_num() - Ancestor thread ID
  2.3 omp_get_dynamic() - Dynamic teams setting
  2.4 omp_get_level() - Obtain the current nesting level
  2.5 omp_get_max_active_levels() - Maximum number of active regions
  2.6 omp_get_max_threads() - Maximum number of threads of parallel region
  2.7 omp_get_nested() - Nested parallel regions
  2.8 omp_get_num_procs() - Number of processors online
  2.9 omp_get_num_threads() - Size of the active team
  2.10 omp_get_schedule() - Obtain the runtime scheduling method
  2.11 omp_get_team_size() - Number of threads in a team
  2.12 omp_get_thread_limit() - Maximum number of threads
  2.13 omp_get_thread_num() - Current thread ID
  2.14 omp_in_parallel() - Whether a parallel region is active
  2.15 omp_in_final() - Whether in final or included task region
  2.16 omp_set_dynamic() - Enable/disable dynamic teams
  2.17 omp_set_max_active_levels() - Limits the number of active parallel regions
  2.18 omp_set_nested() - Enable/disable nested parallel regions
  2.19 omp_set_num_threads() - Set upper team size limit
  2.20 omp_set_schedule() - Set the runtime scheduling method
  2.21 omp_init_lock() - Initialize simple lock
  2.22 omp_set_lock() - Wait for and set simple lock
  2.23 omp_test_lock() - Test and set simple lock if available
  2.24 omp_unset_lock() - Unset simple lock
  2.25 omp_destroy_lock() - Destroy simple lock
  2.26 omp_init_nest_lock() - Initialize nested lock
  2.27 omp_set_nest_lock() - Wait for and set nested lock
  2.28 omp_test_nest_lock() - Test and set nested lock if available
  2.29 omp_unset_nest_lock() - Unset nested lock
  2.30 omp_destroy_nest_lock() - Destroy nested lock
  2.31 omp_get_wtick() - Get timer precision
  2.32 omp_get_wtime() - Elapsed wall clock time
3 Environment Variables
  3.1 OMP_DYNAMIC - Dynamic adjustment of threads
  3.2 OMP_MAX_ACTIVE_LEVELS - Set the maximum number of nested parallel regions
  3.3 OMP_NESTED - Nested parallel regions
  3.4 OMP_NUM_THREADS - Specifies the number of threads to use
  3.5 OMP_SCHEDULE - How threads are scheduled
  3.6 OMP_STACKSIZE - Set default thread stack size
  3.7 OMP_THREAD_LIMIT - Set the maximum number of threads
  3.8 OMP_WAIT_POLICY - How waiting threads are handled
  3.9 OMP_PROC_BIND - Whether theads may be moved between CPUs
  3.10 GOMP_CPU_AFFINITY - Bind threads to specific CPUs
  3.11 GOMP_STACKSIZE - Set default thread stack size

'Programming > openMP' 카테고리의 다른 글

openMP로 구현한 야매 sum()  (0) 2013.09.25
openmp 제한자(?)  (0) 2013.09.20
openMP 지시어  (0) 2013.03.16
visual studio express 2008에서는 openMP 공식 지원안해!  (0) 2013.03.16
TBB - Threading Building Blocks by intel  (0) 2013.01.08
Posted by 구차니
Programming/openMP2013. 3. 16. 17:26
단순하게 for문 나눠서 돌릴때
#pragma omp parallel
#pragma omp for

혹은 
#pragma omp parallel for 

쓰레드 순서대로 실행해야 할 경우의 보조 지시어(그런데 이렇게 하면 병렬처리를 안하고 single로 순서대로 하는거 아닌가?)
#pragma omp parallel for ordered
#pragma omp ordered 

보조지시어 schedule을 이용한 for문의 분배방식
#pragma omp parallel for schedule(static)
#pragma omp parallel for schedule(dynamic)
#pragma omp parallel for schedule(guided)
#pragma omp parallel for schedule(runtime) 

parallel 구문에서 마스터 쓰레드만 돌릴경우 single을 사용함(물론 실행도 1번만)
#pragma omp parallel 
#pragma omp single 

멀티 쓰레드로 여러개의 작업(함수단위) 돌릴경우 sections 안에 함수별로 section을 사용함
#pragma omp parallel 
#pragma omp sections
#pragma omp section 

쓰레드 외부의 변수들을 복제해서 사용하도록 하는 private 보조 지시어(쓰레드 별로 복제되어 사용됨)
#pragma omp parallel private(variable)

atomic은 단순하게 변수에 값 할당 하는 정도의 단순한 lock 방법을 위한 아토믹 연산을 지원하며
critical은 critical section(OS 용어)을 지원하기 위해 함수나 비교, 할당등을 할 수 있는 확장된 지시어.
#pragma omp atomic
#pragma omp critical 

runtime 함수로 현재 실행중인 쓰레드의 번호(만약 쓰레드가 4개라면 0~3번 사이의)를 알려준다.
omp_get_thread_num() 

---
2013.09.20
#pragma omp parallel

#pragma omp for
#pragma omp sections
#pragma omp single
#pragma omp task


#pragma omp atomic
#pragma omp critical
#pragma omp master
#pragma omp barrier
#pragma omp taskwait
#pragma omp flush
#pragma omp ordered

#pragma omp threadprivate




#pragma omp parallel
if
num_threads
default(shared|none)
private
firstprivate
lastprivate
shared
copyin
reduction

#pragma omp for
private
firstprivate
lastprivate
reduction
schedule
collapse
ordered
nowait


#pragma omp sections
private
firstprivate
lastprivate
reduction
schedule
collapse
ordered
nowait


#pragma omp single
private
firstprivate
copyprivate
nowait



#pragma omp task // omp 3.0 above
if
united
default(shared|none)
private
firstprivate
shared
 

'Programming > openMP' 카테고리의 다른 글

openmp 제한자(?)  (0) 2013.09.20
openMP runtime 함수 및 환경변수  (0) 2013.03.16
visual studio express 2008에서는 openMP 공식 지원안해!  (0) 2013.03.16
TBB - Threading Building Blocks by intel  (0) 2013.01.08
openMP 문서들  (0) 2012.06.18
Posted by 구차니
Programming/openMP2013. 3. 16. 08:05
결론만 말하자면
메뉴는 존재하지만 omp.h 헤더가 존재하지 않는다.

"구성 속성" - "C/C++" - "언어" - "OpenMP 지원"

 
하지만 정작 컴파일 하면
 fatal error C1083: 포함 파일을 열 수 없습니다. 'omp.h': No such file or directory

... openMP 윈도우용 라이브러리만 설치하면 되려나?


---
그냥 TBB나 PPL을 쓰라는 조언 -_-
[링크 : http://www.gamecodi.com/board/zboard-id-GAMECODI_Talkdev-no-1144-z-10.htm ]

2008 플랫폼 SDK를 설치하라는데 iso로 받으려니 1.5기가 덜덜덜
+깔아도 omp.h는 없는데!?!?
[링크 : http://stackoverflow.com/questions/1338016/visual-c-2008-omp-h-not-found-openmp-is-set]
[링크 : http://www.microsoft.com/en-us/download/details.aspx?id=24826 ]

'Programming > openMP' 카테고리의 다른 글

openMP runtime 함수 및 환경변수  (0) 2013.03.16
openMP 지시어  (0) 2013.03.16
TBB - Threading Building Blocks by intel  (0) 2013.01.08
openMP 문서들  (0) 2012.06.18
openmp for문 나누기  (0) 2012.06.18
Posted by 구차니
Programming/C++ STL2013. 3. 15. 23:24
friend는 접근규칙(스코프?) 지정자로 함수와, 클래스에 지정할수 있다.

friend function의 경우 method가 아닌 일반 함수이면서 특정 class에 접근 권한을 지닌다.
아래의 예제에서 friend 함수인 duplicate의 구현 부분은
CRectangle duplicate() 로
CRectangle CRectangle:duplicate() 가 아님을 유의하며
using namespace std;

class CRectangle {
int width, height;
public:
void set_values (int, int);
int area () {return (width * height);}
// friend CRectangle duplicate (CRectangle);
};

void CRectangle::set_values (int a, int b) {
width = a;
height = b;
}

CRectangle duplicate (CRectangle rectparam)
{
CRectangle rectres;
rectres.width = rectparam.width*2;
rectres.height = rectparam.height*2;
return (rectres);
}

int _tmain(int argc, _TCHAR* argv[])
{
CRectangle rect, rectb;
rect.set_values (2,3);
rectb = duplicate (rect);
cout << rectb.area();
return 0;
}

CRectangle 클래스의 friend 함수를 주석으로 제거하면
friend로 예외처리가 되지 않기 때문에 private 변수인 width와 height에 접근할수 없기에
아래와 같은 에러가 발생하게 된다.
 error C2248: 'CRectangle::width' : private 멤버('CRectangle' 클래스에서 선언)에 액세스할 수 없습니다.
 error C2248: 'CRectangle::height' : private 멤버('CRectangle' 클래스에서 선언)에 액세스할 수 없습니다. 

+ 상속받은 클래스의 경우 어떻게 되나 소스를 개조했는데
상속받은 클래스 형으로 새롭게 함수를 정의하면 의미가 없어지고
단순하게 타입캐스팅도 못하고
상속받을 형으로 duplicate2 함수를 만들려고 하면 재귀적이라서 방법이 없고 -_-
아무튼 상속에 대해서는 friend 함수는 의미가 없으려나?




friend class의 경우
해당 class의 instance로 부터의 접근 권한을 허가한다.
위의 예제와 유사한데, class 내에서 다른 클래스에게 허가권을 주는 형식이다.
using namespace std;

class CSquare;

class CRectangle {
int width, height;
public:
int area () {return (width * height);}
void convert (CSquare a);
};

class CSquare {
private:
int side;
public:
void set_side (int a) {side=a;}
// friend class CRectangle;
};

void CRectangle::convert (CSquare a) {
width = a.side;
height = a.side;
}

int _tmain(int argc, _TCHAR* argv[])
{
CSquare sqr;
CRectangle rect;
sqr.set_side(4);
rect.convert(sqr);
cout << rect.area();
return 0;
} 

friend를 주석으로 제거시 conver 함수에서 sqr.a 에 접근할수 없으므로 아래와 같은 에러가 발생한다.
(sqr은 CSqaure class로 side는 private 변수이다. 그렇기에 CRectangle 클래스인 rect에서는 sqr.a를 접근할 수 없다)
 error C2248: 'CSquare::side' : private 멤버('CSquare' 클래스에서 선언)에 액세스할 수 없습니다.

+
이녀석도 상속하면 어떻게 되려나 궁금해지네...

[링크 : http://www.cplusplus.com/doc/tutorial/inheritance/]
Posted by 구차니