블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
에러의 예)

[ilashman@kapp03 ilashman] hanterm
can't identify hangul font type ISO8859-1
If this font is not wangsung type, specify the correct type with -hftype option

백묵,한양,kaist 등 폰트를 깔아야한다.

/usr/share/fonts/ , /usr/X11R6/lib/X11/fonts/ 등의 디렉토리에서

mkfontdir
xfontsel
xlsfonts 를 실행.
fonts.dir 파일을 만들어줌.

/usr/lib/X11/ko/app-defaults/Hanterm 설정파일수정
/usr/lib/X11/app-defaults/Hanterm
~/.Xdefault 설정파일 수정
/etc/X11/XF86Config 설정파일 수정
/etc/X11/XF86Config-4 설정파일 수정

hanterm -hfn *gothic*
hanterm -hfn *gothic* -bg black -fg white
-----------------------------------------------------------
http://kldp.org/KoreanDoc/html/X-TrueType-KLDP/X-TrueType-KLDP-3.html
-----------------------------------------------------------
3. 폰트 설정(X 3.3.X, 4.0.X 동일)


mkdir /usr/X11R6/lib/X11/fonts/truetype/
cd /usr/X11R6/lib/X11/fonts/truetype/
ln -sf /mnt/harde/hwin98/fonts/gulim.ttc .
ln -sf /mnt/harde/hwin98/fonts/arial.ttf .
ln -sf /mnt/harde/hwin98/fonts/times.ttf .
....
....
위와 같이 디렉토리를 생성하여 truetype 폰트를 복사해 넣거나, 원도그 파티션이 존재 한다면 링크 해줍니다.
아직까지 truetype 폰트에 대한 fonts.dir 파일을 제대로 생성해주는 툴이 없으므로 직접 손으로 만들어 줘야 합니다. 폰트들이 들어 있는 디렉토리에 fonts.dir 이라는 파일을 다음과 같은 요령으로 만듭니다.


14
eb=y:fn=0:gulim.ttc  -ms-gulim-medium-r-normal--0-0-0-0-c-0-ksc5601.1987-0
eb=y:fn=0:gulim.ttc  -ms-gulim-medium-o-normal--0-0-0-0-c-0-ksc5601.1987-0
eb=y:ab=y:gulim.ttc  -ms-gulim-bold-r-normal--0-0-0-0-c-0-ksc5601.1987-0
eb=y:ab=y:gulim.ttc  -ms-gulim-bold-o-normal--0-0-0-0-c-0-ksc5601.1987-0
eb=y:fn=2:gulim.ttc  -ms-dotum-medium-r-normal--0-0-0-0-c-0-ksc5601.1987-0
eb=y:fn=2:gulim.ttc  -ms-dotum-medium-o-normal--0-0-0-0-c-0-ksc5601.1987-0

arial.ttf -ms-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1
ariali.ttf -ms-Arial-medium-i-normal--0-0-0-0-p-0-iso8859-1
arialbd.ttf -ms-Arial-bold-r-normal--0-0-0-0-p-0-iso8859-1
arialbi.ttf -ms-Arial-bold-i-normal--0-0-0-0-p-0-iso8859-1
times.ttf -ms-times-medium-r-normal--0-0-0-0-p-0-iso8859-1

arial.ttf -ms-Arial-medium-r-normal--0-0-0-0-p-0-koi8-ru
comic.ttf -ms-Comic-medium-r-normal--0-0-0-0-p-0-iso8859-1
comicbd.ttf -ms-Comic-bold-r-normal--0-0-0-0-p-0-iso8859-1
옵션에 대한 자세한 설명은 생략하겠습니다. 궁금하신 분들은 최준호님의 글을 읽어 보십시요. http://www.kr.freebsd.org/~cjh/freetime/x11/xtt/

위의 설정 그대로 사용하셔도 무방합니다. 물론 해당 폰트들이 존재해야 겠죠.

이제 본인의 XF86Config 설정파일에 해당 폰트 경로를 넣어 줍니다.


Section "Files"
........
........
FontPath "/usr/X11R6/lib/X11/fonts/truetype/"
........
........
EndSection
요즘 배포본들을 살펴보니 xfs 를 사용하는 것들이 많더군요. 별다른 이유가 없다면 xfs 를 죽이고 직접 로딩하는 것이 더 빠릅니다. 제 설정 파일의 일부 입니다.


