在去年初玩了一下 Google Test,雖然我還蠻喜歡他的簡潔性,不過仍然繼續用 Boost.Test,一來是因為在我使用的電腦 Boost 可得性比較高,二來是因為當時只能在 Visual C++ 下面使用,用 MinGW 編譯有點問題。

虧我個人的 MSYS 和 MinGW 工具裝得相當齊全,但是執行 configure、make 卻不太成功,我也沒有閒功夫去追原因為何。

novus 發表在 痞客邦 留言(0) 人氣()

對最近一則熱門新聞的看法,無關政治。

novus 發表在 痞客邦 留言(1) 人氣()

前幾篇我介紹了一種不用 __VA_ARGS__ 實作可變參數 macro 的方式,例如可以這樣寫

PRINTF("%d %f %s", (1)(3.14)("hello"));

novus 發表在 痞客邦 留言(0) 人氣()

在程式撰寫過程中,有時候我們會希望輸出一些內部的資訊,例如某某變數值是多少、有沒有進入某某函式等等,讓 debug 有線索可循。很多人的做法是直接在程式碼當中插入 printf 或 cout,到正式 build 的時候再手動將這些資訊移除,這種做法只適用於小規模的程式,並且在 GUI 程式比較難用。比較巧妙一點的做法是將相關的功能用 macro 包裝,靠 NDEBUG 或類似的 flag 來決定是否輸出這些除錯資訊。我記得 VB6 有個類似的功能叫做 Debug.Print,正式建置程式的時候這些指令將會被編譯器忽略。

以前我的做法是把一些常用的 debug 和 assertion 功能用 macro 包裝好塞在一個標頭檔裡面,依照現實需求略做修改,通常這樣就已經很夠用了,所以未曾在此多留心。後來我在《Applied C++: Practical Techniques for Building Better Software》讀到了一種複雜許多的 debug output 方法,才知道原來小題也可以大作到這種地步。複雜帶來的是功能上的彈性,例如在書中介紹的機制只要切換一個叫做「Debug Sink」的組件,就可以將蒐集到的資訊全部倒到 console、檔案、訊息視窗甚至是網路。不過這些額外的好處還不夠吸引我,所以我還是繼續使用自製的 macro 工具。

novus 發表在 痞客邦 留言(1) 人氣()

最近 survey 了一些 debug sink 實作,其中最原始的應該是 dprintf。用函數實作的dprintf有一些缺點,例如 releas build 時編譯器仍然無法去除額外的函式呼叫。另一方面我們希望能夠自動收集 __FILE__、__LINE__ 的資訊,節省機械化的打字。

要解決這個問題其實很簡單,這裡提供一種做法

novus 發表在 痞客邦 留言(0) 人氣()

上個星期我以每天三至四篇的速度看完了《什麼是中醫,這才是西醫》這部網路著作,通常我會在睡前看一些比較五四三的東西,而這部著作常常讓我看著想著忘了要睡覺。 作者好像是中西雙修的中醫系學生,對他想探討的主題有足夠的知識作為支援,而且文筆生動,不會落入僵硬的說教。我不太確定這本書是否真的「完了」,或者將來會不會出版成實體書。

這本書告訴你中醫怎麼來的,並且以西醫的發展作為對照,最後提出一些對中、西醫未來發展的建議。在網路上有很多關於中西醫的論戰,大部分的內容都相當偏激,而且說句老實話.....嗯.....我覺得支持中醫一方除了嘴砲和文字遊戲之外,鮮少提出什麼有說服力的論點。我自認算是一個相信中醫有其存在價值的人,如果連我都看不下去,那麼反對中醫的人大概更加無法接受。

novus 發表在 痞客邦 留言(3) 人氣()

在前一篇中我介紹了托里切利的 Vuvuzela,不過其中有個無限延伸的 x 軸讓人難以接受,並且要用到稍微麻煩的微積分計算。

在這篇我想補充一個有點類似的問題,改自於數學家 Helge von Koch 提出的 Koch 雪花曲線。一開始我們有一個正三角形,然後我們把各邊中央取三分之一再長出小三角形,成為六角星形。這個步驟可以繼續持續下去,直到無限。

novus 發表在 痞客邦 留言(2) 人氣()

週末又生了一些高次方的 Julia Set,感覺反而不像平方那麼多變,似乎大部分都很單調,但是在靠近發散區的邊界變化極激烈,往往初始值只差小數點以下四五位就會產生大異其趣的圖,在 6 次方的時候感覺更加明顯。

下圖是 z = z^3 + c 比較漂亮的一張,我取的 c 為 0.125 + 0.8j。

novus 發表在 痞客邦 留言(1) 人氣()

如果把 Julia Set 按照種子的座標排列,最後就會得到像下面這樣的圖形。這張圖用了625 個不同種子的 Julia Set 排列而成。在圖形中間偏右的圓圈為原點(0, 0i),相鄰兩張圖的差距皆為 0.1,由此可以得知每個位置的 Julia Set 大致的模樣,可算是 Julia Set 的導覽地圖。

julia-map1.png

novus 發表在 痞客邦 留言(0) 人氣()

數學家 Benoît Mandelbrot 在2010年10月14日逝世於美國,享年85歲。雖然他在很多領域都獲得過人成就,不過他留給大眾最重要的遺產應該還是 Mandelbrot Set 和碎形。

上週末去新竹找小豪,還很開心和他分享我前陣子跑的一些碎形圖案,完全沒想到一回到家馬上看到這則新聞。

novus 發表在 痞客邦 留言(1) 人氣()

著名的物理學家托里切利(Evangelista Torricelli)曾師事加利略,他除了製造托里切利真空之外,另一項比較不有名的成就是以數學方式描述 Vuvuzela。

novus 發表在 痞客邦 留言(3) 人氣()

這是一個我從很久以前就有的想法,印象中最原始的想法大約始於國中期間,當時甚至都還沒在學校學到極限的觀念。一直到高中、大學之後我才漸漸對相關數學有足夠的理解,然而問題還是沒有解決。

記得當年和小豪討論過這個問題,不過忘掉最後是否得出有意義的答案。

novus 發表在 痞客邦 留言(4) 人氣()