CJH的儲思盆 – 技術.管理.思考 小 工 程 師 職 場 打 滾 記 事

19四月/090

SQL SERVER 2005 交易式複寫小研究

版本:SQL SERVER 2005-sp3-4035

在「已發布」的複寫資料表內,直接使用右鍵->設計(開啟GUI介面),改完之後直接儲存

  1. 新增欄位(接在rowguid資料行之後):可成功儲存,並會自動發佈
  2. 刪除欄位:可成功儲存,並會自動發佈
  3. 移動欄位順序:無法儲存,失敗
  4. bug:刪除欄位後,會把「自動計算」的資料行設為未發布複寫,但是新增欄位的動作不會有此狀況

[已發布]的函數,右鍵->修改

  1. 修改內容:如果此函數沒有被其他資料表使用(計算資料行),則可成功套用
  2. 修改內容(已被資料表使用):無法執行,會有錯誤訊息
  3. 刪除:會告知已被用於複寫,無法刪除

發行項屬性

  1. 新增/取消勾選項目:需要重新建立快照集,但不用重新初始化
  2. 取消勾選「已發布」的資料表內的「欄位」:需要重新建立快照集+重新初始化

總結:

  1. 盡量不要在資料表內使用「有參考使用者自訂函數」的計算資料行,很容易造成複寫同步失敗
  2. 已發布項目,直接用GUI介面修改即可,會自動套用變更(但注意如果改資料表,欄位前後順序不要動)
  3. 注意前面提到的刪除欄位會造成的bug
  4. 新增發布項目,需要重新建立快照集,但不用重新初始化
31十二月/080

打造M+B+W+C Open Source開發環境(4) – Code::Blocks安裝&設定

Code::Blocks官網:http://www.codeblocks.org/

下載位址:目前為8.02版本,下載請按此

安裝方式:也是安裝檔,直接執行讓它裝完即可

設定:

初次開啟程式時,會要你選擇complier,選擇我們剛才裝的MinGW即可(GCC),Code::Block會幫你處理好所有相關的設定

一般來說,如果前面步驟都正確的話,現在已經可以開一個Console Application專案來試試看了,應該可以順利的看到Hellow World字樣出現在螢幕上

進階設定:

