Calendar

六月 2019
« 十一月    
 12
3456789
10111213141516
17181920212223
24252627282930

Categories

藏在 UML 規格書中的重要範例

記得發現這東西的時候是剛把自己對 UML 的認識從 1.x upgrade 到 2.0 的時候,
除了讀讀相關的書籍之外,
也在實作過程中翻閱 UML 規格書來確認 classifiers 之間是否可以存在關聯,
當時在查閱 UML Superstructure specification 時,
特別注意到了它在 Interactions 一章中的某兩個範例,
是手邊的書中都沒有提過的。

Continue reading 藏在 UML 規格書中的重要範例 »

用 IE8 去看 Qt 的網頁文件

不開相容性檢視的話排版會散掉:
IE8_normal
開起來的話就正常 (Firefox 顯示出來也是類似這樣):
IE8_compatible
不知道是 Qt 官網的文件沒寫好還是 IE8 沒寫好?

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

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

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

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

Continue reading 用 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。

Continue reading 把舊的 RAM 換下來了 »

Google 抓狂了

大概是半個小時前搜尋的時候看見的:
crazygoogle
crazygoogle2

不錯的 LDAP 輔助工具集: ldapscripts

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

Continue reading 不錯的 LDAP 輔助工具集: ldapscripts »

在 MRTG 沿用舊的設定檔會出現 Unknown SNMP var xxx

以往有用 MRTG 透過 SNMPv2 或 SNMPv3 抓 CPU、MEM 和 Disk 使用量的,
可能會發現目前新的 MRTG 不管你怎麼 LoadMIB,
mrtg 照樣吐了像是 Unknown SNMP var ssCpuRawUser.0 這類的 msg 出來,
而且用 snmpwalk -v 2c 之類的去讀明明就好好的,
跑去網路上搜尋這些關鍵字都只看到一堆純嘴炮不然就是沒人回答,
不過直接去官網查 configuration reference 就可以發現,
因為 p5-SNMP_Session 似乎不吃 SNMPv2 以上的東西,
所以要加進這一行讓它用 p5-Net-SNMP 走 SNMPv3:

這樣就能快樂的使用原本的設定了。


PS. 如果你啟動了 mrtg 看到這段訊息而跑不起來:

Can't locate SNMP_util.pm in @INC (@INC contains: /usr/local/bin/../lib/mrtg2 /usr/local/bin /usr/local/lib/perl5/5.10.1/BSDPAN /usr/local/lib/perl5/site_perl/5.10.1/mach /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/5.10.1/mach /usr/local/lib/perl5/5.10.1 .) at /usr/local/bin/mrtg line 295.

千萬不要傻傻的跑去裝什麼 p5-SNMP-Util,
如果這樣做的話就代表你被騙了
應該要裝的是 p5-SNMP_Session 才對。

讓 SSL 憑證申請書包含多個 Common Name

以往用 openssl 的互動式介面來填寫憑證申請書時,
只有一次填寫 CN 的機會,
如果想填多個 CN 可以直接在 command line 把它填完:

CN 的順序是倒過來的,
最後填的一般會被不支援多重 CN 的 client 當成 CN,
這種做法雖然普遍不被多數 browser 接受,
不過用在 smtps/imaps/pop3s server 上倒是沒有什麼大問題,
所以如果 mail server 有多重 domain 的話可以考慮這樣填。

從 uw-imap 換到 courier-imap

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

Continue reading 從 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 相關的支援並不十分完善,
且有些功能已經拖了相當多年了。

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