2011/03/31

TortoiseSVN 에서 로그에 한글 입력이 안되는 경우 해결법

TortoiseSVN 과 AnhkSVN 을 함께 사용하고 있고 대부분 붙여넣기 식으로 사용을해서 인지하지 못하였는데 어느 날 TortoiseSVN 으로 Commit 을 할 경우 로그에 한글을 입력하려 했는데 되지 않았다.

Log 메시지 입력 화면

Log 메시지 입력 화면



원인을 찾던 중 이 문제가 영문 OS 와 영문 TortoiseSVN 을 사용할 경우 발생하는 것으로 보였다. TortoiseSVN 한글 언어팩을 설치하면 해결 될 것도 같았지만 언어팩을 설치하기 싫어서 다른 방법을 찾아 보았다.


방법은 TortoiseSVN 설정창에서 Dialog 1 의 로그 메시지 폰트 설정 부분을 한글을 지원하는 폰트로 변경을 하니 한글 입력이 가능하였다.

Log 메시지 폰트 설정 대화상자

Log 메시지 폰트 설정 대화상자



Log 메시지 폰트를 한글로 바꾼 후 입력 화면

Log 메시지 폰트를 한글로 바꾼 후 입력 화면



&

Original Post : http://neodreamer-dev.tistory.com/523

2011/03/29

Lazarus 실행파일 크기 줄이기

잠깐 Lazarus 사용해 보았는데 실행파일 크기가 너무 커서 실행파일 크기를 줄이는 방법을 찾아 보았다.



Lazarus Wiki 페이지에서 방법을 찾았다. 



Quick guide to Lazarus/FPC application size reduction (tested with Lazarus 0.9.26)


  • Project|Compiler Options|Code|Smart Linkable (-CX) -> Checked

  • Project|Compiler Options|Linking|Debugging| Uncheck all except

    Strip Symbols From Executable (-Xs) -> Checked 

  • Project|Compiler Options|Linking|Link Style|Link Smart (-XX) -> Checked

    The most important items seem to be 2. For a simple application the executable size should now be 1-3 MB instead of 15-20 MB. At this point you can also try: Project|Compiler Options|Code|Optimizations|smaller rather than faster -> Checked (Warning: this might decrease performance) 

  • (Optional) Run UPX <your_executable> to compress your binary by an additional factor of 2-3 (Warning: as indicated above, there are drawbacks to using UPX).







이 방법을 사용하면 원래 크기인 12MB 짜리 실행파일이 2MB 정도로 줄어 들었다. 하지만 마지막 방법인 UPX로 압축하는 방법은 정상 동작을 하지 않았다. 최신 UPX 로 압축을 시도하였지만 실패 하였다.



출처 : http://wiki.lazarus.freepascal.org/Lazarus_Faq#Why_are_the_generated_binaries_so_big.3F

&

Original Post : http://neodreamer-dev.tistory.com/522

2011/03/28

MiniDic build 26



Build 26 에서 변경사항


  • Ctrl + Shift + D 키나 트레이 아이콘 메뉴에서 메인 윈도우 호출시 메인 윈도우를 최상위로 전환




Original Post : http://neodreamer-dev.tistory.com/521

웹 사전 모음 - Mini Dic build 15

검색 사이트 마다 사전기능을 제공하고 있고 작은 사전도 제공을 해 주고 있다. 그리고 검색 기능을 쉽게 이용하도록 응용프로그램도 지원하는 곳 도 있다.

하지만 제공하는 응용프로그램이 내 입맛에 맞지 않아 간단하게 만들어 보았다.



주요 검색사이트의 사전 기능을 모아놓은 것으로 단순 검색 기능만을 이용할 수 있도록 하였다. 




 이 프로그램은 트레이 아이콘으로 동작을 하고 Ctrl + Shift + D 키로 언제든 호출 할 수 있으며, 구글 번역 사이트를 연결할 수 있다.


&

Original Post : http://neodreamer-dev.tistory.com/520

TCppWebBrowser Enter 키에 반응하기

C++ Builder 로 간단한 프로그램을 만들던 중 TCppWebBrowser 컨트롤이 Enter 키에 대한 반응이 동작을 하지 않는 경우가 많았다. 그래서 해결 책을 찾아 보았다. 이미 오래전부터 문제가 되었던 것으로 보이는데 해결책도 나와 있었다.

//Header

IOleInPlaceActiveObject *FOleInPlaceActiveObject;
void __fastcall MyMessageHandler(TMsg &Msg, bool &Handled);


//Source

__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
OleInitialize(NULL);
Application->OnMessage = MyMessageHandler;
}

void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
OleUninitialize();
}

void __fastcall TfrmMain::MyMessageHandler(TMsg &Msg, bool &Handled)
{
Handled = IsDialogMessage(WebBrowser->Handle, &Msg) == true;

if(!Handled || WebBrowser->Busy)
{
return;
}

if ( (Msg.message==WM_KEYDOWN || Msg.message==WM_KEYUP) &&
(Msg.wParam==VK_RETURN || Msg.wParam==VK_TAB) )
{
if(FOleInPlaceActiveObject != NULL)
{
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
}
else
{
IDispatch *Dispatch = WebBrowser->Application;
if(Dispatch != NULL)
{
IOleInPlaceActiveObject *iOIPAO;
Dispatch->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID *)&iOIPAO);

if( iOIPAO != NULL )
{
FOleInPlaceActiveObject = iOIPAO;
FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
}
}
}
}
}




