출처 : 청주콜라님 네이버 블로그
원문 : 델파이 단축키


[폼 디자이너]

Ctrl + 방향키(←↑→↓)                     : 컴포넌트 위치 이동

Shift + Ctrl + 방향키(←↑→↓)              : 컴포넌트 위치 이동(빠르게)

Shift + 방향키(←↑→↓)                      : 컴포넌트 크기 변경

선택 후 ESC                                        : Parent컴포넌트로 이동

 

[오브젝트 인스펙터]

Ctrl + ↓                            : 컴포넌트 선택기 팝업
(팝업 후 알파벳 문자 입력하여 해당 컴포넌트로 이동 가능)

Alt + ↓                             : Property Combo 선택기 팝업
(팝업 후 알파벳 문자 입력하여 해당 컴포넌트로 이동 가능)

Ctrl + Enter                           : 열거형 Property값을 다음 값으로 변경

+선택 후, ←,→                           : 하위 Property펼치기,접기

Ctrl + Tab                           : Properties,Events탭 전환

..선택 + Ctrl + Enter     : Property Editor 열기

Tab                                               : Property Name/Value토글,  Property 쪽에 Cursor 가 위치한
 상태에서 키보드를 치면 Incremental Search

 

            

 

[코드 인사이트(Code Insight)]

Ctrl + Space                                : 코드완성 마법사

Ctrl + Shift                     : 메소드 파라미터 팁

Ctrl + J                                : 코드 템플릿 사용

Ctrl + Shift + Up/Down                Object 의 Member function/procedure 의 선언부와 구현부를 이동

Ctrl + Shift + C         Object 의 Member function/procedure 의 선언부와 구현부중

                         의 한가지를 코딩 한후 누르게 되면 나머지 선언부 또는 구

                         현부를 완성시켜줌

 

[코드탐색기]

F2                                                : 이름 변경하기(Uses제외)

DoubleClick                                        : 소스코드 탐색기의 해당 코드로 이동

Ctrl + Shift + E                           : 탐색기<->에디터 창 이동

 

 


 

[소스코드 에디터]

Ctrl + S                           : 파일 저장

Ctrl + F4                                  : 파일 닫기

Ctrl + Shift + C                            : Method/Procedure/Property자동생성

Ctrl + Shift + ↑(↓)                       : 선언부,구현부 상호간 이동

Ctrl + ←,→                              : 이전 단어, 다음 단어

Ctrl + Shift + ←,→                       : 이전 단어, 다음 단어까지 블록

Ctrl + Home                                        : 소스코드 맨 앞으로 이동

Ctrl + End                                        : 소스코드 맨 뒤로 이동

Shift + Home                                        : 현재 라인 맨 앞까지 블럭

Shift + End                                        : 현재 라인 맨 뒤까지 블럭

Ctrl + PageUp                              : 현재 화면의 맨 윗줄로 이동

Ctrl + PageDown                           : 현재 화면의 맨 아랫줄로 이동

Ctrl + Shift + I(U)                          : 현재 라인에 들여쓰기(내어쓰기)

Shift + Alt + 방향키(←↑→↓)                : 블록 사각형 지정

Ctrl + KL                                        : 캐럿이 Line Home에 있을 때, Line 블럭

Ctrl + T                           : 현재 위치에서 마지막 단어까지 삭제

Ctrl + I                                     : 블럭 지정된 문자를 공백으로 변환

Alt + {, }                                        : '{'괄호 앞,뒤에서 사용. 짝 찾기.

Ctrl + N                                   : 다음 Line 맨 앞으로 줄바꿈

Ctrl + M                                        : 줄바꿈

Alt + BackSpace                            : 실행 취소

Ctrl + E                                    : 한 글자 찾기

Ctrl + ↑(↓)                               : 캐럿 고정 스크롤

Ctrl + F                                    : 찾기

Ctrl + R                                    : 바꾸기

F3                                                : Search Again

Ctrl + Enter : 현재위치의 단어로 File Open 시도 현재 Path 에서 찾지 못하면 Dialog

Ctrl + O, C  Column Block Mode (또는 Alt키를 누른상태에서 Mouse를 드래그 해 

                 도 컬럼블럭 설정이 가능, Shift + Alt + Arrow Key 를 사용해도 컬

                 럼블럭 설정)

Ctrl + O, K Line Block Mode

 

[델파이 GUID 생성키]

Ctrl + Shift + G

 

[화면이동]

F11   View Object Inspector

F12    Toggle Form/Unit

Alt + 0   View Window List

Ctrl + F12  View Unit

Shift + F12  View Form

Ctrl + PgUp/PgDown  CodeEditor에서 현재페이지의 첫줄(PgUp), 마지막줄(PgDown)로 이동

 

[컴파일/실행]

Ctrl + F9  Compile

F9  Run

F7  Trace Into

F8  Trace Over

F5  Set Breakpoint

Ctrl + F5  Add Watch

Ctrl + F7  Evaluate/Modify

 

 

 

[키 매크로]

Ctrl + Shift + R Record

* 키매크로 작성순서 :  <Ctrl+Shift+R> -> <원하는키> -> <Ctrl+Shift+R>

Ctrl + Shift + P Play

출처 : 최선을 다하여 사는 중
원문 : vmware tool 설치하기

