Create TOC

2008년 12월 15일

Debian/conky 설정

설치

conky

sudo apt-get install conky

Devil's pie

sudo apt-get install devilspie

설정

X windows 설정

/etc/X11/xorg.conf 설정에 아래 내용 추가

Section "Module"
   Load "dbe"
EndSection

conky 설정

~/.conkyrc 파일을 만든다

own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes

Devils pie

설정 파일 만들기

mkdir ~/.devilspie
touch ~/.devilspie/conky.ds

conky.ds

(if
   (is (application_name) "conky")
   (begin
      (pin)
      (skip_tasklist)
      (skip_pager)
   )
)

시작 script 작성

#!/bin/sh
sleep 10
conky &
devilspie &

2008년 11월 27일

wine에서 한글 글꼴 설정

  1. 네이버 사전체를 받아서 ~/.wine/windows/fonts에 설치한다.
  2. ~/.wine/system.reg파일에 아래 내용 추가.
    [Software\\Microsoft\\Windows\\CurrentVersion\\Fonts] 1259330396
    "\xb124\xc774\xbc84\xc0ac\xc804 (TrueType)"="naverdic.ttf"
    
    [Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts] 1259330396
    "\xb124\xc774\xbc84\xc0ac\xc804 (TrueType)"="naverdic.ttf"
  3. ~/.wine/system.reg파일에서 SystemLink을 수정해서 tahoma 글꼴에 네이버 사전체를 연결한다.
    [Software\\Microsoft\\Windows NT\\CurrentVersion\\FontLink\\SystemLink] 1291105182
    "Tahoma"=str(7):"naverdic.ttf\0MSGOTHIC.TTC,MS UI Gothic\0kochi-gothic-subst.ttf\0sazanami-gothic.ttf\0sgothic.ttf\0uming.ttf\0bsmi00lp.ttf\0gbsn00lp.ttf\0dotum.ttf\0Purisa.ttf\0ae_Arab.ttf\0KacstBook.ttf\0"
  4. ~/.wine/system.reg파일에서 FontSubstitutesMS Shell DlgMS Shell Dlg 2를 고친다.
    [Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes] 1259329131
    "MS Shell Dlg"="Naver Dictionary"
    "MS Shell Dlg 2"="Naver Dictionary"

2008년 11월 20일

rsync over ssh 를 이용한 원격 서버 백업

#!/bin/sh
OPTS="--archive --compress --times --perms --owner --group --links --stats -v -u --delete"
SSHOPT="-e ssh"
FROMDIR="아이디@SSH서버주소:백업할 루트 디렉토리 경로"
TODIR="백업 받을 경로"

rsync $OPTS $SSHOPT $FROMDIR $TODIR

2008년 11월 15일

Debian/CISCO VPN에 접속하기

이 문서는 Debian 에서 vpnc를 이용해 CISCO VPN 에 접속하는 방법을 기술한다.

vpnc 설치

$ sudo apt-get install vpnc

설정 파일 편집

vpnc 설정 파일은 /etc/vpnc 아래에 위치하며 확장자는 반드시 .conf 로 끝나야 한다. 설정파일 형식은 아래와 같다.

IPSec gateway [host]
IPSec ID [group id]
IPSec secret [group password]
Xauth username [auth id]
Xauth password [auth psssword]
Enable Single DES
DPD idle timeout (our side) 0

  1. IPSec gateway 는 VPN 으로 접속할 gateway ip를 적어주면 된다. CISCO VPN Client 설정에서 host 에 해당한다.
  2. IPSec ID 는 CISCO VPN Client의 group id 를 말한다.
  3. IPSec secret 은 ISCO VPN Client의 group password 를 말한다.
  4. Xauth 설정들을 뺄경우 vpnc 를 이용해 VPN에 접속할 때마다 id와 password를 입력해야 한다.
  5. DPD idle timeout (our side) 0 설정을 빼면 연결이 자주 끊어진다.

연결

아래 명령을 이용한다.

$ sudo vpnc [설정파일명]

만일 설정 파일을 mycompany.conf 로 했다면

$ sudo vpnc mycompany

로 연결하면 된다.

연결 끊기

아래 명령을 입력한다.

$ sudo vpnc-disconnect

rdesktop 활용

내 경우 회사의 모든 환경이 Windows 환경이기 때문에 회사의 컴퓨터에 rdesktop 으로 접속해서 사용한다. 이때 rdesktop 을 종료하면 VPN 도 같이 종료하도록 아래와 같은 shell script 를 사용한다.

