PHP Frameworks: necit

這一兩個月以來幾乎都在寫PHP, 想架構, 沒什麼在動老本行.

我實在不算是夠格的PHP Coder, 相對之下我還比較愛寫Perl & C. 不過最近好幾個需要弄PHP的案子, G社(不是Google)的網站, 幫老朋友的車廠寫管理系統, 自己的Rmail Web界面, 一堆東西要寫PHP, 煩都煩死了.

原本打算找個簡單易用的PHP Framework來用, 大概就CakePHP, Zend Framework, CI, Kohana等等的東西, 不過實際用了一下真的覺得實在不能用, 一來是效能問題, 這種Framework根本談不上效能, 對後端DB來說更是大災難, 大概是因為我本身是玩系統出身, 很難接受這種犧牲效能跟擴充性來達到的開發速度; 二來是彈性很糟糕, 尤其是MVC之下要放進Javascript跟AJAX這類做UI必備的部份, 該把Javascript/AJAX塞到view嗎? 還是要塞到control? 這種小麻煩實在讓我用都不想用.

要說我不懂MVC也行, 要說我龜毛也行, 反正我找不到滿意的Framework. 找不到就自己刻吧! 我要的很簡單, 就有Template與Code Logic分離, 能內含一些泛用API的(例如Session, Database Handler, Image Processing), 能支援gettext就好, 重點是乾淨, 我需要乾淨不吃現有Framework/Libs的環境, 讓我可以很輕鬆的調整效能問題.

我喜歡單一入口的設計模式, 所以我會使用Rewrite加上module/action的做法. Javascript跟AJAX的部份無可避免得用上jQuery, Session有現成的memcached跟Database Stored, Image Processing部份直接調用簡單的imagick(其實我也不想用PECL的ImageMagick, 我是自己寫class去呼叫convert), Database Handler直接做個wrapper去搭各種driver就好(ADODB爛到可以, 我很難相信真的有大網站用這玩意兒), 麻煩在Template問題.

如我之前所說, Template裡頭事實上包含了最終輸出的東西, 所以肯定會有swap template問題, 會有gettext問題, 會有Javascript問題, 更會有pre-define AJAX的問題. 用Smarty不是不行, 麻煩是效能爛到有剩(之前就很多人討論過Smarty存在的價值與意義, 畢竟PHP本身就是一個Template Engine了); 其他不管是Smarty-Lite或是Zend_view彈性都很差, 所以只能決定自己弄個簡單的, 這時候就要狗幹一下PHP5, 難道不能有個 include_get 之類的function嗎? 逼著非得用ob_start()才能拿到include檔案執行完的內容; evel要考慮variables scope, 而且又是fork出新的php來跑, 對httpd/fastcgi的衝擊很大的.

再者AJAX也是大問題, 以往慣用XAJAX, 但是XAJAX太混雜, 本身摻雜了view與control, 要在AJAX裡頭搞gettext更是要規避一些很鳥的問題, Javascript/AJAX一搭上Smarty要做一堆{literal}, 更是友善度大減.

揚棄了Smarty與AJAX後, 就得自己解決與面對Template/AJAX部份, 目前基本的方向是直接用統一的module/action來取Template, Javascript, AJAX Backend, 這樣寫一個頁面與功能只要同時製作 html, javascript, backend ajax就好, 剩下的讓template class/engine去搞定, 這樣子撰寫過程就會很純化, 對以往開發其他新網站也會相對簡單.

目前這個framework(如果可以稱作framework的話啦)已經完成了80%左右了, 現在剩下template engine的部份還在參詳, 由於gettext需要textdomain, 所以也只好不免俗的給這個東西取個名字, 就叫做necit了.

現在不打算開放出來給大家用, 畢竟是未完成品, 也是丟出去給大家看到我醜陋的PHP寫法會汗顏的未完成品, 大概等以上幾個網站都完成且通過實戰測試確定好用後, 再考慮要不要Release.

啊? necit是什麼意思? necit = nekobe’s kit = nekit = necit, 如果要一個比較GNU的說法的話, 呃, 那就 Necit Enhanced Common Internet-application Toolkit, 夠噁心了吧.

Canon FTb練習拍

我是拍照的超新手, 又不受教, 不喜歡那些教條式的拍照訓練, 甚至那些基礎的構圖跟啥配置我都不懂也沒很想學: 我又不是要當攝影師, 拍照這種東西是滿足自己用的啊.

