PIXNET Logo登入

novus log

跳到主文

.

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 1月 23 週一 201701:35
  • 讓人誤解的 CMake 錯誤

分享一個前幾天幫忙排除問題的趣事,事後看覺得再明顯不過,發生當時卻讓人困惑了一下。前幾天要下班時,發現同事還在奮戰,所以就過去湊一下熱鬧。原來是他正在為某個平台建立 cross-compile 環境時碰到麻煩。
這裡說明一下,我們團隊的「cross-compile 環境」其實就是一個個 chroot,預先裝好了目標平台的 cross-toolchain、程式庫,並設定好環境變數。通常這些 cross-compile 都是由熟悉 Linux 環境的人事先打包好,新加入者只要按照產品型號下載對應的編譯環境,就可以立即上手建置專案。當硬體廠商更新驅動程式、或者程式庫 推出安全性修正時,負責的同事必須要更新編譯環境,有時候重大的調整會需要整個砍掉重頭建起。
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 9月 19 週六 201501:13
  • Xcode 編譯器後門事件

資料來源: http://drops.wooyun.org/news/8864
對岸有網友發現從某些非官方管道下載的 XCode 編譯器,會在編譯出來的 APP 中植入特殊的可執行碼。目前值入的可執行碼無害,只是會蒐集一些資訊回報給託管在 Amazon  的伺服器。但這可能只是試水溫的作品,未來很有可能會出現更強的應用。
目前被感染的 XCode 編譯器似乎是來自迅雷、百度等個人網路硬碟。按原文描述,散播該後門的人混跡於開發者社群當中,只要有機會就向人提供他自己網路硬碟上的「鏡像下載點」。例如當 XCode 官方發布新版本時,他也會好心的公告給社群中的人,並且提供下載位址。又或者有人詢問如何建立開發環境時,他也會藉機提供下載位置。
讓我覺得頗為驚訝的是,已知有若干大公司出品的 App 也中招,難道這些大公司的開發團隊或協力廠商不去官網下載 toolchain,反而使用陌生私人網路硬碟的二進制檔?
有一位網友提到一個耐人尋味的現象:「还是不能相信迅雷,我是把官网上的下载URL复制到迅雷里下载的,还是中招了。」如果這是真的,那麼對岸的網路硬碟服務就不是普通的恐怖。
我對 XCode 的 toolchain 完全不了解,不過看起來它是透過替換基礎程式庫的方式感染目標程式,這個方法相對簡單很多,影響層面也比較低。我的意思是,不至於像 Ken Thompson 示範的那樣在編譯階段改寫 AST,可以再傳染給用這個編譯器建置的編譯器。
以我比較熟悉的 GCC 來說,類似的做法大概是抽換靜態連結的 libgcc 或 crt。我以前做過類似的事,不過目的只是在於產出極小的二進制檔。技術不算難,難的是誘使其他人用你的 toolchain。現實中的 Linux distro 大都有固定的套件庫,或許 MinGW 比較有機會。
比較早的 GCC 做 AST 層次的改寫比較麻煩,近期的 GCC 已經支援 plugin,我想應該會簡單很多。
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 11月 15 週五 201300:29
  • 一個字串格式化優於串接的場合

在程式中通常有若干種方法將資訊串成字串,一些可能的寫法如:
msg = format("Do you want to delete %s from %s?", user.name, group.name);

msg = "Do you want to delete {1} from {2}?".format(user.name, group.name);

msg = "Do you want to delete " + user.name + " from " + group.name + "?";

msg << "Do you want to delete " << user.name << " from " << group.name << "?";
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 5月 09 週四 201320:52
  • 幾本編譯技術入門書

前陣子在程式人雜誌參與了關於編譯器書籍的討論,我想說自己都打了一堆字,不如整理一下放上來。
講到編譯器書籍,很多人都會想起 Aho、Sethi、Ullman 和 Lam 的勇者鬥惡龍,這本書深度和廣度兼俱,所以被許多課程採用為教科書。但本書二版在 amazon 評價偏低,可見不符合許多人的期待。我認為每個人取向不同,不必妄想一本傳說中的經典就可以涵蓋理論與實務全面知識,而且對於學習者來說容不容易吸收也很重要。
我手邊有勇者鬥惡龍一和二版,我想一版就不必多說,這裡提供對二版的一些看法:

二版自出版以來,就因為錯誤甚多而受到批評,有些錯誤確實會影響理解,最好配 errata 讀。我手邊的國際英文版(封面沒有龍...囧)似乎已經 patch 完第一張 errata,但仍然有第二張 errata 的錯誤。如果買原文最好能取得最近幾刷,我不知道中譯者有沒有主動修正這些問題。
以一本現代編譯技術的教科書來說,介紹 SSA 的篇幅實在少得可憐 -- 只有一頁 -- 根本是放心酸的。
10、11 章講解指令層級平行化和迴圈平行化算是本書的一個亮點,但是我想普通讀者用不上。
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 1月 03 週四 201301:39
  • 談程式碼使用的字集

程式碼用什麼格式儲存?還用問,當然是「純文字」囉。其實這個問題並不簡單,所謂的「純文字」可能是眾多編碼當中的一種:

「本地」使用的編碼:例如 Big5、GBK、Shift-JIS、ISO-8859-1,2,... 等等。Windows 下的編輯器常以此為預設。
UTF-8:一些 Linux 的編輯器可能以此為預設。
UTF-16、UTF32:這類編碼方式非常不適合用來儲存程式碼,這裡不討論。
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 12月 25 週二 201201:12
  • 淺釋 Unicode

前言
(未定稿,近期仍可能頻繁修改,歡迎提出各種建議,不論是技術方面或是文章描述方面)
在即將邁入 2013 年的今日、Unicode 已推出 6.2 版,Unicode 好像已經屬於沒什麼好介紹的基本常識了吧?其實,這篇文章某種程度上是為了「訂正」而寫的。如果我沒記錯的話,嗯,本文的第一個版本是在七年前寫的。說來挺不好意思的是,之前的版本在技術上從來就沒有完全正確過,雖然都不是很嚴重的錯誤。還好早期版本所發表的地方都相對短命,應該沒有誤導到太多人。
本文的目標很單純,只希望以後讀者遇到與文字編碼有關的選擇時,能夠清楚地知道自己在做什麼。因此我會從比較偏向實用的角度整理相關知識,而非專注於編碼的技術細節,畢竟大部分的人都沒有必要挽起袖子親手處理底層格式。
(繼續閱讀...)
文章標籤

novus 發表在 痞客邦 留言(8) 人氣(12,444)

  • 個人分類:心得
▲top
  • 12月 09 週日 201202:11
  • C++(或其他程式語言)是 Context-free 嗎?

「C++ 是 context-free 嗎?」這是我在很長一段時間裡,分別在 stackoverflow.com 等許多地方都看過的問題。類似的問題還有其他變形,有時主角換成別的程式語言,或者變成「...是否為 context-sensitive」等等。
我發覺這類問題似乎具有某種雞同鴨講和鬼打牆的傾向,有些參與者沒有先釐清概念、用詞也不統一,以致於耗費大量篇幅卻難以觸及重點,反而顯示出許多人對於形式語言充滿誤解。我甚至看過一些人拿某某程式語言不是 context-free 做為不喜歡某某語言的理由,但是他很明顯沒有搞懂 context-free 的意義。
攤開 C++ 的規格書,裡面有一份詳盡的文法,其中每條 production rule 左邊都只有一個 non-terminal,所以是 context-free grammar (CFG)。這裡要注意的是「ISO C++ 規格書附的文法」並不是形式語言意義上「C++ 語言的生成文法」,因為「ISO 規格書附的文法」所生成的字串不保證滿足所有 C++ 語言規範。
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 5月 30 週三 201200:40
  • Knuth 的魔球

