2008年12月29日 星期一

介紹一種詭異的PHP動態include 方式

在PHP中, 引用外部檔語法如下:
include 'xxx.php';

若定義一個function傳回字串, 可以寫成:
function A() {
return 'xxx.php';
}
include A();

若定義一個class, 利用magic method, 可以寫成:
class B() {
function __toString() {
return 'xxx.php';
}
}
$B = new B;
include $B;

因為還要多一個new的動作, 包裝一下, 最後就變成:
function C() {
$B = new B;
return $B;
}
include C();

好吧, 連我自己都覺得有點變態...
這麼做有什麼好處 ?
因為我用過幾個PHP的template engine(例如smarty),
template engine的好處很多,
但是最令我無法忍受的是變數要手工一個個assign實在非常愚蠢.
英文叫: Repeat yourself!
其中牽涉到變數scope的問題, 利用上述技巧可以避開繁瑣的Assign.

打的有點累, 實做細節有機會再詳述.

幾個令人厭煩的PHP語法

1. 變數之前要有$符號 , 例: $foo
2. 物件屬性前要加$this, 例: $this->foo
3. 建構子不會自動呼叫父類別, 一定要用parent::__construct()方式解決

其它想到再補上...
上述種種會莫名其妙多打很多字, 讓程式碼變的很噁.
哪裡噁? 對我而言那些都是干擾.

以前對於 xxUnit裡面定義那麼多assertEqual,
assertNull一堆驗證方法總覺得納悶,
明明一個 assert(a==b)就搞定的事偏偏,
要多定義一個assertEqual(a, b),
不是擺明要考驗programmer的記憶力.
但程式寫久了, 漸漸覺得過長的變數或符號會造成干擾,
遮蔽其中的邏輯, 簡單的說程式越短越好寫, 越不容易出錯.

2008年11月30日 星期日

關於英語能力的兩三事

常有朋友提起英語能力很重要的話題.

根據我每個月至少接兩三個外國訂單的心得,
外國人找台灣人做生意的原因不外乎兩點:
1. 價格便宜
2. 技術好

很少聽過因為英語能力好接到單,
而且據經驗非英語系的外國人英文也很破...
基本上我不反對加強英語能力, 但謹記, 技術才是最重要的, 其他的都只是加分.

Google code jam 得獎名單出爐

好樣的, 大陸同胞(突然變的很親近)囊括1,2名.
台灣的年輕人應該要好好加油了!
至於我這種第一輪就被刷掉的老頭早就沒救了...

2008年4月3日 星期四

技術縮寫發音

搞技術的實在很喜歡發明一些縮寫或是使用一些很冷門的英文,
有些字連外國人都不一定唸的出來,
要查發音其實恨簡單, Google -> 名詞 + pronounced.
這一篇專門蒐集這些怪東東要怎麼發音...

PostgreSQL is pronounced Post-Gres-Q-L.
iBATIS pronounce it: eye-BAT-iss.
Ajax is pronounced as 'a jakes' OR A‧jax [ey-jaks]
Django is pronounced JANG-oh.
Debian (pronounced [ˈdɛbiən])

IBM投資PostgreSQL

之前提到今年一連串的併購案帶來的影響.
IBM終於出手了,
為了對抗Sun併購MySQL,
IBM決定投資PostgreSQL (詳情).

不論如何, 這對於Open Source來說都是好事.

2008年4月2日 星期三

關於 Tomcat 的幾件事

用了Tomcat那麼久, 今天才發現幾個小技巧, 可讓開發速度加快...

1. 我時常用 ant 的 Tomcat task 重新啟動Tomcat.
若webapps目錄下的文件有修改過,
同時又重新啟動Tomcat,
則啟動過程會執行兩次.
解決的方法是修改web.xml, 把"autoDeploy"設為"false".

2. 重新啟動Tomcat後, 若要保持原來的session狀態,
則放入session中的物件都必須implements Serializable.

2008年3月27日 星期四

PHP 5.3 速度提升30%

根據測試, PHP5.3的速度比起PHP5.2提升最高可達30%:
  • Drupal 20% faster
  • Qdig 2% faster
  • typo3 30% faster
  • wordpress 15% faster
  • xoops 10% faster

2008年3月6日 星期四

身在曹營心在漢

我想我是: 身在曹營心在漢.
雖然工作上大部分時間使用Java, 但是只要看到有人說Java的缺點就很爽.
對岸的文章:

终于有人说出来了——Java不适合于作为主要编程教学语言

真不知道為什麼一個讀文字檔的功能,
Java要弄得那麼複雜,
人家PHP只要一個 file_get_contents() 就能搞定,
還可以直接抓網頁呢!

2008年2月23日 星期六

風雨前的寧靜?

最近IT業界一連串的併購案:
1. Oracle併BEA,
2. Sun併Mysql,
3. 微軟併Yahoo(未定),
讓人總覺得好像之後IT業會發生一些大事...

首先面臨衝擊的是PHP,
因為Yahoo是業界採用PHP的大本營,
若微軟併Yahoo後, 有可能大幅改用.Net,
而Mysql改投Java懷抱後,
對PHP這個共同成長的難兄難弟也會產生一定的影響.

Oracle併BEA後,
穩佔J2EE的高階市場, 以後應該不大會鳥JCP,
再加上Java Open之後,
有可能會推出自己的Java版本和Sun打對台.

Sun併Mysql最有趣,
一些做Java的業界朋友常說Mysql是PHP和ROR的玩具,
若以後Mysql成為Java官方推薦或內建的資料庫,
到時候真想看看他們的表情.

最後別忘了沉默的巨人IBM還沒出手,
哼哼, 看來有的玩了...

2008年1月21日 星期一

HTML parser 開發中

最近在修改以前用 php 寫的 html parser,
抓了很多大網站的首頁下來測試,
才發現大網站首頁中的html也有很多不合規範的錯誤.
等程式完成後, 再一次把有趣的問題整理出來.
有個想法, 以後乾脆架個站每天抓大網站首頁,
觀察大網站首頁的問題, 順便測試程式...

2008年1月20日 星期日

Getting Real 讀後感

今天終於有空把 37SinglesGetting REal 看完, 感覺終於有人點出了問題.

以前和朋友聊天討論時, 總覺得不對勁,

例如:
這個想法雖好, 但市場太小, 不適合大企業的經濟考量...
或:
PHP(或RoR)雖然開發迅速, 但架構不適合大型軟體...

媽呀, 大家明明窮的要命, 工作上也不是啥總經理,
開口閉口卻嚴然跨國企業CEO的語氣.
我常在想, 他們是在講"我的志願"嗎?

別搞錯了! 假裝是大企業不會讓你變成大企業,
重點在如何變成大企業, 而不是擔心變成大企業之後才會面對的問題.

看到有錢人開雙B, 不代表你也開雙B就會變有錢人,
認清現實腳踏實地, 把商業週刊學到的那一套丟一邊吧!

不然趕快回去MBA星球, 地球是很危險滴.

開張大吉

之前寫了幾次都撐不久,
希望這次能堅持下去!