自從買了Nikon D50給Ellen後, 我老爹的Canon FTb就變成我在使用, 剛開始習慣於用傻瓜數位相機的我, 光靠觀景窗實在很難想像拍出來會是什麼樣子, 於是一直處於摸索狀態. 話雖如此, 我還是對機械快門聲情有獨鍾.

從去京都到現在, 累積了一堆底片都沒去洗, 從澎湖回來後就一股腦全都拿去沖洗, 看到了沖洗出來的樣子實在是很奇妙的感覺, 還同時慢慢在回憶當時是怎麼樣的狀況下按下快門, 是想拍出什麼感覺的東西.


這張是去年中元祭跑去頭城看搶孤時拍的, 因為我既無閃光燈也沒腳架, 所以只靠手跟欄杆以B快門拍下的, 實際曝光時間我不大記得, 不過應該是有個3秒左右吧.


這張是在日月潭一大早拍的, 算是無心插柳拍到了這種老相機的光暈跟星芒.


這是永安漁港的夕陽, 其實當時太陽已經很下去, 幾乎是一片黑暗的狀況, 也是用B快門拉長時間拍出來的.


這是在集集支線的某個小火車站邊拍的, 廣角鏡+大光圈威能十足啊.


京都的貓, 我常常可以跟野貓交朋友, 拍野貓也是常常都拍的到.


Ellen說我好像擅長拍植物花草, 這張的色調我整個很喜歡.

The Dark Knight(黑暗騎士)

上個月初就看完了, 整理到今天才把這篇寫完.

首先直接破題, 這絕對是Batman系列中最好看的一部, 不管在商業上或劇情上或其深度我都給予極高的評價.

演員表現上, Heath Ledger(希斯萊傑)演的小丑無疑是最搶眼的, 我甚至認為他可以用這部戲拿一個Oscar, 那種狂放, 無道德, 一切無所謂的絕對邪惡, 絕對黑暗表現的淋漓盡致, 甚至讓人懷疑主角應該是小丑而不是Batman; 主角Christian Bale(克里斯丁貝爾)則是在飾演Bruce時有絕佳的表現, 跟飾演Batman時的對照更把Batman本身的矛盾跟痛苦鋪陳的張力十足; 而另一個重要的主角Aaron Eckhart(亞倫艾克哈特)在前半段White Knight的部份雖乏善可陳, 不過在受到打擊變成Double-Faces後把那種絕對正義到絕對邪惡的絕望感完整的表現出來, 可惜篇幅極短.

畫面與運鏡上, 導演Christopher Nolan在他前作The Prestige(個人戲稱金剛狼大戰蝙蝠俠)就有很獨特的視野了, 而到了這部戲更因高科技的動畫與大量的黑夜場景而得到更好的發揮.

配樂上的話, 老實說我實在沒有力氣在欣賞這部戲之餘再去好好聽配樂, 劇情一整個緊湊啊. 甚至因為我們是在IMAX看的, 太前排的狀況下我幾乎前1/3不到就完全放棄了字幕.

說完純理性的評論, 接著就是感性的劇情.

劇情上的配置雖已經比別的Batman來的長, 但是卻不會讓人感到煩悶, 首先編劇完全不對大反派小丑這個人的來歷和作惡原因作說明, 而是把小丑強調在一種類似虛無主義的角度, 他傳遞恐懼, 發揚恐懼, 本身卻不存在恐懼這種人人皆有的弱點, 強烈的虐與被虐心態讓他成為幾乎無敵的犯罪者, 他沒有顧忌, 沒有原則, 沒有任何會被威脅的原因或理由–包括他的性命. 當他被捕且被Batman痛扁時, 他說「You have nothing to manace me!」的那種神情, 跟他每次解釋臉上疤痕的那種語氣, 帶出了他常說的「Why so serious?」等等, 卻正好塑造出了一個無法打擊的罪惡: 包含最後他希望Batman用Batman Pod撞死他, 證明了他的執著就是Totally Chaos, 就是徹底毀滅善的信念, 不管是White Knight或是Batman.

而Batman企求讓White Knight成為英雄, 讓Batman永遠不被這個城市所需要, 不只是傳達出他不想失去女主角Rachel, 更傳達出他更想脫離身為Batman的詛咒, 可惜他最後既沒辦法救回他所愛的Rachel, 更救不回他所寄望的White Knight, Batman等於是失去了救贖他的兩大希望, 等於是被希望所遺棄了.

