월: 2011 3월

there are no arguments to ……… that depend on a template parameter

“there are no arguments to ………  that depend on a template parameter” 컴파일시에 위와 같은 에러가 발생하는 이유 gcc 4.1 버전부터 표준을 더 엄격하게 지키려고 하다보니 발생하는 문제로서 일종의 버그라고 봐도 무방하다. 해결책은 다음 3가지 중 하나인데, 마지막 방법이 가장 좋다고 알려져 있다. 1. 문제가 되는 변수에 this-> 와 같이 명시적으로 변수를 사용한다. 2. 컴파일할

리눅스 프로세스 정지

시뮬레이션 실행 도중에 잠시 멈추고 싶을 때, [ctrl]+[z] 를 누르면 실행되던 프로세스가 정지된다. 멈춤을 풀고 실행을 재개하려면 fg를 치고 [enter]를 눌러주면 된다. 완전히 끝내려면 멈춘 상태에서 exit 을 치고 [enter]를 눌러주면 된다.

리눅스 듀얼 모니터 설정

/etc/X11/xorg.conf 에 다음 내용을 추가 Section “Monitor” ### Comment all HorizSync and VertSync values to use DDC:     Identifier     “Monitor0”     VendorName     “Unknown”     ModelName      “Unknown”     HorizSync       28.0 – 33.0     VertRefresh     43.0 – 72.0     Option         “DPMS” EndSection Section “Device”     Identifier     “Videocard0”     Driver         “nvidia” EndSection Section “Screen”     Identifier     “Screen0”    

Explorer 검색 공급자에 google 추가

[추가 검색 공급자 찾기] 페이지에서 아무리 눈을 씻고 찾아봐도 구글은 보이질 않는다. 빙만 있을 뿐… 오른쪽 노란칸에 다음과 같이 적어주면 된다. http://www.google.co.kr/search?hl=ko&q=TEST Google

LaTeX on Linux

1. 설치 Add/Remove Software에서 tetex로 검색하여 설치해준다. (tetex, tetex-dvips 설치) 또는, yum -y install texlive texlive-latex yum -y install dvipdfm 2. *.tex -> *.dvi latex [filename].tex 3. *.dvi 확인 xdvi [filename].dvi 4. *.dvi -> *.pdf dvipdfm [filename].dvi 5. *.pdf 확인 acroread *.pdf (acrobat이 설치되어 있을 때) evince *.pdf <dvi 파일로 부터 letter format의 ps 파일

LaTeX eps 그림 만들기 tips

[일러스트레이터(Illustrator)에서 error가 나면서 image 붙여넣기가 안될 때] 1. Photoshop에서 편집 2. copy 3. Powerpoint에서 paste 4. copy 5. Illustrator에서 paste 6. 저장 [Powerpoint 그림을 eps로 변환] (모든 그림의 group을 해제해 주어야 함!!!) (기본 도형이 아닌 자유형, 곡선 등은 호환되지 않음!!) 1. OpenOffice로 .ppt 또는 .pptx 파일을 연다. 2. 저장할 그림을 선택 3. File -> Export 4. File type: EPS –

이 탭은 복구되었습니다.

“이 탭은 복구되었습니다.”란 메세지와 함께 internet explorer가 제대로 실행이 되지 않는 오류가 발생할 때… 1. 원인 IE8와 한글2007의 충돌 (한글2007을 먼저 설치한 후에 IE8로 업데이트하게 되면 발생) 한글2007이 IE8에서 사용하는 jscript.dll을 덮어 쓰기 때문에 발생하는 오류. 2. 해결책 Windows XP용 Jscript 5.8 용 보안 업데이트(KB971961)를 다운 받아 설치하면 된다 http://www.microsoft.com/downloads/details.aspx?FamilyID=992602d8-d857-41cf-b7b1-527afdc1dc0f&DisplayLang=ko

class, virtual, sizeof

범하기 쉬운 실수 (CentOS 64비트 버전에서 테스트) class A {     public:         float a[3];         A() {}         ~A() {} }; => sizeof(A) = 12 class A {     public:         float a[3];         A() {}         virtual ~A() {} }; => sizeof(A) = 24 특히 다음과 같이

iTunes Error

아이폰을 연결하고 아이튠스를 실행했을 때 다음과 같은 에러가 발생한다면… iTunes가 동기화 서비스에서 제공자 데이터 정보를 로드할 수 없습니다. ….. C:\Program Files\Common Files\Apple\Apple Application Support 경로에 있는 모든 파일들을 복사하여 C:\Program Files\Common Files\Apple\Mobile Device Support 경로에 붙여넣기 해준다.

