星期一, 12月 10, 2012

memo

#define _USE_ANSI_CPP #define _STATIC_CPPLIB #define _DISABLE_DEPRECATE_STATIC_CPPLIB

星期一, 11月 12, 2012

jar add 數位簽章

jarsigner -verify xxx .jar
可以知道有沒有簽過章
message :
 jar verified.

 or

 jar is unsigned.

 keytool -list -storetype pkcs12 -keystore xxx.pfx
輸入密碼
xxxxx-xxxx-xxxx-xx
之後出現評證指紋上的一堆字
jarsigner -storetype pkcs12 -keystore xxx.pfx xxx.jar xxxx-xxx-xxx-xxx
就簽上了

星期二, 4月 03, 2012

mac小記

macports
brew

星期四, 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 () ;


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