Boost.Serialization

在設計 editor、game 或是實現軟體系統中的 heuristic algorithm 等情況下,常需要設計 save/load 或 undo 之類的還原功能。學過 design pattern 的人大都知道 memento 和 command 這兩個 pattern。通常比較簡單的東西靠 command pattern 就能順便做出 undo 功能了,但是在其它比較複雜的狀況下就需要靠 memento pattern 來幫忙,將物件的狀態儲存起來以便隨時復原。有些語言如 Java 提供了將物件本身序列化 (serialize) 的機制,所謂序列化就是把物件狀態變成一串資料儲存起來。這樣就可以做到和 memento 相同的功能,更進一步的話還能將序列化後的資料存在 disk 上或透過網路傳遞。C++ 語言本身沒有支援 serialization 的功能,所以 boost 以 library support 的形式做了一個類似的。內建的支援有 binary、text 和 xml 三種輸出格式。這篇只會出現 text,反正用法都沒差 (唯一要注意的就是 binary 並非 portable)。

Read moreBoost.Serialization

Boost.MultiIndex

很久沒發程式文了。
最近常到處在網路上亂逛,
發現 boost 在台灣真的是沒什麼人在用。
應該說 C++ 普及的程度實在太低了,
看來還是放一點東西比較好...
不過用 1280x1024 解析度 + IE7 來讀這篇大概 code 右半邊會無法顯示,
懶得玩複製貼上的話就乖乖切到 1920x1200 或用 firefox 吧 (字會小一點但是很難看);
不然就等我有空去改改 css。

Read moreBoost.MultiIndex

VP-UML 6.2 的 Acitivity Diagram 測試

因為真的非常迫切需要有一套完全支援 UML 2.x 的 tool 來畫圖,
去年開始就非常努力的到處找來找去,
雖然著名的 RSA (Rational Software Architect) 還不錯,
也很方便 run RUP (Rational Unified Process) 的流程,
但是它的 UML 2.x 支援度實在是太爛了...
最後找上了 Google 裡打廣告打最大的 Visual Paradigm 這家公司的產品 VP-UML。

Read moreVP-UML 6.2 的 Acitivity Diagram 測試