vmware를 더 잘 사용하기 위해, vmware tool을 설치하자

메뉴 중 VM-> Install VMware Tools..를 클릭

바탕화면에 cd 모양이 생기면 클릭해서 VMwareTools-버전.tar.gz 파일을 압축을 풀기 위해 다른 폴더로 옮긴다.(마우스로 끌어넣어도 되고, cp 명령을 사용해도 된다)

다음 명령을 사용하여 압축을 푼다
tar -zxvf VMwareTools-버전명.tar.gz

vmware-tools-distrib 라는 폴더가 생기면 그 안으로 들어가서
다음 명령을 하여 설치 시작(root 권한이어야 함)
./vmware-install-pi

설치하면서 enter를 치거나 yes를 쓰면 됨

해상도 조절 부분은 알맞은 번호를 쓴다.

설치 완료!

출처 : 최선을 다하여 사는 중 님 블로그
원문 :  vmware shared folder 만들기 

vmware를 사용할 때 window에 있는 파일을 공유하기 편하게 하기 위하여
shared folder를 사용한다.

설정하는 방법!!

vmware 메뉴에서 VM->Setting을 클릭
Options 탭에 보면 Shared Folders가 있다.

shared Folder를 클릭하면 오른쪽에 화면이 뜬다.
Add..버튼을 누르고 Host folder에 browse를 눌러 window에 있는 폴더를 선택하여 추가

일단 Enabled에 체크하고,
Read-only는 읽기 권한만 주려고 할 때 체크하고 OK버튼을 누르자!

이제 linux에서 /mnt/hgfs 폴더 밑에 보면 shared folder가 있다!!
출처 : 참좋은군사
원문 : 한글 단축키


한글 단축키

기본단축키

1. Ctrl + O : 불러오기

2. alt +S : 저장하기

3. shift +방향키 : 블록설정

4. alt + 방향키(←→) : 메뉴이동, alt + 방향키(↑↓) : 서브메뉴

5. Ctrl +F10 : 문자표

6. Home : 문자열에서 가장 앞쪽으로 이동

7. End : 문자열에서 가장 뒤쪽으로 이동

8. Page Up : 페이지에서 가장 위쪽

9. Page Down : 페이지에서 가장 아래쪽

10. insert : 삽입, 수정 변환

11. Crtl + 마우스 가운데롤 : 화면배율 변환

12. Alt + L : 글자모양

13. Alt + T : 문단모양

14. Alt + Shift + E : 글자크기 커짐

15. Alt + Shift + R : 글자크기 작아짐

16. Alt + Shift + J : 장평이 줄어듬

17. Alt + Shift + K : 장평이 늘어남

18. Alt + Shift + A : 자간이 줄어듬

19. Alt + Shift + Z : 자간이 늘어남

20. F6 : 스타일

21. F7 : 편집용지

22. F8 : 맞춤법검사

23. Crtl + Shift + C : 가운데 정렬(Center)

24. Crtl + Shift + M : 양쪽정렬(Middle)

25. Crtl + Shift + L : 왼쪽정렬(Left)

26. Crtl + Shift + R : 오른쪽정렬(Right)

27. Alt + Shift + B : 글씨 진하게

28. Alt + Shift + I : 기울게

29. Alt + Shift + U : 밑줄

30. Crtl + N + T : 표만들기

※창이 열려진 상태에서 Alt키를 누르면 단축키가 나옴.



표단축키

※지금부터의 단축키는 블록을 설정한 후 누르셔야 됩니다.

※표는 되도록 글자처럼 취급하는 것이 편집하기 편함.(표의 모서리 선택 + P)

1. F5(한번 누름) : 블록설정-이동가능

2. F5(두번 누름) : 여러 셀을 블록으로 설정 할 수 있음.(다중선택)

※Tip : 표안에 셀을 전체 선택하기 위해서는 F5를 세 번을 누르고, 한줄을 선택하기 위해서는 처음 칸에 F5를 두 번 누른 후 End버튼을 누름.

3. 복사하기, 붙여넣기, 잘라내기 모두 기본과 동일

4. S : 셀나누기

5. W : 셀 너비를 같게

6. H : 셀 높이를 같게

7. Shift + 방향키 : 표전체 크기는 변하지 않고 셀 크기만 변함

8. Ctrl + 방향키 : 표전체 크기를 변하면서 셀 크기도 같이 변함

9. Alt + Delete : 셀 지우기

10. Alt + insert : 셀 추가하기

11. B : 셀테두리/배경

12. P : 표/셀 속성

안녕하세요? 바람돌이입니다.
이번에는 간략하게 프로그래밍을 할 때의 팁을 이야기 하겠습니다.

보통 프로그램을 작성하다보면, 디버깅을 위해서 printf문을 사용할 경우가 많습니다.
또한, 배포를 한 뒤에도, 남들이 자신의 코드를 보고 디버깅을 해야하는 경우가 종종있죠.
이를 위해서 상용적인 코드에는 다음과 같은 Tip을 종종 사용하곤 합니다.

다음과 같은 코드를 header 파일에서 보신적이 있으실 겁니다.

#ifdef XXX_DEBUG
   #define print_debug(A) printf(A)
#else
   #define print_debug(A)
#endif

정확한 명칭은 다를 수 있습니다.