출처 : 볼랜드 포럼

2011/03/25

Visual C++ 에서 버전을 구분하기 위한 미리정의된 매크로


Visual C++ 에서 컴파일러와 MFC 그리고 ATL 의 버전을 구분하기 위한 매크로가 있다. 컴파일러에 따라 다른 코드를 사용할 경우 이 매크로 값을 이용하면 된다.


_MSC_VER (컴파일러)

Visual Studio 4.0 1000

Visual Studio 5.0 1100

Visual Studio 6.0 1200

Visual Studio 2002 1300

Visual Studio 2003 1310

Visual Studio 2005 1400

Visual Studio 2008 1500

Visual Studio 2010 1600




_MFC_VER

Visual Studio 6.0   0x0600

Visual Studio 2002 0x0700

Visual Studio 2003 0x0710

Visual Studio 2005 0x0800

Visual Studio 2008 0x0900

Visual Studio 2010 0x0A00




_ATL_VER

Visual Studio 6.0 0x0300

Visual Studio 2002 0x0700

Visual Studio 2003 0x0710

Visual Studio 2005 0x0800

Visual Studio 2008 0x0900

Visual Studio 2010 0x1000<

Original Post : http://neodreamer-dev.tistory.com/518

2011/03/11

Visual Studio 2010 Service Pack 1 설치~

Visual Studio 2010 Service Pack 1 설치후 About box

Visual Studio 2010 Service Pack 1 설치후 About box



점심시간 짬을 이용하여 Visual Studio 2010 Service Pack 1을 설치해 보았다.

기본 설치 파일은 800KB 정도로 인터넷을 통해 구성 파일을 다운 받아 설치하는 방식이다. 본인의 경우 대략 600MB 정도 다운로드 받아야 했다.

설치될 사항들구성 다운로드




설치 후 설치 경로의 예제 중에서 D2D 관련 예제를 실행해 보았다.

Direct2D 관련 예제는 4개가 있었으며 이 중 MFCDxgiSample 은 컴파일 되지 않았고(DirectX 10.0 설치가 필요한 것 같았다.) 나머지 세개의 예제는 컴파일 되고 동작을 하였다.


MFCDirect2DApp

MFCDirect2DApp 실행화면



MFCDirect2DHelloWorld

MFCDirect2DHelloWorld 실행화면



MFCGdiInteropSample

MFCGdiInteropSample 실행화면



좋은데 단점이 있다면 이 Direct2D 기능에 관련하여서는 Windows 7 에서만 사용할 수 있다는 것이다.

<

Original Post : http://neodreamer-dev.tistory.com/517

Visual Studio 2010 Service Pack 1 일반 공개!!



하루 먼저 MSDN 가입자들에게 공개되었더 Visual Studio 2010 Service Pack 1 (이하 SP1) 이 일반에 공개가 되었다.


많은 개선점이 보이는데 그중에서 MFC-based GPU-accelerated graphics and animations 항목이 가장끌린다. MFC 만으로 2D 그래픽 작업시 하드웨어 가속을 할 수 있다는 것이 매력적이다.

SP1 을 설치하면 Sample(drive:\Program Files\Microsoft Visual Studio 10.0\Samples\1033\VC2010SP1Samples.zip)이 있으니 확인해 봐야 겠다.


Microsoft Visual Studio 2010 Service Pack 1 (Installer)

Announcing Visual Studio 2010 Service Pack 1

Description of Visual Studio 2010 Service Pack 1

<

Original Post : http://neodreamer-dev.tistory.com/516

2011/03/07

[Android Dev.] Activity 간 데이터 주고 받기

다른 Activity에 데이터 넘겨주기


Intent intentSubActivity = new Intent( this, SubActivity.class );

intentSubActivity.putExtra( "Name", "Intent Data" );
intentSubActivity.putExtra( "Age", 30 );
intentSubActivity.putExtra( "Marriage", false );

startActivity( intentSubActivity );





넘어온 데이터 받기


Intent intent = getIntent();

String strName = intent.getStringExtra( "Name" );
Integer nAge = intent.getIntExtra( "Age", 0 );
Boolean bMarriage = intent.getBooleanExtra( "Marriage", false );

String strMsg;
strMsg = "Name : " + strName + " Age : " + nAge + " Marrige : " + strMarriage;
Log.i( "SubActivity", strMsg );

INFO/SubActivity(xxx): Name : Intent Data Age : 30 Marrige : X

Original Post : http://neodreamer-dev.tistory.com/515

2011/03/01

[Cpp Builder] 프로그램 최소화 및 원래대로 하기


프로그램을 최소화 할때에는 Application 의 Minimize() 함수를 이용하면 되었는데 Restore() 함수를 할 때에는 잘 동작하지 않았다. 하지만 ShowWindow 함수를 이용할 때에는 잘 동작을 하였다.





// Minimize to Tray
ShowWindow( this->Handle, SW_MINIMIZE );
Hide(); // Hide Taskbar icon

// Restore Window
ShowWindow( this->Handle, SW_RESTORE );
Show(); // Show Taskbar Icon
<

Original Post : http://neodreamer-dev.tistory.com/514