11/11/2009

c++ namespace, class print

c++ namespace, class print

#include

namespace A
{
class B
{
public:

B() {}
void print()
{
printf("%s:%d .....\n",
__PRETTY_FUNCTION__, __LINE__);
}
};
};

int main(int argc, char** argv)
{
A::B b;
b.print();
return 0;
}

result

void A::B::print():13

std::list and find class object.

#include
#include
#include
#include
#include

class PERSON {
public:
size_t m_no;
std::string m_name;

public:
PERSON(size_t no, const char* name)
{
m_no = no;
m_name = name;
}

int operator==(const PERSON& p) const
{
return (p.m_no == m_no && p.m_name == m_name);
}
};

typedef std::list PersonList;
typedef std::list::iterator PersonListIt;

int get_random(size_t lo, size_t hi)
{
return (int)((double)rand() /
((double)RAND_MAX + 1) * (++hi - lo) + lo);
}

int main()
{
PersonList list;

srandom(getpid() * time(0));

for (size_t i=0; i<10; i++)
{
list.push_back(PERSON(get_random(1, 100), "ddd"));
}
printf("orig...\n");
PersonListIt it = list.begin();
while (it != list.end())
{
PERSON& p = *it;
printf("no:%d name:%s\n", p.m_no, p.m_name.c_str());
it++;
}

PersonListIt findIt = find(list.begin(), list.end(), PERSON(4, "ddd"));
if (findIt != list.end())
{
printf("found...\n");
}

return 0;
}


orig...
no:14 name:ddd
no:54 name:ddd
no:12 name:ddd
no:70 name:ddd
no:100 name:ddd
no:43 name:ddd
no:43 name:ddd
no:37 name:ddd
no:63 name:ddd
no:64 name:ddd

위 예제는, std::list에 PERSON이라는 객체를 집어넣고
find을 이용해서 찾는 예제입니다.

11/06/2009

ln -s and rm

symbolic link

ln -s (src dir) (symbolic name)


remove symbolic link.

rm (symbolic name) -- correct.
rm (symbolic name)/ -- incorrect.

11/04/2009

pointer pointer array - for memory

#define MAX_PATH 128

class TestPointer
{
private:
char strBuffer** m_pstrBuffer;
public:
void read_text_file( char* _strFileName );
};
void TestPointer::read_text_file( char* _strFileName )
{
int strNum;
//...........

m_pStrBuffer = (char**)new char[strNum];


m_pStrBuffer = (char*)new char[MAX_PATH];

char szbuf[128];
fprintf( fp, "%s", szbuf );
strcpy( m_pStrBuffer[index], szbuf );

}

void clear(void)
{
for( int i = 0; i < strNum; ++i )
delete m_pStrBuffer[index];

delete m_pStrBuffer;

}

10/08/2009

sql server 2000 and 2005 with VC++ 6.0

- sql server 2000 and 2005 관련.

ms sql server 2000 버젼으로 설치해야
DB-Library ( vc++ 6.0 ) 에서 연결됨.
그리고 sql server 2000 sp4 설치를 해야 다른 pc 에서 해당 ip 로
dbopen(...) 연결이 제대로 된다.

mssql 2005 등의 서버는 DB-Library 연결되지 않는걸로 판단됨.

svn install

svn install.

1. download svn
- http://subversion.tigris.org/ (새 창으로 열기) 에서 subversion-1.4.4.tar.gz 다운.

2. ssl 확인
- whereis ssl 으로 위치확인
]# whereis ssl
ssl: /usr/share/ssl /usr/share/man/man3/ssl.3ssl.gz
]#
- 버전확인
]# openssl
OpenSSL> version
OpenSSL 0.9.6b [engine] 9 Jul 2001
OpenSSL> exit
]#

3. subversion 압축 풀기
]# tar xvzf subversion-1.4.4.tar.gz

4. configure
]# ./configure --with-zlib --with-ssl=/usr/share/ssl

5. make; make install

6. Repository 생성
]# mkdir /home/svn
]# cd /home/svn/
]# svnadmin create --fs-type fsfs test

7. svn프로토콜을 사용하기 위해 svnserve 설정
]# svnserve -d -r /home/svn/

8. 다른서버에서 svn 접속 여부 확인
]$ svn checkout svn://xxx.xxx.xxx.xxx/test test
Checked out revision 0.

9. svnserve에서 ID로 사용자 인증
]# vi /home/svn/test/conf/svnserve.conf
12 anon-access = none
13 auth-access = write
18 password-db = passwd
30 realm = Test Repository
]# vi /home/svn/test/conf/passwd
7 id = passwd
]$ svn checkout svn://xxx.xxx.xxx.xxx/test test
Authentication realm: Test Repository
Password for 'id':
Checked out revision 0.

10. 클라이언트설정.
]$ whereis vi
vi: /bin/vi /usr/share/vi /usr/share/man/man1/vi.1.gz
]$ vi .bash_profile
SVN_EDITOR=/bin/vi
export SVN_EDITOR

11. 기본 디렉토리 만들기(trunk, branches, tags)
]$ svn mkdir svn://xxx.xxx.xxx.xxx/test/trunk
]$ svn mkdir svn://xxx.xxx.xxx.xxx/test/branches
]$ svn mkdir svn://xxx.xxx.xxx.xxx/test/tags
-- vi 화면이 나오고 로그를 입력하고 저장하면 커밋된다.

12. import 하기.
]$ svn import srcdir svn://xxx.xxx.xxx.xxx/test/trunk

13. checkout 하기
]$ svn co svn://xxx.xxx.xxx.xxx/test/trunk