接下來我們要讓先前辛苦編譯的Boost和wxWidgets可以使用,必須要再做一些設定

  1. 設定Global variabels: 工具列-> settings->Global variables
    • 設定wxWidgets的路徑081230-codeblocks-01.jpg
    • 只要設定「base」的路徑,程式就會自動去對應其下的「include」和「lib」目錄,很方便吧~

    • 設定Boost的路徑081230-codeblocks-02.jpg
    • 因為boost編譯的目錄型態比較特殊,所以我們要分別去幫他指定

    補充說明:Global variable設定完之後,我們就可以利用$(#關鍵字)去取用該目錄,不用再輸入落落長的路徑

  2. 設定complier和linker的搜尋目錄:工具列-> settings->complier and debugger
    • 設定complier - 輸入$(#boost.include)090106-codeblocks-03.jpg
    • 設定linker - 輸入$(#boost.lib)090106-codeblocks-04.jpg

做到這裡,恭喜你已經完成M+B+W+C的環境建置,準備體驗開放原始碼的威力吧!

(也許你會有疑問,那剛才的wx變數是用來做啥?後面我們在開啟wxWidgets專案時,就會用到囉)

28十二月/080

打造M+B+W+C Open Source開發環境(3) – wxWidgets安裝&編譯

wxWidgets官網:http://www.wxwidgets.org/

下載位址:目前是2.8.9,下載按這裡

安裝方式:一樣是簡單的安裝檔,就一直按下一步就好了,安裝目錄請用預設(C:\wxWidgets-2.8.9)

編譯:

  1. 要編譯前,請先確認硬碟有1.5G以上的空間
  2. 打開檔案總管,在「C:\wxWidgets-2.8.9\build\msw」目錄下面,建一個批次檔,內容如下
  3. mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1 UNICODE=1;
    mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=1 UNICODE=1;
    mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1;
    mingw32-make -f makefile.gcc BUILD=debug SHARED=1 MONOLITHIC=1 UNICODE=1

  4. 存檔後直接執行,就開始編譯了(N小時,建議下班或外出前做,放著讓它跑),編譯完成就ok

小提醒1:編譯真的很久,千萬不要在很忙or趕進度的時候做
小提醒2:上面那四行編譯指令,SHARED=0和=1的差別,前者產生static link檔,後者產生dll檔,所以如果只要其中一種,可刪除不用的那兩行,節省時間。

作到這邊,已經完成最麻煩&耗時間的步驟了,只剩下Code::Blocks的安裝設定

28十二月/080

打造M+B+W+C Open Source開發環境(2) – Boost安裝&編譯

Boost官網http://www.boost.org/

下載位址:目前版本為1.37.0,要下載兩個東西

  1. Boost原始檔 - 下載按這裡(選你可以解壓縮的格式)
  2. Boost Jam(用來編譯boost用的工具) - 下載按這裡(請選ntx86那個檔案)

安裝方式

  1. 下載完成之後,先把boost壓縮檔解開,一般我會放在c:\下面
  2. 把Jam的壓縮檔也解開,解開後會有個目錄,裡面有一個bjam.exe和一個文字檔,全部複製到剛才解壓的boost目錄下(我是放在c:\boost_1_37_0)

編譯:

  1. 確認你系統path有設定給剛才安裝的 「MinGW目錄\Bin」而且裝完MinGW有重開機過,讓設定生效
  2. 打開「命令提示字元」(開始->執行->輸入「cmd」按enter)
  3. 將當前目錄移到你的boost根目錄(cd c:\boost_1_37_0 按enter)
  4. 輸入以下指令:
  5. bjam --build-type=complete --toolset=gcc install

  6. 進行編譯(會跑一段時間,去泡杯咖啡找人聊聊天吧),編譯完就ok了

小提醒1:此方式會把boost編譯後產生的檔案自動放在c:\boost目錄內
小提醒2:bjam的設定可在命令提示字元裡面輸入bjam --help查看說明

標籤: 沒有回覆
28十二月/080

打造M+B+W+C Open Source開發環境(1) – MinGW安裝

MinGW官網http://www.mingw.org/

下載位址:目前是5.1.4版本,按這裡下載

安裝方式:

  1. 下載回來即是安裝檔,直接執行,按照指示下一步下一步即可
  2. 安裝完成後,請確認系統Path參數有設定到「你的MingGW安裝目錄\bin」下,然後重開機使設定生效

小提醒1:他會出現安裝選項,可以自己選擇要裝啥,一般來說我都是全選的(因為也不知道哪些可以不用裝XD)
選完之後會自動去下載需要的檔案,然後幫你裝完。

小提醒2:預設是安裝在C:\MinGW目錄下,建議你也不要亂改...

標籤: 沒有回覆
28十二月/080

打造M+B+W+C Open Source開發環境(0) – 前言

所謂的「M+B+W+C」,就是

  1. M:MinGW - C++ complier
  2. B:Boost,C++程式庫,有很多方便好用的東西(比較有名的是effictive c++裡面提到的smart pointer)
  3. W:wxWidgets,GUI程式庫,架構十分類似MFC,但更好(而且仍在持續更新)
  4. C:Code::Blocks,程式編輯器,整合wxWidgets的RAD介面(wxSmith)

為何用這四個呢?

  1. Open Source,有問題可以自己trace原始碼
  2. Free,完全免費,包含商業用途,除了花下載、編譯時間之外,沒有其他額外成本
  3. 比起其他的Open Souce Projects,算是開發比較久,也比較成熟的產品,網路上的資料也十分多
  4. 我爽~就是看順眼XD

再來會逐一介紹如何安裝及設定(Windows XP環境)

7四月/080

T-SQL DateDiff函式小研究

SELECT DateDiff(year,'2006/12/31 00:00:00','2006/12/31 23:59:59') = 0
SELECT DateDiff(year,'2006/12/31 00:00:00','2007/1/1 00:00:00') = 1
SELECT DateDiff(year,'2007/1/1 00:00:00','2007/12/31 23:59:59') = 0

  1. 在該年內都算0
  2. 注意:只要跨越當年就算1,不論天數(所以只差一天也可以視為year+1)
  3. 同理,day為單位的話,也是只要跨越當天就算1,不論秒數(所以只差1秒也可以算day +1)
標籤: 沒有回覆
26三月/080

VB.NET中Boolean的轉型

當 Visual Basic 將數字資料型別轉換成 Boolean 時,0 會變成 False,而其他所有值都會變成 True

當 Visual Basic 將 Boolean 值轉換成數字型別時,False 會變成 0,而 True 會變成 -1

標籤: 沒有回覆
21二月/080

My.Computer.FileSystem.SpecialDirectories

注意:此物件下附屬的所有屬性(傳回特殊目錄) 目錄路徑都是 沒有「\」號結尾的

如 My.Computer.FileSystem.SpecialDirectories.Temp
則傳回C:\Documents and Settings\chrischen.ANPS\Local Settings\Temp

若要後接檔名時要自行加上,否則路徑會有錯

標籤: 沒有回覆
21二月/080

System.Windows.Forms.ComboBox事件順序

  1. 進入控制項
    • Enter
    • GotFocus
  2. 離開控制項
    • LostFocus
    • Leave
    • Validating
    • Validated
  3. 下拉選單
    • DropDown(按下)
    • DropDownClosed(離開)
  4. 下拉選單展開,用滑鼠選擇另一個項目
    • DropDown
    • SelectionChangeCommitted
    • DropDownClosed
    • SelectedValueChanged
    • SelectedIndexChanged
  5. 下拉選單沒有展開時,用箭頭選擇項目
    • SelectionChangeCommitted
    • SelectedValueChanged
    • SelectedIndexChanged
  6. 下拉選單展開時,用箭頭選擇項目,並按下enter送出結果
    • DropDown
    • SelectedValueChanged
    • SelectedIndexChanged
    • SelectionChangeCommitted
    • DropDownClosed
  7. 編輯顯示的文字(Style為DropDown時)
    • TextUpdate
    • TextChanged
標籤: 沒有回覆