간단하게 살펴보면, "#ifdef"는 뒤에 전처리기명이 정의 되어있으면, 이라는 뜻입니다.
즉, XXX_DEBUG가 선언이 되어있으면, 코드 내에 있는 print_debug(A) 부분은 모두 printf(A)로 치환됩니다.
그리고, 선언이 되어있지 않으면, print_debug(A)는 모두 사라지게 되는 것이죠.

보통 우리는 함수내에 printf(A)를 직접 삽입합니다.
그리곤, 필요없는 상황이 된다면, 삭제를 하지요. 그러나, 매우 귀찮을 일이 될 것이며, 실수로 삭제를 하지 않거나 하는 상황이 발생합니다.

그러나, 위의 코딩 기법을 사용하게 되면, XXX_DEBUG를 선언하지 않는 이상 실제 코드(컴파일한 파일)엔 debugging 코드는 존재하지 않게 되지요.

게다가 만약, 다시 디버깅을 해야하는 상황이 된다면, (다 완성이 되었다고 생각했는데, 오류가 있거나, 버전업을 할 경우) XXX_DEBUG만 다시 선언하면, 곧바로 Debugging을 수행할 수 있습니다.

조금만 더 기법을 사용한다면, debugging을 level 별로도 수행 가능할 것이라 생각합니다.
그 부분은 추후 기법으로 남겨놓죠. @^-^@



전처리기에 대한 것을 더 알고 싶으시다면, #ifndef , #ifdef , #endif #pragma 등등을 검색해 보시기 바랍니다.







출처 : [봉근닷컴] 행복한 삶의 현장
원문 : 너무나 배꼽잡는 이야기 - 백신과 바이러스의 싸움의 승자는 누가?

컴퓨터엔 바이러스가 살고 있습니다. 바이러스의 천적으로 백신도 컴퓨터에 살고 있습니다.

그러나 이들 둘이 싸우면 누가 이길까요? 배꼽잡는 요절복통의 단편 애니메이션을 통해 백신과 바이러스가 내 PC에서 참으로 기가막히게 싸움을 합니다.

과연 누가 이 싸움에서 이길까요? 스트레스를 확날려버리는 재미있는 이야기...

현실에서는 예방 백신은 바이러스의 침입을 막고 건강하게 신체를 시켜주는데 PC 상에서는 어떨까요?

본 애니메이션은 어베스트 백신 사용자 중의 한 분인 Alan Becjer에 의해 만들어진 애니메이션입니다.

처음에 좀 재미었을 지 모르나 끝까지 보시면 웃음을 참기 어려울만 큼 무척 재미있습니다.

[Flash] http://blog.softmail.co.kr/attachment/cl188.swf

우선 지금 설치하고자 하는 MySql의 버전을 확인하시기 바랍니다.
지금은 mysql 5.0.37 입니다.
메뉴얼에 나와있는 버전은 2.4.14.6 이네요.

* 설치 조건
1. windows 2000 , XP나 그 이후 버전에서 동작함
    단, vista에서는 Visual Studio 2005가 인스톨되어 있어야 함

2. CMake. CMake는 다음 경로에서 다운 받을 수 있음
   http://www.cmake.org/ 
   download에 가서 최신 버전을 다운 받으면 됨

3. Microsoft Visual C++ 2005 Express Edition,
    Visual Studio .Net 2003 (7.1),
    Visual Studio 2005 (8.0)
    중에 하나의 Compiler System이 있어야 함 (VS 6.0은 안될 거 같네요. 저두 인스톨 중)

4. 만약 Visual C++ 2005 Expreess Edition을 사용한다면, 다음 싸이트에서 자신에 맞는 SDK를 다운받아서
   사용할 것
   http://msdn.microsoft.com/platformsdk/

5. 3GB~5GB의 여유 공간

이정도 입니다.


출처 : 쿠마님 네이버 블로그
원문 : ctags & cscope 설치 및 사용



1. ctags 란 ?

   = >  ctags는 프로그래밍 소스 코드의 태그 (전역변수 선언, 함수 정의, 메크로 정의)들의
          데이터 베이스(tags파일)을 생성하는 명령어입니다.
          커널 소스 분석등 작업에서 탁월한 성능을 발휘합니다

2. ctags 버전 확인하기

    = > (쉘에서)  $ctags --version 이라고 입력한다 설치 돼어 있는경우 버전 정보가 나옵니다
    cannat commond find  => 깔려 있지 않을시 에러 출력
    ( 대부분 기본리눅스에서 디폴트로 깔려 있지 않을것이다 처음 설치시 전체 설치 또는..
      선택 설치로 ctags를 설치 한경우라면 몰라도 디폴트로는 거의 안깔려 있습니다.
      특히 ubuntu 의 경우 원래 데스크탑용으로 개발 돼고 있어서.. 개발 툴이 하나도 안깔려 있기
      때문에 별또 설치를 필요로 합니다 )

