블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

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
가장 유명하고 뛰어난 것으로 알려진 검색엔진은 구글(google)이다.
http://www.google.com/    http://www.google.co.kr/
웹 문서 중 텍스트 파일 뿐만 아니라. doc, ppt 파일도 열어서 내용을 검색해 준다.
뉴스 그룹을 검색하면 누군가가 질문하고 대답해둔 (FAQ) 등을 직접 검색해 볼 수도 있다.
google은 link를 이용하여 ranking을 매기는 방식을 사용하고 있다.

국내에서는 네이버와 empas가 유명하다.
http://www.naver.com/   http://www.empas.com/

google과 naver는 툴바(toolbar)를 지원해서 설치하면 Internet Explorer(IE)의 주소창 같은 것이 추가된다. 주소창과 같은 역할을 하므로 기존의 주소창은 지워도 된다. 검색엔진이나 영어사전, 백과사전등을 자동으로 불러서 좋다.

naver는 지식인(지식-in)이라는 서비스를 통해 잡다한 지식들을 다른 인터넷 사용자들과 공유할 수 있는 백과사전 같은 것도 자동으로 찾는 다.

또한 naver -> 포토앨범(photo album)에 가면 사진을 매우 많이 볼 수 있다. (http://imagebingo.naver.com/)

vivisimo
http://www.vivisimo.co.kr/

SSH (Secure shell) 사용하기

2003. 4. 10. 00:05 | Posted by 속눈썹맨
telnet은 보안에 취약하므로 요즘 FreeBSD, Linux 등 대부분의 곳에서 SSH를 대신 사용한다.
사용법 자체는 telnet과 크게 다르지 않다.

ssh의 포트 번호 : 22번
ssh client - Xmanager(ssh로 패치된 버젼), SSH Secure shell client, secure token.

-----------------------------
인증키 사용하여 암호 없이 접속하기

[ilashman@partita ilashman]$ ssh-keygen -t dsa                              (키 생성하기)

Generating public/private dsa key pair.
Enter file in which to save the key (/home/ilashman/.ssh/id_dsa):     (그냥 엔터)
Enter passphrase (empty for no passphrase):                                   (그냥 엔터)
Enter same passphrase again:                                                        (그냥 엔터)
Your identification has been saved in /home/ilashman/.ssh/id_dsa.
Your public key has been saved in /home/ilashman/.ssh/id_dsa.pub.
The key fingerprint is:
(블라블라블라. 나의 키가 적혀져 나온다.) ilashman@partita.neowiz.com

[ilashman@partita ilashman]$ eval $(ssh-agent)                                              (인증키 메모리에 상주 시키기)


이제 .ssh/id_dsa.pub 파일의 내용을 다른 server의 .ssh/authorized_keys2  파일에 적어 넣으면 된다.
그리고 각 서버의 .ssh 디렉토리의 permission은 700으로 한다.
(키 복사하기)

A서버에서 ssh-keygen을 하여 B 서버의 authorized_keys2 에 적어넣으면
이제 부터는 A서버에서 B서버로 암호 없이 접근할 수 있다.

HTML과 CSS,WWW(World Wide Web),PHP 메뉴얼

2003. 4. 10. 00:02 | Posted by 속눈썹맨
http://www.w3.org/  -> HTML -> HTML 4.0
http://www.w3schools.com/  -> Web Building -> Web W3c ->Search W3Schools
---
PHP 메뉴얼 들.

http://www.php.net/
http://phpnuke.org/
http://www.zend.com/
http://www.phpschool.com/
http://www.nzeo.com/
---
CSS 예제 파일
BODY { background-color: #ffffff; font-family: arial; font-size: 9pt }
A { text-decoration: underline }
A:link { color: #0000CC }
A:visited { color: #0000CC }
A:active { color: #0000CC }

A.tab_sel { text-decoration: none }
A.tab_sel:link { color: #FFFFFF }
A.tab_sel:visited { color: #FFFFFF }
A.tab_sel:active { color: #FFFFFF }

A.tab{ text-decoration: none }
A.tab:link { color: #0000CC }
A.tab:visited { color: #0000CC }
A.tab:active { color: #0000CC }

TD { color: #0000CC; font-size: 9pt; font-family: tahoma }
.normal { font-size: 8pt; text-align: center; background-color: #FFFFFF }
.normalb { font-size: 8pt; text-align: center; background-color: #CCFFFF }
//.warn { font-size: 8pt; text-align: center; background-color: #FF00CC }
.warn { font-size: 8pt; text-align: center; background-color: #FF0000 }
.crit { font-size: 8pt; text-align: center; background-color: #FF0000 }
.fail { font-size: 8pt; text-align: center; background-color: #4CB24C }
.down { font-size: 8pt; text-align: center; background-color: #D9D9D9 }

TD.sum_sv { color: black; width: 80px; height: 88px; font-weight: bold; font-size: 9pt; text-align: center; border: 1px solid #333333; background-color: #FFFF66 }
TD.sum_in { color: black; width: 80px; height: 88px; font-weight: bold; font-size: 9pt; text-align: center; border: 1px solid #333333; background-color: #F2FEF6 }
TD.sum_tcol { color: black; height: 48px; font-weight: bold; font-size: 9pt; text-align: center; border-top: 1px solid #333333; border-right: 1px solid #333333; background-color: #FFFF66 }
TD.sum_tcol2 { color: black; height: 24px; font-weight: bold; font-size: 9pt; text-align: center; border-top: 1px solid #333333; border-right: 1px solid #333333; background-color: #FFFF66 }
TD.sum_tcol3 { color: black; height: 24px; font-weight: bold; font-size: 8pt; text-align: center; border-top: 1px solid #999999; border-right: 1px solid #999999; background-color: #FFFF66 }
TD.sum_tcol3_end { color: black; height: 24px; font-weight: bold; font-size: 8pt; text-align: center; border-top: 1px solid #999999; border-right: 1px solid #333333; background-color: #FFFF66 }
TD.sum_scol { color: black; width: 50px; font-weight: bold; font-size: 8pt; height: 40px; text-align: center; border-top: 1px solid #999999; border-right: 1px solid #999999; border-bottom: 1px solid #333333; background-color: #CCFF66 }
TD.sum_scol_end { color: black; width: 50px; font-weight: bold; font-size: 8pt; height: 40px; text-align: center; border-top: 1px solid #999999; border-right: 1px solid #333333; border-bottom: 1px solid #333333; background-color: #CCFF66 }

TD.tab { height: 20px; font-size: 8pt; text-align: center; border-bottom: 1px solid #3366CC; background-color: #EFEFEF }
TD.tab_sel { color: white; height: 20px; font-size: 8pt; font-weight: bold; text-align: center; border-bottom: 1px solid #3366CC; background-color: #3366CC }
-----
CSS 파일에서 정의한 것들을 사용하는 방법.
1. html 파일을 하나 만든다.
2. <LINK href="css파일명과 확장자" rel="stylesheet" type="text/css">라는 줄을 삽입한다.
3. <TD class=tab></TD> 같은 식으로 tag를 사용하면 된다.

Extreme Programming (+Pair programming)`

2003. 4. 9. 23:50 | Posted by 속눈썹맨
http://www.extremeprogramming.org/
http://www.xprogramming.com/

총 개발시간 = 개발장애요인 x 순수개발시간

순수 개발 시간 = 생각+소스코드 타이핑 + 컴파일 + 디버깅 + 테스팅

개발 장애요인 = 좌절감으로 말미암은 정신적 공황 + 주식투자,게임,인터넷 서핑,mp3 등.. + 잡일 + 기타

Pair Programming : 하나의 소스코드를 두명이서 번갈아
가며 프로그래밍하고 지켜보면서 개발하는 방식
버그를 빨리 잡을 수 있고 서로 배울 수 있다.(feedback)
드라이버 : 현재 프로그램을 타이밍하는 사람
파트너 : 프로그램을 옆에서 지켜보는 사람.
http://www.pairprogramming.com/


Refactoring : 같은 일을 하는 코드라도 좀 더 효율적이고
              깔끔하게 바꿔주는 일.
http://www.refactoring.com/

Test First Programming : 테스트 코드를 먼저 작성하고 그 테스트 코드를 통과할 만한 수준의 프로그램을 만든다.
Junit같은 별도의 테스트 라이브러리를 이용하여 Test하는 방법이 있다. http://www.junit.org/

기록과 계획 : 일기를 쓰듯이 개발 과정을 기록해 두면 자신의 능력과 가능성을 체크할 수 있다.

체크리스트 : 프로그래머마다 각자 자주 범하는 오류가 있다.
자신이 자주 저지르는 버그의 유형을 정리해 둔다.

Xmanager 사용하기

2003. 4. 9. 23:44 | Posted by 속눈썹맨
http://netsarang.co.kr/ 에서 다운로드 메뉴를 찾아서 받는 다.
(http://netsarang.co.kr/download/download.html)

한글 폰트에 문제가 있을 때는 Xmanager 추가 폰트를 설치한다.
solaris.exe
(4,443,912) Solaris CDE 폰트 (윈도우 95, NT 4.0 이상 환경)
hp.exe
(5,109,640) HP 폰트  
linux.exe
(5,359,744) Linux 한글 폰트  
hanterm.exe
(2,976,272) 한텀 폰트  
baekmuk.exe
(10,191,912) 백묵 폰트  
mentor.exe
(2,310,824) Mentor 폰트
---
SSH를 지원하지 않을 때는 ssh를 지원하는 소프트웨어 팩(?)을 추가로 설치해야한다.
---
Xmanager를 실행하기 위해서는
윈도우의 시작메뉴 -> 프로그램 -> Xmanager 1.3.9 -> 리모콘
고급(E) 버튼 클릭 -> 프로토콜 -> 프로토콜버젼 -> 자동 선택, SSH2 선호 check
실행명령 : /usr/bin/X11/hanterm -ls   (chaconne.neowiz.com, atadmin.neowiz.com의 경우-redhat linux)
실행명령 : hanterm -bg black -fg white -ls -display $DISPLAY   (adam.kaist.ac.kr의 경우-solaris)
실행명령 : /usr/bin/X11/xterm -ls -display $DISPLAY  (kapp03.kaist.ac.kr의 경우 - Freebsd)
한글화
http://kldp.org/~mindgame/unix/hangul/
http://kldp.org/~eunjea/redhat61.php3

~/.bash_profile 이나 /etc/profile
LANG=ko_KR.eucKR
LC_ALL=ko_KR.eucKR
export LANG LC_ALL

--------------------------------------------
linux 폰트 목록 확인하는 법, 한텀 한글폰트

cd /usr/share/fonts

각 subdirectory의 fonts.dir 파일을 vi로 열어본다.

xlsfonts 명령을 이용

ex) hanterm -hfn *gothic*
------------------------------------------
.Xdefaults 파일 내용
------------------------------------------
!
! 한텀의 리소스를 정의해주는 파일입니다.
! 각줄의 맨 앞자가 '!'이면 그 줄을 무시됩니다.
! 그 줄의 맨 끝자가 '\'이면 다음 줄은 현재 줄에 이어진것임을 의미합니다.
! 리눅스상에서는 이 파일은 /usr/X11R6/lib/X11/app-defaults/Hanterm
! (sunos4.x나 solaris를 쓰신다면 /usr/openwin/lib/X11/app-defaults/Hanterm)
! 이라는 이름으로 복사되어있어야하고 만약 개인적인 설정을
! 원하신다면 아래에서 적절한 부분을 개개인의 홈디렉토리밑에있는
! .Xdefaults파일이나 .Xresources 파일에 첨가하시면 됩니다.
! 만약 개인 리소스파일디렉토리를 따로 가지고 싶으시다면
! XUSERFILESEARCHPATH나 XAPPLESDIR을 자신의 리소스 파일들이 보관되어
! 디렉토리로 설정해주시면 hanterm등이 이를 참조하게 만들수있습니다.
! 자세한 사항을 X 매뉴월이나 참고서적을 참고하십시요.
! 기본적으로 이 한텀은 XFree에서 나온 xterm을 기반으로하였기때문에
! 그곳의 xterm에서 사용하는 거의 모든 리소스 설정을 지원합니다. 거기에
! 대한 추가 정보는 xterm의 매뉴월을 참조하십시요.
! 황 치덕(cdhwang@sr.hei.co.kr)
!
Hanterm*iconName: 한텀
Hanterm*title: 한텀
Hanterm*hangulKeyboard: 2
Hanterm*hangulFont: *-gulim*-medium-r-normal--16-*-*-*-*-*-ksc5601.1987-0
!Hanterm*hangulFont: -daewoo-mincho-medium-r-normal--16-120-100-100-c-160-ksc5601.1987-0
Hanterm*Font:-*-*-medium-r-normal--16-*-*-*-*-*-iso8859-1

!메뉴에서 한글을 보기위해서는 아래가 반드시 필요합니다.
!또한 hanterm실행시 LANG변수가 ko로 설정되어있어야합니다.
Hanterm*international: True

Hanterm*eightBitInput: False

!한텀에서 키맵을 정의해주는 부분입니다.
!다른 여러 callback들을 아시고싶으시면 source중의 charproc.c파일을
!들여다보시기바랍니다. 거기에 기본 키맵이 정의되어있읍니다.
!만약 기존 한텀의 키맵을 원하시면 아랫부분들의 코멘트를 없애주시면 됩니다.
!Hanterm*VT100.Translations: #override \n\
!       !Ctrl                   <Btn4Down>:     scroll-back(1,halfpage) \n\
!       !Lock Ctrl              <Btn4Down>:     scroll-back(1,halfpage) \n\
!       !Lock @Num_Lock Ctrl    <Btn4Down>:     scroll-back(1,halfpage) \n\
!       ! @Num_Lock Ctrl        <Btn4Down>:     scroll-back(1,halfpage) \n\
!                               <Btn4Down>:     scroll-back(5,line)     \n\
!       !Ctrl                   <Btn5Down>:     scroll-forw(1,halfpage) \n\
!       !Lock Ctrl              <Btn5Down>:     scroll-forw(1,halfpage) \n\
!       !Lock @Num_Lock Ctrl    <Btn5Down>:     scroll-forw(1,halfpage) \n\
!       ! @Num_Lock Ctrl        <Btn5Down>:     scroll-forw(1,halfpage) \n\
!                               <Btn5Down>:     scroll-forw(5,line)     \n\
!       <KeyPress> F3:                          toggle-chat()           \n\
!       <KeyPress> F9:                          hanja-input()           \n\
!       <KeyPress> F7:                          code-input()            \n\
!       <KeyPress> F2:                          change-code()           \n\
!       ~Meta <KeyPress> BackSpace:             string(0x7F)            \n\
!       ~Shift <KeyPress> Delete:               string(0x04)            \n\
!       c  <KeyPress> Tab:                      string(0x1b) string("[\t")      \n\
!       Meta <KeyPress> BackSpace:              string(0x1b) string(0x7F)       \n\

Hanterm*VT100.Translations: #override \
        ~Ctrl ~Shift Meta <KeyPress> c:         toggle-chat()   \n\
        Ctrl ~Shift ~Meta <KeyPress> F3:        toggle-chat()   \n\
        Ctrl ~Shift ~Meta <KeyPress> F9:        hanja-input()   \n\
        Ctrl ~Shift ~Meta <KeyPress> space:     hanja-input()   \n\
        Ctrl ~Shift ~Meta <KeyPress> F10:       code-input()    \n\
        Ctrl ~Shift ~Meta <KeyPress> F11:       change-code()   \n\
        ~Ctrl Shift ~Meta <KeyPress> space:     toggle-hangul() \n\
        <KeyPress> Hangul:                      toggle-hangul() \n\
        <KeyPress> Hangul_Hanja:                hanja-input()   \n\

!This can be useful if you have an IntelliMouse. It maps the button
!event generated by the wheel
Hanterm*VT100*translations: #override \n\
        !Ctrl                   <Btn4Down>:     scroll-back(1,halfpage) \n\
        !Lock Ctrl              <Btn4Down>:     scroll-back(1,halfpage) \n\
        !Lock @Num_Lock Ctrl    <Btn4Down>:     scroll-back(1,halfpage) \n\
        ! @Num_Lock Ctrl        <Btn4Down>:     scroll-back(1,halfpage) \n\
                                <Btn4Down>:     scroll-back(5,line)     \n\
        !Ctrl                   <Btn5Down>:     scroll-forw(1,halfpage) \n\
        !Lock Ctrl              <Btn5Down>:     scroll-forw(1,halfpage) \n\
        !Lock @Num_Lock Ctrl    <Btn5Down>:     scroll-forw(1,halfpage) \n\
        ! @Num_Lock Ctrl        <Btn5Down>:     scroll-forw(1,halfpage) \n\
                                <Btn5Down>:     scroll-forw(5,line)

!이정균님에 의한 scroll patch를 한텀시작시 작동시킬지를 결정해줍니다.
!실행도중변경은 ctrl + mouse2에서 뜨는 메뉴에서 하십시요.
!설정되어있은 경우 기본값은 거짓입니다.
Hanterm*nowChatScroll: True

! Status
!Hanterm*statusHangulLabel: [한글]
!Hanterm*statusEnglishLabel: [영어]
!Hanterm*statusWansungLabel: [완성]
!Hanterm*statusJohabLabel: [조합]
!Hanterm*statusSebyolLabel: [세벌식]
!Hanterm*statusDubyolLabel: [두벌식]

!맨 아랫줄에서 세벌식,두벌식표시를 없핼려면 아래줄에서 '!'을 없앱니다.
!명령행에서는 -nsk을 입력하시면 이 효과를 었을수있습니다.
!Hanterm*noStatusKbd: true
!맨 아랫줄에서 완성형,조합형표시를 없앨려면 아래줄에서 '!'을 없앱니다.
!명령행에서는 -nsc을 입력하시면 이 효과를 었을수있습니다.
!Hanterm*noStatusCode: true

!한글모드에서 esc 키가 들어왔을때 영문모드로 자동전환할건지를 정해줍니다.
!기본값은 true
Hanterm*escHangulToggle: true

!한영폰트의 descent가 서로 다를때 이를 그대로 출력할건지 아니면
!한글폰트를 이동시켜서 서로 맨 아랫줄에 맞출건지를 정해줍니다.
!가령 -schumacher-clean-bold-r-normal--16-160-75-75-c-80-iso8859-1의 경우
! ascent가 12가 descent가 4가 됩니다. 보통 16픽셀의 한글 폰트는 ascent가
! 14, descent가 2가 됩니다. baseline을 맞출 경우 전체 폰트의 높이는
! 14 + 4가 되어 18픽셀이 되어 너비보다 두 픽셀이 커지고
! 맨 아랫줄을 마출 경우 높이는 16이 됩니다.
!아랫줄의 주석을 제거하면 font에서 제공하는 정보를 가지고 그대로
!출력하게됩니다.
!기본값은 false
!Hanterm*keepBaseLine: true

!줄사이의 간격을 정의해줍니다.
!명령행에서는 -lsp옵션 뒤에 숫자를 정의해줄 수 있습니다.
!기본값은 0
!Hanterm*lineSpace: 2

!메뉴에 쓰일 글꼴을 선택합니다.
Hanterm*SimpleMenu*fontSet: -adobe-helvetica-bold-r-*-12-120-*-iso8859-1,-*-kodig-bold-r-*-12-120-*-ksc5601.1987-0,-*-*-medium-r-normal--12-*,*

Hanterm*SimpleMenu*BackingStore: NotUseful
Hanterm*SimpleMenu*menuLabel.vertSpace:         100
Hanterm*SimpleMenu*HorizontalMargins: 16
Hanterm*SimpleMenu*Sme.height:  16

Hanterm*SimpleMenu*Cursor: left_ptr
Hanterm*mainMenu.Label:  선택사항
Hanterm*mainMenu*securekbd*Label:  키보드 보호
Hanterm*mainMenu*allowsends*Label:  SendEvent 허용하기
Hanterm*mainMenu*logging*Label:  로그 파일만들기
Hanterm*mainMenu*redraw*Label:  화면 다시 그리기
Hanterm*mainMenu*suspend*Label:  STOP 시그널 보내기
Hanterm*mainMenu*continue*Label:  CONT 시그널 보내기
Hanterm*mainMenu*interrupt*Label:  INT 시그널 보내기
Hanterm*mainMenu*hangup*Label:  HUP 시그널 보내기
Hanterm*mainMenu*terminate*Label:  TERM 시그널 보내기
Hanterm*mainMenu*kill*Label:  KILL 시그널 보내기
Hanterm*mainMenu*quit*Label:  종료
Hanterm*mainMenu*eightBit*Label: 8-Bit Controls

Hanterm*vtMenu.Label:  VT 선택사항
Hanterm*vtMenu*scrollbar*Label:  화면이동창
Hanterm*vtMenu*jumpscroll*Label:  Jump Scroll 사용
Hanterm*vtMenu*nowchat*Label: 나우 채팅모드
Hanterm*vtMenu*reversevideo*Label:  화면 반전
Hanterm*vtMenu*autowrap*Label:  Enable Auto Wraparound
Hanterm*vtMenu*reversewrap*Label:  Enable Reverse Wraparound
Hanterm*vtMenu*autolinefeed*Label:  자동 Linefeed
Hanterm*vtMenu*appcursor*Label:  Enable Application Cursor Keys
Hanterm*vtMenu*appkeypad*Label:  Enable Application Keypad
Hanterm*vtMenu*scrollkey*Label:  Scroll to Bottom on Key Press
Hanterm*vtMenu*scrollttyoutput*Label:  Scroll to Bottom on Tty Output
Hanterm*vtMenu*allow132*Label:  80/132 컬럼 전환허용
Hanterm*vtMenu*cursesemul*Label:  Curses 효과내기
Hanterm*vtMenu*visualbell*Label:  시각 경고음 사용
Hanterm*vtMenu*marginbell*Label:  마진 경고음 사용
Hanterm*vtMenu*altscreen*Label:  Show Alternate Screen
Hanterm*vtMenu*activeicon*Label: Enable Active Icon
Hanterm*vtMenu*softreset*Label:  Do Soft Reset
Hanterm*vtMenu*hardreset*Label:  Do Full Reset
Hanterm*vtMenu*clearsavedlines*Label:  Reset and Clear Saved Lines
Hanterm*vtMenu*tekshow*Label:  Tek 윈도우 보기
Hanterm*vtMenu*tekmode*Label:  Tek 모드로 전환
Hanterm*vtMenu*vthide*Label:  VT 윈도우 숨김

/* 글꼴 선택 메뉴에서 쓰일 글꼴을 정의합니다. */
Hanterm*fontMenu.Label:  글꼴 선택
Hanterm*fontMenu*fontdefault*Label:     기본 글꼴
Hanterm*fontMenu*font1*Label:   아주 작은 글꼴
Hanterm*fontList1: *-clean-medium-r-normal--10-100-*-c-50-iso8859-1,-*-kodig-medium-r-*-10-*
Hanterm*fontMenu*font2*Label:   작은 글꼴
Hanterm*fontList2: *-clean-medium-r-normal--12-120-*-c-60-iso8859-1,-*-kodig-medium-r-*-12-*
Hanterm*fontMenu*font3*Label:   적당한 크기의 글꼴
Hanterm*fontList3: *-fixed-medium-r-normal--14-*-c-70-iso8859-1,-*-kodig-medium-r-*-14-*
Hanterm*fontMenu*font4*Label:   큰 글꼴
Hanterm*fontList4: *-clean-medium-r-normal--16-160-*-c-80-iso8859-1,-*-kodig-medium-r-*-16-*
Hanterm*fontMenu*font5*Label:   아주 큰 글꼴
Hanterm*fontList5: *-fixed-medium-r-normal--20-200-*-c-100-iso8859-1,-*-kodig-medium-r-*-20-*
Hanterm*fontMenu*font6*Label:   너무나 작은 글꼴
Hanterm*fontList6: nil2,nil2
Hanterm*IconFont:               nil2
Hanterm*fontMenu*fontescape*Label:      Escape Sequence
Hanterm*fontMenu*fontsel*Label: 마우스로 선택된 글꼴


! Enable Colour by default.

Hanterm*VT100*colorMode: on
Hanterm*VT100*dynamicColors: on

! Uncomment this use color for underline attribute
Hanterm*VT100*colorULMode: on
!*VT100*underLine: on

! Uncomment this to use color for the bold attribute
Hanterm*VT100*colorBDMode: on
! 굵은선문자가 주어지지않았을때 글씨를 겹쳐써서 굵은 문자를 나타낼건지를
! 정해줍니다.
! 명령행에서 -nbn옵션을 주면 아래를 off시킨 것과 같은 효과가 나타납니다.
Hanterm*VT100*enBolden: on

!색상을 정의해주는 부분입니다.
!색상을 이름으로 정해줄 수도 있고 각 성분값을 정의해줄수도 있습니다.
!red4와 같은 색의 종류를 알고 싶으시면 showrgb라는 명령을 치면
!색깔의 종류와 이에 해당하는 색상값이 나옵니다.
! #d0d0d0와같은 것은 맨 앞이 빨강색 성분의 크기 그 다음이
! 파란색 성분, 마지막 두자가 녹색성분의 크기입니다.
! 00에서 ff까지 각 성분에 대해 지정해주실수있습니다.
!Hanterm*VT100*color0: black
!Hanterm*VT100*color1: red4
!Hanterm*VT100*color2: green4
!Hanterm*VT100*color3: yellow4
!Hanterm*VT100*color4: blue4
!Hanterm*VT100*color5: magenta4
!Hanterm*VT100*color6: cyan4
!Hanterm*VT100*color7: #d0d0d0
!Hanterm*VT100*color8: gray30
!Hanterm*VT100*color9: #b00000
!Hanterm*VT100*color10: green4
!Hanterm*VT100*color11: yellow4
!Hanterm*VT100*color12: blue4
!Hanterm*VT100*color13: magenta4
!Hanterm*VT100*color14: cyan4
!Hanterm*VT100*color15: #d0d0d0

!다음은 artist@soback.kornet.nm.kr님꼐서 보내주신 VGA기본값입니다.
!이 팔레트를 택하실려면 위 색상값들을 지우시고
!아래에서 코멘트를 없애십시요.
!Hanterm*VT100*color0:  #000000
!Hanterm*VT100*color1:  #B21818
!Hanterm*VT100*color2:  #18B218
!Hanterm*VT100*color3:  #B25418
!Hanterm*VT100*color4:  #1818B2
!Hanterm*VT100*color5:  #B218B2
!Hanterm*VT100*color6:  #18B2B2
!Hanterm*VT100*color7:  #B2B2B2
!Hanterm*VT100*color8:  #686868
!Hanterm*VT100*color9:  #FF5454
!Hanterm*VT100*color10: #54FF54
!Hanterm*VT100*color11: #FFFF54
!Hanterm*VT100*color12: #5454FF
!Hanterm*VT100*color13: #FF54FF
!Hanterm*VT100*color14: #54FFFF
!Hanterm*VT100*color15: #FFFFFF

!다음은 jjack@dreamwiz.com님의 VGA 기본값입니다.
Hanterm*VT100*color0: #000000
Hanterm*VT100*color1: #993333
Hanterm*VT100*color2: #339933
Hanterm*VT100*color3: #999933
Hanterm*VT100*color4: #333399
Hanterm*VT100*color5: #993399
Hanterm*VT100*color6: #339999
Hanterm*VT100*color7: #CCCCCC
Hanterm*VT100*color8: #666666
Hanterm*VT100*color9: #FF9999
Hanterm*VT100*color10: #99FF99
Hanterm*VT100*color11: #FFFF99
Hanterm*VT100*color12: #9999FF
Hanterm*VT100*color13: #FF99FF
Hanterm*VT100*color14: #99FFFF
Hanterm*VT100*color15: #FFFFFF

!굵은 문자를 어떤 색으로 표시할지를 정해줍니다.
Hanterm*VT100*colorBD: #FFFFFF
!밑줄 문자를 어떤 색으로 표시할지를 정해줍니다.
Hanterm*VT100*colorUL: #FFFF99

Hanterm*background: #000000
Hanterm*foreground: #FFFFFF

!커서의 색을 정해줍니다.
Hanterm*vt100.cursorColor:  #FFFF99

!메뉴의 색을 정해줍니다.
Hanterm*SimpleMenu*background:  #CCCCCC
Hanterm*SimpleMenu*foreground:  #000000

! scrollbar setting

!스크롤바를 시작할때 만들것인지를 결정합니다.
Hanterm*ScrollBar: on
!스크롤바를 어느쪽이 놓을건지를 결정합니다.
!on: 오른쪽, off: 왼쪽
Hanterm*rightScrollBar: on

! Xaw3d를 쓰는 경우 스크롤바나 메뉴의 색과 모양을 정해줍니다.
Hanterm*Scrollbar*width: 12
Hanterm*Scrollbar*background: #a0a0c0
Hanterm*shadowWidth: 2
Hanterm*highlightThickness: 0
Hanterm*topShadowContrast: 20
Hanterm*bottomShadowContrash: 55

! misc setting
Hanterm*visualBell:  false
Hanterm*loginShell:  true

Hanterm*saveLines:  2002
Hanterm*scrollTtyOutput:  off
Hanterm*scrollKey:  on
Hanterm*TermName:  xterm-color
--------------------------------------------------

다음 rpm 파일들을 설치한다.
$ rpm -qa|grep font
urw-fonts-2.0-29
XFree86-base-fonts-4.3.0-2
fontconfig-devel-2.1-9
XFree86-ISO8859-15-75dpi-fonts-4.3.0-2
fontconfig-2.1-9
ghostscript-fonts-5.50-9
XFree86-font-utils-4.3.0-2
chkfontpath-1.9.7-1
XFree86-truetype-fonts-4.3.0-2
XFree86-75dpi-fonts-4.3.0-2
XFree86-ISO8859-15-100dpi-fonts-4.3.0-2
ttfonts-ko-1.0.11-26
bitmap-fonts-0.3-2
XFree86-100dpi-fonts-4.3.0-2
ps -auwx
ps -awuxm  ( m 옵션은 process 뿐만 아니라 thread도 보여준다.)
ps -lax
ps -ef
watch -n 1 "ps -o user,pid,cpu,rss,%mem,cmd -C 실행파일명 | grep 계정"
pstree
jobs
top

process 죽이기.

kill -9 PID
kill -9 %번호

Unix System Administration Handbook Third Edition p. 45~59.


ilashman 계정으로 돌리는 process 번호 모두 알아내기
$ ps awux |grep '^ilashman' | awk '{ print $2 }'

$ echo `ps awux |grep '^tms' | awk '{ print $2 }'`


man proc

cat /proc/PID번호에 있는 파일들을 확인하면 많은 정보를 얻을 수 있다.
cat /proc/PID/environ : 그 process가 가지고 있는 환경변수 내용
cat /proc/PID/maps : 메모리 상황을 볼 수 있다. 읽기, 쓰기 영역, command, shared libray link 상황
cat /proc/PID/stat : 상태를 보여준다.
cat /proc/PID/statm : 메모리 사용현황
cat /proc/PID/cmdline :  어떤 명령으로 실행했는 지, command line argument를 볼 수 있다.
cat /proc/PID/cpu : cpu를 얼마나 사용하는 지 알 수 있다.
cat /proc/PID/status : process status(sleeping 등..), pid, PPid, UID, GID, FD Size, Virtual memory Size, VmRSS

vim tip, 설명서

2003. 4. 9. 23:40 | Posted by 속눈썹맨
:help 라고 치면 vim의 tutorial을 볼 수 있다. 매우 강력하고 기능이 많다.
===============
shell에서 ctags -R * 라는 명령을 치면 C, C++, Java, PHP 등의 소스코드를 navigation 할 수 있다.\
navigation 방법 --
^] (ctrl-])를 누르면 함수의 정의(definition)을 볼 수 있다. ^T를 누르면 다시 원래로 돌아간다.

tags.sh 파일
---------------
find . /usr/include 기타 디렉토리들 -name '*.[ch]' | ctags -R --extra=fq -L -

===============
Vim 자동완성기능.
함수, 변수명을 몇 글자 치다가 이미 나온 글이라면 ^p (ctrl-p), ^n (ctrp-n)을 누르면 완성된다.
원하는 것이 아니라면 ^p,^n을 계속 눌러 원하는 것이 나올 때까지 찾는다.
----
vi에서 한글키로 모드 선택하게 하기. (writen by 임동현)
vi 에서 한글로 입력을 하려고 보면 i key가 먹지 않아 고생하신 분이 많으실 겁니다.(즉 영문키로 전환해서 i를 누르고 다시 한글키를 눌러야 합니다.) 그때 간단한 mapping을 적용하시면 영문키로 전환하지 않고서도 쉽게 한글을 입력하실수 있습니다. 이것을 응용하면 다른 작업도 편한히 하실 수 있을 겁니다.

다음의 문장을.. /home/유저/.vimrc 뒤에 넣으시고...
사용해 보세요..........

"map ㅡ m
map ㅜ n
map ㅠ b
"map ㅍ v
"map ㅊ c
map ㅌ x
"map ㅋ z
"map ㅣ l
"map ㅏ k
"map ㅓ j
"map ㅗ h
map ㅎ g
"map ㄹ f
map ㅇ d
map ㄴ s
map ㅁ a
map ㅔ p
map ㅐ o
map ㅑ i
"map ㅕ u
map ㅛ y
"map ㅅ t
map ㄱ r
"map ㄷ e
"map ㅈ w
"map ㅂ q
---
vim 6.0 이상에서 지원하는 접기(fold)기능 사용하기.

@ 첫번째 방법 :23,29zf  (23~29번째 줄을 접는 다.)

@ visual mode로 선택한 줄 접기.

vim에는 v로 영역을 선택할 수 있습니다. v는 일반적으로 마우스로 화면을 긁는 기능과 같고, ctrl+v는 사각형 모양으로 선택을 합니다.
첫번째 방법과 마찬가지로 영역(줄)을 선택한 다음 zf로 접습니다

@ 함수(function)전체를 한 번에 접기.

함수의 첫째줄 아무 곳에서나 v를 눌러 visual 모드로 들어갑니다. 그리고 j를 눌러 아랫 줄로 이동하신 다음 ]}를 누르면 함수 전체 줄을 선택하실 수 있습니다. 그런다음 zf를 눌러서 함수 전체의 내용을 접을 수 있습니다.

여기에서 쓰인 ]}명령은 {과 상응하는 }가 있는 곳으로 커서를 옮기는 기을을 합니다. 이 예제의 경우 for문에 {} 블럭이 있지만 첫줄에서 v를 누르고 j로 아랫줄로 이동했기 때문에 함수 전체를 감싸는 {에 상응하는 }로 이동하게 되는 것입니다. for문 안에서 ]}를 누르면 for문을 감싼 {}블럭의 }로 커서가 이동하는 것을 보실 수 있습니다.

접은 곳 다시 펴기 & 또 다시 접기

접은곳은 몇 줄이 접혀 있는지 표시하고 syntax on 옵션을 설정했을 경우에는 cyan색으로 표시됩니다. 이곳에서 zo를 누르시면 접은 곳의 내용을 다시 화면에 표시하고, 이 펴진 내용중 아무곳에서나 zc를 누르면 접은 곳을 다시 접을 수 있습니다.

-------------------------------
i 현재 칸에 편집(insert)
I 그 줄 맨 앞에서 insert
a 다음 칸에 편집(append)
A 그 줄 맨 끝부터 append

~ 대소문자 치환
r 한글자 변경
R 여러글자 변경
p 아랫줄에 되돌리기
P 현재행에 되돌리기
w 다음 단어의 처음으로 이동
b 현재 단어의 첫부분으로 이동
0(숫자) 현재 행의 맨 앞으로 이동
^ 현재 행의 맨 앞으로 이동
$ 현재 행의 맨 끝으로 이동
Ctrl-f 한 화면 뒤로
Ctrl-b 한 화면 앞으로
G 파일의 끝으로
/ 단어 검색
? 단어 검색(backword)
/,? 뒤에 나오는 표현은 regular expression(regex)이다

- regular expression -
^ 줄의 처음
$ 줄의 끝
. 아무 글자나 한 글자
* 앞의 내용이 0번 이상 반복됨
\+ 앞의 내용이 1번 이상 반복됨
\< 단어의 시작
\> 단어의 끝
\{mai,max\} min 이상 max이하의 횟수만큼 반복됨
[A-Z] A부터 Z중 아무 글자
[^A-Z] A부터 Z의 글자가 아닌 다른 글자.
[AB] A,B중 아무글자
\i      \i      isident=@,48-57,_,192-255 에 해당하는 글자들입니
                set isident 명령으로 확인 및 정의할 수 있습니다.
\I      \I      "\i"와 같지만 숫자는 제외
\k      \k      keyword로 사용하는 문자, set iskeyword 참고
\K      \K      "\k"와 같지만 숫자제외
\f      \f      파일이름으로 사용하는 문자, set isfname참고
\F      \F      "\f"와 같지만 숫자 제외
\p      \p      프린트 가능한 문자, set isprint참고
\P      \P      "\p"와 같지만, 숫자 제외
\s      \s      whitespace character: <Space> and <Tab>
\S      \S      non-whitespace character; opposite of \s
\d      \d      digit:                          [0-9]
\D      \D      non-digit:                      [^0-9]
\x      \x      hex digit:                      [0-9A-Fa-f]
\X      \X      non-hex digit:                  [^0-9A-Fa-f]
\o      \o      octal digit:                    [0-7]
\O      \O      non-octal digit:                [^0-7]
\w      \w      word character:                 [0-9A-Za-z_]
\W      \W      non-word character:             [^0-9A-Za-z_]    
\h      \h      head of word character:         [A-Za-z_]        
\H      \H      non-head of word character:     [^A-Za-z_]      
\a      \a      alphabetic character:           [A-Za-z]        
\A      \A      non-alphabetic character:       [^A-Za-z]        
\l      \l      lowercase character:            [a-z]            
\L      \L      non-lowercase character:        [^a-z]          
\u      \u      uppercase character:            [A-Z]  
\e esc
\t tab
\r <cr>
\b backspace
\| or(또는)
[:alnum:] 알파벳, 숫자
[:alpha:] 알파벳
[:blank:] 공백문자 탭문자 포함
[:cntrl:] control 문자
[:digit:] 숫자
[:graph:] 공백문자를 제외한
[:lower:] 소문자
[:upper:] 대문자
[:print:] 프린트 가능한 문자 공백
[:punct:] 구두점문자 ) ( , . " ' : ; _ 등등
[:space:] 공백문자
[:xdigit:] 16진수 숫자

dd 현재 행 삭제
dw 현재 단어 삭제
d$ 현재 위치부터 현재 행 끝까지 삭제
dG 현재 위치부터 현재 파일 끝까지 삭제

yy 현재 행을 버퍼에 저장
yw 현재 단어를 버펴에 저장
y$ 현재 위치부터 현재 행 끝까지 저장
yG 현재 위치부터 현재 파일 끝까지 저장

u undo
U 그 줄에서 행해진 잡업 모두 취소
Ctrl-r redo (undo의 반대)
. 방금 전 했던 명령 반복
% 괄호의 짝으로 이동
Ctrl-l 화면 다시 그리기

:ab 상용구 보기
:ab [상용구] 대치될 문장  상용구 설정
:unab [상용구]  상용구 해제

숫자>> 현재 줄 부터 '숫자'-1 줄 만튼 탭키를 삽입
숫자<< 현재 줄 부터 '숫자'-1 줄 만튼 탭키를 삭제(있을 때만)

:wq quit after write
ZZ same as 'wq'
:q! 저장 없이 강제 종료
:e [filename] [filename]를 편집
:r [filename] [filename]이 current row 이후에 포함된다.
:! vi 내부에서 shell명령을 실행
:r! vi 내부에서 shell명령을 실행 후 standard output을 포함


:n 여러문서 편집 중 다음 파일로 어가기
:N :prev 여러문서 편집 중 앞 파일로 가기
:args 편집중인 파일들 목록 보기

검색 및 치환
[x,y]s/패턴/치환문자열/플래그 : x행부터 y행까지의 패턴을 치환문자열로 치환한다.
%s/패턴/치환문자열/플래그 : 파일전체의 패턴을 치환문자열로 치환한다.
s/패턴/치환문자열/플래그 : 현재행의 패턴을 치환문자열로 치환한다.
g 플래그 : 일치하는 패턴을 모두 치환
c 플래그 : 치환할 때마다 물어보고 치환

m[영문자] : 현재 위치는 [영문자]로 책갈피 - [a-z][A-Z] 52개
'[영문자] : [영문자]로 책갈피된 곳으로 이동

"[영문자] : 레지스터 명을 명시 (책갈피와는 다르다.)
"[영문자]yy : [영문자]레지스터에 복사
"[영문자]p : [영문자]레지스터에서 가져옴

멀티 윈도우 기능
:sp 가로로 창 분할
:vsp 세로로 창 분할

ctrl-wk 다음 창으로 이동
ctrl-wj 앞 창으로 이동


visual mode

~ 대소문자 전환
J 줄을 합친다.
U 대문자로 전환
u 소문자로 전환

==============
:g/^$/d - 문서 전체에서 빈줄을 없애 준다.

10~30행의 마지막에 <br>을 삽입하고 싶을 때.
:10,30s/$/<br>/g
-------------------------------------------
============================
11
22
33

11 11
22 22
33 33
으로 만들고 싶을 때
:s/\(.*\)/\1 \1/
하면 된다...
\( 와 \) 안에 있는 것이 \1 로 표현 되게 됨

=============================
I 라는 글자가 있는 line 을 지우고 싶을 때
/I
해서 I 가 hightlist 되게 한후
:map q nddq
로 macro 를 지정한 후
q 를 누리면 된다...
(분석 : q 라는 키를 누르면 nddq 가 눌러지도록 하
는 것임 따라서 계속해서 recursive 하게 line 을 지우게 됨
참고로 n 은 다음 highlight 로 가는 거구 dd 는 그 line 을
지우는 것임)
-------------------------------------------
vim syntax highlighting 파일은 어디에 있을 까?

[ilashman@kapp06 vim] whereis vim
vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz
[ilashman@kapp06 vim] cd /usr/share/vim
                                 ~~~~~~~~~~~~~~~
[ilashman@kapp06 vim] ls
vim60z
[ilashman@kapp06 vim] cd vim60z
[ilashman@kapp06 vim60z] ls
bugreport.vim  ftplugin.vim        indoff.vim  optwin.vim   tutor
doc            ftplugof.vim        keymap      plugin       vimrc_example.vim
filetype.vim   gvimrc_example.vim  lang        scripts.vim
ftoff.vim      indent              macros      syntax
ftplugin       indent.vim          menu.vim    tools
[ilashman@kapp06 vim60z]

./syntax 디렉토리의 *.vim 파일들을 보면 알 수 있음.
./filetype.vim 파일을 보면 어느 *.vim파일이 어떤 형식을 지원하는 지 알게 됨.

-----------------------------
vim 한 화면에 여러 파일 열기

:help window 로 도움말을 보면 된다.
Ctrl-w + n : new file
Ctrl-w + j,k : 다른 file로 move
Ctrl-w + x : exchange window
Ctrl-w + _ : 창 최대로 키우기.

------------------------------
vim에서 vim을 background(백그라운드)로 만들고 shell로 잠시 나가기.
ctrl + z

되돌아 오기 (foreground, 포그라운드) :
$ fg
------------------------------
대소문자 구별 없이 문자열 search하기

방법1) :set ignorecase
          혹은 :set ic

방법2) /\c문자열
------------------------------
vim plugin

html tag <body> </body> 등이 있을 때
시작 tag에서 끝 tag로 %를 이용하여 match 되게 하는 plugin 쓰기.

http://vim.sourceforge.net/scripts/script.php?script_id=39

~/.vim/plugin/ 디렉토리에 링크에 있는 파일 받아서 푸시면 vim plugin을 쓸 수 있습니다.

------------------------------
IE html 소스 보기에서 gvim 쓰기
http://vim.sourceforge.net/tips/tip.php?tip_id=118
http://kltp.kldp.org/stories.php?story=02/04/15/7370834

------------------------------
vim에서 make 실행

1. make 실행
:make

2. 다음 에러난 위치로 커서 이동
:cnext

3. 이전 에러난 위치로 커서 이동
:cprevious

4. 에러 리스트 모두 보기
:clist

----------------------------------------
다른 곳에서 복사한 내용 붙여 넣기
방법 1)
:in  (혹은 :i)
붙여넣기
<ESC>

방법 2)
:set paste
i
붙여넣기
<ESC>
:set nopaste

-------
vim cvs plugin
http://www.vim.org/scripts/script.php?script_id=90
http://www.vim.org/scripts/download_script.php?src_id=3018

\cn 라고 치면 cvs annotation
\cv cvs diff결과를 vimdiff 형태로 볼 수 있습니다.
\cg 원래의 editing buffer로 돌아옵니다.

:help cvscommand하면 help가 나옵니다.

\ca CVSAdd
\cn CVSAnnotate
\cc CVSCommit
\cd CVSDiff
\ce CVSEdit
\ci CVSEditors
\cg CVSGotoOriginal
\cG CVSGotoOriginal!
\cl CVSLog
\cr CVSReview
\cs CVSStatus
\ct CVSUnedit
\cu CVSUpdate
\cv CVSVimDiff
\cwv CVSWatchers
\cwa CVSWatchAdd
\cwn CVSWatchOn
\cwf CVSWatchOff
\cwf CVSWatchRemove
\cv 처럼 되어있는 명령은
원래 <Leader>cv 로 되어있는데 <Leader>가 디폴트로 백슬래시로 되어있습니다.
let mapleader = "," 로 해두고 콤마를 <Leader> 키로 써도 상당히 편합니다.

:helptags ~/.vim/doc 라고 치면 help를 ~/.vim/doc에서 읽어들임
(한 번만 해주면 다음 번에도 적용됨)

Mysql+PHP+APACHE 연동해서 깔기(설치, install)

2003. 4. 9. 23:36 | Posted by 속눈썹맨
----------------
FreeBSD에서
(모든 것은 ports로 설치하면 된다.)
----------------
mysql server와 client을 먼저 설치하고 (/usr/ports/databases/mysql블라블라)
mod_php4를 설치한다. (/usr/ports/www/mod_php)
(아마도 apache를 같이 깔아 줄 것이다.)
apache를 설치한다. (/usr/ports/www/apache블라블라)

여기에 gd도 설치해서 연동하고 싶다면.
gd를 설치한다. (/usr/ports/graphics/gd)
mod_php4를 재설치한다. (/usr/ports/www/mod_php) - make reinstall

----------------
Linux에서
----------------
http://apache.kr.net/documents/dbphp.html

[중급이상 개발자를 위한 매뉴얼]  DB(Oracle8.1.6, Mysql)+PHP+Zend Optimizer+APACHE+Tomcat(jsp,servlet)+IMAP+gd

   * 최종 작성일자:2000.9.8
   * 필자: 임근식 (ICQ: invain 64764075)    http://jinri.kmu.ac.kr/~s4238733/  invain@orgio.net
   * 참고문서: 온갖 인터넷 문서 통독, 관련 서적들 참고
                     참고한 문서를 상세하게 설명드리고 싶은데.. 너무 많은 문서들을 참고
                     하다보니... 일일이 홈주소와 서적을 나열해 드리지 못한점 양해 바랍니다.
   * 설치하고 정상적으로 가동되는지 모든 테스트를 끝냈습니다.
   * 참고로 중급자 이상만 보시길 바랍니다. 왜냐구요.!! 쉬운내용은 설명을 생략했습니다.
     초보자 한테는 죄송합니다.. 그러지만, 후회하는 결과를 낳지 않기위해 ...
   * 이렇게 설치하는데 저도 3일동안 이거하고 싸워서 이겼습니다.
     (제가 머리가 안좋다 보니, 손발이 고생하게 되는 군요!...)
     중간에 포기 하지마시고 꼭 성공하시길 바랍니다. 포기만큼 바보같은게 없죠...
   * 퍼포먼스를 위해 php는 DSO(Dynamic Shared Object)하지 않고 컴파일 처리했습니다.
   * jakarta-tomcat는 모듈화 설치하였습니다.
   * resin,GNU JSP, Jserv 모두 깔아봤는데, 아파치를 쓰는 이상 아파치 프로젝트 팀의
     톰캣을 쓰는게 나중에 편할  것 같아서 jarkarta-tomcat를 사용했습니다.
     (아무래도 다른 프로그램보다 개발속도가 빠르지 않을까요???)
   * 프로그램 다운로드는 천리안 자료실이나 http://www.tuxfinder.com같은 곳을 이용하세요!


설치환경: * Kernel 2.2.14 * CPU: Pentium 466MHZ  
               * RAM : 64MHZ   * HDD: 9Giga
               * MainBoard:BX  * VGA:Riva-Vanta  
               * LanCard:RealTek 8139 PCI
               * Sound Card: Ess Sound
               * OS(Mizi Linux 1.1)

---------------[목        차]-----------------------------------------

1. imap 설치
2. jdk 설치
3. jsdk 설치
4. jre + oracle 8.1.6 설치
5. mysql 설치
6. gd Library 설치
7. apache 임시 해제
8. PHP설치
9. ZEND OPTIMIZER  설치
10.apache 설치(DSO) 설치
11. 서블릿 엔진 설치
11-1. 방법1.
   Jakarta Tomcat 설치(Servlet & JSP 지원함)
11-2. 방법2.
   Apache-Jserv1.05b &GNU JSP 설치 (http://java.apache.org/)  
   GNU_jsp 설치
11-3. 방법3.
   Resin 1.1.3 설치
------------------------------------------------------------------

****************
1. IMAP설치
****************    
        다운: imap-4.7c2.tar.Z /
              ftp://ftp.cac.washington.edu/imap/

        [root@linuxer /tmp]# cd /tmp
        shell>zcat imap.tar.Z | tar xvf -
        */usr/local/imap 로 이동
        shell>mv ./imap-4.6.BETA /usr/local/imap
        shell>cd /usr/local/imap
        shell>make slx  
        shell>cp ipopd/ipop2d /usr/sbin/  
        shell>cp ipopd/ipop3d /usr/sbin/  
        shell>cp imapd/imapd /usr/sbin/  
        shell>vi /etc/inetd.conf  
        pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d  
        pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d  
        imap stream tcp nowait root /usr/sbin/tcpd imapd  
        shell>/etc/rc.d/init.d/inet restart  
          
        [root@peterpan imap]# killall -HUP inetd  
        [root@peterpan imap]# telnet localhost 143  
        Trying 127.0.0.1...  
        Connected to localhost.localdomain.  
        Escape character is '^]'.  
        * OK localhost.localdomain IMAP4rev1 v12.264 server ready  
          위 같은 화면이 나오면 IMAP 설치는 성공입니다.  
        [root@peterpan imap]# cp /usr/local/imap/c-client/c- client.a /usr/lib/libc-client.a  
        [root@peterpan imap]# mkdir /usr/local/include  
        [root@peterpan imap]# cp /usr/local/imap/c-client/mail.h /usr/local/include  
        [root@peterpan imap]# cp /usr/local/imap/c-client/rfc822.h /usr/local/include  
        [root@peterpan imap]# cp /usr/local/imap/c-client/linkage.h /usr/local/include  
         위의 파일들을 카피하는 것은 아파치 컴파일시 아파치가
         IMAP을 인식하여 사용할 수 있도록 하기 위한 파일입니다.
         위의 파일들을 카피하지 않은면 아파치 컴파일시 에러가 납니다.  
         IMAP 설치 끝.  
        
****************        
2. Jdk 1.2.2         http://java.sun.com
****************
참고) jdk가 설치되어 있어야. 톰캣에서 서블릿을 가동할수 있슴.
> tar xvfz jdk1_2_2-linux-i386.tar.gz
> mv jdk1_2_2 /usr/local/
> ln -s /usr/local/jdk1_2_2 java
> vi /etc/profile 하시고..
PATH="$PATH:/usr/local/java/bin"
export JAVA_HOME="/usr/local/java"
export CLASSPATH="."
(저장후 종료)
여기까지.. jdk 설치가 끝난겁니다..
잘 되었는지 확인방법은 다시 로그인 하신후에.. java -version 해보세요..
잘되죠?? 그럼 ok!!!!!!!!!

****************
3. Jsdk 2.0     http://java.sun.com
****************
> tar xvfz jsdk20-solaris2-sparc.tar.Z
> mv JSDK20 /usr/local/
> ln -s /usr/local/JSDK20 JSDK
> vi /etc/profile
PATH="$PATH:/usr/local/JSDK"
export CLASSPATH=".:/usr/local/JSDK/lib/jsdk.jar"
(저장후 종료)



****************
4. JRE + ORACLE
****************

          
1) 파티션 설치환경
   / 2GB
   /oracle 1.5GB ( 오라클 프로그램이 설치되는 디렉토리)
   /u01 1.5GB(데이타베이스가 저장될 디렉토리)
   swap 1GB(램의 3배정도를 설정)
  
2) jre를 www.blackdown.org에 가서 다운 받아 /usr/local/jre에 설치 또는
   링크(ln -s /usr/local/jre1.1.8 jre)를 한다.
   참고) 오라클 설치에 jdk는 필요 없지만 최적의 개발환경을 위해서 설치합시다.
         오라클 8.1.6은 jre1.1.8이상을 설치해야한다는 것을 잊지 말자.
        
3) 그룹/사용자 생성 및 오라클 프로그램 다운로드/압축해제 http://technet.oracle.co.kr
   groupadd -g 5000 dba
   useradd -g dba oracle
   passwd oracle
   vi /etc/group
   -> dba:x:5000:에 dba:x:5000:oracle,root로 고친다.
   tar -xvzf oracle8_1_6.tar /orasetup

4) oracle 계정의  .profile or .bash_profile 에 추가할 내용
   * 권장사항: 가능한 /etc/profile에 추가하여 계정마다 추가 않도록 할것.
export display=localhost:0.0
export USERNAME BASH_ENV PATH  
export ORACLE_OWNER=oracle;export ORACLE_OWNER  
export ORACLE_BASE=/oracle/app/oracle  
export ORACLE_HOME=/oracle/app/oracle/products/8.1.6  
export ORACLE_SID=ORCL  
export ORACLE_TERM=vt100  
export TNS_ADMIN=$ORACLE_HOME/network/admin  
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601  
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data  
export  
PATH=$PATH:$ORACLE_HOME/bin:/usr/local/jre/bin:$ORACLE_HOME:/usr/local:/usr/local/jdk/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib  
export  
CLASSPATH=/usr/local/jre/bin:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib:/usr/local/jre:/usr/local/jdk/lib/classes.zip:/usr/local/jre/bin
umask 022  
mesg n  

5) root 계정의 .bash_profile or .profile에 추가할 내용

export ORACLE_HOME=/oracle/app/oracle/products/8.1.6
export ORACLE_SID=ORCL
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export TNS_ADMIN=$ORACLE_HOME/network/admin
mesg n

6) 소유권 및 퍼미션 조정
chown -R oracle.dba /usr/local/jre
chown -R oracle.dba /tmp
chown -R oracle.dba /oracle <-안해주면 설치시 인벤토리 위치에서 쓰기 권한없다는 메세지 뜸.
chown -R oracle.dba /u01 <- 안해주면 설치시 데이타베이스 저장화일 위치 셋팅에서
                             에러메세지 발생함.
chmod -R 755 /oracle
chmod -R 755 /tmp

7) vi /etc/sysconfigg/desktop
   ->반드시 대문자로 KDE라고 적고 저장
  
8) oracle 계정으로 로그인후, startx를 실행
   참고) 시스템리소스별 윈도우 메니저 우선순위
         gnome>windowmaker>tvwm(tvwm이 최상의 퍼포먼스를 유지함)

9) 오라클 설치 프로그램이 있는 디렉토리로 이동/설치
   /orasetup/Oracle8iR2/install/linux/runInstaller
   ........ 중간 설치 상세 설명 생략
   ........ group -> dba
   ........ Global Data Base Name -> oracle
   ........ Directory for DataBase Files -> u01
   ........ 설치 도중 root권한으로 실행해야 하는 것들이 있음을 기억.

   최종적으로 설치완료가 되면  아래와 같은 내용의 작은 창 정보가 나온다.

             [데이터베이스가 생성되었습니다.]
                 <<데이터베이스   정보>>
              전역  DB명      : oracle
              DBMS 식별자(SID): ORCL
              SYS    계정 암호: change_on_install
              SYSTEM 계정 암호: manager

10) listener.ora 와 tnsnames.ora 편집
     /oracle/app/oracle/products/8.1.5/network/admin/ 디렉토리로
    이동해서 위의 화일을 펴집기로 host,port,DB IP Address를 기록
    * 오라클 ODBC드라이버는 SQL*NET를 기초로 작동됨

이제 오라클을 실행해보죠..!
먼저 oracle계정으로 접속해야 한다는 것을 잊지 마세요
svrmgrl
connect internal;
startup;
quit
lsnrctl start

SQL> alter user system identified by abc; [Enter]
SQL> grant connect, resource to system;
SQL> alter user sys identified by 123; [Enter]
SQL> exit
  
* 사용자 등록
[oracle@baram bin]$ sqlplus [Enter]
Enter user-name: system[Enter]
Enter password: manager[Enter]
SQL>connect internal
SQL>create user 사용자ID indentified by 사용자passwd [Enter]
   >default tablespace users [Enter]
   >temporary tablespace temp [Enter]
   >quota unlimited on users; [Enter]
    completed
SQL>grant connect to 사용자ID
SQL>select * from tabs;
제가 쉽게 쓴다고 썼지만... 막상 해보시면 많은 문제점이 발생할 것입니다.
그렇다고 포기하지 마시고, 그럴댄 technet.oracle.co.kr의 [질문/답변]란을
참고하시면 될겁니다..

####오라클+php+apache 실행시 주의사항####
에러내용:
Warning: _oci_open_server: Error while trying to retrieve text
for error ORA-12545 in /home/you/public_html/oci.php on line 4

오라클을 스타트하시고,  리스너를 띄우세요.(lsnrctl start)
다음 아파치를 스타팅하시면 됩니다. 간단히 말해서 서버차
원에서 세션을 유지해야 합니다.  글구, 오라클 유저의  환경
셋팅을 아파치를 구동할 수 있는 유저의 환경파일이나 시스템
전역적인 profile에 셋팅을 하는 방법도 있고, apachectl 파일
내에 셋팅을 하는 법도 있습니다.

참고) 실행화일 디렉토리: /oracle/app/oracle/products8.1.5/bin
      -> netca명령 : NET8서비스 생성
      -> netasst명령: NET8서비스 수정
      -> dbassist명령: DB 생성

****************
5. MYSQL
****************
MYSQL 인스톨(소스화일) www.mysql.com
   tar xvzf mysql.tar.gz
   ./configure --prefix=/usr/local/mysql --with-charset=euc_kr
   make
   make install
   ./bin/mysql_install_db
   ./bin/safe_mysqld --language=korean &  
    (또는 mysql.server를 755로 퍼미션 지정후 /usr/sbin/에 넣고,
     이명령어를 사용해도 됩니다.)
   ./bin/mysqladmin -u root password 'new-pass'[enter]
    pstree명령으로 설치확인

   * 팁) root 패스워드 분실시 방법:
      (1) ./killall mysqld (데몬을 모조리 죽임)
      (2) ./bin/safe_mysqld --skip-grant &
      (3) mysql> UPDATE user SET Password=PASSWORD('newpasswd') WHERE
                user='root';
      (4) mysql> FLUSH PRIVILEGES;



****************      
6. GD Library 설치
****************
   GD -> www.boutell.com/gd에서 다운 받을 것
   tar xvzf gd.tar.gz
   ./make
     주의) make명령을 하기 전에 /usr/local/include명령을 삽입해야 컴파일 에러가 발생하지 않음.
   ./make install
   (옵션) mv gd1.8.3  /usr/local/gd



****************      
7. 아파치 잠시 풀기 (www.apache.org)
****************
   ./configure --prefix=/usr/local/apache
    
****************
8. PHP인스톨 -> www.php.org
****************
   ./setup <-되도록이면 이 명령을 이용할 것.
   OR ./configure
   --with-oci8=/oracle/app/oracle/products/8.1.6
   --with-oracle=/oracle/app/oracle/products/8.1.6
   --with-mysql=/usr/local/mysql
   --with-apache=/data/apache
   --with-gd=/usr/local(or/usr/local/gd)
   --with-imap=/usr/local/imap
   --enable-sigchild
   --with-language=korean
   --with-charset=euc_kr
   --with-config-file=/usr/local/lib
   --enable-track-vars(GET/POST/Cookies변수를 PHP3에서 내부변수로 사용)
   --disable-debug

   참고>cp php3.ini-dist /usr/local/lib/php3.ini (용량제한,Sendmail설정)
        --enable-sigchild : 오라클-PHP 좀비현상 문제 해결하기위해 필수
   make
   make install
*******************  
9. ZEND OPTIMIZER  http://www.php.org
*******************
Optimizer 를 압축해제하면 ZendOptimizer.so 라는 파일이 있습니다.  
일단 /usr/local/ 안에.. Zend/lib 라는 디렉토리를 만듭니다.  
그리고 이곳에 ZendOptimizer.so 파일을 COPY 합니다..  
mkdir /usr/local/Zend  
mkdir /usr/local/Zend/lib  
cp ZendOptimizer.so /usr/local/Zend/lib  
php.ini 파일 수정하기  
cd /usr/local/lib  
vi php.ini  
다음과 같이 적어 줍시다..  
[Zend Optimizer]  
zend_optimizer.optimization_level=7  
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"  


여기까지 하면 다 된것입니다....  
이제 다음과 같이 파일을 만들어 확인하면 다음과 같은 문구가 나올겁니다...  

phpinfo();  
?>  
This program makes use of the Zend scripting language engine:  
Zend Engine v1.0.1, Copyright (c) 1998-2000 Zend Technologies  
with Zend Optimizer v0.99, Copyright (c) 1998-2000, by Zend Technologies  

************************
10. Apache 인스톨(DSO)
************************
   ./apache/configure --prefix=/usr/local/apache
    --activate-module=src/modules/php4/libphp4.a
    --enable-rule=SHARED_CORE
    --enable-module=so ==> Java Shared Object
    --enable-shared=max => DSO Support(Dynamic Shared Object)
   ./apache/make
   ./apache/make install
      주의) configure,make,make install을 ./src 상위디렉토리에서 명령할것
   test.php에 phpinfo();를 삽입하여 테스트하면 끝남.

********************************
11-방법1. Jakarta Tomcat 설치
********************************
   1) http://jakarta.apache.org에서 다운
   2) mod_jserv.so를 /usr/local/apache/libexec디렉토리에 이동
      download)jakarta.apache.org/builds/tomcat/release/v3.1_beta_1/bin/
   3) /usr/local/apache/conf/httpd.conf화일에
      Include /usr/local/jakarta-tomcat/conf/tomcat.conf를 추가시킴
   4) 끝으로 아파치/톰켓(startup.sh -f) 가동
   5) 웹브라우저로 http://host:8080/을 입력하면 고양이 그림이 나와야함.


***************************************************
11-방법2. Apache-Jserv1.05b 설치&GNU JSP 설치 (http://java.apache.org/)
***************************************************

=> Apache-Jserv1.05b 설치
Jserv 는 아파치에서 서블릿을 구동해 주는 것으로써,
Jserv를 이용하여 DB와 연동하는 3Tier방식의 구조를 채택
한다면 매우효과적인 웹 서비스가 가능할 것임.
1)tar xvf Apache-Jserv-1.0b5.tar
2)mv ./Apache-Jserv-1.0b5 ./jserv
3)cd jserv
4)./configure --enable-module=so
--with-apache-install=/usr/local/apache
--enable-apache-conf --prefix=/usr/local/jserv
--with-jsdk=/usr/local/jsdk/lib/jsdk.jar
5)make
6)make install
Jserv의 설치가 끝났다.

=> GNU JSP 설치
이 글은 김태양님의 제공에 의해 www.apache.kr.net에 게시되었습니다.
GNUJSP1.0은 기존의 0.9버젼들과는 달리 JSP 1.0 spec을 지원하여 줍니다.
apache에 jserv를 쓰시는 분들께서 JSP로 개발하려고 하신다면 GNUJSP 1.0을
설치하여 보는 것도 좋을 것 같습니다.
* apache와 jserv는 설치되었다고 가정하겠습니다.( Apache는 1.3.6이상으로
DSO로 설치되어 있어야 합니다. )
* GNUJSP를 /usr/local/gnujsp에 압축을 풀어놓은 상태로 가정하겠습니다.
1. GNUJSP 1.0을 다운로드 받는다. ( http://www.klomg.org/gnujsp )
2. 압축을 푼다. ( tar xvfz gnujsp-1.0.0.tar.Z )
3. GNUJSP를 위한 zone을 하나 생성한다. ( jserv 소스에 보면 example.properties가
있는데 그것을 복사하여 apache의 conf디렉토리에 복사한다. 다른 곳에 복사하여도
상관은 없다.)
4. example.properties를 alph.properties 로 변경한다.
( 다른것으로 하여도 상관없다. gnujsp에서 alph.properties로 하길래 ^^;; )
5. jsp가 servlet으로 변경되므로 서블릿소스와 class가 저장될 디렉토리를 하나
생성한다. ( 여기선 /usr/local/apache/jspcode 로 합니다. )
6. alph.properties 파일을 열어서 아래와 같이 변경한다.
repositories=/usr/local/gnujsp/lib/gnujsp10.jar
repositories=/usr/local/gnujsp/lib/servlet-2.0-plus.jar
...
autoreload.classes=true // 아마 default로 설정되어 있을 꺼예요
autoreload.file=true // 아마 default로 설정되어 있을 꺼예요
...
servlet.gnujsp.code=org.gjt.jsp.JspServlet
servlet.gnujsp.initArgs=checkclass=true,pagebase=/usr/local/apache/htdocs,
scratchdir=/usr/local/apache/jspcode,debug=true,compiler=builtin-javac -classpath %classpath%:%scratchdir%:/usr/local/gnujsp/lib/servlet-2.0-plus.jar:/usr/local/gnujsp/lib/gnujsp10.jar %source%
//잠깐 설명
pagebase는 웹 서버 루트 디렉토리 ( 즉.. index.html 있는곳 )
scratchdir은 5번에서 설정한 servlet파일들이 모여있을곳
compiler는 javac을 쓰겠다는 것이죠.. ( compiler = /usr/local/jdk/bin/javac
이런 식으로 바로 지정해도 됩니다. )
7. jserv.properties의 zone에 alph를 추가해 줍니다.
zone = xxx,xxx,alph
8. 추가로 zone디렉토리의 위치도 추가해 줍니다.
xxx.properties=xxxxxx
alph.properties=/usr/local/apache/conf/alph.properties
9. jserv.conf나 httpd.conf에 다음과 같이 설정해 줍니다. ( 저의 jserv1.05b설치
하기 메뉴얼데로 하신분은 httpd.conf에 하시면 됩니다. ^^;; )
ApJServAction .jsp /alph/gnujsp
ApJServMount /alph /alph
10. 설정이 끝났으니 웹서버의 루트 디렉토리에 test.jsp를 하나 만들어 봅시다.
11. test.jsp
12. 웹 브라우저를 실행하고 http://your host/test.jsp 하면 시간이 약간 흐른후
(컴파일 하므로) 결과를 볼 수 있을 겁니다.

기타 질문이나 서블릿 jsp에 관한 내용들은 http://owd.neonet.co.kr에서 찾아보세요 ^^;;


********************************
11-방법3. RESIN 1.1 설치   http://www.caucho.com
********************************

(1)mod_caucho.so 컴파일링
unix> ./configure --with-apache=/usr/local/apache
unix> make
unix> make install
unix> ./configure --with-apxs=/usr/local/apache/bin/apxs
unix> make

(2)아파치 환경 수기로 설정(주석을 제거)
   httpd.conf
LoadModule caucho_module libexec/mod_caucho.so
AddModule mod_caucho.c

<IfModule mod_caucho.c>
  CauchoConfigFile <installdir>/resin1.1/conf/resin.conf
  <Location /caucho-status>
    SetHandler caucho-status
  </Location>
</IfModule>

(3)홈계정의 환경설정
in ~/.profile or /etc/profile


# Java Location
JAVA_HOME=/<installdir>/jdk1.2.2
export JAVA_HOME

# Resin location (optional).  
RESIN_HOME=/<installdir>/resin1.1
export RESIN_HOME

# If you're using additional class libraries, you'll need to put them
# in the classpath.
CLASSPATH=

(4)resin.conf 환경 설정
  <caucho.com>
  <http-server
      app-dir='/usr/local/apache/htdocs'>
    <servlet-mapping url-pattern='/servlets/*'
              servlet-name='invoker'/>

    <servlet-mapping url-pattern='*.xtp'
                        servlet-name='com.caucho.jsp.XtpServlet'/>
    <servlet-mapping url-pattern='*.jsp'
                        servlet-name='com.caucho.jsp.JspServlet'/>
  </http-server>
</caucho.com>

(5)서블릿 실행
> resin1.1/bin/srun.sh
unix> resin1.1/bin/srun.sh start
unix> resin1.1/bin/srun.sh stop

(6)로드 밸런싱 방법
resin.conf  
<caucho.com>
<http-server>
  <srun host='211.36.37.78' port='6802'/>
  <srun host='211.36.37.79' port='6802'/>
  <srun-backup host='backup port='6802'/>
  ...
</http-server>
</caucho.com>
(7) /usr/local/apache/bin/apachectl start
텍스트 파일 줄간격 벌이기
글쓴이 : aero (2001년 04월 01일 오전 02:45) 읽은수: 942 [ 파일 시스템 ]
보통 TXT파일로 된 문서를 읽다보면 영문
같은 경우 폰트크기가 좀 작기 때문에
별로 불편이 없는데 한글은 폰트영역을
꽉 채우는 글자로 되어있어서 줄사이에
빈줄이 없으면 아랫,윗줄과 햇갈리고 오래
읽기에 눈이 피곤하지요.
그래서 사이사이에 빈줄을 넣어서 읽으면
휠씬 보기 좋습니다.

그래서 제가 나름대로 꽁수를 써서 처음 시도한 방법은

awk '{printf("%s\n\n"),$0}' in.txt > out.txt
in.txt란 파일이 줄사이가 한칸씩 떨어저셔 out.txt란 파일로 저장됩니다.
\n 갯수를 조절하면 빈줄크기도 조절가능하겠지요?

보너스로 더 간단한 방법이 없을까 고민하다
알아낸 방법

sed G in.txt > out.txt

이걸 알아내고 허탈했습니다. -_-;

두줄씩 띄우고 싶을땐
sed "G;G"

5줄마다 한줄씩 띄우고 싶을때
sed "n;n;n;n;G"