iPad 雜談

Tuesday, February 2, 2010

在 iPad 出來之前,我估計是:應該會設計得很好很易用,但功能上應該沒有甚麼大突破,都是用來上網、看相片、看書等等這些一般都會想到的功能,但心裏總會想,會不會有驚喜呢?結果出來,真的跟想像差不多,所以也沒有驚喜。然後大家都將焦點轉移了:沒有 flash?沒有 multitask?UI 跟 iPhone 差不多?是不是因為有 iPhone 和 App Store 的包袱,所以蘋果不敢大刀闊斧的創新,而要沿用 iPhone 的路呢?

只因為 iPhone 的驚艷,就令人覺得每次蘋果產品總得有點甚麼,這引至很多不合實際的期望。實際地想,tablet 的概念其實不新,只差技術整合而已。硬要有驚喜、硬要有創新,這是我們看蘋果產品發佈的一個包袱。

至於沒有 flash、沒有 multitask,都是因為我們以使電腦用家的角度去看 iPad,便覺得其不符合某些電腦的條件。但其實蘋果公司將「電腦」除名,莫非就是要告訴大家,我們做的不一定是電腦。所以說 iPad 的目標群並非典型的電腦用家,而是一般大眾,而他們並不需要有電腦的概念。

例如,我家中有一部小 netbook,是給媽媽用的,我將常用連結如新聞、天氣等都放在桌面上,讓她方便可以看,但她也只會做這些,所以就覺得電腦好像沒甚麼好玩的。教她用搜尋器,打個字,其實也是蠻複雜的事情,因為需要學習使用鍵盤。再加上網頁的 UI 千變萬化,也不是容易掌握的。因此,她也不太明白為什麼我可以整天待在電腦前。想像給媽媽使用 iPad 這類產品,難度應該會大大減少,很多操作都會很直覺。

而這種易用而直覺的觸碰介面,已經經 iPhone 證實是可行而有效的,iPad 則是將這個概念再發展下去。將「電腦」的概念,硬套入這些新產品,其實也是我們另一個的包袱。

如果 iPad 真的流行起來,我們將看到一個更清晰的分界:專用與通用。我們現在一般使用的電腦,叫「通用電腦」,即 general purpose computer,沒有明確的使用目的,由用者自訂。而問題是這種「自訂」的過程通常都很繁複,你必需了解一個電腦系統的構成如輸入輸出、儲存等,知其運作,再找相關的硬體、軟體安裝,學習操作等等。而 iPhone、iPad 這一類則是專用「電腦」,有明確的使用目的,如上網、看戲等等,作為用家,你只需知道一點操作技巧就可以了使用、自訂功能,對其背後如何運作大可不理。

幻想下去,一般用家只用專用電腦就足夠了,而專業用家如程式開發者,則會使用通用電腦做事。而很多公司的 IT 部門的架構會改變,少了支援 (因為使用專用電腦的「使用」問題較少),多了開發 (在專用電腦上的應用程式),IT 行業變得更專門…

會這樣子嗎?大概不會這麼簡單。因為無論是 iPhone、iPad 的封閉環境都是為人垢病的,人們只能通過用 App Store 安裝,不清晰的審批程序,控制權全在蘋果手裏,這令很多人都不爽。只可以說為了方便,我們便犧牲了自由。所以說,仍會有很多人反對這種閉門造車的專用電腦。

問題是,莫非方便與自由是不可兩者兼得的?有人認為網絡就是答案。開發網絡程式,不會被平台、OS 限死,只要有瀏覽器就可以用了。某程度上,Google 開發的 Chromium OS 也是一個「專用」系統,只用來上網,不過這是 Open Source 的,人們可以隨意拿去改造甚麼的。可是其實,說到 Cloud Computing 也不過是另一重枷鎖,因為你的私人數據、用戶習慣、人際網絡等等,都是給了他人「託管」著而已。

Browser Feature Detection

Wednesday, January 13, 2010

Often when dealing with different browsers, this is something I encounter recently (with jQuery):

JavaScript:
  1. var ie6 = $.browser.msie && $.browser.version == '6.0';
  2. if(ie6){
  3.     $('html,body').css({height:'100%',width:'100%'});
  4.     target.css('position','absolute'); //IE6 has no 'fixed' position
  5.     //....
  6. }

This code is copied from a library which aims at create an overlay for modal box. From IE7 onwards, CSS style position ‘fixed’ is supported, but not in IE7’s quirks mode. So the above code would fail. The solution is let IE7 run at correct doctype. e.g.:

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

But the code is still fragile to the environment. In jQuery, you can use $.support to get a set of feature detect properties. So, the code can become:

JavaScript:
  1. if(!$.support.boxModel){
  2.     $('html,body').css({height:'100%',width:'100%'});
  3.     target.css('position','absolute');
  4.     //....
  5. }

But it is still based on the assumption that “no support on boxModel = no support on fixed position”, which is “politically incorrect”.

同文堂 Bookmarklet Chrome Extension

Saturday, December 12, 2009

小試牛刀,寫了個同文堂的 Chrome 擴展,功能是基於這個 同文堂 Bookmarklet ,基本上只是一個 wrapper。功能方面亦限於 Bookmarklet 所能提供的,所以就沒有輸入變換、字詞配對等等功能。