3. ctags 설치하기
    => ubuntu 의 경우 레드헷 이나 페도라 등 다른 리눅스에 비해 비교적 쉽게 설치할수 있습니다
        레드헷일 경우 rpm 버전을 따로 다운 받아 설치 해야 하는 방면 데비안 계열 명령어
        apt-get으로 간편하게 설치가 가능합니다

    ubuntu 설치 하기
      (쉘에서) $apt-get install  ctags  (자동으로 최신 버전으로 설치 됩니다 )

    redhat 설치하기 http://sourceforge.net/projects/ctags (rpm 버전을 다운 받은후)
        (쉘에서) $rpm -ivf 다운받은 rpm 파일명 (으로 설치 하실수 있습니다)

    설치 완료 후 2번 과정 버전을 확인 하면 버전 정보가 재대로 나오면 재대로 설치가 되었습니다.
    레드헷 일 경우 lib.so 에러가 발생할수 있는데 버전이 안맞는 것을 깔면.. 설치가 재대로
    돼지 않는 문제점이 발생합니다 위 링크에서 최신버전 5.6.1 의 경우 페도라 5 용 이므로
    레드헷일 경우 5.0 버전 이나 찾아보시고 하위 지원 돼는 버전을 설치 해야 합니다..
    확인 결과 5.0.1 은 재대로 설치가 가능하더라고요..

4. tags 파일 만들기
    = > 우선 커널이 있는 폴더로 이동 합니다
           $cd /usr/src/linux/ <== ( 전 linux로 심볼릭 링크가 돼어 있습니다 안돼어 있다면
           심볼릭 링크를 만드셔도 돼고 직접 경로를 다 입력 하셔도 상관없습니다)
           심볼릭 링크 만들기 -> ln -s  /usr/src/커널폴더명 linux
           커널 폴더로 이동했으면 ctags -R 을 입력하여 tags 파일을 생성합니다
           시간이 좀 걸리는데 ls로  tags 파일이 생성 된걸 확인 합니다

          $cd /usr/include 폴더로 이동 합니다
           마찬가지로 ctags -R 명령으로 include 폴더도 tags 파일을 생성 합니다
           정상적으로 파일이 생성 되었다면 다음 단계로 넘어갑니다

5. ctags 설정 하기
    = > 설치 가 완료 되고 tags파일이 생성 되었다면 작업이 거의 끝난거나 마찬 가지 입니다.
           매번 vi 에서 ex모드 에서 입력하는거도 한계가 있으므로 .vimrc 파일에
           tags 를 설정 해두는게 편합니다
           vimrc 파일에 다음 라인을 입력 한후 저장합니다
           set tags=./tags,/usr/src/linux/tags,/usr/include/tags
           (linux 의 경우 심볼릭 링크 한경우)  직접 폴더를 입력 하신분은 경롱에 맞게 설정 합니다


사용하기         
=====================================================
여기 까지 했다면 설치 및 설정은 완료 되었습니다..

이제 사용 하는거만 남았는데
복잡하게 책에는 여러 옵션이 많지만 보통 잘안쓰는 옵션들은.. 거의 쓸일이 없고..
자주 쓰는 것만 다루겠습니다.

ex 모드 -> vi 에서 : 을 눌러서 명령을 입력 하는 모드를 말합니다
ex 모드에서 :tj 함수명 이나 구조체명 (왜 tj 인가 ?  tags jump 약어)
(찾고자 하는 함수명이나 구조체 이름등을 입력 하면 관력 이름 함수나 구조제..정보가 나타 납니다 )
보통 한두가개 아닌경우 스페이스바를 누르면 목록이 더나오며 d 를 누를 경우 한페이지씩..
보여 줍니다 나갈때는 q로 나갈수 있습니다 그럼 <CR> 이 나오는데 여기서 찾은 함수나 구조체
번호를 입력 하면 자동으로 점프합니다

다른 방법으로 가는 방법은 커널 소스를 vi열어서 분석하다가 함수 원형이나 구조체 이름에서
ctrl + ] 를 누르면 자동으로 태그를 찾아 갑니다
이전으로 다시 돌아 올때는 ctrl + t 를 사용 해서 돌아 올수 있습니다

ex모드 : sts 함수명 , 구조체명
위에서 설명한 tj와 비슷 하지만 한가지 다른점이 수평창분활을 해서 결과를 보여 줍니다

이외 명령이 더 있지만 실제 이거만 알아도 충분 합니다 나머지 이전으로 돌아가기 이런건..
거의 실제 사용 되지도 않습니다 위에 설명한 4가지 방법이 주로 쓰는 방법입니다.


[tip] 헤더 파일 바로 읽어 오기

#include <linux/kernel.h> <- 헤더파일 이름에 커서를 위치 한후

Ctrl + wf 를 누르면 창이 수평 분할되어 헤더파일이 열립니다


====================================================



cscope 를 이용한 2%로 채우기
    ctags만으로도 커널소스와 소규모 프로젝트롤 분석하는데 부족함은 없지만..
    2%로 부족한게 있다 ctags만으로는 지역변수나 전역변수가 사용된곳 은 찾기가 힘들다
    이때 cscope 사용하면 됩니다

cscope 설치 하기
    ubuntu = > $apt-get install cscope 로 간단히 설치 할수 있다 (데비안 계열의 강점)
    redhat
    (다운 로드)
    wget http://belnet.dl.sourceforge.net/sourceforge/cscope/cscope-15.3-1.i386.rpm
    설치 하기
    $rpm -ivf cscope-15.3-1.i386.rpm

cscope 설정 하기
  
