⓪編著: 蕭沖
一般的管理程式,如:sqlitebrowser,它所建立的都是基於 utf8 而生成的 db。
在中文的環境下,若使用windows作業系統,個人覺得用unicode(UTF-16)版會比較方便,因為無需轉換utf8格式。
⓪編著: 蕭沖
一般的管理程式,如:sqlitebrowser,它所建立的都是基於 utf8 而生成的 db。
在中文的環境下,若使用windows作業系統,個人覺得用unicode(UTF-16)版會比較方便,因為無需轉換utf8格式。
◎蕭沖整理:
自從ms把 dll hell 改成 sxs 的方式後,又變成另一種hell @@。
常常搞不清楚安裝程式少了哪一個版本的run time,再此先教大家確認的方式 : 用resource editor (vs2005可以直接打開exe檔)打開exe檔,就會看到RT_Manifest的資源,查一下裡面<assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.4053" … 之類的就可以確認。
一但確認後,該如何解決呢?
來自
http://www.thefutureoftheweb.com/blog/use-empty-form-action-submit-to-current
The title says it all: you can use an empty action attribute on a form to submit that form to the current page. This means you don't need to use server-side scripting (using REQUEST_URI or PHP_SELF or whatnot) to write the current URL into the HTML.
⓪著作: 蕭沖
近來發現BCB6的TClientSocket關於OnRead的事件有些問題:若在事件裡沒有處理到ReceiveBuf這個方法,則下一回的event就不會被觸發。所以,在OnRead的事件裡,無論如何先收資料下來再說! 千萬別一開始就在ReceiveBuf前return或是把ReceiveBuf放在某個if裡。(為何可能會錯誤的那麼做? 因為常常都是想檢查ReceiveLength,若不符合我們要的結構長度,則…)
若不收下來,那所有的封包依舊保留在socket的資料緩衝,於是爆了,接著就當了!!
⓪著作: 蕭沖
何謂thread-safe? 這個問題我看過許多論壇都有討論過,都總讓人覺得不很滿意。在此,筆者想要用更logical的方式來把議題說清楚。首先,我們要了解它的定義! 定義若都不明白就難以判別安不安全了!
thread是什麼呢? 可能也有人不太了解。就從這裡開始… 當cpu處理一段(區塊)的程式碼時,從開始的第一行程式碼來跑就算是thead的開始,直到區塊的最後一行程式結束,就算是thread的結束。所謂的「主thread」,在dos (或dos like)程式裡,就是指main( )這個函式的開始到結束的一個thread。而主thread以外的一個子thread則是指程式人員自行在主thread裡再定義一個「程式區塊」,並請cpu同步的去執行那個區塊。
⓪編著: 蕭沖
我們知道dll最主要的用途就是在於程式碼共享。而共享的過程中又會演生出全域資料(變數)是否共享的問題。
在多個process間共用同一個dll時,變數的共享與否是靠二個機制:
1/ 不共享全域變數 : 使用copy-on-write的觀念來處理 ( windows 系統自動預設是如此)
2/ 共享全域變數: 我們可以透過把變數放入一個share的segment的記憶體區段內,然後process間就可以共用。
⓪編著: 蕭沖
經實測VC6能夠使用最穩定的DirectX版本為 sum2004版,往後的版本因為有加入bufferoverflow的安全性問題函數,使得VC6無法正確編譯。
然而,在使用sum2004版的時候,確也發生了一個致命的問題,在網路上找了許久才在日本的網頁上找到答案… 此問題是
d3dx9.lib(fastftoa.obj) : error LNK2001: "__aulldvrm"
⓪編著: 蕭沖
經過數回合的安裝測式後發現,最好的組合有二種:
1/ BcB6(經過update4) + DsPack231 + DirectX 9.0c 第一版(sum2004) + dxsdk_oct2004_extras (修正vc6用的lib)
2/ BcB6(經過update4) + DsPack234 + DirectX 9.0c dec2004
第一種方式還可以配合VC6的使用。第二種則VC6無法使用,會有許多compiler的錯誤,但DsPack在bcb上是正常的。
⓪編著 : 蕭沖
extern "C" 是C++特有的組合關鍵字,在C裡並沒有這個的組合,僅有extern這個關鍵字!
為什麼C++會需要這樣的關鍵字組呢? 原因是C++它有一個複載(overloading)的功能,也就是說同樣的函式名稱可以有多個定義只要參數簽名不同即可。比如說C++裡可以有以下的二個宣告
bar(int i, int j);
bar(double i, double j);