Conflicting String problem

자신만의 library에 String이라는 class를 만들게 되면 Windows에서는 괜찮지만 Linux에서는 다음과 같은 error에 직면하게 된다. /usr/include/X11/Intrinsic.h:326: error: reference to ‘String’ is ambiguous. 리눅스 때문에 String이라는 좋은 이름을 두고 FString 등의 이름으로 바꿔야 하나 고민했지만, google이 문제를 해결해주었다. header 파일에 #include <String.h>을 해주기 전에 다음과 같은 처리를 해주면 된다. #define String XString #include <X11/Intrinsic.h> /* include other

CentOS 시작시 Network Activation

CentOS를 시작하면 자동으로 network가 인식되지 않고, 수동으로 active 시켜야만 하는 증상이 나타나는 경우가 있다. 이 때, cat /etc/sysconfig/network-scripts/ifcfg-(자신의 네트워크 설정 프로파일 이름) 을 쳐보면 다음과 같은 내용이 출력된다. # Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller DEVICE=eth0 BOOTPROTO=dhcp HWADDR=90:E6:BA:88:84:0D ONBOOT=no TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes ONBOOT 항목의 no를 yes로 바꿔보자. 다시 부팅을 하게 되면

error: expected `;’ before ‘itr’

template <class T> // or template <typename T> class A {    public:       A() {}       ~A() {}       void aaa()       {          std::list<T> aList;          ...          std::list<T>::iterator itr = aList.begin();          for( ; itr != aList.end(); ++itr ) { ... }       } }; 이와 같은 경우 다음과 같은

warning C4800

#define LIFESPAN  0x000002 bool hasLifespan( int attrBitMask ) { return ( attrBitMask & LIFESPAN ); } 위와 같은 code가 있다고 했을 때, 다음과 같은 경고(warning)이 발생할 수 있다. warning C4800: ‘int’ : ‘true’ 또는 ‘false’로 bool 값을 강제하고 있습니다(성능 경고). 또는 warning C4800: ‘int’ : forcing value to bool ‘true’ or ‘false’ (performance warning) 다음과 같이

How to install Movie Player @ CentOS

su 명령어를 이용하여 root 계정으로 바꿔준다. [Installation Codec] yum install ffmpeg ffmpeg-libs gstreamer-ffmpeg libmatroska xvidcore [Installation Totem] yum install totem-xine totem-gstreamer xine-lib-extras-freeworld [Installation MPlayer] yum install mplayer smplayer [Installation VLC] yum install vlc [Installation Kaffeine] yum install kaffeine xine xine-lib xine-lib-extras-freeworld http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=70473736&qb=66as64iF7IqkIHRvdGVt&enc=utf8&section=kin&rank=1&sort=0&spq=0&pid=gtDIJwoi5TVssu38MZCsss–446103&sid=TBl676dXGUwAAC38FJI]

C언어에서 외부 프로그램 실행 결과 가져오기

#include <Process.h> int main( int argc, char** argv ) { system( "ls" ); return 0; } 이러한 방식으로 system() 함수를 이용하여 외부 프로그램을 실행할 수 있다. 하지만, system 함수는 실행 결과의 상태를 알려주는 int 값을 리턴할 뿐 ls의 출력결과를 main 함수 내부에서 가져올 수 없다. (solution 1) 결과값을 받아오려면, 파일로 출력하여 다시 읽어들이는 방법을 이용하면

How to install OpenGL @ Ubuntu

$ sudo apt-cache search glut $ sudo apt-get install glutg3 $ sudo apt-get install glutg3-dev /usr/bin/ld: cannot find -lXinerama : libxinerama-dev 를 설치해준다. /usr/bin/ld: cannot find -lXft : libxft-dev를 설치해준다. /usr/bin/ld: cannot find -lXi : libxi-dev를 설치해준다.

Reference takes it’s own space in memory.

class A {    public:       int &x;       int y;    public:       A(): x(y), y(0) {};       ~A() {} }; int main( int argc, char** argv ) {    A a;    cout << sizeof(a) << endl;    return 0; } 출력결과: 12 (Linux x64에서 테스트) Reference takes it’s own space in memory.

OpenGL tearing problem

OS: Ubuntu (우분투) nVidia gtx 250 사용시에는 나타나지 않던 문제점이 nVidia gtx 470 사용시에 발생하였다. 삼각형 두개를 정확한 좌표로 맞물려 그렸는데 3D 카드가 이것을 레스터라이즈 할 때 오차가 발생해서 마지막 픽셀들이 조금 덜 채워지는 현상이며, 흔히 티어링(tearing)이 발생하였다고 말한다. (http://www.gpgstudy.com/forum/viewtopic.php?topic=6677) 찾아보니 동일한 문제를 겪는 경우는 종종 있는데, 확실한 해결책은 없어보인다. 최신 그래픽 카드 드라이버를 설치해도

Ubuntu에서 nVidia graphic card driver 설치

1. www.nvidia.com 에서 해당 드라이버를 다운받는다. 2. [Ctrl] +  [Alt] + [F1] 을 눌러 텍스트 콘솔 모드로 변환 3. root 계정으로 로그인 4. gdm-stop 또는 /etc/init.d/gdm stop 을 실행 5. apt-get install build-essential pkg-config xserver-xorg-dev 6. sh ./[다운받은 드라이버 파일 이름] 7. gdm-restart 또는 /etc/init.d/gdm start

Reference Member Variable

class A {    public:       int data[2];       int &x, &y;       A(): x(data[0]), y(data[1]) {}       A( int xx, int yy ): x(data[0]), y(data[1]) { x=xx; y=yy; } }; int main( int argc, char** argv ) {     A a( 1, 2 );     cout << sizeof(a) << endl;     cout << a.x << " "

invalid conversion from `const char*’ to `char*’

void aaa( char* str ) { … } 일 때, aaa( “abcdefg” ); 라고 실행하면 발생하는 에러이다. 두 가지의 해결방법이 있다. 첫 번째, void aaa( const char* str ) { … } 와 같이 수정한다. 두 번째, aaa( const_cast<char*>(“abcdefg”) ); 와 같이 실행한다.

Ubuntu 프로그램 설치

sudo dpkg -i *.deb <*.rpm을 *.deb로 변환> alien -d *.rpm <*.deb를 *.rmp으로 변환> alien -r *.deb *.rpm <-> *.deb 변환을 위해서는 alien을 설치해야 함. sudo apt-get install alien

RenderMan Studio SLIM에서 키보드로 입력 안될 때,

[idea@localhost ~]$ /opt/hfs11.0.469/bin/hmaster Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] ‘import site’ failed; use -v for traceback Traceback (most recent call last):   File “<string>”, line 3, in <module>   File “/opt/hfs11.0.469/houdini/python2.5libs/hou.py”, line 19, in <module>     import new ImportError: No module named

IOException scim_bridge_client_imcontext_set_cursor_location

An IOException occurred at scim_bridge_client_imcontext_set_cursor_location () scim scim: /usr/autodesk/maya2008-x64/lib/libgcc_s.so.1: version `GCC_4.2.0′ not found (required by /usr/lib64/libstdc++.so.6) cd /usr/autodesk/maya2008-x64/lib/ mv libgcc_s.so.1 libgcc_s.so.1.origin ln -s lib/libgcc_s-4.1.2-20080102.so.1 libgcc_s.so.1