#!/bin/sh

# vpn 시작
gksu vpnc mycompany
# rdesktop 접속
rdesktop -u userid -k ko -rclipboard:off -g 1152x864 -a 16 -P0 "접속할PC의 ip"
# rdesktop 접속 종료 후 vpn 종료
gksu vpnc-disconnect

2008년 9월 20일

Win32/프로세스 실행 방법에 따른 argument 해석

프로세스 실행 방법에 따라서 argument 해석이 어떻게 달라지는지 간단한 테스트를 수행했다.

테스트

프로세스를 실행시킬 수 있는 API중 ShellExecuteEx()와 CreateProcess() 에 대해서 테스트를 수행한다. 실행시 인자는 "12345"를 사용한다.

ShellExecuteEx

입력

인자
SHELLEXECUTEINFO::lpFileC:\Test\MyTest.exe
SHELLEXECUTEINFO::lpParameters12345

결과

argument를 얻는 방법결과
CWinApp::m_lpCmdLine12345
GetCommandLineW()"C:\Test\MyTest.exe" 12345
argc2
argv[0]C:\Test\MyTest.exe
argv[1]12345

CreateProcess 1

입력

lpApplicationNameNULL
lpCommandLine"C:\Test\MyTest.exe" 12345

결과

argument를 얻는 방법결과
CWinApp::m_lpCmdLine12345
GetCommandLineW()"C:\Test\MyTest.exe" 12345
argc2
argv[0]C:\Test\MyTest.exe
argv[1]12345

CreateProcess 2

입력

lpApplicationNameC:\Test\MyTest.exe
lpCommandLine"C:\Test\MyTest.exe" 12345

결과

argument를 얻는 방법결과
CWinApp::m_lpCmdLine12345
GetCommandLineW()"C:\Test\MyTest.exe" 12345
argc2
argv[0]C:\Test\MyTest.exe
argv[1]12345

CrateProcess 3

입력

lpApplicationNameC:\Test\MyTest.exe
lpCommandLine12345

결과

argument를 얻는 방법결과
CWinApp::m_lpCmdLine
GetCommandLineW()12345
argc1
argv[0]12345

결론

  1. 프로세스를 실행할때는 가급적 ShellExecuteEx() API를 사용한다.
  2. CreateProcess() API를 사용할 때는 lpCommandLine 인자에 전체 명령행을 완성해서 전달한다.

error LNK2005

MFC 와 runtime library의 링크 순서가 잘못될 경우 아래와 같은 메시지를 볼 수 있습니다.

mfc42u.lib(dllmodul.obj):error LNK2005: _DllMain@12 already defined in MSVCRT. lib(dllmain.obj)

해결책은 아래와 같습니다. (VC6 기준)

  1. Project 메뉴에서 Settings를 누릅니다.
  2. Project Settings 대화 상자의 Settings For 에서 링크 오류가 발생하는 프로젝트 구성을 선택합니다.
  3. Link 탭의 Category 콤보 상자에서 Input을 선택합니다.
  4. Ignore libraries 상자에 msvcrt.lib 를 삽입합니다.
  5. Object/library modules 상자에 라이브러리 mfcs42u.lib msvcrt.lib 를 삽입합니다.

http://support.microsoft.com/kb/148652

2008년 9월 15일

Debian/VirtualBox 설치하기

이 문서는 Debian 에 VirtualBox를 설치하는 방법을 설명한다.

Package 설치

apt-get 등을 사용해서 아래 package를 설치한다.

$ sudo apt-get install virtualbox-ose virtualbox-ose-guest-utils virtualbox-ose-modules-2.6-686

모듈 설정

/etc/modules에 vboxdrv를 추가한다.

$ sudo cat vboxdrv >> /etc/modules

사용자 설정

VirtualBox 를 사용할 사용자를 아래 명령을 이용해서 vboxusers 그룹에 추가해준다.

$ sudo addgroup 사용자id vboxusers

공유 설정

host - VirtualBox 간의 공유 설정은 아래와 같이 하면 된다.

  1. VirtualBox의 설정 - 공유 폴더 에서 머신 폴더 설정. 여기에선 이름을 xxx 라고 한다.
  2. VirtualBox의 OS가 window라면 net use x: \\vboxsvr\xxx, linux라면 mount -t vboxsf xxx /mnt/원하는이름

심리스 모드 사용

