今日連結:
兴,百姓苦,亡,百姓苦。 - 推這段:
第三,威权政府的优点缺点,都体现出来了。一个威权所能做的,可以拿来萝卜、方便面,强制价格。可以集中资源,统一部署。上面一动,下面也会动。
但是反之,上面不动,下面会动么?在一个威权社会,社会自生组织是被遏制的,因为潜在存在与政府夺权的可能性,所以我国NGO并不发达,工会只是摆设。为什么在头2天,铁路能干出让乘客不吃不喝不许下车的事情。这是列车员和乘客的关系么?这不是监狱长与犯人的关系么?
OOoSVN - 讓 OpenOffice.org 可以在 SVN 裡 diff 的擴充套件:
A project to provide change control for OpenOffice.org documents (OpenDocument and *.sx*) via subversion. Transparently checks in internal changes in files and allows users to recover any previous version, view logs and compare with older versions. Works under Unix/Linux and Mac OSX.
看到大片大片,前輩新寫的,內容幾乎一樣的函式群,不曉得該怎麼辦。
話說,昨天尾牙循例又出現新人威能,最大獎再度讓部門裡最新的同事拿到。但新同事已經不再是最新的了,故每每在最後關頭熄火。想到這裡,發覺新同事也快滿週歲了,哼哼,我的胃痛,肯定和他常常帶來的驚奇有關。
本系列共有三篇文章,以及一篇補充資料,建議依照以下順序閱讀:
Race condition in C wrapper of mutex class (補充資料)
Implementing dprintf() with __VA_ARGS__
Implementing dprintf() without __VA_ARGS__
Implementing DFORMAT and DOUT (尚未完成)
在這篇《Implementing dprintf() with __VA_ARGS__》裡,簡介了如何利用 __VA_ARGS__ 做出好用的 dprintf(),以協助我們僅在測試版裡傾印偵錯訊息。然而,某些老舊但仍然十分活躍的 compilers,如 VC6,並沒有支援 __VA_ARGS__。因為通常來說,為了照顧既有的大量程式,以及一些政治問題,更換 compiler 有時是不可能的。所以我們最好還是來想想,怎樣在不支援 __VA_ARGS__ 的情況下,仍然將 dprintf() 實作出來。
仔細檢視 dprintf_v2() 與 dprintf_v3() 在 #define 時的差別,我們會發現,dprintf_v2() 其實並不是一個真正的 function-like macro,而僅僅只是把 dprintf_v2 這個「名字」給代換成 dprintf_v2_impl。於是,原本跟在後面,屬於 dprintf_v2 的參數,經過 preprocessor 處理之後,變成了跟在 dprintf_v2_impl 的後面。這樣的作法,除了之前提過的,在釋出版裡,剩下來的參數列,不一定有辦法被最佳化去掉之外,還有一個更大的問題就是,沒有辦法於呼叫 dprintf_v2() 時省略 __FILE__ [...]
(這是一篇積存的舊文,原始發想時間大約在 2007 年,但精確的日子已不可考。)
這是怎樣,平均每個月可以遇到一個 VC6 的問題,真苦。XD
這次的問題出在 strftime() 這個標準 C 的函式。依據 C99,若傳進 strftime() 的 format specifier 有 %Z 或 %z 的話,分別應該被代換為:
%Z is replaced by the locale’s time zone name or abbreviation, or by no characters if no time zone is determinable. [tm_isdst]
%z is replaced by the offset from UTC in the ISO8601 format ‘‘-0430’’ (meaning 4 hours [...]
今日連結:
高雄捷運美麗島站 - 「要呈現的是「合掌」、「祈禱」,出入口像是一座教堂般,讓人沉思、反省。」
Foxkeh's Blog - 有很多 firefox 的資源可以下載。
Mystery infestation strikes Linux/Apache Web sites -
秒殺的感覺 - 在中國,「秒殺」在很多時候,已經進化退化成單字詞 「秒」了。
Localized Identity - 「ID」的話,我覺得沒必要,有那麼多版本就不能叫做 identity 了。不過「display name」可以有許多種倒是不錯。
The Speed-up Loop - 「保證」可以讓你的程式變快的 loop。
今日連結:
2008年立法委員選舉預測結果之初步分析(摘要) - 使用未來事件交易所。
幻想的問題
信产部:我国十进制网络安全地址投入使用 - 這篇真是太好笑了。
BBIAB - Shorthand for Be Back In A Bit.
翻轉你馬的軸線、再造你馬的西區!!!! - 在地居民的怒吼。
KDE goes cross-platform with Windows, Mac OS X support
被剝削的農民?
Microsoft Visual C++ 6 (VC6) 是個歷史悠久的 compiler,自 1998 年推出之後,一直到了 2002 年,才有 Visual Studio .NET 2002 這個後繼版本推出。在這期間,Microsoft 一共推出了 6 個 service packs,以解決各種 VC6 的 bug。但在實務上,我們並沒有一個很方便的方法,可以得知目前灌在系統裡的 VC6,其 service pack 的版本為何:
從 VC6 選單的 Help > About Visual C++,我們只會看到簡單的「Visual C++R 6.0」的版本號。
從控制台的「變更或移除程式」,我們也只能看到「Microsoft Visual Studio 6.0 xxx Edition」的字樣。
能否弄清楚 patch 到那一版的 service pack,有時候非常重要。不同的 service pack 版本,小則編譯出來的程式執行效率不同,大則執行結果不同,這些差異,無法忽視。
根據 MSDN 的這篇《How To Tell That a [...]
今日連結:
這才是斯巴達啊 - 太…太強了。
Can World's Strongest Dad - 我掉眼淚了。
Wonderbra胸罩創意廣告 - 頭暈了。
(這是一篇自 2005 年開始撰寫[1],最近才補完的舊文,文中的連結可能已經失效,請見諒。)
在 moztw 看到這篇《你喜歡甚麼等距字型?》,在討論寫程式時,用什麼等距字型比較好。因為我很討厭 moztw 必須要註冊才能發表文章的政策,但這又是蠻有趣的議題,因此拉回來自己討論自己的。
在這篇《Finding the Best Programmer's Font》裡,n8f8 列出了他認為,寫程式用的字型,應該具備以下條件:
Crisp clear characters. (清晰)
Extended character-set. (延伸字元集)
Good use of whitespace. (妥善使用空白字元)
'l', '1' and 'i' are easily distinguished. (能夠清楚分辨大寫 l、數字 1 以及小寫 i).
'0', 'o' and 'O' are easily distinguished. (能夠清楚分辨數字 0、小寫 o 以及大寫 O).
Forward quotes from back quotes are easily distinguished -prefer mirrored appearance. (能夠清楚分辨 forward [...]