事實上真的很容易就能開發到,只要懂得一般 HTML、JS、CSS 等技巧就可以了,當然也要了解一下擴展的概念,如 Page Action、Browser Action、Content Script 等等。Chrome 本身亦提供打包服務,非常簡易。最後上載到 Gallery 亦是非常簡單,由於這個擴展很簡單,所以也沒有審核過程就 Publish 了。

Chrome Beta Channel 用家可到此安裝: Tong Wen for Chrome

Chrome Extension 出籠

Friday, December 11, 2009

終於,久候多時的 Chrome Extension (下稱擴展) 來了,二話不說馬上試用。暫時安裝了:

  • AdThwart
  • Smooth Gestures
  • Chrome Bird
  • Chromepad
  • Drag and Go
  • FlashBlock
  • Google Mail Checker
  • Minimalistic Google Reader
  • Shareaholic
  • Sticky Tabs

據報,暫時已有 500 多個可供選擇,雖然不比 Firefox 的多,但已包括很多常用擴展,一般用家應該夠用。

試用之下,漸覺得 Chrome 有了擴展後,對 Firefox 的威脅大多了。我們常說用 Firefox 的原因,是因為其擴展之豐富,令人可以打造一個自家瀏覽器,現在 Chrome 也有了,令人轉台的機會大了很多,而更重要的是,Chrome 擴展有相當優勢:

  • Sandbox:Chrome 擴展也有使用 Sandbox 技術,即每個擴展是獨立運行的。在安裝一些擴展後你可發現 task manager 內會有較多的 chrome.exe 在運行。獨立運行的好處,是一個擴展死掉不會拖累另一個。
  • 順暢:Firefox 在安裝大量擴展後難免會感到運作較緩慢,而 Chrome 則由於使用 Sandbox 技術,似乎沒有這個問題。例如一個擴展在背景檢查電郵,不會影響到其他 tab 或擴展的運作,所以使用的感覺很順暢。據說即使裝了 50 多個擴展後,Chrome 仍可快速起動,雖然是多用了記憶,但效能還是不錯的。我比較過自己使用時,已加裝擴展的 Chrome 平時大概使用 200-300MB,用量與 Firefox 差不多,但 Chrome 就比較順暢,反應也好。
  • 即插即用:大部份擴展在安裝後是即是生效,不用重啟。
  • 容易開發:Chrome 擴展其實都只是 HTML 來的,很容易開發。例如我便發覺 Chrome Bird 這擴展,背後便是使用 jQueryUI 來做,好像開發普通 Web 應用般直接。也見有人將一些在用的 user script 變成擴展 (因為 chrome 未有 Greasemonkey 擴展)。其實 Firefox 的 Ubiquity 和 Jetpack,也是朝容易開發的途徑走,以吸引開發者。

在加裝擴展之後,我也更願意使用 Chrome 作日常瀏覽,的確增加了用戶黏度。暫時要使用 Chrome 擴展,必需安裝 Beta Channel 的 Chrome

Chrome之攻殼

Thursday, September 24, 2009

IE7 + Google Chrome Frame (Acid3)

今年 Google I/O 大會花了很多時間講 HTML5 技術:canvas、video、geolocation、app cache & storage、web workers 等等,說這些東西可以如何為 Web 帶來創新,言談間充滿熱情。然後,在一張 HTML5 Support 的 Slide 上,看到滿是剔,也就是想說:HTML5 已被支持了,請大家去開發吧!當然,這張表獨欠 IE,演講的 Vic Gundotra 說:「微軟已說會支持 HTML5,我們實在急不及待!」然後就是一陣鬨堂大笑。

然而現實問題卻不能一笑置之,IE 雖然最落後,但卻還是最多人用。Google 推出 Chrome 的確刺激瀏覽器市場,但 IE 太笨重,改進速度太慢,完全跟不上,在拖著 Google HTML5 大計的後腿。Google 的「急不及待」並非只是取笑對手,而是真的急了,急到要「攻殼」:推出 Google Chrome Frame ,也就是表面上用的是 IE,但實際內容使用 Chrome 的 Webkit 和 V8 引擎來運作,使 IE 突然之間就支持所有 HTML5 功能了。

這麼一招看似搞笑,但卻似是為了即將推出的 Wave 舖路。Wave 是 Google 的一個重要「殺著」,其目光很遠大,能將現在網上溝通合作平台帶到另一個層次,但面對著一個隱憂:這東西很難理解,推廣不易。所以最實在的,還是讓越多人試用得到越好,但偏偏 IE 卻不能運行得到使用 HTML5 技術的 Wave。因此,Google 便有此一著,推出「狗頭羊肉」的 Chrome Frame 插件。

不過,會裝這個插件的人,為不麼不索性裝個原裝的 Chrome 用?答案大概是「自動化」。這個插件查看網頁代碼上一個叫 X-UA-Compatible 的 meta tag,來判別是否是用 Chrome Frame 來運行。這樣,用家便不用記著那個網頁要用 Chrome 來開了。其實這一招來自 IE8 的 相容 IE7 模式。

Chrome Frame 的推出可見 Google 之急,以一副領導姿態幫 IE 「升級」。Chrome 在技術上的確領前很多,正當一眾瀏覽器在比拼 Javascript 速度的時候,早前出現了一個 Javascript NES Emulator 卻顯示 Chrome 在 canvas 上的效能遠超對手,也示範了更多可能性。可是 Chrome 雖然技術一流,但卻並非完美,其中 親和力便是一場災難 ,Chrome Frame 之「攻殼」,也就將 IE8 的親和力一下子廢除了。