Section "Files"
    RgbPath "/usr/X11R6/lib/X11/rgb"
   FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
   FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
   FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
   FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
   FontPath "/usr/X11R6/lib/X11/fonts/misc/"
   FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
   FontPath "/usr/X11R6/lib/X11/fonts/truetype/"
   FontPath "/usr/X11R6/lib/X11/fonts/ttfonts/"
   FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
   FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
   FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
   FontPath "/usr/X11R6/lib/X11/fonts/PEX/"
   FontPath "/usr/share/fonts/default/Type1"
EndSection
X 를 다시 시작합니다.
xfontsel 을 실행시켜 fndry 를 ms로 fmly를 gulim 으로 해봅니다. 이때 굴림체가 보이면 이제 모든 준비는 끝났습니다. 만약 해당 폰트들의 이름이 나타나지 않거나 글자가 제대로 표시되지 않는다면 이글을 처음부터 다시 차근차근 살펴보세요 ;-)

------------------------------------------------------------
[ilashman@kapp03 ilashman] cat .Xdefault
Hanterm*hangulFont: -baekmuk-gulim-bold-r-normal--12-120-75-75-m-120-ksx1001.1997-0
Hanterm*Font: 8x13bold

파일 내의 문자열 치환.(unix, sed, vim)

2003. 4. 9. 23:23 | Posted by 속눈썹맨
http://phya.yonsei.ac.kr/~djkim/phenix/tips/text_change.txt

sed 's/char/byte/g' as.c > as.c.t

as.c에 있는 'char'이라는 문자열을 모두 'byte'로 바꾸어 as.c.t에 저장한다.

vim에서 하는 법.
v (블럭 지정)으로 원하는 범위만큼 지정하고 :s/char/byte/g 라고 친다.
화일 전체의 문자열을 치환하고 싶으면 :%s/char/byte/g

참고 vim의 치환이나 search에서 ^ 는 라인의 처음, $는 문장의 끝을 나타낸다. \는 메타해석금지문자이다.
*.c 라는 확장자를 가진 파일을 모두 *.cpp로 바꾸고 싶을 때.

DOS라면
move *.c *.cpp

Linux라면

vi mvall.sh  (mvall.sh라는 쉘 스크립트를 짜보자.)
------------------
#!/bin/sh
for f in *.$1
do
    mv $f ${f%.$1}.$2
done
------------------
chmod 700 mvall.sh
mvall c cpp

Freebsd에서 POP3 설정하기

2003. 4. 9. 23:18 | Posted by 속눈썹맨
Freebsd의 port 시스템을 이용하여 설치만 해주면 그냥 사용할 수 있다.

/usr/ports/mail/popa3d를 설치한다.

cd /usr/ports/mail/popa3d
make install clean

===========================================================================
1. Edit your /etc/inetd.conf to use popa3d. The line should look like this:

pop3    stream  tcp     nowait  root    /usr/local/libexec/popa3d   popa3d

Note: when started via an inetd clone, the logging of connections is left
up to that inetd clone or TCP wrappers.

2. Restart inetd by sending it a SIGHUP:

# killall -HUP inetd


@@ pop3의 port 번호 : 110번

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mail-using.html#MAIL-RECEIVE

CVS 메뉴얼(Concurrency versions System Manual)

2003. 4. 9. 23:16 | Posted by 속눈썹맨
http://www.cvshome.org/
http://kldp.org/KoreanDoc/html/CVS_Tutorial-KLDP/index.html
http://wiki.kldp.org/wiki.php/DocbookSgml/CVS-KLDP
http://wiki.kldp.org/wiki.php/CVS/GuideLine

CVS repository에 등록할 module 만들기 : cvs import
$ cd module 안으로 들어감
$ cvs import 모듈명 DIST명(적당히) Branch명(적당히)

repository에서 처음으로 source 가져오기 : cvs checkout [module명] (cvs co)
(pserver를 이용한다면) 먼저 export CVSROOT=:pserver:ilashman@host명:/cvsroot(cvs repository)
(ext)를 이용한다면 먼저 export CVSROOT=:ext:ilashman@host명:/cvsroot(cvs repository)
                                  export CVS_RSH=ssh

