星期一, 12月 10, 2012
星期一, 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
就簽上了
可以知道有沒有簽過章
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
就簽上了
星期四, 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 了 真囧
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
星期三, 8月 10, 2011
星期四, 3月 31, 2011
星期二, 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.
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
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上也有說名
首先打開專案資料夾
再配合MiniDumper catch dump之後
HMODULE hDll = ::LoadLibrary( TEXT("DBGHELP.DLL") );
MiniDumpWriteDump
產生之後,用VS開起dmp 配合設定一下/(指定偵錯符號檔)就可以找出當的位置了。以前還在那邊算map-_-
MSDN上也有說名
首先打開專案資料夾
屬性選項
c/c++
啟用c/c++ 例外狀況
我選了 是,但有 SEH 例外狀況 (/EHa)
再配合MiniDumper catch dump之後
HMODULE hDll = ::LoadLibrary( TEXT("DBGHELP.DLL") );
MiniDumpWriteDump
產生之後,用VS開起dmp 配合設定一下/(指定偵錯符號檔)就可以找出當的位置了。以前還在那邊算map-_-
星期一, 1月 12, 2009
星期四, 10月 30, 2008
星期三, 8月 27, 2008
星期三, 8月 20, 2008
星期日, 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。
說明: 在編譯過程做最佳化,以提升增快程式執行速度。
參數: -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
星期三, 7月 09, 2008
星期四, 6月 26, 2008
關於寫文件
寫文件對一個開發人員有時候還挺頭大的,因為當你接到開發需求時,有時候這開發需求也沒文案,在製作的時候也只想著怎樣達成功能,就會很懶惰的把文件打開去想怎樣撰寫他。
但其實是需要一個工具來幫助管理這件事,Doxygen似乎就是個好東西,Mars這邊有人家使用的範例,其實就只是將你寫Log的習慣多加了一點點,利用寫註解的方式順便把文字寫進去,之後再用Doxygen把文字轉出來,之後你只要培養了好習慣,那麼文件就是在程式撰寫的時候自然而產生的東西了,當然這只是一份類似API的文件而已。
首先到Doxygen去下載你的平台可以用的執行程式,如果你想SVn一下那也是可以的,這次是使用1.5.6版。
裝了之後會有像專案管理的介面可以使用,output的方式有HTML可以選也有PDF(需要Latex),還有可選擇C++ JAva C # C的最佳化output,當然你可能要多注意一下上面的wizard上的選項,選完後就自動產生Html了,非常酷,大家最好通通都去用。
最後是參考文件
但其實是需要一個工具來幫助管理這件事,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 () ;
好杯中文字遇到的問題就是這樣多 -_-
訂閱:
文章 (Atom)