用 Boost.Spirit 搭 std::string 使用時容易遇到的問題

這個問題太多人問了,
所以還是先寫下來當成 FAQ 用;
官方文件的 quick start 這一章是類似下面這樣教:

加上 The Scanner and Parsing 那一小節也提到 pharse-level parsing 有兩種版本:

導致有人寫出這種 code 來結果編不過在那邊哭:

Read more用 Boost.Spirit 搭 std::string 使用時容易遇到的問題

把舊的 RAM 換下來了

現在家裡這台 PC 是在 2007 年末買的 (QX9650 + P5E3 Dexlue),
當時 DDR3 又貴又難買到速度高的,
就先挑了新竹 NOVA 拿得到的 Kingston DDR-1066 (型號懶得翻盒子找了),
前幾天發現 DDR3 價錢跌了很多,
而且 G.SKILL 的 F3-12800CL7D-4GBPI-B (DDR3-1600 2G x 2,時序 7-7-7-18) 只要 6000 出頭:
f3-12800cl7d-4gbpi-b
當然就用力給它買了下去跟過渡期的 DDR3-1066 說 bye bye。

Read more把舊的 RAM 換下來了

不錯的 LDAP 輔助工具集: ldapscripts

研究 LDAP 的便利工具也有一段時日了,
偏好使用純文字介面的我當然不太可能選擇 GUI client,
所以一開始是先挑了功能不太齊全的 ldapsh,
它提供了一個類似 shell 的介面讓人能編輯或刪除 LDAP 裡的資料,
不過似乎找不到新增資料的方式,
至於會啟動什麼編輯器則是看 EDITOR 這個環境變數決定;
最後相中的是 ldapscripts 這個 ports,
安裝完之後只要做一些簡單的設定就行了,
不過唯一的缺陷似乎是沒支援 starttls,
這樣可能會強迫我開 ldaps 協定吧,
不過目前我只把這個裝在 LDAP server 所在的機器上,
所以其實還算可接受的範圍內。

Read more不錯的 LDAP 輔助工具集: ldapscripts

從 uw-imap 換到 courier-imap

應該很多人知道 uw-imap 因為漏洞太多又沒更新已經 bye bye 了,
FreeBSD 的 ports 裡先是把它設為 FORBIDDEN 之後直接砍了它,
對於這種幾乎不能 config 的 imap/pop3 client 我一直就很不爽,
偏偏大家又很愛裝它,
造成我前陣子也面臨了不得不將它換掉的狀況。

Read more從 uw-imap 換到 courier-imap

把 FreeBSD 7.1 直接安裝在 2TB 以上的硬碟裡

應該很多人都知道 FreeBSD 裝大於 2TB 的硬碟一直都是一個問題,
一般想要裝 2TB 以上硬碟的人都難免會來到 FreeBSD 官網的這個頁面:
http://www.freebsd.org/projects/bigdisk/index.html
它的主要問題是因為大部分跟硬碟相關的程式有這樣的特徵:

  1. 以 32-bit 整數表示容量相關的資料。
  2. 單位是 sector,一個 sector 是 512 bytes。
  3. 32-bit 只能表示 4T sectors,也就是 2TB。

跟硬碟相關的程式以及它們的特徵大致可以這樣歸納:

  1. 以前的 UFS 檔案系統只能支援到 2TB,2003 年起的 UFS2 則以 64-bit 整數來表示相關資料,使得檔案系統本身可支援到 2TB 以上。
  2. MBR、fdisk、bsdlabel 仍是以 32-bit 整數設計的,因此即使下層的檔案系統支援 2TB 以上的容量也沒有用。
  3. 以 GPT 代替 MBR 的話,可以解決問題,但 FreeBSD 7.1 之前並不支援 boot 在 GPT 分割區的功能。
  4. FreeBSD 目前為止 (7.1-RELEASE) 的 sysinstall 並不支援 GPT,所以安裝系統時無法分割 2TB 以上的硬碟。

再看看這個網頁下方的各種表格後還能發現,
目前 FreeBSD 相關的支援並不十分完善,
且有些功能已經拖了相當多年了。

Read more把 FreeBSD 7.1 直接安裝在 2TB 以上的硬碟裡