cscope 설정은 좀 손이 많이 갑니다 (ctags에 비해...)
    우선 mkcscope.sh 파일을 만들어야 합니다
  ============ mkcscope.sh 파일 내용 ================
    #!/bin/sh
    rm -rf cscope.files cscope.files

    find . \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name

    '*.S' \) -print > cscope.files
    cscope -i cscope.files
    ============================================
    파일 생성 후 파일 퍼미션 설정
    $chmod 755 mkcscope.sh
    $mv mkcscope.sh /usr/bin
    디렉토리 이동
   
$cd /usr/src/linux (심볼릭 링크 아닐시 전체 경로)
    mkcscope.sh 실행  하면 빌드 돼면서 데이터가 만들어 집니다
    빌드 종료시 값을 입력 하는게 나오는데 ctrl + d를 눌러서 종료 합니다.
   
    이후 .vimrc 파일에 다음 내용을 추가 합니다
    =============================================
    set csprg=/usr/bin/cscope
    set csto=0(숫자 0)
    set cst
    set nocsverb

    if filereadable("./cscope.out")
       cs add cscope.out
    else
       cs add /usr/src/linux/cscope.out
    endif
    set csverb
   ==============================================
   이제  설정은 끝이 났습니다

   사용하기 ( cscope 의 명령 형식 )
    :cs find {질의종류} {심벌}
    ex) cs find s start_kernel

  
cscope 의 질의 종류
    0 or s  - > Find this C symbol
    1 or g  - > Find this definition
    2 or d  - >
Find functions called by this function
    3 or c  - > Find functions calling this function
    4 or t  - > Find assignments to
    6 or e  - > Find this egrep pattern
    7 or f   - > Find this File
    8 or i   - > Find files #including this file


cscope 를 활용 함으로써 더 완벽히 커널소스를 분석할수 있지만 ctags 만 사용하는거 보다
cscope 를 같이 사용 하니까 찾는데 시간이 더 오래 걸리는거 같네요..
.vimrc 파일에서 cscope 세팅 부분을 주석으로 해두고 사용하다가..
더 깊게 찾을 필요가 있을때 사용 하는게 더 편할듯 싶은데..
그냥 설정 된 체로 ctrl + ] 를 남발하면  ctags만 있을때는 더이상 찾을게 없으면
그냥 위치에서 멈처 있는데 cscope 가 세팅 돼어 있다면 계속 해서  파일을 검색해서
검색하는데 시간이 좀 걸려서..^^;; 거슬릴때가 있네요..

정리 할겸 만들어 봤는데 생각보다 시간이 오래 걸리는듯..
해보시고 안돼는거 있으면 댓글 달아 주세요..


기존 내용에서 추가 된 부분입니다..

Tlist 내용이 빠져서 다시 수정합니다..

뭐 크게 달라지는 내용은 없고요.. Tlist 가 먼지 모르는 분도 있을테니까요..

간단하게 Tlist 를 설명하지면 TagList 약자로써.. 이름에서 설명하는거 처럼..

해당 파일의 정의된 함수명,변수(#define), 등을 이름으로 효율적으로 보여주는 유틸리티 입니다.

ctag & cscope 와 연동해서 사용하면 무척 효율적이죠..

말로 설명하는게 감이 안오시는분은.. Visual C++에서요 Cpp 확장자로 작업하시면..

클레스 별로.. 함수 이름이 나와서 관리 할수 있잖아요.. 그거랑 똑같다고 보시면 돼요..

관련 문서는 인터넷에서 검색하면 쉽게 찾을수 있고요..

못찾겠다 싶은 분들은 제 게시판에 잘설명된게 있어서 퍼와서 올려 뒀어요.. 참고하세요..^^

http://blog.naver.com/ikariksj/140026617491




=== 2차 수정부분 === [ 2006/09/21 ]
mkcscope.sh 파일 생성시  띄워쓰기 주의를 하지 않으면..
문제가 발생하는게 확인 돼었습니다..
한줄로 붙여서 쓰면 보기 불편해서 두줄로 짤라뒀는데..
그부분을 그대로 복사해서 붙여 넣으면 오류가 발생하네요..
물론 직접 코딩하는거면 띄위쓰기 주의하면서 하면 괜찮은데..ㅎ
작성된지 좀됀문서인데도 요즘도 간간히 스크랩 돼는걸 보면..
필요하신분을이 있을지 모르니.. mkcscope.sh 를 새로 첨부 해둘께요..


참 노파심에 한말씀 드린다면 네이버에서 블로그 자료 올리면 자동으로 아이이가..
붙게 돼는데 받은 파일에서 아이디 부분을 지워야 합니다..
mkcscope.sh 로 변경해서 사용하세요..
출처 : 한국리눅스유저그룹
원문 : MySQL 소스 인스톨 완전해부

MySQL 소스 인스톨 완전해부

MySQL 소스 인스톨  

[EUC_KR 정렬옵션 추가  및 한글 메시지 사용]

MySQL에서 한글 캐릭터 셋으로 정렬을 하기 위해서는 소스 컴파일을 해야 한다. 바이너리 배포판은 Latin1으로 설정되어 있어 한글로 정렬이 제대로 되지 않는다. 검색이 되지 않는 것은 아니다

컴파일 전에 반드시 확인해야 할 사항은  C 컴파일러의 버전이다 gcc 2.7.x 버전은 버그가 있으므로 MySQL을 설치하기 위해서는 꼭 2.8.x 버전으로 업그레이드하자.
레드햇 6.0  이상의 LINUX 라면 전혀 문제가 없다.

1) 설치준비

