예전에... 한글로 변환이 안된 생타에서 영어를 입력했을 때 바로 한글로 변환하는 것을 dll로 만들어서 올렸었습니다...
그런데 어떤 분께서 사용하는 방법을 알려달라고 하시기에...

화면은 MFC로 했지만...
간단하게 console로 출력해 보겠습니다.

압축 파일을 받고나서 압축을 풀고 나면...

이렇게 3개의 파일이 있게 됩니다...
각 3개의 파일 용도는 아실거라 보고 진행합니다...

음... 기본 프로젝트를 생성하고...
헤더파일과 lib파일을 새로 만든 프로젝트와 같은 디렉토리 안에 복사를 합니다.

이렇게 하고...
코드는
#include 
using namespace std;

#include "AutoConvert.h"

int main(int argc, char** argv)
{
	char*	szText = "duddjfhTmsmswnd";
	int		nLen = strlen(szText);

	char*	szResult = EngToHanConvert(szText, nLen);

	cout << szResult << endl;

	return 0;
}

이렇게 입력을 하고나서
lib파일을 추가합니다.

이렇게 한 다음에 컴파일 하시고...
실행할 때 exe 실행파일이 있는 곳에 dll파일을 복사하시고... 실행하면 됩니다...
결과는

이런식으로 나오게 됩니다...
머... MFC에서나 Win32에서는 응용만 하시면 될거라 봅니다...
제 생각엔 헤더파일이랑 lib dll만 올리면 다들 사용하실 수 있다고 생각했는데... 그게 아녔나봅니다...
그럼 조금이라도 도움이 되셨기를...




vi에서 코딩을 하다보면... 여러 파일을 한번에 열게 되고...
그렇게 되면 열러 있는 파일로의 이동을 해야 합니다...
좀더 편하게 이동할려면
BufExplorer라는 것을 이용하면 쉽습니다...  (검색시 vim bufexplorer 라고 하면 됨...)
다운받는 곳은... 구글링을 하셔도 되지만
BufExplorer 받기
이곳에 가시면 다운받을 수 있습니다. ㅎㅎ

파일을 받고 나서는... vim이 있는 path로 가셔서 압출을 풀기만 하면 끝~!!
솔직히... 어이없게 쉽습니다...
zip 파일이니... unzip 파일명 하면..되니까요... (debian 에서 했습니다...)

압축을 풀고나면...


이런... dir이 보일겁니다...

자 그럼... vi에서 어떻게 보이느냐 하면
:BufExplorer
라고 vi에서 입력을 하게 되면

이렇게 보입니다...
열려 있는 파일들 중에서
원하는 파일을 선택하면 이동하게 되는 것입니다...
vi코딩도 은근히 편하군요... 잘만 사용하면.... 쉽게쉽게 될듯 합니다.





요즘들어서 vi에서 c/c++ 코딩을 할 일이 많아지게 되었다.
원래 visual studio를 사용하던 개발자라... vi는 단순히 리눅스에서 에디터로만 사용하다가
그 안에서 개발할려고 하니... 좀...불편한 감이 많아졌다.
특히나... visual studio에서는 intelligence 기능이 상당히 편하게 작용하는데
vi에서는 ctags를 이용해서 사용할 수 있다...
하지만 이것도... ctrl+p나 ctrl+n을 눌러야만...

이전에 설치도 해 주어야만 한다...
debian을 사용하는 나로서는
apt-get install ctags 하면 바로 해결되었다.

머... 정리하자면

1. 소스트리 최상단에서 ctags -R 로 태그 파일 생성
2. vi -t [태그명], vi 에서 :ta[g] [태그명]
3. Ctrl + ] 로 이동. Ctrl + t 로 전 위치로 이동
4. :tn - tag next, :tp - tag previous
5. :ts [태그명]
6. :ta /keyword - keyword 가 포함된 태그로 이동

.vimrc --> st tags+=/절대경로/파일명


이런식으로 사용한다.

사용하게 되면...
이런식으로 나온다...


TestShow 라는 클래스 안에 Show라는 메소드를 하나 만들어 두었었다.
그 안에 있는 것이 보이는것...
visual studio의 intelligence 기능만큼은 아니지만... 이 정도라도 쓸만 한 듯 싶다.



