本人部落格之內容,明顯標示採用 GNU Free Document License (GNU FDL) 授權條款分享,而其他部落格大多數採用 Creative Commons Attribution-NonCommercial-ShareAlike (創用CC 姓名標示─非商業性─相同方式分享) 授權條款分享。由於這兩者之內容不相容,為了避免使用者無意中觸犯著作權,我在此說明 GNU FDL 與 CC 不相容。若在採用 CC 授權條款之部落格或論壇等處轉載本人著作,須註明著作是採用 GNU FDL 授權,否則將侵害本人之著作權。
我曾在《Copyleft 與 GNU Free Document License 在部落格寫作上的適用性,兼論 Creative Commons 與 Copyleft 的相容性》討論過這兩者的不同。在 CC 中也僅有 Creative Commons Attribution-ShareAlike (創用CC 姓名標示─相同方式分享) 之授權形式符合 Copyleft 精神;我最不樂見者,則是加上「非商業性」用途限制的 Creative Commons Attribution-NonCommercial-ShareAlike (創用CC 姓名標示─非商業性─相同方式分享) 。雖然在 GPL-ism 與 BSD-ism 之間,存在著是否應該限制以相同方式分享的歧異,但這僅是道德與哲學的問題。「非商業性」之用途限制,則明顯偏離自由或開放著作權的精神了。
若是 Web 應用, 大可不必採用 MVC, 招致執行效率差程式碼分散的結果
相反的, 也有工程師告訴我使用 MVC 對於長期維護程式增減功能有很大助益
據了解使用 MVC 程式的行數的確會增多; 但也會有助健全的程式開發與便利維護程式
由於許多 framework 都把 MVC 列為特點,因而導致初學者把 MVC 和 framework 這兩件事混淆在一起,然而這兩者是不同層次的事物,甚至彼此無關。
這是一篇寓言,起因是我近日看的一套漫畫,「綠川幸」著作的《夏目友人帳》(台灣由東立出版社代理翻譯中文版,中文版書名《妖怪聯絡簿》) 。看漫畫是件有趣的事,我在閱讀時常常會假想自己若是書中一份子,又該如何扮演我的角色,又會如何與書中角色互動。我看完《夏目友人帳》後,設想自己是書中的角色,碰到主角「夏目」時會跟他說些什麼。我所假想的內容,便成為這篇寓言了。
在進行任何程式的設計工作之前,我們必定已經知道程式的輸出入結果,亦即我們已經確知當使用者輸入什麼資料後,程式應該輸出什麼結果。更進一步說,我們已經知道使用者將如何使用這個程式,諸如使用者在操作過程中會做什麼事,而程式對操作內容應該如何回應等等。這段理所當然到近乎廢話的敘述,卻是所有軟體設計人員惡夢的開始,也是所有軟體工程實踐作法的起點。在 eXtreme Programming 中,我們稱這些內容為「故事 (story)」;在 RUP 中稱之為「使用案例 (use case)」;在 Microsoft Solution Framework 中稱之為「情節 (scenarios)」。我個人偏好使用「故事」一詞,因為它不像術語。既然故事是設計人員惡夢的開始、設計工作的起點,那麼就先說一個故事。
欲建立一個運動會報名表單,一位選手可報名參加一個以上的項目 (如100公尺、200公尺等) ,資料庫表格應如何設定?
我們通常不會在一個選手表格中建立多個比賽項目的關聯欄位,像 game1, game2, game3 這種欄位設置就不太適當。第一、如果多數選手只參與一個項目,則剩下的 game2, game3, etc. 欄位就閒置了,佔用磁碟空間。第二、限定了可參加比賽項目數的上限,如果我只定義到 game3 ,則一位選手最多只能參加 3 個比賽項目。第三、只能用複雜且僵化的查詢語句,例如 SELECT * FROM "Players"
INNER JOIN "Games" ON "Games".id = "Players".game1 OR "Games".id = "Players".game2 OR "Games".id = "Players".game3; ,欄位愈多則 OR 條件 串的愈長。當然,如果程式需求限定每位選手至少參加一個項目,最多參加 2 個,那麼用這種方法倒也無妨。
php_syntax
HTML 表單傳送給 PHP 的資料, PHP 會自動儲存在全域陣列中,例如以 POST method 送出的表單資料便儲存在 $_POST 全域陣列,以 GET method 送出的表單資料儲存在 $_GET 全域陣列。如果我們為表單元件命名 (指派了 name 屬性) ,則可以表單元件名稱為陣列鍵值。例如表單有一個名稱為 "userAddress" 的文字輸入欄位 <input name="userAddress" type="text"/> ,且此表單以 POST method 送出,則 PHP 中可以 $_POST['userAddress'] 取得使用者在此欄位中輸入的資料。上述是 PHP 處理表單資料的基本概念。
前幾天看到《等待新漢碼》的內容,個人心中感慨萬千。
聯合報日前報導權威學術期刊《Science》刊載我國中興大學生化所教授張邦彥投稿到《Cell》期刊的論文涉嫌造假。聯合報,民國九十五年12月21日A7版訊 讀者質疑論文中的數據圖片是經變造過的。張教授事後也承認圖片製作時有所疏失,學生直接編輯原始圖檔導致圖片有編修痕跡。
事件發展如何,尚有待觀察,但這事件只是冰山一角罷了。雖然這個事件是自然科學的研究論文,但國內的社會科學研究中,其實也少不了這類故事。
前幾天晚上我發了一篇文章在部落格上,當時我用 Firefox 觀看很正常。隔天我在公司用 IE6 觀看那篇文章時, IE6 意外出現「MSHTML.DLL 執行錯誤,瀏覽器即將關閉」的錯誤訊息。後來我試了許多電腦,無一倖免, IE6 都會當掉。
在《NV社: 萬物的尺度》一文中介紹了《萬物的尺度》這本書。從書中可以看出,仍然有些科學家未能區分客觀尺度與主觀感覺的差別。主觀性概念不可能界定出客觀尺度。所謂...共同貨幣歐元,就是公制的直接繼承人。近來似乎價格終於成為萬物的尺度了
。,認為價格具有客觀性更是經濟學中因為方法論錯誤而產生的錯誤見解。
所謂 "有餘與不足" ,是以 "所欲" 分,不以 "量" 分。欲不滿者,金盈堂室猶不足;欲寡者,食僅簞瓢或有餘。是以,我們絕不能以客觀上、物理上的尺度量值去區分 "有餘" 與 "不足"
「天之道損有餘而補不足」在經濟思想上的誤解
將不具客觀性的價格視為客觀尺度,反而形成了橫徵暴斂的人為惡行。部份科學家忽視了天地萬物每個個體的差異性,也忘了人只能透過感覺器官接收外部資訊,而感覺器官是不靈敏且不準確的先天限制。該書作者的總結反而更接近真實:...無關個人的度量也是人類幻想、人類熱情,以及在特殊地區挑選特殊人物等的產物。所以追根究底,古希臘哲學家羅塔哥拉斯的那句名言果真沒錯:『人是萬物的尺度。』
。
php_syntax
PHP 的比較算符中 (Comparison Operators) 提供了兩種相等算符,一為 Equal 算符(==),另一為 Identical 算符 (===)。這兩種算符是因應 PHP 的型態彈性 (或稱動態型) 而設置,其差異在於 Equal 算符會自動轉換兩側變數的型態,而 Identical 算符不會轉換型態,因此 Identical 算符要求值以及型態皆相等才為 True 。
我前幾天發現 blog 邊欄訂閱的 RSS 欄位的內容沒有顯示出來,追蹤了一會兒,發現是 blog 系統在輸出 RSS 內容時,沒有處理換行字元,令 JavaScript 碰到非預期的敘述斷行導致執行失敗。追蹤過程中,我順手寫了一個 PHP 程式測試這個狀況。後來我把這程式擴充一下,改寫成一個簡單的 RSS 閱讀器。
這個 PHP 程式,使用 SimpleXML functions 處理 RSS 文件,並且實踐了一個非常簡單的 MVC 架構。
看到《C 的 marco》中例舉的 C Macro ,讓我有憶起舊日時光的感觸。當初覺得 Macro (in Assembly and C) 很有趣,但和最近興起的動態語言比起來, Macro 似乎只剩下讓 programmer 少打些字的功能。再者, Macro 的內容沒什麼規範,換個 C compiler 可能就不能用了。雖然我也是 gcc 使用者的,但這類特殊功能我想還是能免則免。
在符合 ANSI C99 規範的 C compiler 之中,用 inline function 可保有 Macro 的優點,而沒有 Macro 的缺點。An Inline Function is As Fast As a Macro
。Also see: Explain Inline Function in C (GCC compiler)。所以現在大多用 inline function 而不用 macro 了。
公司一直想在網路購物上創造利潤,擴大營業額。然而公司內部一直沒有賦予網路購物業務清晰的角色定位,再者公司高層一心只想看到「營業額」,始終沒有正視「電子商務」的功能與重要性。