最後僕人Alfred選擇不把Rachel的信交給Bruce, 正好說明了這一切.

“Dear Bruce, I need to be honest and clear. I’m going to marry Harvey Dent. I love him and want to spend the rest of my life with him. When I told you that if Gotham no longer needed Batman we could be together I meant it. But I’m not sure the day will come when you no longer need Batman, and if it does, I will be there, but as your friend. I’m sorry to let you down. If you lose your faith in me, please keep your faith in people. Love, now and always,
Rachel.”

雖然很多人認為The Batman Begin應該是這部戲的前傳, 可以接著看, 但我認為這部戲應該獨立存在, 甚至觀影順序顛倒過來反而更能感受The Batman Begin要表達的與鋪陳的.

最後場景則是令人痛心的, Batman為了維持住White Knight所代表的正義, 維持住讓人們可以依賴的光明, 自己扛下所有Double-Faces幹下的壞事, 讓自己成為永遠被誤會, 永遠處在陰森黑暗中的The Dark Knight.

“Things were always going to have to get worse before they got better.” Alfred

這句話應該拿來安慰所有人, 包括我自己.

大家來找碴:我又換了啥?

雖然一直被Ellen笑, 車騎的不怎麼樣, 配備倒是挺齊全. 不過這就是騎車之外的樂趣啊! 今天剛把兩台車鍊條都掛上快扣, 也買了一支GIANT Control Mini+1當隨車打氣筒, 我一般都會打到50~55psi左右, 可是得隨時補一下胎壓的.

不過更大的改裝是上禮拜去做的, 為了這個改裝我可是傷腦筋了很久, 先賣個關子讓大家看圖找碴一下

換裝前

換裝後

前後有啥不同呢? 到底換了什麼? 有辦法把換掉的東西跟換上的東西品牌型號都報的出來, 我請吃飯.

車首吉祥物: 邪惡咖啡貓

連魯夫都這麼高興呢! 前進梅利號如果沒有羊頭成何體統!!

車一定得要在車首掛個吉祥物, 這是很重要的啊! 不然路上撞車誰知道哪台車是誰的. 我的四輪車首吉祥物是會變裝的小叮噹, 加上後照鏡上的木頭小黑貓.

自從買了IGUANA, 我就一直在找適合的車首吉祥物, Ellen有一隻掛勾小熊, 我卻遲遲找不到適合的.

直到上上週帶Ellen跟Ellen娘去勝興車站, 在一邊的手工藝品店找到合適的了:咖啡色邪惡貓.

跟我的白桃紅IGUANA可真搭呢.

我的2008年也少了幾天

(借用我們家小光的昏睡照)

上禮拜六跟Ellen去了葉倫會老師主講的大稻埕老街攝影巡禮後(Ellen的文在這裡), 回到家就感覺特別的疲勞, 夏日慣於滿身大汗的我只覺得大概是曬過頭了, 畢竟背著Canon FTb走了幾個小時也不是一件輕鬆事.

接著禮拜天例行的單車練習, 一樣是之前無法「不落地」征服的劍南路, 這次比上次只停了一趟還要慘啊! 我幾乎是第二個彎就被Ellen海放了, 不曉得怎麼一回事, 後來下山回家也覺得很怪, 腳不若上次酸, 心跳跟呼吸也在控制範圍內, 但就是莫名的全身無力.

回到家洗了澡之後就乖乖去躺平, 一躺下就發現:「靠….北邊走! 我竟然發燒了!」

原本以為只是一般小感冒, 沒想到周一看完醫生後, 一直處於昏睡彌留狀態, 好不容易滿身大汗退了燒起了身, 撐不了兩三個小時又再度燒起來, 所以我的週一週二這兩天就是在吃藥昏睡洗澡之間度過, 醒來不知是哪一天的幾點, 昏睡也不知道昏了多久.

週三發現持續這樣燒真的不行, 還是跑去請醫生給我一針! 不曉得多少年沒在臀部打針了! 不管幾歲好像打針總是會讓人害怕.

然後接著是雞婆的醫生竟然懷疑我是某種最近很流行的傳染病, 還通報了相關單位….

總之我跟486一樣, 2008年莫名其妙的少了幾天. Charlie Jan真抱歉, 我知道我跟你約好了, 不過週一下午正好是發燒最嚴重的一天, 我回到家吃了藥就失去意識了啊.