repository에 자료 올리기 : cvs commit 파일명

repository에서 변경된 source 받아오기 : cvs update 파일명 (파일명을 생략하면 모든 파일)

sticky tag가 달려있을 때. sticky tag를 무시하고 head에 있는 것을 받아오는 방법. : cvs update -A

repository에 새 파일 등록 하기 : cvs add 파일명  (그 다음 'cvs commit 파일명' 을 실행)

repository에 있는 파일 지우기 : 우선 source directory에서 그 파일을 지운다.
                                            cvs remove 파일명 (그 다음 'cvs commit 파일명' 을 실행)

repository에 있는 디렉토리 지우기 : 불가능하다. 대신 -P 옵션을 쓰면 빈 디렉토리는 안 받아온다.

tag 달기 : cvs rtag [tag명] [module명]
현재 디렉토리의 내용으로 tag 달기 : cvs tag [tag명]

tag 달려 있는 revision 받아오기 : cvs co -r [tag명] [module명]

log 확인하기 : cvs log
status : cvs status (sticky tag, release tag등을 확인할 수 있다.)
---------------------------------------------------
CVS Repository 만들기

groupadd cvs

/etc/group 파일을 편집하여
---------------------------
cvs:*:510:minskim,sehkone         # cvs에 접근할 수 있는 계정들을 group에 추가
---------------------------
이제 다음 명령으로 디렉토리의 권한을 열어 주면 된다.
chgrp -R cvs /home/cvs
chmod ug+rwx /home/cvs /home/cvs/CVSROOT
이후로는 cvs 그룹에 속한 개발자는 이 저장소를 마음대로 이용할 수 있다.

.2.2. 계정이 없는 경우
개발자들이 씨스템에 계정을 갖고 있지 않다면 CVS의 암호 인증 방식을 이용해서 CVS 써버에 접속할 수 있다. 개발자 각각은 CVS 계정(씨스템 계정과는 다르다)을 부여받게 되며, inetd를 통해 정해진 포트로 CVS를 사용하게 된다. 설정은 조금 복잡하지만 개발자들에게 일일이 씨스템 계정을 발급할 필요가 없으므로 씨스템 관리 측면에서는 보다 낳은 방법이라 할 수 있다. 특히 불특정 다수에 대해 CVS로 파일을 받아갈 수 있도록 해야 하는 공개 프로젝트의 경우 대부분이 이 방식을 채택하고 있다. 아파치나 모질라 같은 경우가 대표적인 예가 될 것이다. 반면 개발자들이 씨스템 계정을 갖고 있는 경우라도 ssh이나 rsh을 통한 접속을 허용하고 싶지 않을 경우는 별도의 CVS 계정을 만들어 암호 인증 방식을 이용할 수도 있다.

그러면 inetd로 CVS 접속을 허용하는 방법을 알아보자. 우선 CVS가 사용하는 포트 번호(2401번)를 등록해야 한다. /etc/services에 다음과 같은 줄이 있는지 살펴 보자. cvspserver      2401/tcp

만일 없다면 위의 내용을 추가하면 된다. 다음은 실제로 해당 포트를 열어줄 차례인데, 이는 씨스템이 inetd를 쓰고 있는지, xinetd를 쓰고 있는지에 따라 설정 방법이 다르다. 먼저 inetd의 경우는 /etc/inetd.conf에 다음 내용을 추가한다. cvspserver stream tcp nowait root /usr/bin/cvs cvs
   --allow-root=/home/cvs pserver

편의상 두 줄로 나타냈으나, 실제 파일에는 한 줄로 들어가야 한다. 만약 tcpd를 사용한다면 위의 줄 대신 다음을 추가한다. cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/bin/cvs
   --allow-root=/home/cvs pserver

물론 /usr/bin/cvs나 /usr/sbin/tcpd는 실제로 이들 명령이 위치하는 절대 경로로 써 주어야 한다.

새로운 설정 내용을 반영하려면 inetd를 재시작하여야 한다. inetd의 프로세스 ID가 357이라면 다음과 같이 HUP 신호를 보내면 된다. # kill -HUP 357



