[傳聞] PHP 主要開發人員 Jani Taskinen 離隊

[via /.]曾領導開發 Zend Engine 2 (PHP 5 引擎),各類不同伸延模組(如 IMAP, Socket, Session) 及為其他部份提供修正的 Jani Taskinen 在 PHP 內部通訊郵件清單中表達他對開發過程中的不如意感到灰心,而宣佈離隊。

不過有人質疑這封電郵可能是偽造,事情在當事人澄清之前便不得而知。不過 news.php.net 看來又被 slashdot effect 影響了呢。

本年最後三個工作天

這三天裏,我休閒得很,也悶得很。Project 順利度過了 UAT,再加上身邊的同事全部選擇去享受他們儲起來的假期,我在辦公室裏所以也沒事可做。

沒有東西可以做實在無聊透頂,而為了補足在工作間的空虛感,我居然動手寫程式 — 為了興趣吧。第一日我在收拾這裏不符合 XHTML 1.1 的地方,也花了我整天時間。第二和第三日呢,我把我的注意力集中放在香港天文台 — 它的氣象服務。原來天文台有提供 XML 天氣資訊服務,但費用實在貴得令人咋舌 (年費港幣 $3,310)。我想由於無人問津,服務也在零五年一月終止。

不過其實也不用透過 XML 才可以從程式取得天氣資訊吧?文字版的天文台網頁格式很整潔,所以也很容易從程式取出有用的資訊,諸如氣溫呀,濕度呀,紫外線指數呀,分區氣溫等等。這幾天我便以 Java 寫這樣的一個類別,以 Regular Expression(常規表達式)取出不同資料。

對了,我在家還把整個 Java class 的程式碼移到 PHP,那便可以在這個伺服器發放相應的 Web Service,給其他網站使用。不過天文台的資訊有版權,所以如果要公開的話我也要取得相關許可才能這樣做。

但不知道發放提取程式的源碼如何呢?情況有點像 BT 或其他 P2P 軟件 — 提取工具本身並不犯法,但提取有版權保護的資訊才會涉及侵權。我想我也可以公開源碼吧,就把那個 Java class 貼出來好了。

還有,祝大家在新的一年,有一個新的開始。新年快樂… 噢,不要「快落」,新年愉快才對。

程式碼在這裏下載。

PHP Design Patterns

自從拙文「為甚麼 PHP 沒被大企業採用」登出以後,不少人問「是否你不愛 PHP 了?PHP 在你心目中是不是沒有價值啦?」當然不是!PHP 是強大的語言,開發中小型系統最好不過,但是由於 PHP 平台對分散系統的先天支援不足,所以通常那些跨洋越洲的系統大多選上 J2EE 或 .NET 作開發平台(對了,還有很多系統還用上 C/C++,Perl,etc)。
Continue reading

PHP 為甚麼沒被大企業採用?(或,我對 PHP 的期望)

  1. 沒有命名空間(Namespace)
    這是罪過啊!沒有命名空間,單靠 require/include 來選取合用的模組,或以 class 來作「偽命名空間」再配合 __autoload(),對開發超大型系統(指分散式的系統)也是 Mission Impossible!某些情況 class 和 function 便得被迫寫到一個大檔案去,對團隊合作來說也是難事。說起分散系統,也想到第二個問題:
  2. 沒有 Remoting
    嚴格來說這不是 PHP 的問題,而是平台的問題。當大家看見 .NET 有 Remoting,J2EE 有 RMI,PHP 就只有那不太完全的 XML-RPC/SOAP 3rd Party 模組,是否有點痛心?不能用遠處的物件,使 PHP 只規限於開發單機系統。
  3. 弱定義語言(Weak-typed Language)及不用宣告即用變數
    無疑這 feature 很方便,可以省卻不少功夫,但是相對在檢查外來變數及除錯的時候功夫反是花多了。又要檢查是不是字,是不是數,而且有沒有被宣告,還要提防有心人乘虛而入。

  4. 我喜歡 PHP 的方便,但是它語言上的「誘惑」實在太多,很容易會 dirty coding,初學者要是沒有寫過 Java 等結構嚴格的語言,沒有學過 Design Patterns,很容易會走火入魔。這其實也不是 PHP 本身的問題吧?有心也可以寫出漂亮的 PHP Code (不過寫出 dirty code 更容易啦)。

