星期四, 12月 15, 2011

python and cegui

首先是 linux 流行 python qt 的問題  時代在進步,技術不停的衍化,純 C++的方式去寫code 漸漸的被更高階的語言所取代,當然 人力 分配變的 更多的階層。


python2.7 + cegui 0.8 + boost1_4_2 + cmake 2.8 還需要裝 pySide for QT 的環境 pyopenGl 

之後就開始一連串的compiler 之旅 python 2.7 預設是使用 vs 2008 VC9

但是 CMake 產生出來的 cegui 又剛好可以是2005 所以這時候使用的版本就要小心

最後把相關的 dll
pycegui.pyd 都放一起
boost_python_vc80_mt_xxxx
才可以打開CEED-gui



我轉了一圈 也裝了 ubuntu 還去學了一下python call c++ 

最後終於可以開python ceed-gui 了 真囧

星期四, 8月 11, 2011

工具小計

工具小計


Inter Parallel Studio 2011
office
 AMD compressoncator
CMake
PDF View
Fraps
HG
NViDIA corporation-nv6193
pgAdmin

Xtreme
3d max
FileZilla
Netepad++
xnview
putty




星期三, 8月 10, 2011

星期四, 3月 31, 2011

寫C++ 這 麼多年

寫C++ 這 麼多年

我終於知道 "\r" 的功用了 真囧


回到第一行

星期一, 1月 17, 2011

速記

ildasm .net 反組

星期二, 9月 08, 2009

postgresql 對應 mysql

For those coming from MySQL:
SHOW TABLES = \d
SHOW DATABASES = \l
SHOW COLUMNS = \d table

However the \* commands only work in psql and not via other interfaces, such as queries via PHP. Similar data can be retrieved with the following SQL commands:

SHOW TABLES (\d) = SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'

SHOW DATABASES (\l) = SELECT datname FROM pg_database;

SHOW COLUMNS FROM table (\d table) = SELECT column_name FROM information_schema.columns WHERE table_name ='table';

To get the column names in their "natural" order (as in, the order they were created), use:
SELECT column_name FROM information_schema.columns WHERE table_name ='< table >' ORDER BY ordinal_position;


Alternatively you could send psql metacommands to psql directly:

SHOW TABLES -> echo "\d" | psql "database"

Use "psql -tA" for script friendly format.

星期四, 4月 02, 2009

抓mmmmacaddress

IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = GetAdaptersInfo( AdapterInfo, &dwBufLen);
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to
do {
if(strcmp(pAdapterInfo->IpAddressList.IpAddress.String,"0.0.0.0")!=0)
{
int a=0;
}
pAdapterInfo = pAdapterInfo->Next; // Progress through
// linked list
}
while(pAdapterInfo); // Terminate if last adapter

星期四, 3月 26, 2009

在Release 產生 code dump on windows

在Linux 上寫程式時很方便的會使用gdb 然後配合一下 core檔來Deubg,windows也是該有才對。
MSDN上也有說名
首先打開專案資料夾
屬性選項
c/c++
啟用c/c++ 例外狀況
我選了 是,但有 SEH 例外狀況 (/EHa)



再配合MiniDumper catch dump之後
HMODULE hDll = ::LoadLibrary( TEXT("DBGHELP.DLL") );
MiniDumpWriteDump

產生之後,用VS開起dmp 配合設定一下/(指定偵錯符號檔)就可以找出當的位置了。以前還在那邊算map-_-

星期一, 1月 12, 2009

Struct 小記

struct MsgStruct
{
int m_nprotocol;
int nSize;
char myData[0];
};

可變長度 只要把
myData 用隨意的記憶體蓋過就是長在MsgStruct之後隨之送出即可,比較要注意的是,加上的記憶體長度。

星期四, 10月 30, 2008

win api

comctl32.lib list control

#include

INITCOMMONCONTROLSEX icex;
TOOLINFO ti;

// Load the tooltips class from the DLL.
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_BAR_CLASSES;

if(!InitCommonControlsEx(&icex))
return;

星期三, 8月 27, 2008

List BOx

小計一下
LB_ADDSTRING

LB_GETCURSEL

LB_DELETESTRING

LB_GETITEMDATA

LB_GETTEXT

LB_GETCOUNT

LB_FINDSTRING

星期三, 8月 20, 2008

轉換型態


struct A
{

char a;
};

char *kkkk={"123456789"};

