이전에 C파일에서 H파일 H파일에서 C파일로 토클 되는 macro를 만든 적이 있다.
개발 소스 환경이 바뀌어 include 디렉토리가 따로 관리되다 보니 C/H가 같은 경로에 있지 않아
적용 되지 않았다.
소스 인사이트에 풀패스를 주지 않아도 되기 때문에 아래와 같이 업글 하였다.
pos 는 .에 위치
pos2는 백슬래쉬에 위치를 찾아
파일이름만 뜯어 내서 거기에 확장자를 붙여 열어 주니 된다.
macro OpenSourceHeader()
{
hbuf = GetCurrentBuf()
bufFileName = tolower(GetBufName(hbuf))
pos = strlen(bufFileName)-1
pos2 = strlen(bufFileName)-1
while(bufFileName[pos] != ".")
pos = pos -1
while(bufFileName[pos2] != "\\") //<--추가된 곳
pos2= pos2 -1
szFileNameOnly = strmid(bufFileName,pos2+1,pos) //<--이름만 얻는다.
szFileExt = strmid(bufFileName, pos + 1, strlen(bufFileName))
if (szFileExt =="c" || szFileExt=="cpp" || szFileExt=="cxx" )
{
openbufFileName = cat(szFileNameOnly , ".h")
hopenbuf = OpenBuf(openbufFileName)
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".hpp")
hopenbuf = OpenBuf(openbufFileName)
}
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".hxx")
hopenbuf = OpenBuf(openbufFileName)
}
if (hopenbuf == hNil)
{
Msg(openbufFileName)
return
}
SetCurrentBuf (hopenbuf)
}
else if (szFileExt=="h" || szFileExt=="hpp" || szFileExt=="hxx")
{
openbufFileName = cat(szFileNameOnly , ".c")
hopenbuf = OpenBuf(openbufFileName)
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".cpp")
hopenbuf = OpenBuf(openbufFileName)
}
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".cxxx")
hopenbuf = OpenBuf(openbufFileName)
}
if (hopenbuf == hNil)
{
Msg(openbufFileName)
return
}
SetCurrentBuf (hopenbuf)
}
}
2009년 6월 30일 화요일
2009년 6월 26일 금요일
.svn 디렉토리들을 제거 하기...
svn으로 관리되는 소스에는 .svn 디렉토리 들이 매 디렉토리 마다 있다.
일단 svn에서 관리 하지 않고 단지 소스를 복사 해서 본다고 하면.
보이지 않는 이 디렉토리들을 제거 하고 싶을 때가 있다.
find . -name .svn -print0 | xargs -0 rm -rf
간단하게 모두 제거 하자....
일단 svn에서 관리 하지 않고 단지 소스를 복사 해서 본다고 하면.
보이지 않는 이 디렉토리들을 제거 하고 싶을 때가 있다.
find . -name .svn -print0 | xargs -0 rm -rf
간단하게 모두 제거 하자....
2009년 6월 20일 토요일
2009년 6월 16일 화요일
ubuntu ext3->ext4
9.04에서 ext4를 지원한다.
업그레이드를 한것으로 ext3 상태이다.
인터넷을 보니 ext4가 성능이 더 좋다 하길래 감행 하였다.
1. 먼저 GRUB 부팅에서 recovery를 선택
다음 메뉴에서 root 머시기를 선택
fdisk -l 을 해서 먼저 ext4로 변경 할 /dev/sdaN을 확인 한다.
내경우 /dev/sda5, /dev/sda2였다.
변경후 fstab을 다시 마운트 해서 수정 해라고 했지만 실제로 해보니 read only라면서
마운트 포지션을 만들지도 못하고 마운트 못하는 경우가 집에 laptop에서 발생 했다.
그래서 순서를 변경
먼저 vi로 fstab을 변경 ext3->ext4
그리고
umount /dev/sda2
umount /dev/sda5
해준다음
tune2fs -O extents,uninit_bg,dir_index /dev/sda2
tune2fs -O extents,uninit_bg,dir_index /dev/sda5
한다음 (이미 변경)
아래와 같이 검사
fsck -pDf /dev/sda2
fsck -pDf /dev/sda5
좀오래 걸림
재부팅
ext4로 변경 되고 재부팅 잘됨
성능은 얼마나 좋아 졌는지 모르지만
그냥 한번 변경 해 보았는데.. 지금 까지는 특별한 문제 없이 잘 동작 함..
업그레이드를 한것으로 ext3 상태이다.
인터넷을 보니 ext4가 성능이 더 좋다 하길래 감행 하였다.
1. 먼저 GRUB 부팅에서 recovery를 선택
다음 메뉴에서 root 머시기를 선택
fdisk -l 을 해서 먼저 ext4로 변경 할 /dev/sdaN을 확인 한다.
내경우 /dev/sda5, /dev/sda2였다.
변경후 fstab을 다시 마운트 해서 수정 해라고 했지만 실제로 해보니 read only라면서
마운트 포지션을 만들지도 못하고 마운트 못하는 경우가 집에 laptop에서 발생 했다.
그래서 순서를 변경
먼저 vi로 fstab을 변경 ext3->ext4
그리고
umount /dev/sda2
umount /dev/sda5
해준다음
tune2fs -O extents,uninit_bg,dir_index /dev/sda2
tune2fs -O extents,uninit_bg,dir_index /dev/sda5
한다음 (이미 변경)
아래와 같이 검사
fsck -pDf /dev/sda2
fsck -pDf /dev/sda5
좀오래 걸림
재부팅
ext4로 변경 되고 재부팅 잘됨
성능은 얼마나 좋아 졌는지 모르지만
그냥 한번 변경 해 보았는데.. 지금 까지는 특별한 문제 없이 잘 동작 함..
2009년 6월 12일 금요일
DSN 이름 으로 부터 IP, PORT, USERNAME, DB NAME, NLS_USE 등 얻기
레지스트리에서 DSN이름으로 아래의 정보를 구할수 있음
#include <registry.hpp>
..... 아래처럼 함수를 구현 한다. ....
/DNS 으로 부터 기타 정보 얻기 IP, NAME, ...
//registry HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN
TRegistry* reg = new TRegistry(KEY_READ);
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->OpenKey("SOFTWARE",FALSE);
reg->OpenKey("ODBC",FALSE);
reg->OpenKey("ODBC.INI",FALSE);
reg->OpenKey(cbboxDSNList->Text,FALSE);
edtServer->Text = reg->ReadString("Server");
edtDatabase->Text = reg->ReadString("Database");
cbboxNLS->Text = reg->ReadString("NLS_USE");
edtPasswd->Text = reg->ReadString("Password");
edtPort->Text = reg->ReadString("Port");
edtUserName->Text = reg->ReadString("User");
#include <registry.hpp>
..... 아래처럼 함수를 구현 한다. ....
/DNS 으로 부터 기타 정보 얻기 IP, NAME, ...
//registry HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DSN
TRegistry* reg = new TRegistry(KEY_READ);
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->OpenKey("SOFTWARE",FALSE);
reg->OpenKey("ODBC",FALSE);
reg->OpenKey("ODBC.INI",FALSE);
reg->OpenKey(cbboxDSNList->Text,FALSE);
edtServer->Text = reg->ReadString("Server");
edtDatabase->Text = reg->ReadString("Database");
cbboxNLS->Text = reg->ReadString("NLS_USE");
edtPasswd->Text = reg->ReadString("Password");
edtPort->Text = reg->ReadString("Port");
edtUserName->Text = reg->ReadString("User");
2009년 6월 11일 목요일
DSN List 얻기
//---------------------------------------------------------------------------
#include <vcl.h>
#include <sql.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>//---------------------------------------------------------------------------
#pragma hdrstop
#pragma comment(lib, "odbc32.lib")
#include "regServerUnit.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmRegisterDatabaseServer *frmRegisterDatabaseServer;
//---------------------------------------------------------------------------
__fastcall TfrmRegisterDatabaseServer::TfrmRegisterDatabaseServer(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmRegisterDatabaseServer::FormCreate(TObject *Sender)
{
//DSN 리스트 얻기
HENV hEnv;
char tmpDSN[256];
SWORD tmpDSNLen = 255;
SWORD ResultLen;
UCHAR tmpDriver[256];
SWORD tmpDriverLen = 255;
SWORD ResultDescLen;
RETCODE ReturnCode = SQL_SUCCESS;
UnicodeString DSNList;
ReturnCode = ::SQLAllocEnv(&hEnv);
if (SQL_SUCCESS == ReturnCode)
{
ReturnCode = ::SQLDataSources(hEnv, SQL_FETCH_FIRST, tmpDSN, tmpDSNLen, &ResultLen, tmpDriver, tmpDriverLen, &ResultDescLen);
while(!ReturnCode)
{
// additional processing
DSNList = tmpDSN;
cbboxDSNList->AddItem(DSNList,NULL);
ReturnCode = ::SQLDataSources(hEnv, SQL_FETCH_NEXT, tmpDSN, tmpDSNLen, &ResultLen, tmpDriver, tmpDriverLen, &ResultDescLen);
};
}
}
//---------------------------------------------------------------------------
2009년 6월 3일 수요일
2009년 6월 2일 화요일
2009년 6월 1일 월요일
Vista/osx/ubuntu
준비물
easyBCD
acronis disk director
acronis true image
해킨 dvd
우분투
M$ 윈도우를 주로 사용하고 osx 맛보기 가끔 linux를 사용하는 랩탑에
일단 파티셔닝 작업을 한다.
첫번째 M$ OS
두번째 OSX
세번째 리눅스
두번째 파티션을 준비 할때는 0xAF ShagOS swap로 convert시킴 (disk diretor 이용)
해킨 dvd 부팅후 설치
mbr이 날아감
다윈로더에서 vista를 선택해서 비스타 진입
disk direcotr로 Active 파티션을 C로 바꾸고 EasyBCD에서 MBR복구
OSX 부트를 설정 해준다.
다시 부팅 하면 vista우선 easyBCD에 의한 부트 로더 나옴
마지막으로 우분트 설치
우분트 설치에 중요점은 마지막에 grub를 주하드 MBR이 아닌 걍 파티션에 설치
vista에 가서 easyBCD로 리눅스 부트 추가 해주면 됨
osx해킨은 업데이트나 iwi3945 같은거 설치 잘못 하다간 바로 커널 패닉이므로
아크로니스 투루이미지로 백업을 받아 둔다.
현재 XxX10.5.6에서 10.5.7로 소프트웨어 업데이트시 이상 없이 동작 한다.
다음 소프트웨어 업데이트 라든지 모험 하기전에 반드시 백업을 해두자..
easyBCD
acronis disk director
acronis true image
해킨 dvd
우분투
M$ 윈도우를 주로 사용하고 osx 맛보기 가끔 linux를 사용하는 랩탑에
일단 파티셔닝 작업을 한다.
첫번째 M$ OS
두번째 OSX
세번째 리눅스
두번째 파티션을 준비 할때는 0xAF ShagOS swap로 convert시킴 (disk diretor 이용)
해킨 dvd 부팅후 설치
mbr이 날아감
다윈로더에서 vista를 선택해서 비스타 진입
disk direcotr로 Active 파티션을 C로 바꾸고 EasyBCD에서 MBR복구
OSX 부트를 설정 해준다.
다시 부팅 하면 vista우선 easyBCD에 의한 부트 로더 나옴
마지막으로 우분트 설치
우분트 설치에 중요점은 마지막에 grub를 주하드 MBR이 아닌 걍 파티션에 설치
vista에 가서 easyBCD로 리눅스 부트 추가 해주면 됨
osx해킨은 업데이트나 iwi3945 같은거 설치 잘못 하다간 바로 커널 패닉이므로
아크로니스 투루이미지로 백업을 받아 둔다.
현재 XxX10.5.6에서 10.5.7로 소프트웨어 업데이트시 이상 없이 동작 한다.
다음 소프트웨어 업데이트 라든지 모험 하기전에 반드시 백업을 해두자..
피드 구독하기:
글 (Atom)