當然還沒有跟 PHP 分手,不過總會希望伴侶改進嘛! 😉

Sites Near me @ Google Maps

終於踏出了利用 Google Maps + Blogcasting 的第一部!本想在之前的文章更新再寫,不過有很多要說,結果又開了新文章。
網址在此:http://mk-notes.com/sitesnearme.php

這段 script 會透過 geourl.org 尋找在你網誌方圓 70 公里範圍內的所有網站標在衛星圖片上,而網址預設是我的 (http://mk.netgenes.org),但可加進 url 這個 variable 變成你的(你要在 geourl.org 登記你的網站才成)。就如 http://mk-notes.com/sitesnearme.php?url=http%3A%2F%2Ffoobar.com (以 foobar.com 為中心)。由於 Google Maps API 不允許其他網址在 url 上出現,先要把冒號翻成 %3A,slash 翻成 %2F 才可以騙過 Google,讓網頁找到你的家。

(以下為技術文章)
麻煩死了,初想簡簡單單用一段 fetch XML script 把 geourl.org 的rdf 扯到我的 server 裏去,不過發現裏面太多我不想要的東西,用 javascript 讀起來會很麻煩,便試試用 PHP 把那段 rdf transform 一次 (對,我不懂 XSLT,又懶學)。試著用 xml_parser(),不知為甚麼內容統統不見。dom_xml 更奇怪,居然連續抱怨一空白行上不存在的 variable!後來想起伺服器支援 PHP 5,便索性用 simpleXML,簡單方便的寫完!只是在處理命名空間上有點麻煩,不過相對 xml_parser 及 dom_xml 那只是個小問題。

至於 javascript 嘛,不太難。Google Maps API 也頗實用,只是官網上的文件有錯處,害我撞進死胡同 (其實是設定為衛星圖片的常數多了一個 ‘G’ 開頭)。

Update:
剛弄了套較美觀的介面,除此之外還有給放到網頁上的版本。

PHP 5.1 Beta 速報

昨天夜裏看見 PHP.net 貼出 5.1 Beta 的下載,有不少用戶期待的新功能:

1. PDO – PHP Data Object
PDO,名字跟作用也跟 M$ 的 ADO (Active Data Object)/ODBC (Open DataBase Connectivity) 像透了。一個物件,統合了不同 database 的 API,編寫程式時一定會節省不少程式碼。

2. 加入陣列型態提示(Array Type Hinting)
以後不用寫 is_array($arr) 啦,現在宣告 function 可以 function foo (array $bar) { … } 代替。如果連 string,int 也有 type hinting 就最好了。

3. Zend Engine 2 架構變更
對背後的引擎 – Zend Engine 2 執行架構進行優化(把現有 GC 除掉),以後執行 PHP 會更有效率。

4. 更新至 PCRE 5.0 (Perl Compatible Regular Expression)
PCRE 5.0 對 Unicode 有更佳的支援,將使 PHP 成為新一代字串處理利器。

還有些細微項目,不過不多說了。

PHP 十歲喇!!!

距 PHP 1.0 推出至今剛好十年!生日快樂啊 PHP~ PHP 以往為 Personal Home Page 的全寫,是由 Rasmus Lerdorf 以C 撰寫的工具組,讓人更容易透過 Perl 格式寫動態網頁。後來作者又寫了一個直譯引擎,是為 PHP/FI (Form Interpreter)。 後來更多的開發者加入,滲入了其他語言的特徵(如 C/C++,Java),於版本 4 換上新的引擎(Zend Engine),最後成了今天大家廣泛使用的 PHP 4/5 (而 PHP 的全寫則改為 PHP Hypertext Preprocessor … 真玄啊) 另外新聞一則是:Zend Engine 的開發公司 Zend Technologies 打算跟 IBM 合作,讓 IBM 的 WebSphere 跟 Zend Engine 直接合併,那麼 WebSphere 也可以直接走 PHP 了。算是好事吧?