Equal (==) and Identical(===) in PHP

php_syntax

PHP 的比較算符中 (Comparison Operators) 提供了兩種相等算符,一為 Equal 算符(==),另一為 Identical 算符 (===)。這兩種算符是因應 PHP 的型態彈性 (或稱動態型) 而設置,其差異在於 Equal 算符會自動轉換兩側變數的型態,而 Identical 算符不會轉換型態,因此 Identical 算符要求值以及型態皆相等才為 True

用 SimpleXML functions 和 MVC 架構實作的簡單 RSS 閱讀器

我前幾天發現 blog 邊欄訂閱的 RSS 欄位的內容沒有顯示出來,追蹤了一會兒,發現是 blog 系統在輸出 RSS 內容時,沒有處理換行字元,令 JavaScript 碰到非預期的敘述斷行導致執行失敗。追蹤過程中,我順手寫了一個 PHP 程式測試這個狀況。後來我把這程式擴充一下,改寫成一個簡單的 RSS 閱讀器。

這個 PHP 程式,使用 SimpleXML functions 處理 RSS 文件,並且實踐了一個非常簡單的 MVC 架構。

C Macro 似乎只剩下讓 programmer 少打些字的功能

看到《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 了。

電子商務不只是上網賣東西而已

公司一直想在網路購物上創造利潤,擴大營業額。然而公司內部一直沒有賦予網路購物業務清晰的角色定位,再者公司高層一心只想看到「營業額」,始終沒有正視「電子商務」的功能與重要性。

C++ library 的發展困境

晨星Workshop 提到:

C++現在最缺乏的就是 library的支援,因為相對於Java及一些script language,C++的lib相對的難以開發,需要考慮到的層面太廣了,像是記憶體管控、型別轉換,以及不同平台的實作,造成lib開發的不易

學習 PHP5 語言動態性的入門文章

從 PHP4 到 PHP5 , PHP 不只改善了個體 (object) 的成員保護程度,也引入了 PHP 稱為「magic methods」的特殊行為。 Magic methods 提昇了 PHP 的動態性,活用 magic methods 可以大幅減少程式碼中類似的重覆行為,並為 programmer 帶來更開放與直觀的程式撰寫彈性。

奇怪的題目:消費者願意付多少代價阻止政府實施管制?

今天,我妹妹拿著一道今年高普考的考古題問我為什麼答案是 70 ,然而那題目還真是考倒我了。題目內容如下:

假設檳榔的需求函數是 Q=50-5P , Q 與 P 分別代表檳榔的數量與價格。目前檳榔的價格是 2 。假設政府擬限制檳榔的生產,一旦檳榔的供給減少,價格將上漲至 4 ,則檳榔消費者願意付多少代價,阻止政府實施管制?

一個供貨廠商,看興奇與 PCHome 的網購龍頭之爭

今天在逛部落格時,無意中看到一個熟悉的字眼,那就是「興奇科技」。「興奇科技」是「Yahoo!奇摩購物中心」的平台業者。「Yahoo!奇摩購物通」則是另外一間,別弄混了。這字眼之所以引我注意,則是工作業務有相關。

箴、知其不可奈何而安之若命

知其不可奈何而安之若命 《莊子.人間世》

這話可分兩半來看,前半是「知其不可奈何」,後半是「安之若命」。知「人力時而有窮、天地間有客觀不可改變之限制」易;坦然接受,泰然處之則難。做到前半段簡單,但要做到後半段很難。許多人只做到「認」命,而做不到「安」命。願承認人生不可重來者,才會積極地面對當下,無悔地接受結果。

Rendering images with title and box

我個人喜歡簡單、敏捷。因此當我在網頁文章中放置圖像 (image) 時,我希望透過 JavaScript 改變圖像的呈現方式,加上一個標題以及外框。標題自動從圖像的 'alt' 屬性中取得,當然啦,順便加上順序編號看起來就更正式了。

