2014年2月1日 星期六

FastCgi + Phalcon 有多快

 2014-02-02 12:59

使用 Laravel 之後,自己負責的應用程式,差不多都 porting 到 Laravel,只剩下一個有效能要求的,不敢動,仍然使用 ASP.NET。春節 (2014) 期間,上網看到 Bruno Skvorc 的 "Best PHP Frameworks for 2014" (http://www.sitepoint.com/best-php-frameworks-2014),排名第二的 PhalconPHP (簡稱 Phalcon),以效能著稱,不禁心動,春節過後,就來實際測試一下。

其實,Phalcon 並非第一個擴展的框架 (extension-based framework),YAF 在 2011 年中就已提出,並被包含在 pecl extension 中。而且,在目前可得到的 benchmark,YAF 還是略快一些。只是,相對於 Laravel 這樣方便的框架,Phalcon 和 YAF,兩者都同樣有 extension-based framework 特有的難以使用的特性,而 YAF 還更難一些。至少,我照著 Phalcon 的網頁,簡單的建立幾個檔案,就可以看到成果。YAF 則要更為深入的調整,才能成功。另一個,不考慮 YAF 的因素是,其最後的 DLL 下載版本是一年前的,表示,這一段時間,它的進展是停滯的。


測試環境,OS 為安裝在 VMware ESXi 5.1上面的 Window server 2003,配置 CPU*2,1.5GB RAM,PHP 為 5.4.12。資料庫存取為透過 PDO:SQLSRV 從 MS SQL 2000 取得某個使用者的相關紀錄,大約 10 筆,傳回的文件長度約 680 bytes。

執行命令 ab -n 100 -c 10 http://10.161.81.190/abtest.php

CASE 1
首先,來個測試的基準,在 php 中單純送出 'hello' 文字,傳回的文件長度為 5 bytes。
CGI 的結果為 29.65 [#/sec] (Requests per second) 。
使用 FastCGI 1.5,第一次 1534.14 [#/sec] ,第二次 3305.29 [#/sec]。

具資料庫操作的測試,CGI 為 18.15 [#/sec],FastCGI 為 1377.57 [#/sec]

對照組,ASP.NET 的結果為 1462.69 [#/sec]。
另外,也用 phalanger 測了一下,大約在七八百之間吧。不過,終究其相容性較差,PDO:SQLSRV 無法正常運作,Laravel 也跑不動,用 Google 搜尋,也不容易找到相關資訊,不要再浪費時間去測試了。


CASE 2
使用 PhaconPHP 1.2.6,具資料庫操作。
單純使用 CGI 的結果,20.16 [#/sec]。
使用 FastCGI 1.5,第一次 208.91 [#/sec],第二次 788.36 [#/sec]。

CASE 3
使用 Laravel 3.2.14,無資料庫操作,單純的產生一個空白的 form,未連結資料庫, 傳回的文件長度為 737 bytes。
使用 CGI 的結果,15.19 [#/sec]。
使用 FastCGI 1.5,第一次 64.32 [#/sec],第二次 71.83 [#/sec]。

 比較表

CGIFastCGI
PHP (純文字)303305
PHP (資料庫)181377
ASP.NETNA1463
Phalcon20788
Laravel1572

註: 結果取較高的次數,並且四捨五入


個人心得
非 常吸引人的結果,使用 PhaconPHP 配合 FastCGI,效能可以提昇 10 倍以上,從每秒處理的服務數量來看,能有超過 500 次的能力,著實讓人心動。但在目前的版本下,有個小問題是其所支援資料庫實在很少。另外,使用 FastCGI 有個不便之處,那就是基於安全的考量, FastCGI 會隱藏錯誤訊息,debug 要稍微費心些。說真的,暴露出錯誤訊息,是不好的習慣,但人有時候就是為了省事和方便,不會認真處理錯誤訊息。

FastCGI 對於 Laravel 的提昇效果並沒有如此顯著,但我所負責的程式,大多每分鐘的使用者都不超過一個人,就算使用 CGI 也足以應付,真正在乎的是程式好寫且好維護。

誠如 Bruno Skvorc 的結論所說的,各個 PHP 的 FrameWork,深究其中,都很類似。而 Phalcon 在提昇效能上的作法,無疑的提供了一個不錯的可行方向。曾聽起前輩提到科技發展的 divergence and convergence,在各種 FrameWork 相繼被提出之後,最終,PHP 可能會加上原生 MVC 的支援。

2013年12月5日 星期四

令人失望的新款小紅點鍵盤

 2013-12-05 23:39

現在只有一個想法,覺得「中國設計製造,真是讓人沒信心」。

我是 IBM 的 Trackpoint 鍵盤的愛用者。最近 (2013 年 11 月),因為使用中的鍵盤變髒變舊了,想再買個新的。

好不容易,透過網拍,找到一個,產品的全名叫 ThinkPad Compact USB Keyboard with TrackPoint,多了一個 Compact 的形容詞,型號為 KU-1255。雖然沒有中文輸入法,但將就著用也還好。只是,用了一陣子之後,真的是讓人感到很失望。

舊款的叫作 ThinkPad USB Keyboard with TrackPoint,型號為 SK-8855,FRU 為 55Y9010,或繁體中文的 FRU 為 55Y9060。



明顯的缺點是,按鍵行程變得更短,很沒有觸感,打字很不舒服。而且,手指很難放對位置,在按右邊的 Shift 時,老是按到 Ctrl。

最嚴重的缺點則是,把調 Trackpoint 的 sensitivity 的功能給閹掉了。雖然可以調指標速度,讓游標移動的很輕鬆。但是配合中間按鍵模擬 scroll 功能時,就要較費力推動。一整天下來,可以微微感覺肘部肌肉,甚至背部的肌肉,都會緊張,持續個幾天,就會造成肌肉疼痛。

ThinkPad 的鍵盤,自 IBM 以來,已經用了很多年。IBM 的鍵盤,一般來說,還可以接受。不知道聯想 (Lenovo) 在買下 ThinkPad 時,談的授權為何。想來是授權的約束或時間過了,聯想為了省錢,就改用自己的設計。以往,會買 ThinkPad 的筆電或鍵盤,純粹是為了那顆小紅點。如今,鍵盤和 TrackPoint 變得如此難用,ThinkPad 的愛用者,再買新的電腦時,真的該考慮不同的品牌了。

不得已,我只好趁網路上還買得到舊款的時候,趕快搶購一個,還可以再撐著用個幾年吧。這個新款的,就留著當備用的了。

2013-12-15 補記

其實,是我後知後覺,ThinkPad 早就因為鍵盤的改版而吵得熱鬧滾滾。雖然,似乎有人支持聯想求新求變的作法,但相信會有許多人,已經決定不再買新的 ThinkPad 了。這個連結的說法可以做個參考http://ultrabook.pconline.com.cn/330/3304664.html

這個連結的 title 定為「ThinkPad X1c 長测三:巧克力鍵盤中的霸主」,會讓人誤認為新的比舊的好,應該是說,巧克力鍵盤都不太好用,ThinkPad 的做得最好,雖然是越改越差,只是「乞丐中的霸主」罷了。

綜合一下,該文的說法

首先,對巧克力鍵盤做一些說明。在 92% 全尺寸鍵盤的標準下,採用巧克力块獨立式鍵帽,讓每個按鍵如同巧克力塊浮在水面上一般放置在鍵盤底座上。在保證了鍵盤區尺寸的情况下,增大了手指與鍵帽接觸的面積,擊鍵更加準確,手感更加舒適。依據人體工學特徵設計出凹帽状按鍵,同时,非粘連設計也減少了按錯鍵的機率,這與傳統鍵盤相比,不論是鍵程還是鍵距都有著明顯的提高,增加了操作的舒適度。外觀簡明清潔、1.902mm 最佳鍵程和指腹彎曲設計、强對比色標注快捷鍵、按鍵防塵功能緊湊、手感舒適,這些内涵,在巧克力鍵盤上得到了融合創新與呈現。

但是,以上巧克力鍵盤的特徵,並不一定優於 ThinkPad 傳統鍵盤。ThinkPad 傳統鍵盤為了良好的手感需要比較大的鍵程,每一個按鍵的下方還留有一定的弧度,雖然看上去它贴合手指的面積和巧克力鍵盤相仿,但是它鍵帽下沿的區域對於手指感受提升是很明顯的。用戶手指每一次按鍵不一定會按到鍵帽的中间部位,即便只按到了下沿區域也能够獲得回馈,變相的來說,ThinkPad 傳統鍵盤的實際反馈面積要比改進后的鍵面要大,也就是對用戶輸入錯誤的纠正能力要强很多。這也是為什麼 ThinkPad 的鍵盤给人的感覺打字極為舒適。

現在,再說回 ThinkPad X1 Carbon,這款產品所採用了新一代的巧克力鍵鍵盤,但是它也並非普通的巧克力鍵盤,ThinkPad 的獨特依舊存在。相比 ThinkPad 傳統鍵盤,新鍵盤的鍵帽增大了接觸面積,增添了 “X” 型支架。雖然這些改進從賬面上來說讓它更美了,但是實際的手感確實有所下降。除了傳統鍵盤的真正面積要大之外,傳統鍵程確實要長一些輕微。新型鍵盤的 “X” 型支架與 “鼓” 型弹片對回饋力的影響很大,按鍵按上去並不是那麼 “渾厚” 和稳定,有一點輕飄飄的。好處是不需要太大的力氣即可打字。壞處就是,傳統鍵盤的柔顺手感確實已經不再了,需要老用戶們重新去適應。

先前 (T400s) 提供更大尺寸的 [Esc] 和 [Delete] 按鍵,因為它說

. 研究結果表明使用率高的按鍵是 Esc 和 Delete 鍵

. 調查結果表明 Delete 鍵平均使用約 700 次/星期



ThinkPad 傳統鍵盤對鍵盤排列的理解也遠超過競爭的產品,比如現如今依舊堅持著 Fn 鍵在左下角,用戶在光線不足的情況下,可以很容易摸到组合必備的 Fn 鍵。另外就是大家常用的 Shift+Ctrl 切换輸入法,如果你用中指按住 Shift,再用食指即可,而如果 Ctrl 鍵在邊角上,你就需要用不怎麼有力的无名指,或者把手多移動一些位置,在使用中指與食指。再有就是 7 行這些小细節的與眾不同正是 ThinkPad 的精準所在。

 ThinkPad X1 Carbon 保留了大部分 ThinkPad 傳統鍵盤的鍵位排列顺序,也改動了很多细節,比如將原先的 7 行鍵盤改為 6 行,去掉了 Pause/break 鍵,將原先的大面積的 ESC 缩小,Delete 做成了横向等等。我們看到現如今的 ThinkPad 鍵盤更加簡潔了,但是某些東西是否也不再保留了呢?

綜合來說 ThinkPad X1 Carbon 的鍵盤體驗其實並不如之前的舊款產品,在機身變薄之後,它的按鍵厚度也比 T 系列要薄,這也是為什麼總覺得有些輕飄飄的。在簡潔的流行風之下,為了輕薄便携的 ThinkPad X1 Carbon 也走上了巧克力鍵盤之路。其實去年聯想將 ThinkPad 全線更新為巧克力鍵盤之後,也引來了一大片的反對之聲。曾經有網友評論 “如果整個市場上一水的巧克力鍵盤,那我憑什麼要選 ThinkPad?” 答案或許是:他是巧克力鍵盤中做得最好的。

2013年11月22日 星期五

用不慣的高級玩具

 2013-11-23 13:21

超昂貴的玩具。把要買給同事的,先拆開來試玩一下,就立刻決定退貨,換成 120 GB 的 SSD。
最主要是鍵盤架太矮了,放不進去,而且它的球很容易就滾出來。像我以前用的羅技金星一樣,滾出來掉在地上,就可能會凹一個洞,不敢再試。



  


下面是幾個我用過的舊軌跡球,下排最左邊那個就是先前用的羅技金星。金星的球不小心很容易就會滾出來。因為桌面很亂,有次稍微側了一下,球就滾出來掉在地上,凹了一個小洞,以後轉起來就卡卡的。好在羅技大方,帶到台北分公司,就給我換一顆球。

邏技後來在這方面已有改善。球會稍微卡住,下方有個小洞,用根軟頭的棍子,像帶軟橡擦的鉛筆,頂一下,球就可以拿下來,清除裡面的髒污。



 

下面這個網誌連結,寫了很多他個人使用軌跡球的經驗,可以參考一下。
http://tacolin.blogspot.tw/2010/04/trackball.html

有一段時間,主要都是用軌跡球,後來出 ThinkPad 的 USB 鍵盤,就變成 Trackpoint 配合軌跡球。改程式,逛網頁,都使用小紅點,手不用離開鍵盤。只有玩個接龍,或做不需鍵盤的事,或是要靈活大量移動游標時,才用軌跡球。
有趣的是,別人要用我的電腦,就會完全的不知所措。不是看著小紅點發呆,就是拿著軌跡球猛滑,想當然的,游標完全不動,一付非常錯折的表情。但是小紅點,真的是比軌跡球的愛用者還要更少,在台灣要買到有小紅點的鍵盤,真的是非常不容易。不然就是只能買到鍵帽只有英文字母的鍵盤。

2013年11月1日 星期五

設定 mouse 的參數

2013-11-02 12:31

參考 https://wiki.archlinux.org/index.php/Mouse_acceleration

在 X windows 下,要設定個別的 mouse 的參數,例如加速與靈敏度,可以使用 xinput。

emerge -av x11-apps/xinput

Using xinput

First, get a list of devices plugged in (ignore any virtual pointers):

$ xinput list

Take note of the ID. You may also use the full name in commands if the ID is prone to changing.

Get a list of available properties and their current values available for modification with

$ xinput list-props 9

where 9 is the ID of the device you wish to use. Or

$ xinput list-props mouse brand

where mouse brand is the name of your mouse given by $ xinput list

Example, changing the property of Constant Deceleration to 2:

$ xinput list-props 9
Device 'mouse brand':
       Device Enabled (121):   1
       Device Accel Profile (240):     0
       Device Accel Constant Deceleration (241):       1.000000
       Device Accel Adaptive Deceleration (243):       1.000000
       Device Accel Velocity Scaling (244):    10.000000
$ xinput --set-prop 'mouse brand' 'Device Accel Constant Deceleration' 2

To make it permanent, edit xorg configuration (see above) or add commands to xprofile. The latter won't affect speed in a Display Manager.

Configuration example

You may need to resort to using more than one method to achieve your desired mouse settings. Here's what I did to configure a generic optical mouse: First, slow down the default movement speed 3 times so that it's more precise.

$ xinput --set-prop 9 'Device Accel Constant Deceleration' 3 &

Then, enable acceleration and make it 3 times faster after moving past 6 units.

$ xset mouse 3 6 &

If you are satisfied of the results, store the preceding commands in ~/.xinitrc.

2013年10月28日 星期一

絕命調查 - 觀後感言

2013-10-28 18:46

真的有人會為了證明別人的說法是錯的而犧牲自己的性命嗎?

在電影「绝命调查 (The Life of David Gale)」,幾個反對死刑的人,故意製造凶殺案現場,造成男主角被冤枉判死刑,而真相在他被處死後,透過事先安排的記者採訪,立即公開。這樣做的目的,只是為了證明有人被判死刑是冤枉的,卻無法重審。

劇中還搬出蘇格拉底被判死刑的故事,因為男主角是個很有成就的哲學學者。

劇終再來個杜蘭朵公主中,柳兒為了保守秘密而自殺的片段。

嗯,人生的意義,到底為何? 為了一個理想而死,也心甘情願嗎?

2013年10月25日 星期五

玩股票,永遠都在後悔中

2013-10-26 10:28

 玩股票,永遠都在後悔中

  • 買了就跌,只好苦笑著說,不賣就不賠,等它漲回來再賣吧。
  • 買了就漲,漲了一倍賣掉,它卻再漲個三四倍,真是讓人搥心肝,早知道就不賣。
  • 看著股票直直漲上去,手中卻沒半張。等到忍不住,跳進去買,它卻開始跌。
  • 所有的股票都漲,唯獨自己手中的股票不漲。

其中,最讓人後悔的是,做對了,但在賣掉之後,它卻繼續再漲好幾倍,一大段沒賺到。

據研究,玩股票賺錢,通常並不會高興,反而大多讓人感到懊悔。
其中,最讓人後悔,後悔到搥心肝的是,
做對了,但在賣掉之後,它卻繼續再漲好幾倍,一大段沒賺到。

想想,某支股票,買在 100,賣在 200,賺了 100,可是它卻繼續漲到 1000,肯定讓人懊惱到搥心肝。

當然,也有讓人高興的

  • 一買就跌,後來漲回進場點,趕快賣了,慶幸把虧損扳回來。
  • 買在最低點,賣在最高點,自認真是天才。

搬家完成

 2013-10-26 10:24

Yahoo 的部落格在 2013 年 12 月要停止服務,提供搬家服務。於 10 月底完成搬家,開始使用囉。

2023-07-12 補記,如意窩使用到 2015,因為廣告太多,受不了,又改用 Google 的 blog。十年後,如意窩要在 2023年8月停止運作,又再把一些對自己有記憶價值的網頁搬到 Google 的 blog。

網誌存檔