우선 http://www.mysql.org에서 최신 버전의 소스를 받아온다.
이 글을 쓰고 있는 현재 최신 버전은 3.23 베타 버전과 3.22.25 버전이다.
/tmp에 소스배포판이 있다고 가정하고 컴파일을 시작하자 먼저 압축을 푼다

압축풀기 : zcat mysql-version.tar.gz | tar xvf -
[root@localhost /tmp]# zcat mysql-3.22.23b.tar.gz | tar xvf -
                       mysql-3.22.23b/
                       mysql-3.22.23b/Makefile.in
                       mysql-3.22.23b/README
                       mysql-3.22.23b/stamp-h.in
                       mysql-3.22.23b/Makefile.am
                ...
                ...
                 ...
                mysql-3.22.23b/support-files/mysql.spec.sh
                mysql-3.22.23b/support-files/my-example.cnf.sh
                mysql-3.22.23b/support-files/mysql-log-rotate.sh
                mysql-3.22.23b/support-files/mysql.server.sh
                mysql-3.22.23b/support-files/binary-configure.sh

2) configure 스크립트 실행

압축이 풀린 디렉토리로 이동한후 cofigure 를 실행한다 사용가능한 옵션을 자세히 보려면 --help 를 붙여주면 된다.

[root@localhost /tmp]# cd mysql-3.22.23b
[root@localhost mysql-3.22.23b]# ./configure --help
            Usage: configure [options] [host]
            Options: [defaults in brackets after descript-xions]
            Configuration:
              --cache-file=FILE       cache             test results in FILE
              --help                              print this message
              --no-create                         do not create output files
              --quiet, --silent       do             not print `checking...' messages
              --version                           print the version of autoconf that created configure
              ...

다른 옵션은 모두 디폴트 값을 쓰고 --prefix=PREFIX 와  --with-charset=CHARSET 두가지만 설정을 하겠다.

--prefix : 컴파일이 끝난 후 파일들이 인스톨되는 디렉토리를 정해준다.
--with-charset  : 정렬에 사용될 캐릭터 셋을 정해 준다. 한글정렬을 위해 필요하다.
 
기본적으로 정해진 값은 latin1 이며 다음 값들 중 하나로 설정해 줄 수 있다.

 use specified charset (default is latin1, must be one of: big5 danish cp1251 cp1257 croat czech dec8 dos euc_kr german1 hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin2 swe7 usa7 win1251 win1251_ukr ujis sjis tis620)

그럼 두 가지 옵션을 주고 configure 스크립트를 실행하자. 설치될 디렉토리는 /usr/local/mysql 로 하고 euc_kr 정렬 옵션을 준다

                #./configure --prefix=/usr/local/mysql --with-charset=euc_kr

 loading cache ./config.cache
            checking host system type... i586-pc-linux-gnu
            checking target system type... i586-pc-linux-gnu
            checking build system type... i586-pc-linux-gnu
            checking for a BSD compatible install... (cached)
            ...
            ...
            ...
           
MySQL has a Web site at http://www.tcx.se/ which carries details on the latest release, upcoming
features, and other information to make your work or play with MySQL more productive. There you can
also find information about mailing lists for MySQL discussion.

Remember to check the platform specific part in the reference manual for hints about installing on your platfrom. See the Docs directory.
           
Thank you for choosing MySQL!

3) make


이제 본격적으로 컴파일할 준비가 끝났다. 마음을 가다듬고 컴파일을 시작하자

[root@localhost mysql-3.22.23b]# make
                          make  all-recursive
                   make[1]: Entering directory `/tmp/mysql-3.22.23b'
                   Making all in Docs
                   make[2]: Entering directory `/tmp/mysql-3.22.23b/Docs'
                   make[2]: Nothing to be done for `all'.
                   ...
                   ...
                   ...

컴파일 시간은 AMD K6-2 350MHz, 64M RAM을 가진 PC에서 5분 20초 정도 가 소요되었다. 참고로 예전에 3.21.20 버전을 486DX66 , RAM 16M의 리눅스 머신에서 컴파일 했을 때는 2 시간 30분 정도 걸렸던 기억이 난다. 만일 컴파일 중에 문제가 발생하면 INSTALL-SOURCE 파일을 참고한다. 여러 가지 상황별로 문제 해결 방법이 자세히 설명되어 있다.

4) make install

컴파일에 의해 만들어진 파일들을 인스톨하자