xinetd를 쓴다면 /etc/xinetd.d에 cvspserver란 이름으로 별도의 파일을 만들어야 한다. 파일 내용은 다음과 같다. # default: on
# description: The cvspsever serves CVS Passowrd Server sessions; it uses \
#          unencrypted username/password pairs for authentication.
service cvspserver
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/cvs
        server_args     = --allow-root=/home/cvs pserver
        log_on_failure  += USERID
}

inetd의 경우와 마찬가지로 /usr/bin/cvs는 cvs 명령의 절대 경로, /home/cvs는 저장소의 위치로 바꿔 준다.

xinetd를 재시작하는 방법도 inetd와 동일하다. 우선 xinetd의 프로세스 ID(357이라 가정한다)를 알아낸 후, HUP 신호를 보내자. # kill -HUP 357



이제 접속 포트는 열어두었으니, 개발자들에게 CVS 계정을 발급하는 일만 남았다. 암호 인증 방식을 이용하는 경우, 계정과 암호는 저장소의 CVSROOT 디렉토리 밑에 passwd란 이름의 파일에 저장된다. 여기에서는 /home/cvs/CVSROOT/passwd가 될 것이다. 하지만 이 파일은 처음에는 존재하지 않는다. 그러므로 직접 만들어주어야 하는데, 먼저 예를 하나 보도록 하자. minskim:YxNPCzaM/WCp2:cvs
sehkone:Yw2najHG5cLfo:cvs

각 줄은 한 사용자에 대한 정보를 담고 있다. 줄은 ':'을 경계로 다시 세 부분으로 나뉘는데 첫 부분이 사용자의 CVS 계정 이름(씨스템 계정과는 무관하다), 그 다음은 암호, 그리고 마지막은 씨스템 계정 이름이다. 즉, 이 파일에는 현재 minskim과 sehkone이라는 두 사용자가 등록되어 있고, 이들이 CVS 이용시에는 cvs란 씨스템 계정의 권한을 갖는 것이다. 암호부분은 유닉스 씨스템에서 전통적으로 사용되는 crypt 함수를 이용하여 변환된 값이 저장되어 있다. 새로운 사용자를 추가하려면 같은 형식으로 한 줄을 추가해 주면 된다.

마지막으로 필요한 것은 cvs란 씨스템 계정에 저장소에 대한 읽기 및 쓰기 권한을 주는 것이다. 3.2.1절과 일관성을 유지하려면 cvs란 그룹을 만들고 cvs란 사용자를 cvs 그룹에 추가한 후, cvs 그룹에 대한 권한을 같은 방법으로 열어주면 된다. # chgrp -R cvs /home/cvs
# chmod ug+rwx /home/cvs /home/cvs/CVSROOT


-------------------------------------------------
CVS에 실행파일(*.pl, *.sh)을 commit할 때 주의할 점.

실행 permission (execution permission)을 주지 않고 commit하면 update와 check out시에도 실행 permission이 없다. 따라서 처음에 commit하기 전에 실행권한을 준다.
(chmod u+x 실행 파일)
그렇지 못했다면 직접 repository로 가서 실행권한을 줘야만한다.
처음 commit 이후에는 permission을 바뀌어도 repository에 반영이 안된다.;;

-------------------------------------------------
vendor tag은 third party의 소스를 가져와 자신의 CVS에 올려 놓고 사용하는 경우에 유용합니다.

third party는 third party 대로 개발을 할테고, 자신도 역시 소스를 수정해서 사용할텐데요.

나중에 third party가 프로그램을 버젼업 하면 버젼업 된 프로그램에 다시 수정한 내용을 반영해야 하는

난감한 상황이 생겨 버립니다. 예를 들어 우리가 PHP4 소스를 가져다 어느 부분을 수정해서 사용하고 있었는데

PHP5가 나와버렸다.. 면. 버젼업은 해야 겠고, 수정한 부분도 반영해야 겠지요.


이럴 때 vendor tag를 사용하면 유용합니다.


사용 방법을 순서대로 살펴보겠습니다.

postfix 1.x를 가져와서 수정한 뒤, postfix 2.x로 업그레이드 하려 한 다 가정하겠습니다.

1. postfix 1.x를 CVS에 import 하기

아래와 같이 import 합니다.

cvs import -m "postfix version 1.x" postfix/ POSTFIX POSTFIX_1_X