老子編注:通行本三十章、以道佐人主者不欲以兵強於天下

校編內容

以道佐人主者不欲以兵強於天下,善者果而已,不以取強,果而不伐,果而不驕,果而不矜,是謂果而不強,其事好長。

通行本

以道佐人主者,不以兵強天下。其事好還,師之所處,荊棘生焉;大軍之後,必有凶年。善者果而已,不敢以取強。果而勿矜,果而勿伐,果而勿驕。果而不得已,果而勿強。物壯則老,是謂不道,不道早已。

編注事項

此章據《簡本》訂之,又《簡本》作「以[彳人亍]佐人主者」(此字為「人」字夾在「行」字中,今無此字。《帛本》、《通行本》皆用「道」字。)。另《通行本》與《帛本》其字義皆多於《簡本》,我以為僅具解釋之用,學者多認為係後人注釋衍入,故刪去。「物壯則老」以後之字義,與前文不匹配,刪去。(民國94年8月9日修訂)

箴、long live the Individualism.

The Individualism is dead, long live the Individualism.

於網上搜尋自由主義、個人主義之文獻時,看到的字句。很貼切地說明個人主義一詞的現況。現在一般人對於「個人主義」一詞的理解,已和原義相去甚遠。

資料管理趨勢,檔案一如資料表,資料表一如檔案

打從人們開始使用電腦管理資料時,數位資料就一直有著兩種不同的儲存系統,一為檔案系統 (file system) ,二為資料庫系統 (database system) 。過去想使用這兩種儲存系統中的資料,也要使用兩種不同的工具軟體。例如一份儲存在檔案系統中的試算表 (spreadsheet) ,要用檔案管理員移除、複製、搬移,用 Louts-123, MS-Excel 編輯內容;而一份儲存在資料庫系統中的資料表 (table) ,則要用資料庫管理工具移除、複製、搬移,用專屬的前端系統軟體,如aa會計系統、bb進銷存系統編輯內容。即便試算表中的資料內容與資料表中的資料內容完全相同,兩種儲存系統的架構,硬是把人們使用資料的方式切成兩套不同的使用途徑。

本月自由軟體兩大事, 1. Free and Open Source Java; 2. Microsoft 和 Novell 策略結盟

自由軟體界 (Free Software) 在本月 (2006/11) 發生了兩件大事,一件是好消息,另一件是壞消息。

先聽聽壞消息吧,壞消息是 Novell 在11月2日宣布和 Microsoft 達成策略結盟,雙方允諾交流資訊,加強雙方平台的軟體互通性。好消息是 Sun Microsystems 在11月15日宣布開放 Java 開發工具的源碼,並以 GPLv2 釋出。

慎到「定分說」肯定財產權的作用,但也可以毀了財產權的發展

戰國中期的法家學者慎到所提出的「定分」說,據信是中國最早談及私有財產權的學說。其曰「一兔走百人追之;積兔於市過而不顧。非不欲兔,分定不可爭也。」

我個人對定分說的看法是,其肯定財產權的作用,但也可以進一步毀了財產權的發展。使物有所分而民不爭,是財產權的作用。但如何定分,亦即財產權是如何發展的呢?從此處便可看出道、法為何分兩家。

Let results of preg_match be an associative array

在 Regular Expression (REGEX) 的語法中,有一種方式可以讓我們將 subpatterns 的內容存放在一個數值索引陣列,而以 $1, $2, $3, ... (或 \1, \2, \3, ...) 的敘述方式取用。雖然這已經很方便了,但仍然有缺點,就是比對結果不易理解,時日一久,很容易忘記 $1, $2,... 各是代表什麼意思。所以 PHP 在 4.3.3 版之後增加了一個新語法,可以指派名稱給 subpattern ,這個語法格式是: (?P<name>pattern) 。如此一來就可以將 subpatterns 的內容存放在一個關聯陣列 (associative array) 中,可以鍵值取用,提高程式可讀性。