目前分類:心得 (10)

瀏覽方式: 標題列表 簡短摘要

資料來源: http://drops.wooyun.org/news/8864

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

在程式中通常有若干種方法將資訊串成字串,一些可能的寫法如:

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 << "?";

對於多數應用來說,以上並沒有其中一個做法比其他具備壓倒性優勢,所以在使用上有很大程度取決於個人喜好。有些比較具有經驗的人可能會覺得 formatter 風格比較容易閱讀,不過當插入的資料太多時一樣會造成畫面破碎,而且資料和插入位置不容易對起來。

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

前陣子在程式人雜誌參與了關於編譯器書籍的討論,我想說自己都打了一堆字,不如整理一下放上來。

講到編譯器書籍,很多人都會想起 Aho、Sethi、Ullman 和 Lam 的勇者鬥惡龍,這本書深度和廣度兼俱,所以被許多課程採用為教科書。但本書二版在 amazon 評價偏低,可見不符合許多人的期待。我認為每個人取向不同,不必妄想一本傳說中的經典就可以涵蓋理論與實務全面知識,而且對於學習者來說容不容易吸收也很重要。

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

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

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

對於只用 ASCII 字集寫程式的人來說,用什麼編碼儲存程式碼應該都沒有差別。但有很多人會在註解和 string literal 裡面放其他語言的字集,這就是個問題。別誤會,我並不是說原始碼當中不能出現非 ASCII 字符,而是說很多人是在欠缺考慮的情形下寫出這種程式碼。

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

前言

(未定稿,近期仍可能頻繁修改,歡迎提出各種建議,不論是技術方面或是文章描述方面)

在即將邁入 2013 年的今日、Unicode 已推出 6.2 版,Unicode 好像已經屬於沒什麼好介紹的基本常識了吧?其實,這篇文章某種程度上是為了「訂正」而寫的。如果我沒記錯的話,嗯,本文的第一個版本是在七年前寫的。說來挺不好意思的是,之前的版本在技術上從來就沒有完全正確過,雖然都不是很嚴重的錯誤。還好早期版本所發表的地方都相對短命,應該沒有誤導到太多人。

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

「C++ 是 context-free 嗎?」這是我在很長一段時間裡,分別在 stackoverflow.com 等許多地方都看過的問題。類似的問題還有其他變形,有時主角換成別的程式語言,或者變成「...是否為 context-sensitive」等等。

我發覺這類問題似乎具有某種雞同鴨講和鬼打牆的傾向,有些參與者沒有先釐清概念、用詞也不統一,以致於耗費大量篇幅卻難以觸及重點,反而顯示出許多人對於形式語言充滿誤解。我甚至看過一些人拿某某程式語言不是 context-free 做為不喜歡某某語言的理由,但是他很明顯沒有搞懂 context-free 的意義。

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

最近一直沒時間寫新文章,所以貼篇舊聞。

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

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

最近在 trace 的程式碼當中讀到類似下列這樣的片段

TCHAR name[MAX_NAME];

...

::GetWindowText(hwnd, name, sizeof(name));

對我來說這是一個明顯到不行的錯誤,就算混雜在一大堆別人寫的程式碼中,被我認出來的機會也很高(這不就被我抓到了嗎?)。我大概可以想像這個程式過去不太用 UNICODE 編譯,因此這樣的錯誤有時會存在很長一段時間沒發現。由於這是個使用者眾多的軟體,所以我查了一下,這個錯誤在原軟體中好幾年前就已經被修正了,但是一些第三方提供的 plugin 至今仍然引用到早期版本的原始碼。

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

據統計,透過搜尋連結至本部落格最常用的關鍵字是某靈媒的名字,其次是某特異功能人士的名字,雖然我有點不爽但並不算太意外。

真正讓我意外的是,有人用「C 真亂數產生器」之類的關鍵字連過來,我猜是因為這篇文章的關係。我覺得意外的原因,是因為我以為這是已經是最基本的常識。

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

我想各行各業都有專家、稱職、不專業、低能等等各種不同層級的從業人員,不過大家只在自己的小圈圈內忙,通常圈外人也不容易感覺有甚麼差別。像修車、修電器之類的技術人員,往往要消費者多方比較之後才能分出高下,有時還需要一點因緣際會。

網站工作比較不同的是,一個網站、一項服務推出之後就可能會直接面對各式各樣的使用者,其中若有不專業、甚至可以說低能的工作品質,馬上會影響到很多人。當然有很多網站只是秀一些資訊,不需要大費周章,即使有缺陷也不至於影響他人。

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