[root@localhost mysql-3.22.23b]# make install      
                   Making install in Docs
                   make[1]: Entering directory `/tmp/mysql-3.22.23b/Docs'
                   make[2]: Entering directory `/tmp/mysql-3.22.23b/Docs'
                   make[2]: Nothing to be done for `install-exec-am'.
                   /bin/sh ../mkinstalldirs /usr/local/mysql/info
                   mkdir /usr/local/mysql
                   ...
                   ...
                   ...
                   make[2]: Leaving directory `/tmp/mysql-3.22.23b'
                   make[1]: Leaving directory `/tmp/mysql-3.22.23b'
[root@localhost mysql-3.22.23b]#

5) 권한 테이블 초기화 :  mysql_install_db 실행

인스톨이 완료된 MySQL 디렉토리로 이동한다

[root@localhost mysql-3.22.23b]# cd /usr/local/mysql 

그 다음은 MySQL 데이터베이스의 각종 권한을 관리하는 데이터베이스 mysql에 테이블을 생성하는 스크립트를 실행해야 한다. 

/usr/local/mysql/bin에 있는 mysql_install_db 스크립트가 그 역할을 한다.

참고로 바이너리 베포판은 이 파일이 script-xs 디렉토리에 있다.

기본 테이블 생성 : ./bin/mysql_install_db
[root@localhost mysql]# ./bin/mysql_install_db
                 Creating db table
                 Creating host table
                 Creating user table
                 Creating func table
                 Creating tables_priv table
                 Creating columns_priv table

To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system
           
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
    /usr/local/mysql/bin/mysqladmin -u root password 'new-password'
See the manual for more instructions.
           
Please report any problems with the /usr/local/mysql/bin/mysqlbug script-x!

The latest information about MySQL is available on the web at http://www.mysql.com
            Support MySQL by buying support/licenses at http://www.tcx.se/license.htmy.
           
[root@localhost mysql]#
 
데이터 파일의 위치는 /usr/local/var 이며 데이터베이스는 디렉토리로 테이블은 파일로 존재한다. 참고로 바이너리 인스톨 시에는 데이터 디렉토리는  /usr/local/mysql/data 이다.

권한 테이블들이 만들어졌으면 먼저 MySQL root 유저의 패스워드를 변경해야 한다.
시스템의 root와는 전혀 상관이 없는 MySQL 의 기동, 권한관리, 데이터베이스 사용자 등록 등의 작업을 하는 사용자 이다.

MySQL root 암호 변경방법
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

위와 같은 방법으로 변경한다.

그러나 다음과 같은 에러가 발생할 것이다.
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -u root password '1234'
 /usr/local/mysql/bin/mysqladmin: connect to server at 'localhost' failed
 error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)'
 Check that mysqld is running and that the socket: '/tmp/mysql.sock'  exists!
 [root@localhost mysql]#

원인은 MySQL 의 데이터베이스 서버 데몬이 동작하지 않기 때문이다.

6) MySQL 서버 데몬의 기동 : safe_mysqld

safe_mysqld 스크립트는 서버 데몬인 mysqld (MySQL 디렉토리의 libexec 에 있다) 를 시작하거나 비정상적으로 종료된 경우 재시작 한다.

먼저 데몬을 기동 시키자. 한글로 메시지를 보기 위해  옵션을 줄 수 있다.

# ./bin/safe_mysqld --language=korean &
     
=====
팁 : MySQL 의 각종 메시지를 한글로 보기를 원하면 --language=korean 옵션을 이용한다.
======

그리고 서버 데몬을 백그라운드로 동작시키기 위해 반드시 명령 뒤에 &를 붙여준다

[root@localhost mysql]# ./bin/safe_mysqld &                                               
                       [1] 24879

[root@localhost mysql]# Starting mysqld daemon with databases from  
                        /usr/local/mysql/var  <- enter 를 한번 쳐준다
[root@localhost mysql]#

프로세스를 확인해 보자

[root@localhost mysql]#  ps -ef | grep mysql
 root     24879   634  0 23:33             pts/1    00:00:00 sh ./bin/safe_mysqld
 root     24891 24879  0 23:33 pts/1                00:00:00 /usr/local/mysql/libexec/mysqld
 root     24893 24891  0 23:33 pts/1                00:00:00 /usr/local/mysql/libexec/mysqld
 root     24894 24893  0 23:33 pts/1                00:00:00 /usr/local/mysql/libexec/mysqld
 root     24909   634  0 23:41             pts/1    00:00:00 grep mysql
     
위와 같이 3개의 데몬이 떠 있으면 정상이다.

pstree 명령으로도 확인해 보자

[root@localhost mysql]#  pstree  
           
            init-+-atd
                 :
                 |-hanterm---bash-+-pstree
                 |                            `-safe_mysqld---mysqld---mysqld---mysqld
                 :


7) 관리자 암호 변경
이제 데몬이 기동 되었으니 다시 한번 암호변경을 시도해 본다.

[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -u root password '1234'
[root@localhost mysql]#
     
언제나 그렇듯이 무소식이 희소식이다.


8) 테스트

정상적으로 동작하는지 몇 가지 테스트를 해보자. 우선 mysql 이라는 클라이언트 프로그램을 이용해 권한관리 데이터베이스인 mysql에 접속해 보자

사용법 : ./bin/mysql [OPTIONS] [database]

더 많은 옵션을 알고 싶으면 ./bin/mysql --help 라고 입력하면 된다.

[root@localhost mysql]# ./bin/mysql mysql                               
ERROR 1045: 'root@localhost' 사용자는 접근이 거부 되었습니다. (Using password: 아니오)

접속이 거부되었다는 에러가 발생하였다. 당연하다 위에서 이미 MySQL 관리자 암호를 변경했기 때문에 암호를 이용해야 한다.

[root@localhost mysql]#  ./bin/mysql -p1234 mysql

위와 같이 passwd를 의미하는 -p 옵션 뒤에 공백 없이 암호를 입력하면 된다.