프라모델을 만들고 하는 것이 내 취미다...
그런데... 요즘 앤화가 너무나 비싸서... 이것도 하질 못하고 있다...
멀 살래도..가격들이 너무 비싸서... ㅜㅜ/
좀 싸지면 사야지 사야지 하지만 그렇게 되지도 않고...


[GDB]

1. gdb를 위한 컴파일 옵션 : -g   (ex) gcc -g -o bugprg bugprg.c
   : -g옵션을 주고 컴파일 할 때는 -O(최적화 옵션) 옵션을 사용하지 않는 것이 좋다.
     → 최적화 옵션을 준 경우 어셈블리 코드 자체에 많은 변경이 가해지기 때문...


2. gdb 시작: gdb [프로그램명] or gdb [프로그램명] [core 파일명]
             or gdb [프로그램명] [실행 중인 프로세스 PID]

   gdb 종료: q or Ctrl + d


3. gdb 소스보기 : l(list) - main 함수를 기점으로 소스 출력
                  l 함수명 - 함수의 소스를 출력
                  l 라인넘버 - 라인넘버를 기준으로 소스 출력
                  l 파일명:func - 해당 파일의 func 함수 부분을 출력
                  l 파일명:라인넘버 - 해당 파일의 라인넘버를 기준으로 출력

                  set listsize 행수 : 출력되는 행 수를 변경한다.


4. gdb 프로그램 실행 : r
                       r arg1 arg2 - arg1과 arg2를 인자로 프로그램 수행


5. gdb 수행 Step : s [숫자] (현재 행을 수행하고 멈춘다 - 내부로 들어감)
                   si (현재의 인스트럭션을 수행. 함수 호출 시 함수 내부로 들어감)
     n [숫자] (현재 행을 수행하고 멈춘다 - 내부로는 들어가지 않음)
                   ni (현재의 인스트럭션을 수행. 함수 호출 시 함수 내부로 들어감)
                   c (브레이크 포인트를 만날 때까지 멈추지 않고 계속 수행한다.)
                   u (현재 루프를 빠져 나감)
                   finish (현재 함수를 수행하고 빠져 나감)
                   return [숫자] (현재 함수를 수행하지 않고 빠져 나감. 숫자=리턴값 강제 부여)
                  

6. gdb 프로그램 수행 종료 : k


7. gdb 브레이크 포인트 설정 : b [브레이크 포인트로 설정할 부분]
                              b func - func 함수의 시작 부분에 브레이크 포인트 설정
                              b 10 - 10행에 브레이크포인트 설정
                              b file.c:func - file.c파일의 func 함수에 브레이크 포인트 설정
         b file.c:10 - file.c파일의 10행에 브레이크 포인트 설정
                              b +2 - 현재 행에서 2개 행 이후 지점에 브레이크 포인트 설정
         b -2 - 현재 행에서 2개 행 이전 지점에 브레이크 포인트 설정
                              b *0x8049000 - 0x8049000주소에 브레이크 포인트 설정(어셈블리 디버깅시 사용)
                              b 10 if var == 0 - 10행에 브레이크 포인트를 설정하는데 var변수값이 0일 때 작동


8. gdb 브레이크 포인트 해제 : cl [해제할 브레이크 포인트]
                              cl func - func 함수의 시작 부분에 브레이크 포인트 지움
                              cl 10 - 10행의 브레이크 포인트 지움
                              cl file.c:func - file.c 파일의 func 함수에 브레이크 포인트를 지움
                              cl file.c:10 - file.c 파일의 10행의 브레이크 포인트 지움
                              d - 모든 브레이크 포인트를 지움


9. 현재 설정된 브레이크 포인트 보기 : info breakpoints


10. 변수 관련 부분

ⓐ Watch 포인트 설정 : 변수값이 어떻게 바뀌는지 그리고 어떤 코드가 바꾸는지에 대하여 확인할 때 사용한다.
                       
                        * watch [변수명]
                         - 변수가 바뀔 때마다 브레이크가 걸리면서 변수의 이전 값과 현재 값을 출력하는 모습을 보여준다.

ⓑ 전체 변수의 출력 : info locals - 현재 상태에서 어떤 지역변수들이 있으며 각각의 값들은 무엇인지 보인다.