A * =(A*)kkkk;
A->a
結果是
1


struct A
{
int b;
char a;
};
A * =(A*)kkkk;
A->a
結果是 5

星期日, 8月 10, 2008

GCC G++

參數: -O (大寫)
說明: 在編譯過程做最佳化,以提升增快程式執行速度。

參數: -Idir_name
說明: 將目錄 'dir_name' 設定為搜尋標頭檔目錄之一。
簡化: -I


參數: -Ldir_name
說明: 將目錄 'dir_name' 設定為搜尋程式庫目錄之一。
簡化: -L

參數: -lname
說明: 聯結程式庫 libname.a 。

範例一:本例中假設你的程式檔名為test.c,數學函數如 sin等,所要聯結的程式庫為 libm.a。

gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test

範例二:本例中假設你的程式檔名為 test.c,使用到 X window 函數,所需的 include 檔放在 /usr/X11R6/include 中,所須聯結的程式庫放在 /usr/X11R6/lib,所要聯結的程式庫為 libX11.a。
gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test



提供進一步的資訊以便使用者找尋程式中的錯誤。
參數: -Wall
說明: 輸出較多的警告訊息,以便找出程式的錯誤。


參數: -g

說明: 在編譯出可執行檔時,附加執行時除錯資訊,以供 gdb 讀取 (若要使用 ABSoft 的除錯程式,則須將參數改為 -gdwarf )。

參數: -c
說明: 僅編譯成 object 檔而不進行程式庫聯結。


參數: -E
說明:展開程式中的巨集以便了解巨集是否依照預期方式展開。


聯結數個 object 成可執行檔。
參數: -o
範例: 將 'test1.o'、'test2.o' 和程式庫聯結後成為可執行檔 test。
gcc test1.o test2.o -o test

參數: -S
範例:編譯 test.c 產生對應的組合語言程式碼檔 test.s。

星期二, 8月 05, 2008

越來越無痛了

當裝好了該有的

mysql-server
phpmyadmin

最後到了開發期就還要裝 mysqllib 不然玩啥?

sudo apt-get install libmysql++-dev

星期三, 7月 09, 2008

TraceWin

http://dilascia.com/TraceWin.htm


選用30版


try ing


可以得到外部的測試碼 MFC 限定




TRACE() 是給程式編寫員做 debug 用途的
在 Release build 的時候, 這個 macro 就變成 NOP (no-op), 所以它不會佔 Release build 的空間.

非MFC可以用 ATLTRACE()

星期四, 6月 26, 2008

關於寫文件

寫文件對一個開發人員有時候還挺頭大的,因為當你接到開發需求時,有時候這開發需求也沒文案,在製作的時候也只想著怎樣達成功能,就會很懶惰的把文件打開去想怎樣撰寫他。

但其實是需要一個工具來幫助管理這件事,Doxygen似乎就是個好東西,Mars這邊有人家使用的範例,其實就只是將你寫Log的習慣多加了一點點,利用寫註解的方式順便把文字寫進去,之後再用Doxygen把文字轉出來,之後你只要培養了好習慣,那麼文件就是在程式撰寫的時候自然而產生的東西了,當然這只是一份類似API的文件而已。

首先到Doxygen去下載你的平台可以用的執行程式,如果你想SVn一下那也是可以的,這次是使用1.5.6版。


裝了之後會有像專案管理的介面可以使用,output的方式有HTML可以選也有PDF(需要Latex),還有可選擇C++ JAva C # C的最佳化output,當然你可能要多注意一下上面的wizard上的選項,選完後就自動產生Html了,非常酷,大家最好通通都去用。



最後是參考文件

星期三, 6月 18, 2008

剪貼簿 真機歪

不知道有沒有人遇過這樣機歪的事
當你使用簡貼簿時拿書上範例一用中文怎樣弄都是亂碼?

上網找了一下結果發現是編碼簿的問題,當你的輸入法都為中文系統時又沒啥問題
可是你用英文輸入法然後使用減貼簿的功能,貼出的中文字就是亂碼,這問題當然和編碼有關,網路上有人說調整輸入法就好了...,看到這樣我覺得根本就是整人吧。
有這樣不實際的方法嗎?那寫程式寫成這樣麻煩幹麻

一般來講書上的範例只會是下面這樣

TChar szTemp[512];
GetWindowText(m_hAppWnd,szTemp,512);

