'Programming'에 해당되는 글 1762건

  1. 2013.11.10 opencv2 on ubuntu 2
  2. 2013.10.08 C++ AMP (Accelerated Massive Parallelism)
  3. 2013.09.29 openMP example
  4. 2013.09.25 openMP로 구현한 야매 sum()
  5. 2013.09.20 openmp 제한자(?)
  6. 2013.07.09 wan 에서 mac address 얻기
  7. 2013.07.08 축약주소 만들기 서비스
  8. 2013.07.07 php $_SERVER 변수
  9. 2013.06.15 printf의 %s와 %S
  10. 2013.06.15 win32api - joystick 예제
Programming/openCV2013. 11. 10. 20:39
openCV 버전이 2.x대로 오르면서 경로가 변했는지
이전에 내가 정리했던 내용이 전부 무효가 되었다 ㅠㅠ

include 경로 <opencv/cv.h> 에서 <opencv2/opencv.hpp> 로 변경
/usr/include/opencv2

그리고 링커 옵션도 변경되었다. (라이브러리 이름도 바뀐듯)
-lopencv_core << 기존의 -lcv
-lopencv_imgproc
-lopencv_highgui  << 기존의 -lhighgui
-lopencv_ml
-lopencv_video
-lopencv_features2d
-lopencv_calib3d
-lopencv_objdetect
-lopencv_contrib
-lopencv_legacy
-lopencv_flann
-lopencv_nonfree 