ⓒ 개별 변수의 출력 : p [변수명] - 해당 변수 주소와 값 출력 (포인터 변수 보는 법은 C언어 코딩과 같다.)
                       p [함수명] - 함수의 주소값 출력
         p $[레지스트리 명] - 레지스트리 값을 출력
                                            ※ info registers - 레지스트 값 전체를 한번에 보는 명령어
                                               info all-registers - MMX 레지스트를 포함한 거의 대부분의 레지스트 값을 출력
 
         p *pt@4 - (pt=포인터변수) @은 배열의 크기를 gdb에 알리는 경우 사용한다.
                       p '[파일명]'::[변수명] : 특정한 파일의 전역변수를 지정하고자 할 때 사용.
                       p [함수명]::[변수명] : 특정 함수의 static 변수 값을 확인하고자 할 때 사용.

ⓓ 출력 형식 지정 : p /[출력형식] [변수]
                     [출력 형식]
                     t : 2진수로 출력
                     o : 8진수로 출력
                     d : 부호가 있는 10진수로 출력(int)
                     u : 부호가 없는 10진수로 출력(unsigned int)
                     x : 16진수로 출력
                     c : 최초의 1바이트 값을 문자형으로 출력
                     f : 부동 소수점 값 형식으로 출력
                     a : 가장 가까운 심볼의 오프셋을 출력
                    
ⓔ 타입 변환 출력 : p (캐스팅 연산자) 변수명
                     - C언어의 캐스팅과 같다.

ⓕ 변수값 설정 : p [변수명] = 값

ⓖ 변하는 변수값 자동으로 디스플레이 하기
   : display [변수명] : 변수값을 자동으로 디스플레이
     display /[출력형식] [변수명] : 변수값을 출력 형식으로 자동으로 디스플레이
     undisplay [디스플레이 번호] : 디스플레이 종료
     disable display [디스플레이 번호] : 디스플레이를 일시 중단한다.
     enable display [디스플레이 번호] : 디스플레이를 다시 활성화한다.


11. 스택프레임에 있는 정보를 이용하여 디버깅 하기
    : info frame  - 스택 프레임 정보를 출력
      info args   - 함수가 호출될 때 인자를 출력
      info locals - 함수의 지역변수를 출력
      info catch  - 함수의 예외 핸들러를 출력
      bt          - 전체 스택 프레임 출력 (간략하게)        
      frame [N]   - n번 스택 프레임으로 변경
      up          - 상위 스택 프레임으로 이동
      up [N]      - n번 상위 스택 프레임으로 이동
      down        - 하위 스택 프레임으로 이동
      down [N] - n번 하위 스택 프레임으로 이동
     

12. 메모리 상태 검사
    : x/[범위][출력형식][범위의 단위]

      <출력 형식>
      t : 2진수로 출력
      o : 8진수로 출력
      d : 부호가 있는 10진수로 출력(int)
      u : 부호가 없는 10진수로 출력(unsigned int)
      x : 16진수로 출력
      c : 최초의 1바이트 값을 문자형으로 출력
      f : 부동 소수점 값 형식으로 출력
      a : 가장 가까운 심볼의 오프셋을 출력
      s : 문자열로 출력
      i : 어셈블리 형식으로 출력

      <범위 단위>
      b : 1바이트 단위
      h : 2바이트 단위
      w : 4바이트 단위
      g : 8바이트 단위


13. 기타

    ⓐ 어셈블리 코드 보기
       * disas [함수명] : 함수의 어셈블리 코드를 출력한다.
       * disas [주소1] [주소2] : 주소1 ~ 주소2 범위 사이의 어셈블리 코드를 출력

    ⓑ call 명령을 사용해서 함수별 모듈 테스트
       * call [함수] : 함수를 임의로 호출할 수 있다.
       * junp [함수 or *주소 or 행수] : 임의의 행, 주소 또는 함수로 무조건 분기하는 명령

    ⓒ 디버깅하는 프로세스에 시그널을 보냄
       * signal [인터럽트 시그널] : 디버깅 대상의 프로세스에게 시그널을 보낼 수 있다.
       * info signals : 시그널의 종류 출력

    ⓓ 메모리 특정영역에 값을 설정
       * set {타입}[주소] = [값] : 메모리 특정 주소에 값을 저장

    ⓔ gdb 환경 설정 관련 명령 및 정보 출력 명령
       * set prompt woos: - "(gdb) → woos: 로 바꾼다."
       * set print array on - "주소, 값 " 쌍으로 출력. 여러 행에 출력된다.
       * info set - 변경 가능한 환경 설정 출력
       * info functions - 함수들의 리스트를 출력
       * info types - 선언된 타입에 대해서 볼 수 있다.
       * info 입력 후 Tab키 두 번 누름 - info 명령으로 확인 가능한 정보들 출력.