Python2.65 + SWIG warning

OS: CentOS 5.5 Python: 2.65 SWIG: 2.0.1 In function ‘PyTypeObject* _PySwigObject_type()’: warning: missing initializer for member ‘_typeobject::tp_version_tag’ 위와 같은 warning이 발생할 수 있다. [원인] tp_version_tag라는 것이 Python 2.6 이후 version의 PyTypeObject에 새롭게 생긴 field인데, SWIG가 이것을 초기화해주는 code를 생성하지 않아서 발생하는 warning이다. (출처: http://old.nabble.com/Python-2.6-td20999030.html) [해결책] gcc (또는 g++) compile option에 다음 내용을 추가해 준다. -Wno-missing-field-initializers

Python2.65 설치 on CentOS 5.5

1. 다운로드  http://www.python.org/ftp/python 에서 2.6.5 디렉토리를 click하여 Python-2.6.5.tgz을 다운로드한다. 2. 압축 해제 tar xvf Python-2.6.5.tgz 3. compile cd Python-2.6.5 su ./configure –prefix=/opt/python2.65 –with-threads –enable-shared make -j32 4. 설치 make install 5. symbolic link ln -s /opt/python2.65/bin/python /usr/bin/python2.65 6. library 설정 cat >> /etc/ld.so.conf.d/opt-python2.65.conf /opt/python2.65/lib [enter를 누름] [ctrl+d를 누르고 빠져나옴] ldconfig 7. .bashrc에 다음 내용을 추가해준다.

will be initialized after/when initialized here

class A {    public:       int a, b;       A(): b(0), a(0) {} }; 만약 위와 같은 code를 사용했을 때, gcc에서 다음과 같은 warning이 발생할 수 있다. warning: ‘A::a’ will be initialized after warning: when initialized here class에서 선언한 변수 순서대로 생성자에서 초기화하지 않을 때 발생하는 경고. 선언한 순서대로 초기화를 하면 warning이 발생하지 않는다.

OpenCV error due to Complex

OpenCV 2.0 사용시 다음과 같은 compile error가 발생할 수 있다. /usr/include/opencv/cxcore.hpp:266: error: expected unqualified-id before numeric constant 이것은 Complex라는 자료형이 이미 linux에서 사용되고 있기 때문이다. OpenCV의 source code 중 다음 4개 file에 있는 Complex를 cvComplex로 수정해 주면 해결된다. include/opencv/cxoperations.hpp include/opencv/cxcore.hpp src/cxcore/cxdxt.cpp src/cxcore/cxmatmul.cpp 수정한 다음 ./configure make make install 하여 설치해준다. 4개 file을 vi editor에서 수정하는

ZIP.cpp: undefined reference to …

“undefined refernce to…” 이러한 error는 source code에서 어떤 외부 library를 사용하지만 해당 library가 link되어 있지 않아서 code 내용을 가져올 수 없기 때문에 발생하는 error이다. 여기서는 libz를 찾지 못해서 발생하는 compile error이므로, Makefile에 -lz 를 추가해주면 된다.

can’t use default assignment operator

class A {    public:       float x;       A(): x(0) {} }; std::vector av; A a; av.push_back( a ); 했을 때, can’t use default assignment operator 와 같은 error가 발생한다면, class A 에 다음 형식의 assignment operator가 정의되어 있지 않아서이다. A& operator=( const A& a ) {    x = A.x;     return (*this);

How to mount NTFS HDD on CentOS

1) portable HDD su yum install yum-priorities rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm (CentOS 5) rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm (CentOS 6) yum -y install kernel-headers yum –enablerepo=rpmforge install fuse fuse-ntfs-3g dkms dkms-fuse 2) SATA HDD (우선 Add/Remove Software에서 fuse-ntfs-3g 가 설치되어 있어야 함) su fdisk -l 하면 다음과 같이 출력된다. Device Boot      Start         End      Blocks   Id  System /dev/sda1   *          

