vi 에디터 사용방법 및 정리

秋 - Tip 2008.04.18 01:51 Posted by 민수아빠™
vi 에디터  
             1 Cursor 위치를 변경하는 명령들
             2 vi 명령들
             3 자세한 정보를 가져 오려면...
             
  명령을 잘 활용하는 방법은 'man' 명령을 이용하는 것입니다.
  UNIX 명령에 좀 익숙 하신분들은 'man' 명령을 활용 하십시오.
 
1.
                       vi Cursor Positioning  
    - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -
    :1G (go                                                            :
    :                      /\  ^b (back                                :
    :                      ||                    /\   ^u (up           :
    |----------------------||--------------------||--------------------|
    |H (home                                                           |
    |                               k                   O (open        |
    |I            i (insert        /\    a (append     P (put        A |
    |                              |                                   |
    |O <--------- h <-------  you are here  -------> l -------------->$|
    |                              |                                   |
    |M (middle     (backspace      \/    (space bar    p(put           |
    |                               j                   o (open        |
    |             Y (yank                         /string              |
    |                                             n repeat last search |
    |L (last                                      . repeat last command|
    |----------------------||--------------------||--------------------|
    :                      ||                    \/   ^d (down         :
    :                      \/  ^f (forward                             :
    :\$G (go                                                           :
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - "


2. vi 명령들  
                  1 Cursor를 옮기는 여러가지 방법
                  2 화면을 옮기는 여러가지 방법
                  3 한 화면 안에서 cursor를 옮기는 방법
                  4 한 line 안에서 cursor를 옮기는 방법
                  5 검색  
                  6 vi를 빠져나가는 방법  
                  7 삽입 mode  
                  8 Yanking : (Copying
                  9 Deleting  
                 10 Putting  
                 11 Interactive edit : (search and replace
                 12 Global 명령
                 13 Reading in files  
                 14 여러 화일의 edit
                 15 Miscellancenous commands  

1 Cursor를 옮기는 여러가지 방법  
                                       k(-
                                        /\  
                                        ||
                        h(bs    <-----       ----->   l(sp
                                        ||
                                        \/
                                       j(+
        h,j,k 와 i 를 이용하영 간단히 키보를 누르면 cursor의 위치가 변  
        경됩니다.
        (에 있는 키를 선택하여도 됩니다.
         bs : BackSpace                       sp : SPace bar "

2 화면을 옮기는 여러가지 방법  
                  ^f  -  (FORWARD 화면을 one page 앞으로 옮김
                  ^b  -  (BACKWARD 화면을 one page 뒤으로 옮김
                  ^d  -  (DOWN 화면을 반 page 앞으로 옮김
                  ^u  -  (UP 화면을 반 page 뒤으로 옮김
              ^  는 키보드의 ctrl 를 나타내는 것입니다."

3 한 화면 안에서 cursor를 옮기는 방법  
             H  -  HOME, 한 화면의 top line으로 옮긴다.
             M  -  MIDDLE, 한 화면의 중간으로 옮긴다.
             L  -  LAST, 한 화면의 마지막  line으로옮긴다.
             G  -  GOTO,  화일의 마지막  line으로 옮긴다.
             nG -  GOTO nth line the file (or :n
             ^G -  GIVES file status  
              ^  는 키보드의 를 나타내는 것입니다."

4 한 line 안에서 cursor를 옮기는 방법  
                      w  -  WORD, 한단어 앞으로
                      b  -  BACKWARD, 한단어  뒤로
                      e  -  END, 현재 cursor가 위치한 맨 뒤로
                      o  -  zero, line의 맨 앞으로 (or ^
                      $  -  end, line의 맨뒤로"
 
5 검색  
        /pattern -  scan (/ 'pattern'이라는글자를 현재 cursor가
                    위치한 곳의 다음 단어를 검색
        ?pattern -  scan (? 'pattern'이라는 글자를 현재 cursor가
                    위치한 곳의 앞 단어를 검색
        n     -  앞쪽에서 입력했었던 문자 'pattern' 의 다음단어를 검색
        N     -  앞쪽에서 입력했었던 문자 'pattern' 의 다음 앞 단어를  
                  검색"

6 vi를 빠져나가는 방법  
           :q!  -  화일의 내용을 저장하지 않고 exit
           :w   -  WRITE, vi를 빠져나가지 않으면서 내용을 저장
           :wq  -  WRITE and QUIT, vi를 빠져나가면서  내용을 저장
           ZZ   -  :wq의 명령과 같다."
 
7 삽입 mode  
             i   -  INSERT, cursor 위치 부터 문자 삽입
             I   -  INSERT, line의 맨 앞부터 문자 삽입
             a   -  APPEND, cursor 다음 위치 부터 문자 삽입
             A   -  APPEND, cursor 위치한 line의 끝부터 문자 삽입
             o   -  OPEN line, 현재의 line 다음에 line 삽입
             O   -  OPEN line, 현재의 line 앞에 line 삽입
             r   -  REPLACE, 한 문자만을 대치 (does not require ESC
             R   -  REPLACE, ESC 키가 입력될때 까지 대치  
             cw  -  CHANGE word, cursor가 위치한 곳의 단어 끝까지 대치
                    (cnw - change n number of words
             C   -  CHANGE, cursor가 위치한 곳에서 line 끝까지 대치
             u   -  UNDOES, 마지막 명령의 취소
             U   -  UNDOES, line전체를 원 상태로 복구
Note :   INSERT mode 를 만든는 모든 문자(i, a, o,r, c, s <대문자 포
         함>를 사용하는 경우 insert mode에서 입력 한 내용을  취소하고
         자 하면, ESC 를 누르고 undo를 수행하는 u를 입력하면 된다.
Note :  ESC (escape key 는 삽입(insert를 중지 시키고 명령어 mode로  
        돌아가는 키이다."

8 Yanking : (Copying  
        Y  -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장
        yy -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장
        nY -  YANKS n , n line을 사용자가 보이지 않는 buffer에 저장"

9 Deleting  
        x   -  deletes, 문자 하나를 삭제 (also 'd sp'
        dw  - DELETES words, 문자 하나를 삭제  
        D   -  DELETES, cursor가 있는 곳에서 부터 line끝 까지 삭제  
        dd  -  DELETES lines, line하나를 삭제 하고 보이지 않는 buffer
               에 저장
        ndd -  DELETES n, n line을 삭제 하고 보이지 않는 buffer에 저장
               (i.e., 10dd deletes 10 lines"

10 Putting  
        p  -  PUTS, cursor가 위치한 다음 line에 보이지 않는 buffer의
              내용을 삽입
        P  -  PUTS, cursor가 위치한 앞 line에 보이지 않는 buffer의
              내용을 삽입
        xp -  cursor 가 위치한 문자와 다음 문자를 교환"

11 Interactive edit : (search and replace  
        /pattern -  find, pattern이라는 문자를 검색
        cw       -  change word, 단어를 대치 (cw. dw, r, s, etc.
        n        -  find, 앞에서 검색했던 'pattern'이라는 문자를 검색
                    하는 반복 명령
        N        -  find, 앞에서 검색했던 'pattern'이라는 문자를 역순
                    으로 검색 하는 반복 명령"

12 Global 명령  
                 Global replacement  
                :1,\$s/string1/string2/g
                1 line부터 끝까지 string1 를 string2 로 대치
        e.g.,   :1,\$s/sun/SUN/
                      Global delete  
                :g/pattern/d
                1 line부터 끝까지 pattern 을 제거
        e.g.,   :g/###/d (to delete lines inserted by cc file.c | &  
                 error-v"

13 Reading in files  
        :r  file2 - cursor가 위치한 다음 line에 file2를 삽입"

14 여러 화일의 edit  
        :w      -  다른 화일을 읽기전에 현재의 화일을 저장 (file1
        :e file2  -  두번째 file을 edit하기 위해 load (file2
        :w      -  두번째 화일을 저장 (file2
        :e #    - original file 을 수정하기 위해 load (file1
        example:w              /* file1을 빠져 나가기전에 저장*/
                :e file2        /* file2 load   */
                        \"x4Y   /* buffer 'x'에 file2의 top 4 line을  
                                   저장 */
                :e #            /* file1 을 load (no changes */
                        \"xP    /* buffer 'x'에 저장 되어 있는 내용을  
                                   put */"

15 Miscellancenous commands  
        :! cmd  -  editor안에서 shell command를 수행 하고자 할때
        ~       -  (tilde or 'wavy', 대문자를 소문자로 소문자를 대문자
                    로 교환
        %       -  한 line안에서 (,,{,},[,]를 검색
        mx      -  문자 x에 현재 위치를 표시
        d'x     -  문자 x에 표시된 위치 부터 현재 cursor 위치 까지 삭
                    제
        ^V      -  allows for insertion of control characters (e.g.,  
                   ^L
        ?string -  scan (/ backward for 'pattern'
        :n,m w file -  n line에서 m line까지 내용을  file 이라는 이름  
                       으록 (e.g., 15,25 w file
        J       -  JOINS, cusor가 있는 line과 다음 line을 join  
        :set ai -  editor 가 자동적으로 insert tabs을 삽입
        :set list -  special characters 를 보여줌
                     (i.e., non-printable characters
        :set nows -  stop wraparound search
        :set ts=n -  set tab stops to be other than the default (8
        :set wm=n -  set wrap margin (automatic carriage return insert  
                     at n"

신고
TAG tip, vi editor

제로보드 스팸방지 (보안코드, DQ Skin)

秋 - Tip 2008.04.10 15:10 Posted by 민수아빠™
보안코드 입력을 통한 스팸글 방지
http://www.zeroboard.com/?mid=zb4_tip&document_srl=855855 참조할 것.

요약하면 아래 3개 파일을 다운받아서
zm_crypt.php
zm_crypt_img.php
zm_crypt_ref.php

./bbs/skin/ 폴더에 올려두고 아래 내용을 수정한다.

녹색은 수정할 파일들이고
적색은 수정할 내용들이다.

Comment 스팸방지 부분

./skin/DQ_Revolution_Gallery/view_write_comment.php
./skin/DQ_Revolution_BBS/view_write_comment.php
107째줄 에서


<?if(!$member['no']){?>
<? $zCryptClass='input' ; include ("./skin/zm_crypt.php" ) ; ?>
<tr>
<td width=<?=$_lSwidth?> align=right> </td>
<td>
<table border=0 cellspacing=2 cellpadding=0 height=100% align=right style='table-layout:fixed'>
<tr>
<td> </td>
<td width=68 align=right><?=$_strSkin['name']?> </td>
<td width=90><?=$c_name?></td>
<td width=60 align=right><?=$_strSkin['password']?> </td>
<td width=90><input type=password name=password <?=size(12)?> maxlength=20 class=input></td>
<td width=190><b>보안코드</b> <?=$zCrypt_Img?> <?=$zCrypt_Form?></td>


./skin/DQ_Revolution_Gallery/include/vote_ex_run.php
./skin/DQ_Revolution_BBS/include/vote_ex_run.php
16째줄 에서.

if(!$member[no]) {
if(isblank($name)) Error("이름을 입력하셔야 합니다");
if(isblank($password)) Error("비밀번호를 입력하셔야 합니다");
if(isblank($antiSpamPw)) Error("보안코드를 입력하셔야 합니다");
include ( "skin/zm_crypt_ref.php" ) ;
if(isblank($antiSpamPw)) Error("보안코드를 입력하셔야 합니다");
if ($antiSpamCode == "" || $antiSpamPw == "" || ZmDecrypt ( $antiSpamCode ) != strtoupper ( $antiSpamPw )) Error("보안코드가 틀렸습니다.<br>(광고 게시물 자동등록 방지를 위함)");

}




글쓰기 부분
./skin/DQ_Revolution_BBS/write.php
./skin/DQ_Revolution_Gallery/write.php
에서 160~170째줄 근처...

<?=$hide_start?>
<? $zCryptClass='input' ; include ("./skin/zm_crypt.php" ) ; ?>
<tr><td colspan=2 style=height:15px></td></tr>
<tr>
<td align="right" style="padding-right:10px;"><font class=han><?=$_strSkin['password']?></font></td>
<td><input type=password name=password <?=size(20)?> maxlength=20 class=input2></td>
</tr>

<tr>
<td align="right" style="padding-right:10px;"><font class=han><?=$_strSkin['zCrypt']?></font></td>
<td><?=$zCrypt_Img?> <?=$zCrypt_Form?></td>
</tr>


./skin/DQ_Revolution_BBS/language/kor/write.php
./skin/DQ_Revolution_Gallery/language/kor/write.php


25째줄 $_strSkin['zCrypt'] = '<b>보안코드</b>';


마지막으로..

./bbs/unlimit_write_ok.php 에서

<?
if(!file_exists(getcwd().'/zboard.php')) die('정상적인 접근이 아닙니다.');

/***************************************************************************
* 공통 파일 include
**************************************************************************/
include "_head.php";
include ("./skin/zm_crypt.php");





신고
테스트 환경은 아래와 같다.

3DS Max, Vray adv 1.5 R5 for Max9 (x86, x64)

CPU기종과 각 OS는 다음과 같다.

Intel Pentium4 2.40GHz, Windows XP
Intel Core2Duo E6600 2.40GHz, Windows XP
Intel Core2Quad E6600 2.40GHz, Windows XP
Intel Core2Quad E6600 2.40GHz, Windows XP 64bit
Intel Core2Quad E6600 2.40GHz, Windows Vista 64bit


테스트 1

Intel Pentium4 2.40GHz, Windows XP                         1m 25.0s
Intel Core2Duo E6600 2.40GHz, Windows XP                0m 22.1s
Intel Core2Quad E6600 2.40GHz, Windows XP              0m 11.1s
Intel Core2Quad E6600 2.40GHz, Windows XP 64bit       0m 9.5s
Intel Core2Quad E6600 2.40GHz, Windows Vista 64bit

테스트 2

Intel Pentium4 2.40GHz, Windows XP                         2m 45.5s
Intel Core2Duo E6600 2.40GHz, Windows XP                0m 39.3s
Intel Core2Quad E6600 2.40GHz, Windows XP              0m 19.3s
Intel Core2Quad E6600 2.40GHz, Windows XP 64bit       0m 17.3s
Intel Core2Quad E6600 2.40GHz, Windows Vista 64bit

테스트 3

Intel Pentium4 2.40GHz, Windows XP                         7m 55.4s
Intel Core2Duo E6600 2.40GHz, Windows XP                1m 49.5s
Intel Core2Quad E6600 2.40GHz, Windows XP              0m 53.6s
Intel Core2Quad E6600 2.40GHz, Windows XP 64bit       0m 56.8s
Intel Core2Quad E6600 2.40GHz, Windows Vista 64bit


테스트 4

Intel Pentium4 2.40GHz, Windows XP                         13m 11.3s
Intel Core2Duo E6600 2.40GHz, Windows XP                3m 16.3s
Intel Core2Quad E6600 2.40GHz, Windows XP              1m 35.6s
Intel Core2Quad E6600 2.40GHz, Windows XP 64bit       1m 23.5s
Intel Core2Quad E6600 2.40GHz, Windows Vista 64bit


테스트 5

Intel Pentium4 2.40GHz, Windows XP                         32m 21.7s
Intel Core2Duo E6600 2.40GHz, Windows XP                7m 46.2s
Intel Core2Quad E6600 2.40GHz, Windows XP              3m 43.7s
Intel Core2Quad E6600 2.40GHz, Windows XP 64bit       3m 36.6s
Intel Core2Quad E6600 2.40GHz, Windows Vista 64bit

비스타자료는 연구소에 있어서 생략하였다.

결론

CPU에 따른 성능은 매우 의미있는 결과를 보이고 있으나, 역시 예상했던대로 32bit, 64bit 환경에서는 속도의 차이는 없었다.
(테스트3의 경우는 오히려 64bit 환경에서 더 느리게 나왔다.)
Windows XP 64bit 환경에서 32bit MAX를 실행했을때 Windows XP 32Bit에서 32Bit Max의 결과는 똑같아서 이곳에 싣지 않았다.

잠시후면 2007년 한해가 간다.
신고

FATAL ERROR (78307b71h) on Map 3D 2008

秋 - Tip 2007.12.30 05:20 Posted by 민수아빠™
FATAL ERROR: Unhandled Access Violation Reading 0x4eadead4 at 78307b71h

해결책 : ACADMAP.MSI > Remove Express Tools
신고

AutoCAD 2008 on 64Bit OS (Vista)

秋 - Tip 2007.12.20 22:29 Posted by 민수아빠™
사용자 삽입 이미지
How to install on x64:

1. Download and install Orca from Microsoft.

2. Copy the installation files to your hard drive or a network folder.

3. Backup the files acad.msi and Setup.ini

4. Edit the ACA.msi with Orca and delete the action found in the table
"InstallExecuteSequence" that is called "CheckFor64BitOS" Delete the same
line under table "CustomAction"

5. Save and close the acad.msi

6. Edit the Setup.ini with Notepad. Delete the line under
"#==================== Platform Requirement" that is labeled
"PLATFORM=NO_WOW_64_PROCESS"

7. Double-click the Setup.exe and you should be able to install without any problems.

8. Some support paths under the "Files" tab of the configuration dialog box
have incorrect paths. The installer adds and extra "AppDataAppData" to
some support paths located in the user profile. For example the Main
Customization File's path is listed as
"C:Users%username%AppDataAppDataAppDataRoamingAutodeskACD-A
2008enuSupportADT" when it should be
"C:Users%username%AppDataRoamingAutodeskACD-A 2008enuSupportADT"
Fix the incorrect paths, hit apply, and you are good to go.
신고
USB 장치를 인식하지 못하여 액티브싱크 실패시
신고

아파치 느려졌을때..

秋 - Tip 2004.01.01 17:41 Posted by 민수아빠™
가끔 접속자가 많은 서버를 운영하다 보면 갑자기 웹 접속이 되지 않거나 접속이 너무 느려 아파치 데몬 개수를 확인해 보면 httpd 가 256개나 떠 있는 경우가 있다. 기본적으로 아파치 웹서버의 경우 MaxClients 가 256으로 설정되어 있어 동시에 256개의 데몬이 뜨게 되면 더 이상의 접속을 받아들이지 않고, 기존의 프로세스가 죽을 때까지 대기한 후 접속이 끊기게 되면 그제서야 접속을 받아들이게 된다. 따라서 동시 접속이 많은 경우에는 이전의 웹 접속이 끊길 때까지 대기를 하여야 하므로 접속 속도가 느린 것처럼 느끼게 되는 것이다. 일반적으로 정상적인 접속의 경우에 256개의 프로세스가 모두 뜨는 경우는 그리 많지 않기에 현재의 상태가 비정상적인 접속인지 여부를 판단하여야 한다. 이를 판단할 수 있는 방법은 netstat –na | grep ES 로 ESTABLISHED 된 연결 상태를 확인하여 클라이언트의 IP 가 정상적인 연결인지 여부를 확인하면 된다. 또는 netstat -na|grep ES|awk '{print $5}'|sort 로 클라이언트의 IP만 따로 Sort 하여 확인하여 보도록 한다. 통상적으로 HTTP 1.1 규약에서부터 적용되기 시작한 KeepAlive 기능을 지정하였을 경우 한 클라이언트 IP 에서 동시에 3-5개정도의 http 프로세스를 생성하므로 한 IP 에서 3-5개 정도의 프로세스를 생성하는 것은 정상적인 현상이다. 비정상적인 접속의 경우에는 아래와 같은 이유가 있을 수 있다.

(1) 서비스 거부 공격(DoS) 의 경우
동시에 서비스할 수 있는 프로세스의 한계가 있다는 점을 악용한 서비스 거부 공격일 가능성이 있다. 이미 한번의 실행으로 100개나 200개등 원하는 만큼의 동시 접속을 맺은 후 이 접속을 끊지 않고 유지할 수 있는 공격 코드가 인터넷상에 공개되어 있다. 그러나 이러한 공격의 경우 공격지의 IP 를 속이기가 매우 어려우므로 netstat 으로 확인 후 비정상적인 접속으로 확인시 해당 IP 를 차단하면 된다.
특정 IP의 라우팅을 차단하는 방법은 아래와 같이 route 를 이용한 방법과 iptables (커널 2.4 이상) 를 이용한 방법 이렇게 두 가지가 있다.

예) 공격지 IP 인 211.40.4.6 으로부터의 라우팅을 차단하는 설정
# route add –host 211.40.4.6 reject
# iptables –A INPUT –s 211.40.4.6 –j DROP
실제 적용되었는지 확인하는 방법은 각각 route –n 과 iptables –L –n 이다.
참고로 TCP SYN Flooding 공격의 경우 SYN 패킷만 대량으로 발송할 뿐 ESTABLISHED 상태가 되지 않으므로TCP SYN Flooding 공격과는 무관하다.

(2) include 를 잘못하여 무한 루프가 돌 경우
요즘에는 php 와 mysql 을 연동하여 많이 사용하고 있는데, 프로그래밍 과정에서의 실수로 php 파일에서 같은 php 파일을 include 하는 경우가 있다. 또는 a.php 파일에서 b.php 파일을 include 하고 b.php 파일에서 다시 a.php 파일을 include 하는 경우도 그러한 경우일 것이다. 이러한 경우에는 무한 루프가 돌게 되어 결국은 아파치 데몬이 금새 Maxclients 에서 지정한 개수로 차 버리게 되는데, 어떤 파일에서 무한 루프가 돌고 있는지 찾기가 힘들다.
따라서 임시로 아래와 같이 include 를 하지 못하도록 차단을 하는 방법이 있다.

# iptables –A INPUT -p tcp -i lo -s xxx.xxx.xxx.xxx --sport 1024:65535 -j DROP

이는 같이 서버내에서 include 시에는 lo (Lookback Interface) 를 통해 sport 가 1024 이후의 high port 를 이용하여 통신한다는 특성을 이용한 것이다. 그러나 이 설정을 하였을 경우 로컬 서버에서 클라이언트 포트를 전혀 사용할 수 없게 되므로 다른 서비스에도 장애가 되기 때문에 임시로만 사용하기 바란다.
또는 ps aux | grep http 로 보이는 프로세스에서 ls –la /proc/pid/ 로 각각의 http 프로세스가 어떤 파일을 참조하고 있는지 일일이 추적하는 방법도 있다.
(예:cwd -> /home/user1/public_html/infinite_loop/)

정상적인 접속의 경우에는 아래와 같이 대처한다.

(1) KeepAlive 옵션 변경
기본값으로 설정되어 있는 KeepAlive On 을 KeepAlive Off 로 변경 후 아파치를 재시작한다. KeepAlive 는 HTTP 1.1 규약에서부터 적용된 것으로 접속 속도에 큰 영향을 준다. KeepAlive 를 Off 로 설정시 다소 접속 속도는 떨어지지만 좀 더 많은 동시 접속을 수용할 수 있다. 따라서 MaxClients 에 도달할 정도로 동시 접속자가 많은 경우에는 KeepAlive 를 Off 로 설정하는 것이 다소 임시 방편이기는 하지만 해결 방법이 될 것이다.
KeepAlive 설정에 대해서는 Hit의 개념과 관련 지어 이해하면 된다. 예를 들어 10개의 이미지 파일을 링크한 HTML 페이지를 로딩시 웹브라우저는 이 HTML 파일을 다운로드하여 클라이언트에서 파싱(parsing) 을 하면서 이미지 파일등이 링크되어 있을 경우 서버에 접속하여 이미지 파일을 요청하는데, KeepAlive 가 On 일 경우에는 한 번 맺은 TCP 연결에 대해 같은 Client IP 에서 접속이 있을 것이라 가정하고 기존의 프로세스가 대기하고 있다가 이후의 접속을 처리하기 때문에 다시 접속을 맺는 절차가 필요 없이 빨리 서비스가 가능하지만, KeepAlive 가 Off 인 경우에는 이미지 파일을 불러올 때마다 매번 세션을 새로 맺고 끊는 과정을 반복하여야 하기 때문에 속도가 느려질 수 밖에 없다. 아파치 홈페이지의 문서에 의하면 많은 이미지 파일이 있는 HTML 문서를 로딩시 KeepAlive 설정에 따라 최고 50%까지 속도 차이가 날 수 있다고 한다. 그렇다고 해서 모든 사이트에서 KeepAlive 를 On 으로 하는 것이 좋은 것이 아니다. 순간적인 동시 접속자는 많지만 한 두 번 검색 후 검색 결과의 링크를 따라 다른 사이트로 빠져 나가는 검색 엔진의 경우에는 KeepAlive 를 Off 로 하는 것이 유리할 것이다. KeepAlive 를 On으로 설정하여 그대로 사용할 경우에는 15초로 설정된 KeepAlive Timeout 을 15초에서 5초 정도로 낮게 설정하는 방법도 있으며 이 값은 자신의 시스템 환경에 맞게 적절히 설정하기 바란다.

(2) 아파치의 MaxClients 조절
기본적으로는 256으로 설정되어 있는 MaxClients 의 한계를 512나 1024 와 같이 적절히 변경한다. 그러나 이 값을 변경하기 위해서는 아파치의 소스를 수정 후 다시 컴파일 하여야 하므로 아파치의 소스 디렉토리에 있는src/include/httpd.h 파일에서 HARD_SERVER_LIMIT 256 로 설정된 값을 512 나 1024로 변경 후 아파치를 재컴파일 하면 된다. 만약 커널 2.2.X 일 경우에는 /usr/src/linux/include/linux/tasks.h 에서 NR_TASKS 와 MAX_TASKS_PER_USER 변수 역시 수정한 후 커널을 재컴파일 해 주어야 하며, 2.4.X 의 경우에는 관련된 커널 제한이 없어졌으므로 아파치만 재컴파일 하면 된다.
그러나 대부분의 사이트에서는 256정도로 설정되어도 충분히 서비스가 가능하므로 무작정 이 값을 크게 늘려 메모리를 낭비할 필요가 없으니 특별한 경우가 아니라면 이 값을 늘리지 않는 것이 좋다.

(3) 추가 아파치 데몬 설정
만약 여러 도메인중 특정 도메인이나 어떠한 사이트내 특정 컨텐츠의 접속이 특별히 많아 같은 서버에 있는 다른 사이트에까지 피해를 주고 있다면 이 부분을 별도로 데몬을 띄워 서비스하는 방법도 있다. 이를테면 한 사이트에서 게시판의 접속이 매우 많다면 기존의 80번 포트외에 8080과 같은 임의의 포트로 작동하는 웹 데몬을 추가로 띄워 이 포트를 통해 접속이 많은 서비스를 담당하게 하는 것이다. 이를 위해서는 기존의 httpd.conf 파일을 httpd8080.conf 와 같이 설정 파일을 복사 후 httpd8080.conf 파일을 아래와 같이 변경하면 된다.

port 80 à port 8080
User nobody à User www
Group nobody à Group www

그리고 /usr/local/apache/bin/httpd –f /usr/local/apache/conf/httpd8080.conf 와 같이 실행하면 8080포트로 작동하는 웹서버 데몬을 추가로 띄우게 되는 것이다. 물론 이때 www 라는 계정은 서버에 생성되어 있어야 하며 Nobody 가 아닌 www 라는 별도의 계정으로 데몬을 작동하는 이유는 한 유저(nobody) 가 생성할 수 있는 프로세스의 한계가 있기 때문이며 커널 2.4.X 에서는 이 제한이 없으므로 Nobody 로 작동해도 관계 없다.
또는 기존의 웹데몬인 httpd 와 파일 이름을 다르게 하여 서로 구별을 쉽게 하기 위해 httpd 대신 httpd8080 등 다른 이름으로 변경하여 실행하여도 좋다.
웹 접속은 http://domain.com:8080/ 으로 하면 되며 이러한 방식으로 8081, 8082, 8083….등의 여러 포트를 띄울 수 있다. 실제로 얼마 전 필자가 운영하는 호스팅 서버에서 특정 사이트의 게시판의 접속이 폭주하여 모든 웹 접속이 느려진 적이 있었는데, 위와 같이 게시판 부분만 따로 떼어 8080 포트로 분리하여 서비스를 하여 문제를 해결한 적도 있다.




-------------------------------------------------------

route add -net 61.0.0.0 netmask 255.0.0.0 reject

route dek -net 61.0.0.0 netmask 255.0.0.0 reject

DELETE FROM `zetyx_board_comment_sylee_tip`
WHERE 1 AND `parent` = 34 AND `name` != '이승엽'

신고
TAG apache, tip

특정용량 이상 파일 찾아 지우기

秋 - Tip 2003.10.15 18:27 Posted by 민수아빠™
찾기

$ find    /    -size    +20480

찾아 지우기

$ find    /    -size    +20480    -exec   rm    {}   \;  

(1 block = 512 byte  ---> 2 block = 1024 byte = 1kbyte  ---> 2048 block = 1Mbyte)


출처 : http://network.hanyang.ac.kr/data/fundamentals.htm
신고

Winamp 단축키

秋 - Tip 2003.10.13 21:57 Posted by 민수아빠™
아래 바로 가기 키(단축키)는 윈앰프에서만 사용하실 수 있습니다.

널소프트 윈앰프의 제작정보를 보여드립니다 : F1
연주파일 열기 편집창 : Ctrl+E
연주목록 편집기 보이거나 숨기기 : Alt+E
그래픽 이퀼라이져 보이거나 숨기기 : Alt+G
미니 브라우져 보이거나 숨기기 (선택 스위치입니다.) : Alt+T
다른 윈앰프 윈도우를 통해 반복하기 : Ctrl+Tab
스킨 선택으로 가기 : Alt+S
세부 설정으로 가기 : Ctrl+P
내장 시각효과 설정으로 가기 Alt+O
주 메뉴로 건너뛰기 : Alt+F

현재 트랙에서 시간을 건너뛰기 : Ctrl+J
파일을 건너뛰기 상자 열기 : J 혹은 키패드 .(점)

*** 주 윈도우 단축키 일람***

      (설정/선택 스위치들에 관해...)
자동 반복(당연히 선택 스위치이죠...^^) : R
무작위 재생(이것도 선택 스위치입니다.) : S
파일 정보 상자 열기/ID3 편집기 : Alt+3

      (재생조절)
재생/처음부터 재생/계속 : X 혹은 키패드 5
정지 : V
소리가 작아지면서 멈춤 : Shift+V
이 곡이 끝나면 멈춤 : Ctrl+V
일시정지/계속 : C
다음 트랙으로 : B 혹은 키패드 6
이전 트랙으로 : Z 혹은 키패드 4
10 트랙 앞으로 : 키패드 1
10 트랙 뒤로 : 키패드 3
5초 전으로 : Left Arrow 혹은 키패드 7
5초 후로 : 키패드 9 혹은 Right Arrow
파일열기/재생 : L 혹은 키패드 0                
인터넷에 있는 파일 열기/재생 : Ctrl+L 혹은 Ctrl+키패드 0
폴더 열기/재생 : Shift+L 혹은 Insert
볼륨을 높임 : 키패드 8 혹은 Up Arrow
볼륨을 낮춤 : Down Arrow 혹은 키패드 2


*** 연주목록 편집기 단축키 일람 ***

자동 반복 (선택 스위치입니다.) : R
무작위 재생 (선택 스위치입니다.) : S

      (파일 입출력)
재생할 파일 추가 : L 혹은 키패드 0
재생할 인터넷 주소 추가 : Ctrl+L 혹은 Ctrl+키패드 0
재생할 폴더 추가 : Shift+L 혹은 Insert
새로운 연주목록을 보입니다. : Ctrl+N
연주목록을 불러옵니다. : Ctrl+O
연주목록을 저장합니다. : Ctrl+S
선택한 트랙의 정보를 보거나 편집하기 : Alt+3
선택한 트랙의 파일이름 편집하기 : Ctrl+E

      (연주목록 조정)
모두 선택 : Ctrl+A
선택한 파일의 순서를 꺼꾸로 위치하게 하기 : Ctrl+I
연주목록에서 선택한 파일 삭제 : Delete
연주목록을 자르기 : Ctrl+Delete
연주목록 비우기 (Ctrl+O 키를 눌린 것과 비슷함) : Ctrl+Shift+Delete

선택한 파일을 밑으로 이동 : Alt+Down Arrow
선택한 파일을 위로 이동 : Alt+Up Arrow

커서를 밑으로 이동 : Down Arrow
커서를 위로 이동 : Up Arrow
선택한 파일 재생 : Enter
목록의 끝으로 : End
목록의 처음으로  : Home
14번째 페이지 앞으로 이동 : Page Up
14번째 페이지 뒤로 이동 : Page Down

존재하지(재생되지) 않는 파일 삭제 : Alt+Delete

      (연주목록 정렬)
연주목록을 노래 제목별로 정렬 : Ctrl+Shift+1
연주목록을 파일이름별로 정렬 : Ctrl+Shift+2
연주목록을 파일 경로와 이름별로 정렬 : Ctrl+Shift+3
연주목록을 역으로 : Ctrl+R
연주목록을 무작위로 섞기 : Ctrl+Shift+R


      (재생 조절 (ala 주 윈도우))
재생/처음부터 재생/계속 : X 혹은 키패드 5
정지 : V
소리가 작아지면서 멈춤 : Shift+V
일시정지/계속 : C
다음 트랙으로 : B 혹은 키패드 6
이전 트랙으로 : Z 혹은 키패드 4
뒤로 10곡 건너뛰기 : 키패드 1
앞으로 10곡 건너뛰기 : 키패드 3
5초 전으로 : Left Arrow 혹은 키패드 7
5초 후로 : 키패드 9 혹은 Right Arrow

연주목록 편집기 닫기(숨기는 겁니다..) : Ctrl+F4


*** 그래픽 이퀼라이져 단축키 일람 ***

EQ 밴드를 늘이기 : 1 - 0
EQ 밴드를 줄이기 : Q - P
EQ 프리앰프를 늘이기 : `
EQ 프리앰프를 줄이기 : TAB
EQ 선택 스위치 : N
설정값 메뉴 열기 : S
설정값 열기 : Ctrl+S
EQ 자동으로 읽기 (선택 스위치입니다.) : A
그래픽 이퀼라이져 닫기 (역시 숨기는 것) : Ctrl+F4


*** 미니브라우져 단축키 일람 ***

뒤로 갑니다. : Alt+Left
앞으로 갑니다. : Alt+Right
'가기' 메뉴를 엽니다. : Ctrl+L
인터넷에 있는 파일을 열 수 있게 상자를 불러옵니다. : Ctrl+O
페이지를 새로 불러옵니다. : Ctrl+R
링크 목록을 업데이트 합니다. : Ctrl+Alt+R

미니브라우져를 종료 : Ctrl+F4
신고

과서버 하드디스크 이전하기

秋 - Tip 2003.08.22 10:28 Posted by 민수아빠™
기존에 arch, may가 서로 같이 학과서버로 활용되었다. 이번에 may의 하드가 날아가서 may를 일단 죽이고 arch로 통합하는 과정이 있었다.

먼저 primary의 slave로 장착한다고 가정한다.

1. 하드디스크를 primary slave에 장착하고 부팅한다.

2. fdisk를 실행한다. hda, hdb, hdc, hdd 중 primary slave 는 hdb이다.
[root@arch root]# fdisk /dev/hdb

The number of cylinders for this disk is set to 3737.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p


3. 하드디시크가 여러개로 나눠져 있다.
Command (m for help): p

Disk /dev/hdb: 255 heads, 63 sectors, 3737 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1   *         1       383   3076416   83  Linux
/dev/hdb2           384      3737  26941005    5  Extended
/dev/hdb5           384       416    265041   82  Linux swap
/dev/hdb6           417      3737  26675901   83  Linux

Command (m for help): q

[root@arch root]#


이중에 데이타가 있는곳이 hdb1, hdb2 이다.

4. 마운트 하기.
[root@arch root]# mkdir /oldarchi
[root@arch root]# mkdir /oldarchi/hdb1
[root@arch root]# mount /dev/hdb1/  /oldarchi/hdb1
[root@arch root]# cd /oldarchi/hdb1


신고