VirtualBox의 심리스 기능을 사용하면 아래 화면처럼 윈도우 바탕화면을 보지 않고 원하는 프로그램만 host의 프로그램처럼 실행시킬 수 있다. 아래 화면은 Debian에서 VirtualBox의 심리스 모드를 이용해서 Internet Explorer 를 실행한 화면이다.

심리스 모드는 host키기본 값은 오른쪽 control + L을 누르면 된다.

한/영 전환키 사용

한/영 전환키를 SCIM같은 입력기에 설정해서 사용할 경우 VirtualBox에서는 한/영 전환키를 사용할 수 없다. 이때는 아래와 같은 script를 작성해서 사용하면 된다.

#!/bin/sh
GTK_IM_MODULE=none
QT_IM_MODULE=none
XMODIFIERS=none
VBoxManage startvm <vm 이름>

vm 이름VBoxManage list vms 명령을 사용해서 확인할 수 있다.

2008년 9월 12일

Debian/KVM+QEMU를 이용한 가상 머신 구성하기

이 문서는 Debian 에서 KVMQEMU 를 사용해 가상 머신을 만드는 것을 설명한다.

준비

패키지 설치

sudo apt-get install kvm qemu

모듈 설정

부팅할 때 필요한 모듈이 올라오도록 아래와 같이 설정한다.

cat kvm-intel >> /etc/modules

사용자 설정

가상 머신을 실행할 수 있도록 권한을 설정한다.

sudo adduser <id> kvm

설치

설치는 모듈 시작과 재 로그인을 수동으로 해주거나 재 부팅 후 시작한다.

disk image 만들기

2GB 짜리 이미지를 생성한다(용량은 필요한 만큼 지정하면 된다).

qemu-img create winxp.img -f qcow 2G

OS 설치

처음 아래 명령으로 qemu를 시작한다.

SDL_VIDEO_X11_DGAMOUSE=0 qemu -no-acpi -m 512 -cdrom cdimg.iso -hda winxp.img -boot d

설치 화면이 뜨면 qemu를 종료한다. 이 작업을 하지 않고 바로 kvm을 실행하면 아래와 같은 오류 메시지를 만나게 된다.

qemu: could not open disk image winxp.img

다시 kvm을 사용해서 OS 설치를 시작한다.

SDL_VIDEO_X11_DGAMOUSE=0 kvm -no-acpi -m 512 -localtime -cdrom cdimg.iso -hda ~/qemu/winxp.img -boot d

이때 -no-acpi 옵션을 주지 않으면 매우 느리게 동작한다.

실행

설치한 가상 머신을 실행해본다.

SDL_VIDEO_X11_DGAMOUSE=0 kvm -no-acpi -m 512 -localtime -net nic -net user -hda ~/qemu/winxp.img -boot c

실행화면은 아래와 같다.

2008년 5월 19일

Debian/시스템 튜닝

Debian 에서 시스템 성능을 높이는 방법을 기술한다. 사용된 시스템은 Q6600, 4GB 시스템이다.

swapness

강제로 swap 보다는 메모리를 우선 사용하도록 커널 설정을 변경한다. 설정 변경을 위해 아래 파일을 편집한다.

$ sudo vi /etc/sysctl.conf

파일의 맨 마지막에 아래 줄을 추가한다.

vm.swappiness=3

preload

공유 라이브러리를 미리 메모리에 올려둔다. 설치만 하면 별도 설정 없이 자동으로 동작한다.

설치

$ sudo apt-get install preload

prelink

실행 파일의 실행 속도를 높여준다.

설치

$ sudo apt-get install prelink

활성화

아래 파일을 편집한다.

$ sudo vi /etc/default/prelink

파일 내용 중

PRELINKING=unknown

을 찾아서

PRELINKING=yes

로 변경한다.

파일 수정 후 아래 명령을 한번 실행해준다.

$ sudo /etc/cron.daily/prelink

비활성화

아래 명령을 실행한다.

$ sudo prelink -ua

명령 실행 후 /etc/default/prelink 파일에서 PRELINKINGunknown으로 변경한다.

부팅시 서비스 데몬 병렬 실행

부팅시 실행되는 서비스 데몬을 병렬로 실행시켜서 부팅 속도를 높인다.

/etc/init.d/rc 파일을 수정 한다.

파일 내용 중

CONCURRENCY=none

을 찾아서

CONCURRENCY=shell

로 변경한다.

Reference