다음과 같이 -p옵션을 이용하고 나중에 암호를 입력하는 방식이 좀더 바람직하다.

[root@localhost mysql]# ./bin/mysql -p mysql   
Enter password:

암호가 맞는다면 다음과 같은 화면이 여러분을 반길 것이다.

  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A
  Welcome to the MySQL monitor.  Commands end with ; or g.
  Your MySQL connection id is 5 to server version: 3.22.23b

  Type 'help' for help.
         
  mysql>

           
몇 가지 명령을 각자 테스트  해 보자
           
mysql> status
      --------------
      ./bin/mysql  Ver 9.32 Distrib 3.22.23b, for pc-linux-gnu (i586)
Connection id:                      6
            Current database:       mysql
            Current user:                       root@localhost
            Server version                      3.22.23b
            Protocol version        10
            Connection                          Localhost via UNIX socket
            UNIX socket                         /tmp/mysql.sock
            Uptime:                             8 min 43 sec

Threads: 1  Questions: 37  Slow queries:             0  Opens: 10  Flush tables: 1  Open tables: 6
            --------------

mysql> select pi()*4/10 ;
            +------------+
            | pi()*4/10  |
            +------------+
            | 1.25663706 |
            +------------+
            1 row in set (0.00 sec)

mysql> select 'Hello World? I'm MySQL' AS string1;
            +------------------------+
            | string1                |
            +------------------------+
            | Hello World? I'm MySQL |
            +------------------------+
            1 row in set (0.00 sec)

           
mysql> select now() ;
            +---------------------+
            | now()               |
            +---------------------+
            | 1999-07-16 00:05:42 |
            +---------------------+
            1 row in set (0.00 sec)

           
mysql> use mysql
       Database changed
       mysql> desc user ;
       +-----------------+---------------+------+-----+---------+-------+
       | Field           | Type          | Null | Key | Default | Extra |
       +-----------------+---------------+------+-----+---------+-------+
       | Host            | char(60)      |      | PRI |         |       |
       | User            | char(16)      |      | PRI |         |       |
       | Password        | char(16)      |      |     |         |       |
       | Select_priv     | enum('N','Y') |      |     | N       |       |
       | Insert_priv     | enum('N','Y') |      |     | N       |       |
       | Update_priv     | enum('N','Y') |      |     | N       |       |
       | Delete_priv     | enum('N','Y') |      |     | N       |       |
       | Create_priv     | enum('N','Y') |      |     | N       |       |
       | Drop_priv       | enum('N','Y') |      |     | N       |       |
       | Reload_priv     | enum('N','Y') |      |     | N       |       |
       | Shutdown_priv   | enum('N','Y') |      |     | N       |       |
       | Process_priv    | enum('N','Y') |      |     | N       |       |
       | File_priv       | enum('N','Y') |      |     | N       |       |
       | Grant_priv      | enum('N','Y') |      |     | N       |       |
       | References_priv | enum('N','Y') |      |     | N       |       |
       | Index_priv      | enum('N','Y') |      |     | N       |       |
       | Alter_priv      | enum('N','Y') |      |     | N       |       |
       +-----------------+---------------+------+-----+---------+-------+
       17 rows in set (0.00 sec)

mysql> select Host, User ,Password , Select_priv, Insert_priv from user ;
     +-----------------------+------+------------------+-------------+-------------+
     | Host                  | User | Password         | Select_priv | Insert_priv |
     +-----------------------+------+------------------+-------------+-------------+
     | localhost             | root | 446a12100c856ce9 | Y           | Y           |
     | localhost.localdomain | root |                  | Y           | Y           |
     | localhost             |      |                  | N           | N           |
     | localhost.localdomain |      |                  | N           | N           |
     +-----------------------+------+------------------+-------------+-------------+
     4 rows in set (0.00 sec)

           
mysql> q
       Bye
[root@localhost mysql]#
     
9) MySQL 서버 중지
MySQL서버의 동작을 중지시키기 위해서는 다음의 명령을 사용한다.

==============================
서버 중지 :  ./bin/mysqladmin  shutdown
=============================
[root@localhost mysql]# ./bin/mysqladmin -p shutdown                    
                       Enter password:
[root@localhost mysql]# mysqld daemon ended

[1]+  Done
./bin/safe_mysqld --language=korean

[root@localhost mysql]# 
     
이상으로 소스배포본의 컴파일 작업은 모두 끝났다. 뒷부분에서 MySQL에  대해 더욱 자세히 다룰 것이다.


He can do, She can do, why not me?
1. mysql 각종 설정 확인

mysql> status



2. database확인
 
mysql> show databases;
+--------------------+
| Database                |
+--------------------+
| information_schema |
| mysql                     |
| test                        |
+--------------------+
3 rows in set (0.00 sec)
mysql>



3. database 선택

mysql> use test



4. database 내에 table 확인 (먼저 use를 통해 database를 선택해야 함)

mysql> show tables;


5. database  생성 및 table 생성

mysql> create database [database 이름];
mysql> use [database 이름];
mysql> create table [table 이름] ([Attr 이름] [Attr 타입] , [Attr 이름] [Attr 타입] ... );

6. table의 schema 보기

mysql> describe [table 이름];







+ Recent posts