2. import된 postfix를 마음대로 수정하고, 사용합니다.


3. postfix1.x를 수정하며 사용하다 보니 postfix 2.0이 나왔습니다.

1.x대에서 수정된 소스를 2.0에 반영하려고 할 때 다음과 같이 합니다.

일단 2.0 소스를 import 합니다.


cvs import -m "postfix version 2.0" postfix/ POSTFIX POSTFIX_2_0

1의 명령과 달라진 건 release tag 밖에 없습니다.

import를 하면 cvs가 1.x 버젼에서 수정한 부분과 2.0 버젼에 conflict가 발생했다고 경고합니다.
  
4. 아래와 같이 실행합니다.

cvs checkout -jPOSTFIX_1_X -jPOSTFIX_2_0 postfix

그러면 1.x 버젼의 수정본과 2.0 버젼이 merge된 상태로 내려받게 됩니다.

-----------------------
branch 만들기, 이용하기

cvs tag -b branch명
cvs up -r branch명
cvs ci -r branch명 파일명

Merging branch

cvs update -j Branch명1 -j Branch명2 모듈명

http://www.psc.edu/~semke/cvs_branches.html
http://www.kohala.com/start/apue.html

wget http://www.kohala.com/start/apue.tar.Z

실행 예제 파일 다운 받아 컴파일하는 방법
---------------------------------------------------
압축을 풀고, README 파일을 반드시 읽어본다.

00. APUE에 언급되어 있는 FTP 주소를 통해 stevens.advprog.tar.Z를 적절한 자신의 디렉토리(예 : /home/park9n)에 다운 받는다.
01. tar xvfZ stevens.advprog.tar.Z 하면 apue라는 서브디렉토리 아래 압축이 풀린다.
02. apue 디렉토리에 들어가 (리눅스의 경우.) Make.def.svr4를 Make.defines로 카피하고 다음 부분을 편집한다.
    ▒ ...
    ▒ LDFLAGS = /home/ilashman/lib/libmisc.a (예제. libmisc.a가 만들어질 적절한 디렉토리를 선택한다.)
    ▒ ...
    ▒ LIB = /home/ilashman/lib/libmisc.a (예제. LDFLAGS와 동일하게.)

mkdir /home/ilashman/lib/    라이브러리가 들어갈 디렉토리를 미리 만들어 두어야한다.

    ▒ ...
03. (리눅스의 경우.) lib.svr4 디렉토리에 들어가 Makefile을 Makefile.bak로 카피하고 Makefile을 다음과 같이 편집한다.
    ① 'systype.sh'를 './systype.sh'로 수정한다.
    (수정하지 않고 make를 수행하면 현재 디렉토리가 PATH에 등록되어 있지 않은 경우 Error가 발생한다.)
    ② COMM_OBJ = 로 시작되는 오브젝트 화일들의 나열 중에서 strerror.o를 지워준다.
    (strerror.c에 sys_errlist라는 변수가 /usr/include/stdio.h와 중복되게끔 정의되어 있다. 생각해 보니 삭제가 아니라 주석처리가 옳겠다. -_-;;)
04. make 하면 02에서 편집할 때 지정한 디렉토리에 libmisc.a가 만들어 진다.
부록. 테스트하기.
00. apue/file 디렉토리에 들어간다. 이미 APUE에서 보았던 ls1.c와 ourhdr.h가 보일 것이다.
01. cc -c ls1.c 하면 (시스템의 문제가 아닌 이상.) ls1.o가 만들어질 것이다.
02. cc -o ls1 ls1.o [libmisc.a의 위치(예 : ~/lib/libmisc.a)] 하면 ls1이라는 실행화일이 만들어질 것이다.
03. ./ls1 해서 ls1 프로그램을 실행시켜 본다. 아자.

막상 적으면서 생각해 보니 수정해야 할 부분이 많은 것 같습니다. (특히 strerror.o를 지워줬던 문제.)

apue/file 디렉토리의 Makefile을 수정한다. 다음과 같이 만든다.
-------------------------------------------
include ../Make.defines

PROGS = access cdpwd changemod conf devrdev \
        fileflags filetype ftw4 \
        hello hole longpath ls1 mycd \
        seek testerror uidgid umask unlink zap