[링크 : http://chadaphone.wordpress.com/.../how-to-install-opencv-and-qt-in-ubuntu-12-04-step-by-step-tutorial/]

솔찍히 가장 큰 차이점은..
c가 아니라 c++로 바뀌면서
gcc 대신 g++로 써야 한다는 점이려나? ㅋㅋ

아무튼 설치 시에는 libopencv-dev 패키지로 설치한다.
$ sudo apt-get install libopencv-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 패키지를 더 설치할 것입니다:
  debhelper dh-apparmor gettext html2text intltool-debian libatk1.0-dev libavcodec-dev
  libavformat-dev libavutil-dev libcairo-script-interpreter2 libcairo2-dev libdc1394-22-dev
  libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev libgettextpo0
  libglib2.0-dev libgtk2.0-dev libilmbase-dev libjasper-dev libjpeg-dev libjpeg-turbo8-dev
  libjpeg8-dev libmail-sendmail-perl libopencv-calib3d-dev libopencv-contrib-dev
  libopencv-contrib2.3 libopencv-core-dev libopencv-features2d-dev libopencv-flann-dev
  libopencv-gpu-dev libopencv-highgui-dev libopencv-imgproc-dev libopencv-legacy-dev
  libopencv-ml-dev libopencv-objdetect-dev libopencv-video-dev libopenexr-dev libpango1.0-dev
  libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libraw1394-dev libswscale-dev
  libsys-hostname-long-perl libtiff4-dev libtiffxx0c2 libunistring0 libxcb-render0-dev
  libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxfixes-dev libxft-dev
  libxinerama-dev libxrandr-dev libxrender-dev po-debconf x11proto-composite-dev
  x11proto-damage-dev x11proto-fixes-dev x11proto-randr-dev x11proto-render-dev
  x11proto-xinerama-dev
제안하는 패키지:
  dh-make gettext-doc libfaad-dev libgsm1-dev libogg-dev libschroedinger-dev libspeex-dev
  libtheora-dev libvorbis-dev libcairo2-doc libglib2.0-doc libgtk2.0-doc libpango1.0-doc
  libraw1394-doc libmail-box-perl
추천하는 패키지:
  libraw1394-tools
다음 새 패키지를 설치할 것입니다:
  debhelper dh-apparmor gettext html2text intltool-debian libatk1.0-dev libavcodec-dev
  libavformat-dev libavutil-dev libcairo-script-interpreter2 libcairo2-dev libdc1394-22-dev
  libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev libgettextpo0
  libglib2.0-dev libgtk2.0-dev libilmbase-dev libjasper-dev libjpeg-dev libjpeg-turbo8-dev
  libjpeg8-dev libmail-sendmail-perl libopencv-calib3d-dev libopencv-contrib-dev
  libopencv-contrib2.3 libopencv-core-dev libopencv-dev libopencv-features2d-dev
  libopencv-flann-dev libopencv-gpu-dev libopencv-highgui-dev libopencv-imgproc-dev
  libopencv-legacy-dev libopencv-ml-dev libopencv-objdetect-dev libopencv-video-dev libopenexr-dev
  libpango1.0-dev libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libraw1394-dev
  libswscale-dev libsys-hostname-long-perl libtiff4-dev libtiffxx0c2 libunistring0
  libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxfixes-dev
  libxft-dev libxinerama-dev libxrandr-dev libxrender-dev po-debconf x11proto-composite-dev
  x11proto-damage-dev x11proto-fixes-dev x11proto-randr-dev x11proto-render-dev
  x11proto-xinerama-dev
0개 업그레이드, 68개 새로 설치, 0개 제거 및 16개 업그레이드 안 함.
24.9 M바이트 아카이브를 받아야 합니다.
이 작업 후 100 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?

[링크 : http://karytech.blogspot.kr/2012/05/opencv-24-on-ubuntu-1204.html]

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

opencv docs  (0) 2014.02.17
Interoperability with OpenCV 1  (0) 2014.02.08
openCV Mat / iplImage  (0) 2012.02.21
openCV 글씨 쓰기 예제  (2) 2012.02.12
Cmake로 openCV 컴파일 설정 및 설치하기  (0) 2012.02.12
Posted by 구차니
Programming/C++ STL2013. 10. 8. 09:49
GCN 이 어떤건가 조사하고 있는데
GCN이 openCL / DirectCompute / C++ AMP를 지원한다고 해서 조사를 해보니

[링크 : http://msdn.microsoft.com/ko-kr/library/hh265137.aspx]
[링크 : http://en.wikipedia.org/wiki/C++_AMP]
[링크 : http://www.imaso.co.kr/?doc=bbs/...wr_id=41233] 병렬 프로그래밍 혁신, C++ AMP

DirectCompute는 DirectX의 서브 시스템이고
C++ AMP는 DirectX 11 대 부터 지원하게 된 서브 시스템 및 C++0x 문법으로 확장된 기능으로 생각된다.

[링크 : http://en.wikipedia.org/wiki/C++11] C++0x 에서 명명변경

물론 open standard로 MS에서 제정하였기에 리눅스 GCC에서도 지원할 거라는데
C++ 만 보면 웬지 거부반응이 생기지만..
Massiva Parallelism이 이제 대세고 필수라.. 하....

[링크 : http://stackoverflow.com/questions/9179883/will-gcc-support-c-amp]


'Programming > C++ STL' 카테고리의 다른 글

c++ constructor  (0) 2014.02.26
C++11 Lambda Fuction  (2) 2013.11.20
c++ class - friend  (0) 2013.03.15
visual studio express 에서 class 생성예제  (0) 2013.03.13
visual studio express에서의 상속 클래스  (0) 2013.03.13
Posted by 구차니
Programming/openMP2013. 9. 29. 11:10
심심해서 만들어 보는 중인 openMP 예제
처음에는 for 루프로 결과값을 thread safe하게 했는데 퍼포먼스 저하가 생길것 같아서
private 변수를 쓰레드별로 만들어서 계산후 마지막에 합치는 식으로 개선해 봄

음.. 다음번은 어떻게 개선해볼까나? ㅋ

#include "omp.h"

#define BUFFLEN 4096

void thread()
{
        int idx;
        int arr[BUFFLEN];
        int res = 0;

#pragma omp parallel
{
        #pragma omp for
        for(idx = 0; idx < BUFFLEN; idx++)
        {
                arr[idx] = idx;
        }

        #pragma omp for
        for(idx = 0; idx < BUFFLEN; idx++)
        {
                #pragma omp critical
                {
                        res += arr[idx];
                }
//              printf("%d %d\n",idx, res);
        }
}
        printf("res = %d\n",res);
}

int main(int argc, const char *argv[])
{
        thread();
        return 0;
}



#include "omp.h"

#define BUFFLEN 4096
#define NUMTHREAD 4

void thread()
{
        int idx;
        int arr[BUFFLEN];
        int res = 0;
        int mid[NUMTHREAD]; // thread num - next version need to malloc

#pragma omp parallel
{
        // initialize
        #pragma omp for
        for(idx = 0; idx < BUFFLEN; idx++)
                arr[idx] = idx;

        #pragma omp for
        for(idx = 0; idx < NUMTHREAD; idx++)
                mid[idx] = 0;

        #pragma omp for
        for(idx = 0; idx < BUFFLEN; idx++)
        {
                int tid = omp_get_thread_num();
                mid[tid] += arr[idx];
//              printf("%d %d\n",idx, res);
        }

        #pragma omp single
        for(idx = 0; idx < NUMTHREAD; idx++)
                res += mid[idx];
}

        printf("res = %d\n",res);
}

int main(int argc, const char *argv[])
{
        thread();
        return 0;
}

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

openMP parallel default  (0) 2013.11.18
openMP gnu implement  (0) 2013.11.11
openMP로 구현한 야매 sum()  (0) 2013.09.25
openmp 제한자(?)  (0) 2013.09.20
openMP runtime 함수 및 환경변수  (0) 2013.03.16
Posted by 구차니
Programming/openMP2013. 9. 25. 22:19

#include "omp.h"

#define BUFFLEN 32

int main(int argc, const char *argv[])
{
        int idx;
        unsigned char arr[BUFFLEN];
        int res = 0;

        #pragma omp parallel for
        for(idx = 0; idx < BUFFLEN; idx++)
        {
                arr[idx] = idx;
        }

        #pragma omp parallel for
        for(idx = 0; idx < BUFFLEN; idx++)
        {
//                #pragma omp atomic
                res += arr[idx];
                printf("%d %d\n",idx, res);
        }

        printf("res = %d\n",res);

        return 0;
}

위의 소스를 이용해서 실행시 결과가 달라지는 모습
 $ ./a.out
0 40
1 41
2 43
3 46
4 50
5 55
6 61
7 68
16 40
17 85
18 103
19 122
20 142
21 163
22 185
23 208
24 24
25 233
26 259
27 286
28 314
29 343
30 373
31 404
8 40
9 413
10 423
11 434
12 446
13 459
14 473
15 488
res = 488
 $ ./a.out
0 24
1 25
2 27
3 30
4 34
5 39
6 45
7 52
16 16
17 69
18 87
19 106
20 126
21 147
22 169
23 192
24 40
25 217
26 243
27 270
28 298
29 327
30 357
31 388
8 24
9 397
10 407
11 418
12 430
13 443
14 457
15 472
res = 472
 $ ./a.out
0 48
1 49
2 51
3 54
4 58
5 63
6 69
7 76
16 16
17 93
18 111
19 130
20 150
21 171
22 193
23 216
8 48
9 225
10 235
11 246
12 258
13 271
14 285
15 300
24 40
25 325
26 351
27 378
28 406
29 435
30 465
31 496
res = 496

res는 공유 변수로
각각의 쓰레드에서 동시에 계산을 하려다 보니 문제가 발생을 한다.

그런 이유로 res에 더하는 부분을 atomic 하게 처리한다면 다른 쓰레드에서
치고 들어올수 없기 때문에 깨지는 문제가 발생하지 않는다.
대신 lock을 걸거나 인터럽트를 막는 식으로 구현이 되기 때문에 성능 저하가 발생할수 있다.

이를 해결하려면...
어떻게 해야 하려나? 

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

openMP gnu implement  (0) 2013.11.11
openMP example  (0) 2013.09.29
openmp 제한자(?)  (0) 2013.09.20
openMP runtime 함수 및 환경변수  (0) 2013.03.16
openMP 지시어  (0) 2013.03.16
Posted by 구차니
Programming/openMP2013. 9. 20. 16:06
키워드 별로 아래와 같이 한번 정리를 해봐야겠다..
문서에 따라서 clause 구분이 애매한것도 문제이니..
(parallel과 parallel for 라던가?)


[링크 : http://www.mimul.com/pebble/default/2012/05/30/1338342349153.html]

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

openMP example  (0) 2013.09.29
openMP로 구현한 야매 sum()  (0) 2013.09.25
openMP runtime 함수 및 환경변수  (0) 2013.03.16
openMP 지시어  (0) 2013.03.16
visual studio express 2008에서는 openMP 공식 지원안해!  (0) 2013.03.16
Posted by 구차니
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 구차니