最近一直沒時間寫新文章,所以貼篇舊聞。
Donald E. Knuth 是在大學時期打工才接觸到電腦,那個時候他剛好也在學校籃球隊幫忙。他紀錄了每位球員在不同位置的表現,並且在 IBM 650 主機上設計程式進行統計分析,以這些資料作為球員調度的依據。原本 Case Institute of Technology 在上年度只有贏得 6/16 場球賽,使用 Knuth 的方法後至少已經贏得 11/14 場球賽,後來成為聯賽冠軍。

可能有不少人在書上讀過這段故事,不過我最近看到這段影片,終於發現他們籃球隊以往戰績不佳的可能原因之一,如果只看書本文字介紹就無法發現這點。
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 6月 20 週一 201101:21
  • 這樣的錯誤明顯嗎

最近在 trace 的程式碼當中讀到類似下列這樣的片段
TCHAR name[MAX_NAME];

...

::GetWindowText(hwnd, name, sizeof(name));
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
  • 6月 16 週三 201020:27
  • 這種東西不存在

據統計,透過搜尋連結至本部落格最常用的關鍵字是某靈媒的名字,其次是某特異功能人士的名字,雖然我有點不爽但並不算太意外。
真正讓我意外的是,有人用「C 真亂數產生器」之類的關鍵字連過來,我猜是因為這篇文章的關係。我覺得意外的原因,是因為我以為這是已經是最基本的常識。
這裡鄭重告訴所有使用「C 真亂數產生器」之類的關鍵字找到本文的網友:
(繼續閱讀...)
文章標籤

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

  • 個人分類:心得
▲top
12»

Category

toggle Computer (6)
  • 軟體 (8)
  • Python (4)
  • C&C++ (51)
  • Linux (4)
  • 心得 (11)
  • 圖形 (10)
  • 剪貼簿 (2)
  • 生態環保 (4)
  • Fun stuff (39)
  • 超自然揭秘 (12)
  • Science & Math (29)
  • 雜文 (69)
  • 繪畫與工藝 (7)
  • 版務 (6)
  • 未分類文章 (1)

Recent

  • 用 Python 將圖片打包成 EPUB
  • 幾個北半球城市的經緯度
  • 瓦楞紙製作的橡皮筋動力槍
  • 連續川崎玫瑰
  • 《冷廬醫話》選錄(2)
  • 《冷廬醫話》選錄(1)
  • 推薦一部 James Randi 的紀錄片
  • 流言終結者未播出的流言
  • 讀《中西醫第一次大對決》心得
  • 一些可程式自動機的影片

Comment

  • [22/07/12] 訪客 於文章「椰子點滴...」留言:
    回饋您這方面資訊,我是從 PTT搜尋引擎的排名,看...
  • [22/06/16] 育龍 於文章「有趣的世紀帝國2劇情攻略...」留言:
    育龍 日日夜夜 真正的爸爸.媽媽打入地獄,真正的爸爸.媽...
  • [22/03/28] 訪客 於文章「為什麼又是英國研究...」留言:
    歡迎訂閱Uni-edit學術論文寫作技巧! This ...
  • [22/01/07] 訪客 於文章「怪獸檔案-豬腳頻道在自砸招牌...」留言:
    伪纪录片在那扯什么真假,演出来的东西还能扯真假,本来就是根据...
  • [21/01/27] FIRE 於文章「歷史上的世界末日...」留言:
    howmanydaysuntil.center/end-of...
  • [20/06/16] River 於文章「It's Greek to me....」留言:
    果然大家在想的都是同一件事,如何統整視覺化,有意思!Good...
  • [20/06/16] River 於文章「幾個北半球城市的經緯度...」留言:
    有意思!一直很想做個比較,感謝你做了^ ^...
  • [20/04/22] roy 於文章「對 C++ 物件一個常見的誤解...」留言:
    優質文章...
  • [20/03/12] Uni-edit Taiwan 於文章「為什麼又是英國研究...」留言:
    Uni-edit的客戶回饋: 我的第一篇由Uni-edit...
  • [19/12/30] NMSL 於文章「本日笑話-What is a "WRIT...」留言:
    忘記perl了嗎?...

Archive

Search

Experimental

參觀人氣

  • 本日人氣:
  • 累積人氣: