Visual Assist X의 리팩토링 기능

리팩토링의 중요성을 절감하면서도 쉽게 리팩토링을 하지 못하는 이유는 수작업의 리팩토링은 엄청난 노가다를 동반한다는 점일 겁니다. 올해 초에 테스트 주도 개발이라는 책을 보면서 그와 함께 첨부되어 있는 Test First Programming 시연 동영상을 보면서 이클립스의 강력한 리팩토링 기능을 보고 충격을 받았었습니다. 자바 프로그래밍을 안한지 벌써 5년도 넘었고 그 당시만 하더라도 Kawa같은 조악한 툴로 개발을 하고 있던터라 (사실 Kawa보다는 결국 UltraEdit나 vi를 더 자주 사용했었군요.) 이클립스의 리팩토링 기능은 가히 환상적인 느낌이었습니다.

회사에서의 개발 환경이 Visual C++와 Embedded Visual C++이다 보니 리팩토링툴의 필요성을 느끼고 좀 찾아 본적이 있었습니다만 모두 기대 이하였습니다. 그리고는 결국 포기했었죠. 그러다 얼마전 Whole Tomato Software사의 Visual Assist X의 새버전(현재는 베타입니다.)이 나오면서 리팩토링 기능이 추가 되었다는 소식을 듣고 깔아 보았습니다.

결과는 대 만족입니다. :D 왠만큼 원하는 기능을 제공하더군요. 물론 이클립스의 그것보다는 미약하지만 C++ 문법의 복잡성을 감안하면 정말 이정도만 하더라도 감지덕지입니다. 써본지 2주일만에 지금은 중독되어서 Visual Assist X가 없으면 개발을 못하겠더군요. -_-)a

리팩토링기능 몇개를 화면으로 잡아봤습니다.

Rename - 변수명을 바꿔줍니다.

프로젝트에 해당되는 심볼을 모두 바꿔줍니다. 가장 많이 사용하는 기능입죠.


선택 영역을 메소드로 만들어 줍니다.

친절하게 인자까지 넣어주네요. 만든 뒤 적절하게 커스텀이 필요

해당 심볼이 사용된 곳을 프로젝트 내에서 찾아 줍니다.

일반 스트링 찾기보다 훨씬 유용합죠.

메소드에 관련된 리팩토링

클래스에 대한 리팩토링


Visual C++을 쓰시는 분이라면 강추! 입니다. 가격도 개발툴(물론 보조툴이지만)치고는 착한 가격입니다. :$

Posted by 졸곰

2006/09/27 14:40 2006/09/27 14:40
, ,
Response
No Trackback , 2 Comments
RSS :
http://www.spbear.com/rss/response/196

HPC호환 GAPI 드라이버 만들기

PocketFrog나 PocketHAL등을 사용하려면 Game API(GAPI)가 지원되어야 합니다. 그런데 이 GAPI라는 녀석은 PocketPC에서만 지원되는 놈이라 일반적인 CE .net에서는 동작하지 않습니다. 그러던 중 찾아보니 HPC계열에서 구동하는 GAPI가 있더군요. 혹시나 싶어 GAPI호환 DLL을 제작하면 되지 않을까 싶어 한번 만들어 봤습니다.

gx.h 원본 소스 보기


위의 소스를 보면 GX.DLL이 하는 일이 몇가지 없다는 것을 알 수 있습니다. 결국 이 녀석이 하는 일은 비디오 메모리의 구성 상태와 비디오 메모리 주소를 응용 어플리케이션에 잘 넘겨줘서 응용 어플리케이션단에서 디바이스 종속적이지 않게 코딩할 수 있게 도와주는 역할을 합니다.

핵심적으로 구현해야 하는 API는 아래의 네개의 API입니다.
[CODE] GXDLL_API int GXOpenDisplay(HWND hWnd, DWORD dwFlags); GXDLL_API int GXCloseDisplay(); GXDLL_API void * GXBeginDraw(); GXDLL_API GXDisplayProperties GXGetDisplayProperties(); [/CODE]
  • GXOpenDisplay()는 해당 비디오 메모리 주소에 맞게 Virtual Allocation을 수행합니다.
  • GXBeginDraw()는 Virtual Allocation된 메모리 주소를 반환합니다.
  • GXCloseDisplay()는 Virtual Free를 수행하며
  • GXGetDisplayProperties()는 해당 디스플레이에 맞는 해상도와 픽셀의 구성 상태를 반환합니다.
위에서 나열한 동작만 지켜서 구현해주면 잘 동작합니다. 실제 단말기에 올려서 TCPMP 플레이어로 미디어 플레이 테스트 해보니 GAPI드라이버를 로딩해서 플레이 할 때 일반적인 녀석은 GDI와 비교해봐서 20%정도의 향상이 있었으며, 특이한 녀석 (가로형 LCD를 세로형 단말기에 적용한 녀석)의 경우는 200%의 향상이 있었습니다.
gx(iNaviUP).zip

아이나비 UP용 GAPI 드라이버

gx(iNaviProPlus).zip

아이나비 프로+용 GAPI 드라이버

위의 드라이버를 다운로드해서 압축을 해제한 뒤 gx.dll파일을 TCPMP 플레이어와 같은 디렉토리에 놓으시면 됩니다. 주의하셔야할 점은 아이나비 PRO나 아이나비 UP+는 호환되지 않습니다.
PRO Plus의 경우는 성능 향상이 상당하나 UP의 경우는 성능 향상이 미미합니다. 그리고 미디어 소스에 따라 성능 차이가 있는데, 파일 IO가 많이 일어나는 대용량 미디어 파일보다 용량은 적으나 프레임이 많은 미디어 소스에서 이득이 많습니다. 이점 참고바랍니다.

Posted by 졸곰

2006/03/20 14:31 2006/03/20 14:31
, , ,
Response
No Trackback , No Comment
RSS :
http://www.spbear.com/rss/response/137

한글로 쓰는 난해한 프로그래밍 언어 아희를 보다가 옛날 대학 다닐때 보고 감동 받았던 코드가 생각나서 찾아보았다.


이놈은 단순 ASCII Art가 아니다. (출처 : http://uguu.org/sources.html )



IOCC 2000에서 Best Layout을 받았던 그 코드가 바로 이 사이토메 하지메의 ASCII Art인데.... 그냥 일반적인 ASCII Art인 듯 보이지만 자세히 보면 이놈은 C코드이다. =_=

이놈 참 재미있는 것이 코드가 재생산되는 코드라는 점인데.... 처음 보이는 사이토메 하지메를 컴파일해서 실행하면 일본어로 あく(惡 - 악)라고 쓰여진 코드가 나온다. 이렇게 나온 코드를 다시 컴파일해서 실행하면 이번엔 そく(卽 - 즉)이로 쓰여진 코드가 나온다. 요놈을 다시 컴파일하여 실행하면 ざん(斬 - 참)이란 글자 코드가 나오고 이놈을 다시 컴파일해서 실행하면 다시 そく가 나와서 계속 반복할 수 있게 된다.. -_-)/

간만에 생각나서 기록 삼아서 긁적여둔다... 실제 내가 참여하는 프로젝트들 코드를 이렇게 짜놓으면 후임자가 피토하며 쓰러지겠지? -_-)/

P.S. 찾아보니 이거 짠 사람 올해 구글에 입사했군요.. -_-

Posted by 졸곰

2005/07/05 15:56 2005/07/05 15:56
Response
No Trackback , No Comment
RSS :
http://www.spbear.com/rss/response/71

loki 라이브러리의 사용

template을 이용한 Generic Programming을 적용한 라이브러리로 loki 라는 녀석이 있다.

기존의 여러가지 디자인 패턴들도 template을 이용해서 사용가능하도록 정의해 놓고있고 여러가지 재미있는 프로그래밍 기법들을 접할 수 있다.

템플릿이 어떤 것인지 지금까지 아무형이나 담을 수 있는 한낱 그릇이라고만 생각했던 사람은 한번 볼 필요가 있다. 재미있는 부분이 많으니까 :D

Posted by 졸곰

2004/11/05 13:13 2004/11/05 13:13
, ,
Response
No Trackback , No Comment
RSS :
http://www.spbear.com/rss/response/1


블로그 이미지

SPBEAR.COM

- 졸곰

Notices

Archives

Authors

  1. 졸곰

Calendar

«   2008/12   »
  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      

Site Stats

Total hits:
192311
Today:
103
Yesterday:
214