해피해킹 키보드를 사용하던 사람들은 컨트롤 키가 일반 키보드의 CapsLock키로 되어 있는 것 때문에
편하다는 걸 느끼게 됩니다.
저 또 한 해피해킹을 쓰다가 회사 사람들이 자리로 와서는 키보드 쓰기 불편하다고 해서는
이보드를 바꿨는데... CapsLock키를 컨트롤로 바꿔 쓰고 싶어서는 방법을 찾아보니
레지스트리를 변경하면 되더군요...

방법은...
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

이렇게 하게 되면... 지존 컨트롤 키를 유지하면서  CapsLock키를 컨트롤로 바꾸게 됩니다...
CapsLock키는 사라지게 되는거죠.. ㅎㅎㅎ 저는 CapsLock키를 쓸 일이 없어서는
이렇게 해서 사용하고 있습니다...

그럼 CapsLock키와 Control키를 바꿔보는 방법은
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00

이렇게 하면 됩니다... 그럼 CapsLock키는  Control치 되고 Control은 CapsLock키로 바꿔지게 됩니다.

되돌아 가기 위해서는
REGEDIT4

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

이렇게 해주면 됩니다.
그럼 원래의 키보드 상태로 되돌아 가게 됩니다..

이렇게 변경하고 나서는 꼭 재부팅을 해줘야 한다는거~

압축파일은 변경하는 레지스트리 파일 입니다.




키보드를 해피해킹을 쓰다가...
회사에서 워낙 사람들이 내 자리고 와서는 칠때마다 구박하고... 이상한거 쓴다고 ㅜㅜ
바꿔야 겠다고 생각하고는... 이 키보드로 바꿨다...
총알만 많았음 리얼포스87이나 103으로 바꿨을지 모르겠지만...
총알이 많지 않은관계로
그래도... 기계식 한번 써보겠다고...이걸 샀는데... 생각보다 괜찮다...
클릭을 살까 했지만 N키 롤어버로는 클릭이 없었고...
텐킬레스로는 있었지만... 왠지 미완성처럼 보이는 키보드로 보여서...
해피해킹은 원래 조만한거라 그 특이한 맛에 썼지만... 그냥 노멀한 키보드는 그래도
103~이상의 키를 다 써왔기에.. ㅎㅎ
음... 넌클릭이라 소리는 적다... 그래서 클릭으로 살걸 한 후회도 있다...
회사에서 클릭을 쓰면 시끄러워서 주변 사람들에게 욕도 먹어야 했을 것 같지만...
클릭음에 그 매력을 느끼는 사람도 있어서...
머 여튼... 그래도 이 키보드도 만족스럽다... 15만5천원의 거금을 주고 산거기도 하지만.. ㅎㅎ
앞으로 잘 써야 겠다..해피해킹은 집에서 쓰고~ ㅋ


핸드폰으로 찍어서는...화질은 별로...
ESC키는 빨강으로 포인트를 줬음.. ㅎ
이곳이 내... 회사 내자리... 지저분함 ㅜㅜ

'My Story' 카테고리의 다른 글

[My Sotry] 예가체프...  (2) 2009.09.19
[My Story] 건담...  (0) 2009.09.13
[My Story] 나홀로 여행~  (0) 2009.09.01
[My Story] Microsoft 무선 Bluetooth Notebook Mouse 5000  (0) 2009.06.27
정체성... 앞으로 내가 할 일??  (0) 2008.12.29

한번쯤 해봐야 했던...
나홀로 여행...
집에서 경주에 갔다가...울산에 갔다가... 동해안 7번국토를 타고.... 강원도 정동진에 들려서
그리고 다시 집에오는...
나름 혼자 여행을 하는 동안... 이런 재미도 있구나 하는 생각도 하고
혼자 여행하면서 나홀로 운전을 하다보니... 힘들구나 하는 생각도 들고...
이번 여행... 혼자서 여러 생각을 많이 해볼 기회도 생겼고
정리해야 할 것들을 떨쳐 버릴 수도 있었고...
다음에 해야 할 목표도 생기기도 했다...
내년쯤엔... 어디로 여행을 해볼까...
아니... 올해에 한번 더 해보고 싶은 생각이 든다... :)

+ Recent posts