all:    ${PROGS}

savedid: savedid.o
        $(LINK.c) -o savedid savedid.o $(LDLIBS) $(S5LIB)

clean:
    rm -f ${PROGS} ${TEMPFILES} file.hole

Perl 메뉴얼

2003. 4. 9. 23:12 | Posted by 속눈썹맨
http://www.cpan.org/
http://search.cpan.org/
http://www.perl.com/
http://www.perldoc.com/

E-book

Advanced Perl Programming
Network Programming With Perl
Programming Perl
Using Perl For Web Programming
Teach Yourself CGI Programming With Perl 5 In a Week
Teach Yourself Perl 5 in 21 days
The Perl CD Bookshelf
Perl 5 By Example
Perl % Unleashed
Perl Programmer's Reference Guide
Perl Quick Reference
Web Programming With Perl 5


Learning Perl
Perl Cookbook


Unix shell에서 쓸 수 있는 명령들
# man perl
# perldoc -f 함수명

------------
perl의 기본 문법
숫자 비교 : > < == >= <=
문자 비교 : eq, gt, lt, ge, le, ne
precompiled regular expression : $변수 = qr/정규식/
$ : Scalar
@ : Array
% : hash(associative array)
\ : reference
perl은 2차원 이상의 array를 지원하지 않는 다. 따라서
2차원 배열을 쓰고 싶다면 reference(\)를 써야 한다.

C의 else if = Perl의 elsif
C의 continue; = Perl의 next

PHP의 vardump = Perl의 use Data::Dumper;  print Dumper(변수명);

--------------------------
http://alkaid.snu.ac.kr/~terzeron/computer/perl.html

RRDTOOL+PHP+APACHE(HTTP) 연동해서 깔기(install)

2003. 4. 9. 23:11 | Posted by 속눈썹맨
RRD : RoundRobin Database( http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ )
http://www.rrdtool.com/

http://www.apache.org/
http://httpd.apache.org/
http://httpd.apache.org/docs/
-------------------------------------
/home/ilashman/local/src 디렉토리에
apache_1.3.27.tar.gz을 준비한다.
php-4.3.2.tar.gz을 준비한다.
rrdtool-1.0.43.tar.gz을 준비한다.

cd /home/ilashman/local/src
tar xzvf apache_1.3.27.tar.gz
tar xzvf php-4.3.2.tar.gz
tar xzvf rrdtool-1.0.43.tar.gz
cd rrdtool-1.0.43
./configure --prefix=/home/ilashman/local/rrdtool-1.0.43 --enable-shared

Makefile의 402번 줄에 에러가 나므로 주석처리한다. (perl-shared/blib/arch/auto/RRDs/RRDs.bundle 라는 파일이 존재하지 않는 다.)
---------------------------------
402    [ -f perl-shared/blib/arch/auto/RRDs/RRDs.bundle ] && $(INSTALL) -m 755 perl-shared/blib/arch/auto/RRDs/RRDs.bundle $(DESTDIR)$(prefix)/lib/perl/auto/RRDs
----------------------------------
make
make install
cd /home/ilashman/local
ln -s rrdtool-1.0.43 rrdtool

cd /home/ilashman/local/src/apache_1.3.27
./configure
cd /home/ilashman/local/src/php-4.3.2
cp -r /home/ilashman/local/src/rrd_tool-1.0.43/contrib/php4 ext/rrdtool

./buildconf
(여기서 경고 메시지나 나오지만 무시한다.)
./configure --prefix=/home/ilashman/local/php-4.3.2 --with-apache=../apache_1.3.27 --with-rrdtool=/home/ilashman/local/rrdtool-1.0.43
make
make install
cd /home/ilahsman/local
ln -s php-4.3.2 php
cd /home/ilashman/local/src/apache_1.3.27
./configure --prefix=/home/ilashman/local/apache_1.3.27 --activate-module=src/modules/php4/libphp4.a
make
make install

cd /home/ilashman/local
ln -s apache_1.3.27 apache


vi /home/ilashman/local/apache_1.3.27/conf/httpd.conf
363번째 줄의
    362 <IfModule mod_dir.c>
    363     DirectoryIndex index.html
    364 </IfModule>

    362 <IfModule mod_dir.c>
    363     DirectoryIndex index.html index.php
    364 </IfModule>
