2009년 12월 23일 수요일
리모트 서버에 ddd에서 단축키
당연히 안되는줄 알았다.
.ddd에 아무리 뒤저도 없고
로컬에서 ddd를 하면 되는데.. 리모트에 접속 해서 x땡겨서 할때는 안된다.
옆사람이 ubuntu 9.10 32bit 인데 잘된다.
.bashrc .ddd 다 가져와도 안된다.
난 ubuntu 9.10 (8.04부터 업그레이드 된 오래 묵은넘)
ssh -X 이렇게 해서 된다고 해서 이렇게도 해보고...
ubuntu 9.10 64bit를 재설치 했다.
안된다.
/home 파티션을 그대로 가져 갔으니 그대로...
결국 로컬 ubuntu에 .디렉토리 중에 어떤 것 때문인데...
계정을 추가 하고 로그 아웃 하고 추가한 계정으로 하니 된다.
모든 .디렉토리를 엎었더니 된다.
해결 방법이 ubuntu 9.10 새로 설치 하면 된다는 거....
ㅠ.ㅠ
2009년 11월 16일 월요일
Windows 7 가상화. XP Mode (XPM)
2009년 11월 14일 토요일
windows 7 64bit 에서 RAD studio 로 디버깅시 문제 해결
Assertion failure SetThreadContext failed ~~ 에러가 난다.
해결 방법은 위 주소에 가보면 patch가 있다.
Workaround steps:
1.Close Delphi
2.Locate bordbk120N.dll (C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin)
3.Make a backup copy
4.Check step 3
5.Open bordbk120N.dll in a Hex editor (UltraEdit works fine)
6.Search for “01 00 48 74 47 80 3D”
7.Make sure this is found once only
8.Replace “74” with “EB”
9.Save
10.Restart Delphi. Error should be gone.
This might work on older Delphi versions as well, but I did not test that yet.
위 주소에 위 과정을 해주는 프로그램도 다운 받을수 있다.
2009년 10월 25일 일요일
Windows7 64bit 설치...
2009년 7월 3일 금요일
Error 13: "Invalid or unsupported executable format"
2.6.28-11로 부팅이 가능하다.
이유가 뭘까...
ext3-->ext4로 변경 하고 나서
커널 업데이트가 되었는데.. 그걸로 부팅이 안되는 것이다..
grub-install hd0
를 하고 나니 이제서야 최신 커널로 부팅이 된다.
http://ubuntuforums.org/showthread.php?t=1192337 <---여기를 참조 하니 그런 멘트가 있더라.
2009년 6월 30일 화요일
soruce insight macro : OpenSourceHeader()
개발 소스 환경이 바뀌어 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월 26일 금요일
.svn 디렉토리들을 제거 하기...
일단 svn에서 관리 하지 않고 단지 소스를 복사 해서 본다고 하면.
보이지 않는 이 디렉토리들을 제거 하고 싶을 때가 있다.
find . -name .svn -print0 | xargs -0 rm -rf
간단하게 모두 제거 하자....
2009년 6월 20일 토요일
2009년 6월 16일 화요일
ubuntu ext3->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 등 얻기
#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로 소프트웨어 업데이트시 이상 없이 동작 한다.
다음 소프트웨어 업데이트 라든지 모험 하기전에 반드시 백업을 해두자..
2009년 5월 27일 수요일
Thinkpad T60 하드 교체하기
주 하드 디스크 : 디스크 데이터 전송률 4.4에서 --- > 5.6으로 향상 되었다.
2009년 5월 20일 수요일
주기적으로 ls 하기
어떤 디렉토리에 어떤 파일이 갑자기 생기나 확인 하려고.. 계속 ls를 쳐보는 노가다....
모르면 노가다 알면 참 쉽죠 ~~ 잉....
2009년 2월 24일 화요일
VirtualBox 자동업데이트 되어도 게스트 확장은 업데이트 안된다!
Ubuntu + Vbox(XP) 로 잘 사용하고 잇는데..
가끔 VBox가 업데이트 한다고 하며..
지금 까지 두어 차례 업데이트 된걸로 기억 된다.
버젼 정보를 보니 혀내 2.1.4이다.
근데 웹서핑중 알게된 사실 게스트 확장은 XP에서 별도로 다시 설치 해야 되는거라.
업데이트가 안된다.
당연 그렇겟지... 잊구 살았다.
장치 -> 게스트 확장 설치
해보니 2.1.4 게스트 확장이 설치 된다.
제부팅도 하더라.. 머가 달라 졌을까 .. 혹시 키보드 보안 땜에 블루스크린 나오는게 해결 될까?
역시 팍 죽어 버린다. ㅎ.ㅎ
2009년 2월 18일 수요일
UNIX OS별 공유 라이브러리 지정
dlopen() 호출시 라이브러리 파일을 못찾는 에러 때문에 고생 할때....
http://kldp.org/node/58955
1) 공유라이브러리 경로지정을 위한 운영체제별 차이.
* 리눅스 : LD_LIBRARY_PATH
* 솔라리스 : LD_LIBRARY_PATH , LD_LIBRARY_PATH_64
* HPUX : SHLIB_PATH, LD_LIBRARY_PATH
* Tru64 : LD_LIBRARY_PATH
* AiX : LIBPATH
* SGI : LD_LIBRARY_PATH, LD_LIBRARYN32_PATH, LD_LIBRARY64_PATH
* Win32 : PATH
* MacOS X : DYLD_LIBRARY_PATH, DYLD_FALLBACK_LIBRARY_PATH
* VMS :SYS$SHARE
* OS390 : LIBPATH
2009년 2월 16일 월요일
How-To: Find missing packages with apt-file
ddd를 컴파일 하다가 어떤 헤더 파일이 없다고 한다..
어떤 패키지를 설치 해야 하나.. 아래처럼 하면 설치 해야 할 패키지를 설치 할 수 있다.
Command line lover will love apt-file which will do the same job, but you won't have to use your web browser.
To install apt-file, simply run:
$ apt-get install apt-file
Then we need to update apt-file database with:
$ sudo apt-file update
After some times, once the Contents files are downloaded from the repositories, you will be able to query the database for myfile or path/to/myfile with the following commands:
$ apt-file search myfile
or
$ apt-file search path/to/myfile
Listing the content of an uninstalled package can be done with:
$ apt-file list mypackage
Finally, you can delete the cache files with:
$ sudo apt-file purge
2009년 2월 14일 토요일
ddd-3.3.12 가 3년만에 나왔다.
http://www.gnu.org/software/ddd/
여기에 보면 2009/2/11일...
(2009/02/11) DDD 3.3.12 is now available from ftp.gnu.org. DDD 3.3.12 features much improved support for debugging Python, Bash and Make, as well as various bug fixes.
he last official release of DDD, 3.3.11, was made on 16th March 2005, well over three years ago.
But, DDD developers have not been idle.
Rocky Bernstein in particular has done some great work in his "pydb" branch. DDD can now be used effectively in debugging Python programs (pydb), Bash scripts (bashdb) and Makefiles (remake)... ...
ddd가 2005년 3월 16일 이후.. 그러나 DDD개발자는 게을르지 않다..
컴파일 및 설치
wget ftp://ftp.gnu.org/gnu/ddd/ddd-3.3.12.tar.gz
tar xvfz ddd-3.3.12.tar.gz
./configure --enable-builtin-app-defaults
make
make install
만일 인스톨을 원하지 않고 쓰고 싶다면
적당히 링크 걸고
/usr/local/share/ddd-3.3.12를 만들고
thems와 vsllib를 복사 하여 넣어 준다.
2009년 2월 7일 토요일
.ttf 폰트 파일 적용 하기
M$ 디스크에서
tahoma.ttf같은걸 복사 해다가
계정에 .fonts를 만들고 거기에 복사 한다.
fc-cache -r
이렇게 한뒤
잠시 후에 시스템->기본설정->모양새 로 가보면
복사한 폰트가 나온다.
2009년 2월 3일 화요일
ubnutu 8.04 에서 8.10으로 업그레이드 하기
업데이트
맨아래 배포판 업그레이드 : 보통 배포판으로 변경
시스템->관리->업데이트 관리자.
하니 된다.
업그레이드 후에 네트워크 설정이 좀 거시기 해서
resolve.conf 직접 수정 해야 했던거 외에 깔끔하게 업그레이드 된다.
ubuntu 8.10 64bit 버젼에 kscope 설치
sudo apt-get install kscope
kscope를 실행하면 에러가 발생한다.
kscope: error while loading shared libararies: libkateinterfaces.so.0: cannot open shared object file: No such file or directory
wget ftp.debian.org/debian/pool/main/k/kdebase/kate_3.5.9.dfsg.1-6_amd64.deb
ar x kate_3.5.9.dfsg.1-6_amd64.deb
tar xzf data.tar.gz
sudo cp usr/lib/libkateinterfaces.so.0.0.0 /usr/local/lib
sudo ldconfig
kscope를 실행를 하면 또 다른 에러 발생
kscope: error while loading shared libararies: libkateutils.so.0: cannot open shared object file: No such file or directory
sudo cp usr/lib/libkateutils.so.0 /usr/local/lib
sudo ldconfig
드디어 실행이된다.
[출처] kscope 사용하기|작성자 현빈아빠
에서.. i386 --> amd64로 수정 하여 .....
2009년 1월 9일 금요일
Beyond Compare 3 ( LINUX) 가 있다.
2009년 1월 8일 목요일
VirtualBox 에서 가상 디스크 복제 하기
근데 가끔 두넘에 XP가 있었으면 했다.
home 밑에 .VirtualBox/VID에서 복사 하면 될듯 하지만
먼가 잇을거 같아 검색 해보니
$VBoxManage clonevdi windowsxp.vdi windowsxp2.vdi
이런식으로 복제를 해야지 된다고 한다.
VirtualBox Command Line Management Interface Version 2.1.0
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...
이런 메세지와 함께 겁나 오래 걸린다.
램 2GB머신에서 ubuntu 랑 XP(512M) 2개 쯤은 돌릴수 있겟지...
2009년 1월 7일 수요일
gdb 에서 어셈블리 코드로 보기
이렇게 하면 어셈블리 코드 로 나온다.
mutex_lock() 함수 속에 MEMORY BARRIER이 있는가를 HP 장비에서 찾아 보려고..
libpthread.so 파일에서 찾아 보기위해서는
objdump -D libpthread.so > o
이렇게 어셈블로 떠서 볼수도 있다.
2009년 1월 1일 목요일
ubuntu에서 svn 세팅
sudo apt-get install subversion
sudo addgroup svn
sudo adduser exist_user svn
sudo mkdir /var/svn
cd /var/svn
저장소: 파일시스템 이용
sudo svnadmin create --fs-type fsfs test
저장소: Berkeley DB 이용
sudo svnadmin create --fs-type bdb test
권한
sudo chgrp -R svn test
sudo chmod -R g+w test
접속하기
sudo apt-get install apache2
sudo apt-get install libapache2-svn
sudo vi /etc/apache2/mods-available/dav_svn.conf
[제일 아래에 추가]
<location>
DAV svn
SVNPath /var/svn/test
</location>
sudo a2enmod dav_svn
sudo adduser www-data svn
sudo /etc/init.d/apache2 restart
사용자 인증
cd /etc/apache2
sudo htpasswd -c dav_passwd sampleuser
New password:
Re-type new password:
dav_passwd 란 파일이 생겼을 것이고 내용을 보면 sampleuser가 추가된 것을 알 수 있을 것이다.
-c 옵션은 새로 생성하라는 뜻이고, 추가를 할 경우에는 -m 옵션을 사용하면 된다.
htpasswd 명령으로 생성되는 패스워드 파일은 "사용자이름:암호화된패스워드" 형식으로 저장되므로, 쉘계정을 사용하는 사람들을 모두 추가하고 싶은 경우에는
/etc/shadow 파일을 가져다가 직접 작성해줘도 무방하다.
아파치 설정
sudo vi /etc/apache2/mods-available/dav_svn.conf
<location>
DAV svn
SVNPath /var/svn/test
AuthType Basic
AuthName "sample repository"
AuthUserFile /etc/apache2/dav_passwd
Require valid-user
</location>
아파치를 재시작하고(sudo /etc/init.d/apache2 restart)
http://(Subversion과 Apache를 설치한 IP주소 또는 도메인)/svn/sample 으로 접속해보면 사용자이름과 패스워드를 물어볼 것이다. 특정 위치에 대해서 권한을 다르게 줄 수도 있다.
등록된 사용자만이 읽고 쓸 수 있게 하려면,
<location>
Require valid-user
</location>
아무나 읽을 수 있고 등록된 사용자만이 쓸 수 있게 하려면,
<location>
<limitexcept>
Require valid-user
</limitexcept>
</location>
등록된 사용자만이 읽을 수 있고, 특정한 사용자(sampleuser)만 쓸 수 있게 하려면,
<location>
<limit>
Require valid-user
</limit>
<limitexcept>
Require user sampleuser
</limitexcept>
</location>
이런 식으로 mods-available/dav_svn.conf 파일을 수정해주면 되겠다.
svn을 이용하는 방법은 여러가지가 있으므로 다음에 포스팅하기로 하겠다.
# https://help.ubuntu.com/8.04/serverguide/C/subversion.html
원문http://amoo.g3.cc/blog/18