How to install Python2.65 & SWIG 2.0.1 on CentOS

직접 작성한 C++ module을 SWIG를 이용하여 Python에서 사용하려면 SWIG를 설치해주어야 한다. CentOS에서 기본적으로 제공하는 SWIG version은 1.3.25와 1.3.29 이므로, WEB에서 2.0.1 version을 직접 download받아 설치해보자. [SWIG 2.0.1] <Download> http://sourceforge.net/projects/swig/files/swig/swig-2.0.1/swig-2.0.1.tar.gz/download <Uncompress> tar xvf swig-2.0.1.tar.gz cd swig-2.0.1 <Generate Makefile> ./configure 만약 ./configure 시에.. Can’t find pcre-config script from PCRE (Perl Compatible Regular Expressions) library package. error가 발생하면,

error C2872: ‘ostream’ : ambiguous symbol

Visual Studio에서 다음과 같은 compile error가 발생할 때가 있다. UTL error C2872: ‘ostream’ : ambiguous symbol 이럴 때에는 C/C++ -> Preprocesser -> Preprocessor Definations에 REQUIRE_IOSTREAM를 추가해주면 된다.

‘CALLBACK’ : macro redefinition

다음과 같은 error가 발생할 때, C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(122) : warning C4005: ‘CALLBACK’ : macro redefinition         C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\GL/glut.h(34) : see previous definition of ‘CALLBACK’ #include <windows.h>를 #include <glud.h> 보다 먼저 선언해준다.

Everest in Linux?

Windows에서의 Everest와 같이 Linux에도 hardinfo라는 software가 있다. 설치는 간단. CentOS라면 Add/Remove Software -> Search -> hardinfo 를 검색해서 설치해준다.