HGLOBAL hGlobal = GlobalAlloc (GHND | GMEM_SHARE, ( (lstrlen (szTemp) + 1)* sizeof (TChar)) );
LPTSTR pGlobal = (LPTSTR)GlobalLock (hGlobal) ;
lstrcpy (pGlobal, szTemp) ;
OpenClipboard (m_hAppWnd) ;
EmptyClipboard () ;
SetClipboardData (CF_TCHAR, hGlobal) ;

GlobalUnlock (hGlobal) ;
CloseClipboard () ;



這時你就會出現,我一開始遇到的問題了。
最後發現他是要這樣用


TChar szTemp[512];
GetWindowText(m_hAppWnd,szTemp,512);

HGLOBAL hGlobal = GlobalAlloc (GHND | GMEM_SHARE, ( (lstrlen (szTemp) + 1)* sizeof (TChar)) );
LPTSTR pGlobal = (LPTSTR)GlobalLock (hGlobal) ;
lstrcpy (pGlobal, szTemp) ;
OpenClipboard (m_hAppWnd) ;
EmptyClipboard () ;
SetClipboardData (CF_TCHAR, hGlobal) ;
SetClipboardData(CF_LOCALE, hGlobal);
GlobalUnlock (hGlobal) ;
CloseClipboard () ;


好杯中文字遇到的問題就是這樣多 -_-

星期三, 6月 04, 2008

why Android

Why is Google launching the Android Developer Challenge?

A thriving developer community will be an important part of creating better mobile experiences that delight users around the world. We want to support and recognize developers who build great applications for devices based on Android.


以上敘述是Goole 網站中的解釋,他們是希望能用世界上各種的想法,來創新手機的應用。所以建立一個號稱更好開發的SDK更Open的系統。



奇怪了?MS的mobile就不好用嗎?

奇怪了Sybian就不行嗎?

還有其他系統?

待查清....

就我所知MS的mobile似乎不好跨平台開發
Sybian其實也是寫java類,但好像又多了很多的神密處。

那如果這兩套系統都不錯用?那Google的Android好在哪?



加兩條理由

1.新東西
2.Gphone希望能讓各種手機都能使用這OS

星期二, 4月 24, 2007

clear Windows

@echo off
echo 正在清除系統垃圾檔案中,請稍候......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*.syd
del /f /s /q %systemdrive%\*.---
del /f /s /q %systemdrive%\*.$$$
del /f /s /q %systemdrive%\*.@@@
del /f /s /q %systemdrive%\*.??$
del /f /s /q %systemdrive%\*.??~
del /f /s /q %systemdrive%\*.~*
del /f /s /q %systemdrive%\*.err
del /f /s /q %systemdrive%\*log.txt
del /f /s /q %systemdrive%\*.prv
del /f /s /q %systemdrive%\*.wbk
del /f /s /q %systemdrive%\*.xlk
del /f /s /q %systemdrive%\*.diz
del /f /s /q %systemdrive%\*.dmp
del /f /s /q %systemdrive%\mscreate.dir
del /f /s /q %systemdrive%\chklist.*
del /f /s /q %systemdrive%\*.ftg
del /f /s /q %systemdrive%\*.fts
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
DEL /S /F /Q "%systemroot%\Temp\*.*"
DEL /S /F /Q "%AllUsersProfile%\「開始」功能表\程式集\Windows Messenger.lnk"
RD /S /Q %windir%\temp & md %windir%\temp
RD /S /Q "%userprofile%\Local Settings\Temp"
MD "%userprofile%\Local Settings\Temp"
RD /S /Q "%systemdrive%\Program Files\Temp"
MD "%systemdrive%\Program Files\Temp"
RD /S /Q "%systemdrive%\d"
net user aspnet /delete
echo 清除系統垃圾檔案完成!
echo. & pause

星期一, 4月 02, 2007

Extern How?

全域吃透透寫法
a.h

extern double someVar;

a.cpp

#include
#include "a.h"
#include "c.h"
using namespace std;

int main() {
cout << someVar << endl;
test();
return 0;
}


b.cpp

#include "aaa.h"
double someVar = 1000;


c.h

void test();


c.cpp
#include
#include "aaa.h"

using namespace std;
#include "aaa.h"
void test() {
cout << someVar << endl;

}



就可以讓其他檔案也吃透透了,要非常小心這樣的用法,當程式數萬行之後,很容易把自己搞混。小心用。