로 변경한다.

807번째 줄의
    807     #AddHandler type-map var
    808
    809 </IfModule>

    807     #AddHandler type-map var
    808
    809     AddType application/x-httpd-php .php .php4 .php3 .html
    810     AddType application/x-httpd-php-source .phps
    811
    812 </IfModule>
로 변경한다.

apache daemon 띄우는 방법
/home/ilashman/local/apache_1.3.27/bin/apachectl start

apache daemon 재시작
/home/ilashman/local/apache_1.3.27/bin/apachectl restart

apache daemon 종료
/home/ilashman/local/apache_1.3.27/bin/apachectl stop

/home/ilashman/local/apache_1.3.27/htdocs/index.html 파일을 만들면 된다.

/home/ilashman/local/public_html 에 index.php 파일을 만들어서. 아래 코드로 test한다.
----------
<?
    phpinfo();
?>
----------
http://sonata.neowiz.com:8080/~ilashman



Tip 1. Apache Status 확인하는 방법
conf/httpd.conf 파일을 열고 아랫 부분을 다음과 같이 수정한다.
-------------------------
ExtendedStatus On       # 주석을 제거한다.
-------------------------
<Location /server-status>
    SetHandler server-status
    Order deny,allow
#    Deny from all
    Allow from all
</Location>
-------------------------
apache를 재시작하고 IE에서 http://서버명/server-status 하면 볼 수 있다.


------

apache의 설정파일인 httpd.conf의 directive에 대한 document
-> http://httpd.apache.org/docs/mod/directives.html
http://hanterm-xf.kldp.net/
http://kldp.net/projects/hanterm-xf/


redhat linux 8.0에서 설치한 hanterm이 root 계정 이외의 계정으로 실행하면 실행 후에 곧바로 죽어버릴때.(창이 열리자 마자 다시 닫혀버린다.)

rpm -qa|grep hanterm (현재 깔려있는 rpm 버젼의 한텀의 정확한 이름을 알아낸다.)
rpm -e hanterm블라블라블라 (기존의 한텀을 지운다.)
http://www.kr.freebsd.org/~hwang/hanterm/ 에서

http://www.kr.freebsd.org/~hwang/hanterm/hanterm-xf-p18.tar.gz 을 받는 다.

tar xzvf hanterm-xf-p18.tar.gz
cd hanterm-xf-p18
su -
./configure --with-utempter
make
make install
make clean

@@ utempter라는 것과 hanterm사이의 문제로써 hanterm-xf-p18이상 버젼을 --witdh-utempter 옵션을 주어 컴파일하여 깔면 해결 된다.

꽁수로는 hanterm실행파일에 setuid bit를 준다는 의견도 있었다. 이 방법은 내 생각에 권장할 방법이 아닌 듯 싶다.

cf) utempter는 permission과 관련된 프로그램이다.

한텀의 바탕 화면을 검정색으로 하고 글씨를 흰색으로 한다. 그리고 폰트를 찾지 못할 때도 대부분 고딕폰트는 가지고 있다. 다음과 같은 명령으로 실행시켜준다.
hanterm -hfn *gothic* -bg black -fg white

배탈이 났을 때, 화장실에 자주 갈 때.

2003. 4. 7. 22:36 | Posted by 속눈썹맨
하루 1잔 생강차를 마신다.
부글부글 끓던 속이 약간 기분 이상하게 따뜻해진다.(거기가 단전 부근인가?)
아픈 것 보다는 낫지만 약간 특이한 느낌. 빈 속에 먹은 소화제와 비슷하다.
마치 무협소설 주인공처럼 명약을 먹고 빨리 운기조식을 해서 기를 순환시켜야 될 것만 같다는 생각이 들것이다.
두 잔 이상은 몸의 다른 곳에 약간 안 좋다고 하고 맛없어서 그렇게 먹을 사람도 거의 없다.
(주화입마에 걸린다고 보면 된다.)

굳이 생강을 사다가 갈고 끓이고 해서 마실 필요는 없고 슈퍼마켓에 가면 먼지 쌓인 구석에 박혀있는 생강차를 볼 수 있다.

http://kr.encycl.yahoo.com/final.html?id=88163