
來源: http://crispian-jago.blogspot.de/2013/04/the-conspiracy-theory-flowchart-they.html
novus 發表在 痞客邦 留言(0) 人氣(366)
不熟悉浮點數的人最容易犯的錯誤之一,就是直接用 == 或 != 比較兩個浮點數。以最常見的 IEEE 754 浮點數來說,下面這樣的判斷式竟然不成立:
if (0.1 + 0.2 == 0.3)
原因在於以二進位表示的浮點數並沒有辦法精確儲存 0.1、0.2、0.3 這些十進位實數,只能以最接近的浮點數表示,和原本的數值有微小的誤差。三個各自帶有誤差的數字要碰巧讓整個等式成立,實在是相當困難的一件事。基於同樣的理由,在採用 IEEE 754 的環境下,以下程式片段陷入無窮迴圈也就沒什麼好奇怪的了:
novus 發表在 痞客邦 留言(1) 人氣(14,048)
前幾天剛好逛到幾篇說明 volatile 的文章,其中有關 volatile 在多執行緒環境的應用並不很完整,這裡做一點補充。
簡單來說,volatile 的作用僅僅是告訴編譯器不要用暫存器快取變數,每次使用都必須從資料的原始來源重新載入。
然而C語言並沒有規定 volatile 應該具備操作原子性,因此光使用 volatile 仍無助於解除 race condition。
novus 發表在 痞客邦 留言(0) 人氣(565)
前言
之前說過想花點整理 boost 和 C++11 當中 Smart Ptr 使用上的小細節,本系列假設讀者對 Smart Ptr 有一定程度的認識,只做一些重點探討。
目前 smart pointer 的現況:
C++ 11:unique_ptr、shared_ptr、weak_ptr
Boost:scoped_ptr、scoped_array、shared_ptr、shared_array、weak_ptr、intrusive_ptr。
- Howard Hinnant 提供了非 Boost 官方的 unique_ptr C++03 backport,由於底層語言機制的限制,行為可能無法完全與 C++11 相容。
- 在 Boost.interprocess 中提供上述所有指標的 interprocess 版本,其中 unique_ptr 是由 Hinnant 版衍生而來。
由於受個人使用經驗的限制,本系列內容可能會非常偏向 boost,有需要的話會另外補充 C++11 內容,
novus 發表在 痞客邦 留言(0) 人氣(1,009)
前陣子在程式人雜誌參與了關於編譯器書籍的討論,我想說自己都打了一堆字,不如整理一下放上來。
講到編譯器書籍,很多人都會想起 Aho、Sethi、Ullman 和 Lam 的勇者鬥惡龍,這本書深度和廣度兼俱,所以被許多課程採用為教科書。但本書二版在 amazon 評價偏低,可見不符合許多人的期待。我認為每個人取向不同,不必妄想一本傳說中的經典就可以涵蓋理論與實務全面知識,而且對於學習者來說容不容易吸收也很重要。
我手邊有勇者鬥惡龍一和二版,我想一版就不必多說,這裡提供對二版的一些看法:
二版自出版以來,就因為錯誤甚多而受到批評,有些錯誤確實會影響理解,最好配 errata 讀。我手邊的國際英文版(封面沒有龍...囧)似乎已經 patch 完第一張 errata,但仍然有第二張 errata 的錯誤。如果買原文最好能取得最近幾刷,我不知道中譯者有沒有主動修正這些問題。
以一本現代編譯技術的教科書來說,介紹 SSA 的篇幅實在少得可憐 -- 只有一頁 -- 根本是放心酸的。
10、11 章講解指令層級平行化和迴圈平行化算是本書的一個亮點,但是我想普通讀者用不上。
novus 發表在 痞客邦 留言(0) 人氣(2,157)

有點不好意思說,我一時衝動花了大約 1700 元買了這個閱讀架;諷刺的是上星期才為了一本一千初的書猶豫許久,最後放棄了。買閱讀架卻捨不得買書,夠諷刺吧。
我一直想找個對脊椎和眼睛比較友善的閱讀架,不過我發現市面上根本沒有堪用的產品。我的意思是,市面上確實有一些閱讀架,但我懷疑大部分設計者平時很少看厚重書籍,以至於許多產品大概只能放雜誌和兒童讀物。這並不難理解,畢竟在台灣只有小朋友才會讀書,大人會翻雜誌就很了不起了。在找不到可用產品的情況下,我以前會拿瓦楞紙箱自己拼湊來用,也曾經有一個概念設計,本想請一位機械工程師兼木工達人幫我實作出來,不過最後因為太懶而不了了之。
總而言之我終於找到了下面這個閱讀架,這很可能是市面上唯一依照常人閱讀習慣設計出來的產品,價錢有點高就是了。無意義的開箱就全部省略了吧,組裝好之後長這個樣子,頗有實驗儀器的質感。 這個閱讀架主打賣點之一在於優異的可調性,不過實際使用後覺得其實不用這麼複雜,我想要的東西很簡單。
novus 發表在 痞客邦 留言(3) 人氣(3,797)
終於下定決心捨棄 Ubuntu 換到 Linux Mint 了,我承認 Unity 是一個很重要的推力...
兩年前 Ubuntu 開始搭 Unity 的時候我也強迫自己用了幾個星期,但是始終無法習慣。事實上那個時候的 Unity 連基本的可用性都有問題,常常莫名其妙卡住,根本還沒到達 production 的等級,所以我一直切回傳統 GNOME 使用。
然而新版的 Ubuntu 已經不再附 GNOME 界面了,使用者必須自己手動安裝(方法參見這裡)。雖說 GNOME 3 也有 Unity 化的傾向,但是不知道為什麼我還是覺得比 Unity 用得順手,可能是 Unity 一開始給我的印象太糟了。
novus 發表在 痞客邦 留言(7) 人氣(838)

非常精美的雙翼飛機,原創為 Robert Lang,雖然不像 Robert Lang 其他作品那麼細膩,不過我很喜這個造型。
忘掉是多久以前摺的,機翼銜接的地方沒有處理得很好。我放棄摺紙很久了,而且每次搬家都會丟掉不少東西,現在手邊只剩下幾件非丟品... 希望至少留個影像。
novus 發表在 痞客邦 留言(2) 人氣(335)

剛換智慧型手機,拿幾年前的作品試拍看看...
這個作品看起來很複雜,其實超級簡單,我國小的時候旁觀別人摺一遍就學會了。接著其他同學拿我的成品去逆向工程一番,結果一堆人也都學會了。後來遇到有人想學摺紙,我都推薦用這個孔雀練基本功。
novus 發表在 痞客邦 留言(2) 人氣(1,144)
http://v.youku.com/v_show/id_XMjcwODMyNTg4.html
好厲害!邁向高手的第一步。
報導: http://big5.cri.cn/gate/big5/gb.cri.cn/27824/2011/08/10/110s3333970.htm
novus 發表在 痞客邦 留言(0) 人氣(72)