未來已經到來 – 量化和連結生活中的一切

我還蠻常想像未來人類的生活型態會是什麼樣子,網路和行動裝置的革命之後會是什麼?其中一個我覺得很有趣也開始成熟的是「量化自我」(Quantified Self)。這是一種用各種感測器記錄個人身體狀態數據...阅读全文

過早最佳化是萬惡的根源

已經半年沒寫blog了,中文寫作能力好像有點退化。趁著剛看完xdite的文章給尚未大學畢業的朋友的幾個人生建議 - 挑戰未來篇」後,心中還有不少想法時,趕快整理分享一下。從小到大,我一直對這世界的「教育系統」(也就是學校)有著複雜且矛盾的情緒。學校該教的是理論知識?還是可以在工作時馬上派得用場的實務技術?我一直覺得比這些更重要的是要培養學生的思考能力和自學能力,但台灣的學校走的卻是相反的方向(灌輸知識)。更矛盾的點在於,如果學生經由學校培養出了強大的自學能力,那還需要繼續待在學校學習嗎?我和xdite的想法有很大的共鳴,她說的三件不要做的事「可以不要念大學」、「不要做研發替代役」、「熱情比什麼都重要」,我也多次跟不同人給過同樣的建議。以我自身的情況,我相信我即使不念大學也能靠寫程式在一些中小公司混得不錯,甚至不到20歲就自己接案或開公司都有可能。但和xdite不同的是,我完全不後悔花了10年從大學一路唸到博士。我國中就自己學會寫程式,從大一時就在一些公司兼差寫程式,所以我很早就知道這不是需要上大學才能學會的事,而且我甚至已經能靠這個技能賺不少錢。我也在高中時就知道大學(尤其是台大)不教實務技術,教授不會教我最新的程式語言和framework,或是如何把程式寫得更漂亮、把軟體架構設計得更有彈性和效率。但偏偏我有興趣的都是這些事,既然早知如此,為什麼我還要念完大學,甚至繼續念了碩士,最後還出國念了博士呢?資訊界的大師Knuth有一句名言:「premature optimization is the root of all evil」(過早最佳化是萬惡的根源)。名言之所以是名言,就是因為這句話可以應用到很多地方,甚至包括人生的選擇上。雖然我很早就發現自己最有興趣並且最擅長的事是寫程式,但我並不想老是寫別人想要的那幾種程式,而把自己侷限在這個小世界裡,而放棄探索其他的可能性。我不是說我想探索醫學法律或政治這種完全無關的領域,而是我想知道我在資訊這個領域可以走到多深或是可以從這裡擴展得多廣,甚至是跟其他領域結合起來創造全新的火花。如果我在高中就決定我想要全職接案寫程式,那我一輩子的成就可能就是寫過一千個有不同外皮的論壇和購物網站了。反過來想,如果我放棄念大學,會失去什麼?第一,紮實的理論基礎。很多人覺得大學教的東西和產業脫節,就是因為大學偏重理論而不重實務,導致畢業後沒有適合工作的技能,所以覺得上大學沒用。雖然我大學的課幾乎都沒去上,但該學的資訊基礎科目我還是有學,只是我是用自己的方法學而已。學習任何學問都一樣,基礎永遠是最重要的,不懂事物背後的道理,就不可能靈活運用甚至加以改進和創新。我在高中參加程式比賽時就知道自己不夠聰明,不是念純理論的料,但我還是想要知道每天用的作業系統、網路、操作介面、程式語言背後運作的原理和機制。而念大學是「當時」*唯一能讓我有系統學會所有基礎知識的最快方法,即使我不聽課,我也有作業可以練功,還有周遭的同學可以討論。我不是個滿足把東西做出來就好的人,我會一直想要加以改進或是找出完全不同的方法來讓事物變得更好,所以學會這些理論和知識是一個不可或缺的基石。在軟體業有個陷阱。因為「新技術」出來的太快,很多人以為要進步就要一直追逐最新的東西(包括各種軟體工具/程式語言/framework/library/design pattern),不然就會被時代淘汰。但其實這些技術背後的理論和思想數十年來幾乎沒有多大進步。如果理解這些思想,就能看穿這些技術背後的本質其實都是互通的。看穿這點後要學各種「新技術」其實都不費吹灰之力,甚至才能站得更高變成創造新工具和新思想的人。這個陷阱的反面是,一直忙著學習「新技術」,會讓人一直以為自己有在進步和學習,但其實學到的都是換湯不換藥的東西。每天忙著追逐新出爐的技術,等於畫地自限把自己的極限設定在這些技術上頭,豈不可惜。換個例子說,如果人類只是滿足於學會各種騎快馬的技術,那汽車和飛機就永遠不會被發明出來了。第二,眼界。在我之前一篇文章「我為什麼要念博士」也提過,打開眼界是我在台大最大的收穫。從MIT畢業後,我甚至覺得我的眼界又再被打開了一次。一個人會做什麼事,完全取決於他看到的、聽到的、體驗到的生活經驗。就像大學生老是做選課網站和團購網站一樣,因為那就是一般大學生的生活。學校的好處在於各種人和各種課程都有。每個同學都有不同的夢想和目標,更難得的是這些夢想還沒被社會的現實壓力摧殘過。多元化的課程也可以讓人想學什麼就學什麼,一切只是看自身的意願而已。在學校裡聽著各種夢想和經驗,讓我會想嘗試各種不同的機會,挑戰自己的極限。我的人生道路常常大轉彎,雖然每次剛要轉彎時都不知道接下來要面對的是什麼,但每次都發現離開自己的舒適圈後都可以邁向新的高峰。這就是眼界帶來的威力。如果不知道一山還有一山高,我就不會有勇氣離開目前的山頭去登上更高的山,進而避免自己做出過早最佳化的錯誤決定。很多人說大學教的東西沒用,但我一直覺得,大學教的東西不是沒用,只是看你會不會用。而決定你會不會用的關鍵,就在於你的「眼界」。我每次想要突破自己的舒適圈時,都會遇到新的挑戰,而以前沒學好的「基礎知識」就會在這時跑出來咬我幾口,強迫我把它學好才能繼續前進。如果你老是覺得做的事很無趣,用不到大學的知識,那很有可能只是你鑽得不夠深,想得不夠多而已。第三,練功時間。xdite說不要白天做完全沒興趣的工作,晚上才自己偷偷練功,這點我完全同意。但我覺得既然要練功,為什麼不在學校就開始全職練呢?念大學的時間可能是這輩子最自由的時間了,以資訊系為例,喜歡學各種程式語言可以每個作業都用不同語言寫,喜歡做網站也可以把每個作業都用不同framework做成網頁介面。這其實就是訓練自己把理論和實務技術結合的最好時機,也是可以容忍自己不斷犯錯和嘗試新事物的天堂。(到美國念資訊博士班更好,學校/教授會出錢讓你練自己想練的武功。)全職工作是練好一項功夫的好方法,問題是工作是領別人的錢幫別人做事,很多時候自己沒有選擇想練什麼武功的自由,過十年很可能就還是只會一種武功。尤其是職業的工程師,已經熟練特定的語言和工具,在工作時就會傾向一直用自己最熟悉的工具來做,因為這樣才能最有效率的生產出客戶要的東西。在這種壓力下,只能把自己本來就會的技術練得更熟練,而沒有辦法利用工作時間去學一個本來完全不熟的技術或理論。以做網站為例,一個已經用PHP做了一百個網站的工程師,能跟老闆/客戶說「我覺得node.js很有趣,能讓我一邊學一邊用來做新專案嗎?」說到底,一個喜歡追求進步的人無論放在什麼地方都會不斷要求自己。只是拿別人的錢就得多一份無奈和妥協,學習的自由也會被多剝奪一些。很多人在大學裡放空實在很可惜,因為我覺得大學其實是一個精神時光屋,如果能在裡面全心投入鍛鍊和學習各種知識和技能,出來後都能是超級賽亞人。但如果你在裡面放空四年,出來後只會感覺像坐了十年牢一樣空虛和無趣。當然,如果是一開始就念了自己沒興趣的科系,那... 別浪費時間,趁早轉系或乾脆暫時休學吧。整體來說,我覺得念大學對我的幫助很大,但同時我也覺得不是每個人都應該念大學。不是每個人都當吳寶春這篇文章的比喻很不錯,
如果以蓋大樓來形容這個概念,把砌磚作為一種技能,把蓋大樓作為一種知識,我想可以這麼講 如果你早就知道你喜歡砌磚,很會砌磚,...
阅读全文

我為什麼要念博士

最近好像很流行討論要不要念碩士, 像是xdite的我不會念碩士和彭明輝的不甘不願地念碩士。在美國則是看到Matt Welsh寫了Do you need a PhD?討論該不該念博士。我在MIT博士班已經念三年半了,預期今年六月要畢業,剛好可以在30歲前畫下一個值得紀念的里程碑。在畢業之前就順便利用這篇文章總結一下我的感想,也可以讓未來更多迷惘的人看清未來的各種選擇。簡單的說,如果讓我重來一次,我還是會念碩士班還有博士班。我知道很多人在選擇要不要念研究所時,是看對未來的就業有沒有幫助,甚至是沒有選擇的空間而被家長強迫升學。我從國中起就很清楚知道自己想做什麼,但我並不是會做長遠規劃的人,而是走一步算一步,因為我覺得世界變得太快,提前規劃五年十年後的職業道路並沒有太大意義。所以我雖然很早就知道自己喜歡寫程式和研究新東西,但我一直到大四才決定要念碩士班,到了碩士班才決定要念博士班。念書一向不是我的興趣,高中沒認真上過幾堂課,然後靠著程式比賽混進台大。在台大時我也都不去上課,整個四年我唯一全勤的課是大三的compiler,因為這是唯一一堂讓我覺得去課堂裡聽課比自己念還要有效率的課。但雖然沒去上課,我可是很認真寫作業的,尤其是程式作業我都會做把所有可以做的bonus全做完,有空的話還會自己多加一些有趣的功能。也因此到了大四時,我的成績還能勉強進入推甄台大研究所的門檻,等於可以免試直升碩士班。但除了學校生活外,我從大一時就在學校外的網路公司兼差寫程式和做顧問,同時也在系上的工作站實驗室幫忙管理一堆伺服器和Linux主機,到大四還同時在另一個startup公司打工兼差,所以生活其實還蠻多采多姿的。在當時(2005年)這種情況下,其實不太難決定要不要念碩班,因為 1) 我還不想當兵 2) 我當時這些打工的收入其實比一般大學畢業生起薪還高不少,而且我花在這些工作的時間很少,每個禮拜還有很多時間可以自由運用 3) 我找到了一個好老師,給我很大的空間可以在碩士班做任何我想做的題目。於是我就這樣繼續待在台大念了兩年的碩士班。在碩士班時,我最大的收穫是打開了眼界,透過世界頂尖的論文知道了這領域中最先進的研究和問題是什麼,也慢慢了解MIT、Stanford、Harvard那些世界頂尖的大學都在做什麼研究。我雖然喜歡寫程式,但也不喜歡老是一直寫簡單的留言板或是blog這種書本上的萬年範例程式,只有一直做新東西才能激起我的熱血。慢慢的我也發現念博士班可能是最適合我的路,可是同時我也有幾個掙扎的地方 1) 要念博士班就要去國外念最好的學校才有意思,那就得先花一年當兵,而不能找個公司做四年國防役而不當兵 2) 博士班平均要念六年,同樣的時間如果我在台灣工作,損失的機會成本是台幣一千萬以上加上六年的年資 3) 出國唸書要離開熟悉的地方,熟悉的朋友、家人,要用很破的英文在獨自國外生活 4) 博士畢業實際上會減少就業機會的選擇,尤其是在台灣,真正需要博士的企業非常少。我在台大認識很多人都有出國唸書甚至在國外工作的夢想,所以對他們來說這些障礙都不是問題。但對我來說,出國唸書最大的誘因只是有機會在世界頂端的學校做自己喜歡的研究,和全世界最厲害的人一起工作,至於是不是要在國外工作則是想都沒想過。想清楚這點後,我立定一個目標,我只申請我最想去的兩家學校,如果上了而且有獎學金我就去念,不然就算了。最後的結果是我幸運的申請上了MIT CSAIL,指導教授也能給我獎學金,所以我現在才會在這寫這篇文章。回過頭來看,現在很慶幸我有決定要嘗試一下申請MIT,即使當時看起來成功的機會渺茫。而這幾年念博士班帶給我的收獲,也遠大於當初的想像,在美國可以得到的各種機會更是在台灣一輩子也碰不到的。雖然一開始看起來在經濟上會損失很大的機會成本,但實際上美國各種科學和工程科系的博士班都有獎學金(RA、TA、或fellowship),以MIT這種私立學校來說,一個教授每收一個人就要幫他付一年總共七萬美金的學費和生活費,當初我即使在竹科爆肝做不是很喜歡的工作,一年的收入也不會比七萬美金多多少。當然,以帳面上的收入來說,博士班念完是存不了多少錢的,因為七萬美金一半是要拿去繳學費,剩下的生活費也大半要繳房租和吃飯過生活。在台灣工作六年可能可以買個房子,但在美國念完博士班只會得到一個博士學位和少少的存款。那話說回來,這個博士學位到底值不值得?如果在四年前還在台灣時的我來看,我會說我不確定,但在MIT待四年後,我會說「200%值得」。首先最大的「福利」是在完全自由的環境下(包括經濟上的自由,選題目和選合作夥伴的自由),和全世界最聰明的一群人一起研究各種既有趣也有挑戰性的問題。這種機會非常難得,如果大學或碩士畢業就去工作,一定會在題目和合作夥伴上受限;如果自己創業,就會在經濟和合作夥伴上受限;於是念博士班成為唯一可以同時得到三方面自由的最佳選項。至於對於能力的增進方面,最大的收穫是英文變好了,可以輕鬆跟來自世界各地的人溝通,讀寫英文論文也是跟吃飯一樣簡單。另外就是「做研究」的能力,雖然我覺得我本來就是一個靠自己學習和研究新知的人,但博士班的訓練是把這件事變得系統化,讓我可以幫更多人學會這樣的能力。做研究的能力還有一個更重要的面向,是判斷什麼題目才是有研究價值的,而什麼是沒有的。如果沒有這項能力,不管未來做什麼事都很容易瞎忙,例如說花很多時間做一些簡單瑣碎的小事、研究一個一百年前早就有人完全想透的問題、或是卡在一個早已被證明不可能有解的問題上。至於念博士這幾年的年資和可能減少的工作機會,現在看來實在一點都不重要。因為一旦畢業後,打開的門是「全世界」頂尖企業和研究機構的機會。資訊科學的博士在美國出路非常廣,我都還沒畢業就一天到晚收到各式各樣獵人頭的信,除了矽谷那些大大小小的軟體和網路公司外,華爾街的hedge fund都是直接開出矽谷兩到三倍的價碼在搶人。如果對這些沒興趣的人,也很容易到大學或是大公司的研究機構中繼續做研究,或是直接加入學校附近上百家的startup中當個CTO或tech lead。這些機會如果我當初待在台灣,就一輩子也見不到甚至聽不到。(我在台灣時甚至沒聽過hedge fund這個詞,也沒聽過有哪個念資訊的會去這種公司。但實際上美國最厲害的幾個hedge fund全都是用數學、物理、資訊的博士用非常科學的方法在賺錢的。有興趣的人可以看看前MIT教授James Simons開的文藝復興科技(Renaissance Technologies)。)世界很廣大,相較之下台灣真的是一個小小島。如同Sega的《我為什麼離開 Google》說的一樣,台灣沒有軟體產業,甚至在其他產業中也很少有軟體專業能發揮所長的舞台。我希望台灣能夠更好,但同時我也覺得每個人的眼光應該放遠放大,看向世界和未來十年二十年,而不是聚焦在台灣、中國和未來的兩三年而已。Disclaimer: 這篇文章不是要鼓勵每個人都念博士,我知道很多人對於學術研究沒有興趣和熱情(其實我也不太有,我只是喜歡打造新東西而已)。但是,眼界、研究和實作能力的培養則是每個人都能自己做的,這些才是真正影響一輩子的事情。阅读全文

做研究與寫論文

最近有幾篇頗有爭議的文章「陳鍾誠給李家同的一封公開信」「陳鍾誠給李家同的第二封公開信」,針對李家同批判他是現在學術界獨尊論文的始作俑者,並指出應該要有其他的研究產物或評鑑方法(像是寫一個作業系統、做一個CPU之類的)。雖然李家同常常講出令人啼笑皆非的話,但就這兩篇文章而言我還真覺得李家同挺無辜的,連學術界獨尊論文的事也怪到他頭上實在有點牛頭不對馬嘴。雖然我博士班還沒畢業,但我也寫過幾篇論文,也做過有上萬人使用的系統,我非常了解擅長實作不擅長寫論文在學術界的苦悶和無奈。但隨著我在MIT的時間越來越長,也對這個現象慢慢有了不同的看法。話說我很愛寫程式,遠勝於寫論文。我可以不眠不休的寫程式,但沒辦法這樣寫論文。如果我當初碩士畢業後直接去工作,就可以在任何我想去的公司愉快的全職寫程式,但到頭來我還是來念博士班了,為什麼?很簡單,我需要有個環境能讓我不計後果的做各種嘗試和試驗。我喜歡寫程式,尤其是沒人做過的程式(一直重複寫留言板和twitter client可不好玩)。做沒人做過的事雖然好玩,結果可能會出乎意料的好,但也有可能會大大的失敗 - 而這就是研究。在公司裡做工程師寫程式就不太能做這樣子的事情,因為公司要考量風險,可能會大成功的東西也意味著可能會大失敗,而大部分的公司沒辦法禁得起這種失敗,所以只好跟著別人的屁股走。MIT是個很酷的地方,歷史上有很多有名的系統都是在這裡誕生的,像是Ethernet、Emacs、GCC、LISP(語言和第一個compiler)...。如果說要在學術界動手做真正的系統,那MIT一定是世界上數一數二的地方。那麼在這個地方,博士班學生要如何畢業,教授要如何升等呢?很不幸的,答案是:寫論文。在資訊科學這領域,美國學校不像台灣獨尊SCI論文,事實上美國人大多不知道SCI是什麼東西,但不是這樣就代表美國不寫論文。在這邊搞電腦、資訊研究的,一樣要寫論文,而且只投到各子領域的一兩個頂尖會議去。(一個大家都知道的潛規則是,三篇頂尖會議的長論文=博士畢業)台灣有台灣的遊戲規則,美國也有自己的遊戲規則,但即使是MIT的系統hacker們,也擺脫不了寫論文的命運。(例如說,Richard Stallman其實有寫Emacs的論文,做PostgreSQL的Stonebraker也有一大票的POSTGRES論文)我以前覺得寫論文很痛苦,也懷疑有多少人會去看這些紙張(論文英文就叫paper,所以名符其實就是一堆紙),對我來說直接把程式寫出來讓人用似乎更能直接造福人們。我到現在其實還是這麼覺得,所以我花了很多時間把SIKULI open source,建立起一個community,並持續更新千百個跟研究完全無關的功能,目的就是讓所有人能更直接的享用到這個研究的成果。(而很不幸的是,做這些事情跟我能不能畢業沒什麼關係,但還好我老闆還是支持我的。)但同時,我也覺得論文的存在有其必要性。我認為做研究可以產出多樣化的「產品」,這產品可以是程式碼,可以是影片,或其他任何形式的媒介。而追朔到其核心,研究的產出最重要的是「想法」,也就是 "idea",而論文只是最簡單又最容易被其他人接受的傳播媒介而已。為什麼說論文有其必要性,就是因為論文是傳播想法最有效的媒介。論文的架構設計得讓人可以很容易抓到重點,也可以很容易的深入核心想法。如果寫過論文的都知道,論文的架構是死的,一定都有abstract、introduction、related work、conclusion等等,這種架構讓人能各取所需,要深讀或略讀都很容易。但如果說研究的產出是一個軟體系統,我們該從何了解這個系統的「想法」在哪呢?為了要讓一個系統達到「可用」的程度,整個系統裡面至少90%以上的程式碼都是純粹的工程產物,跟核心概念一點關係都沒有。而程式碼又是很難讀的東西,如果別人要了解這個研究的創新在哪,讀程式碼一定是不得已的最後手段。我絕對贊成做研究的人也得懂如何實作。很多好的idea其實老早在數十年前的論文就出現過了,但一直到現在都看不到,常常只是因為沒人去把它實作出來而已。做研究最難的事就是找到新的idea,如果只是學人家實作一個作業系統或是CPU,那也不過是照本宣科,沒什麼「研究」的價值和貢獻。像MIT這種強調"Mind & Hand"(手腦並用)的地方,很多教授都有很強的實作能力,但他們一手寫程式,另一隻手還是寫論文,因為他們知道這樣才能得到務實的經驗,而同時也能把這些貢獻和想法用最有效的方法傳播出去。如果你問我,「我在學術界,但我擅長寫程式,不擅長寫論文,該怎麼辦?」我覺得答案很簡單:如果你有很多創新的點子,那就開始練習寫作和英文,因為不管在什麼領域,如果你沒辦法好好的把想法傳達給別人,那也是孤掌難鳴;如果你沒有什麼點子,只是喜歡寫程式,那更簡單了,趕快quit去做工程師專心享受寫程式的時光吧。延伸閱讀:我看李家同的是與非。此文的觀點跟我很接近,所以他講過的很多東西我就不再重複了。附帶一提,最近在facebook上成立了粉絲頁,歡迎大家加入多多交流!阅读全文

GDB的妙用

今天有個同學跑來跟我求救。他說有隻重要的程式在工作站上面跑,但沒有放在screen裡面,可是Windows的鍵盤滑鼠都卡死了,有沒有辦法能重新開機(也就是關掉windows上的terminal, putty)而且讓程式能繼續跑下去..。其實我以前也遇過同樣的問題,只是一直沒去想怎麼解決,後來都習慣用screen,就自然不會遇到這問題了。可是我最近發現,其實有不少人都不知道UNIX上有screen這個好東西,於是只要跑些重要的程式,就得擺一個terminal在桌面上,而且千千萬萬不能關掉,否則跑了數天的結果就這樣白費了。今天再次碰到這個問題時,仔細想了一下,terminal關掉會讓程式中斷的關鍵在於,程式會在terminal關閉時收到SIGHUP這個signal,而不處理這個signal的結果就是結束程式。在以前還不知道screen這東西前,都得用nohup這個指令來事先攔截SIGHUP。那現在碰到的問題就是,有沒有辦法在程式執行到一半的時候,先在它收到SIGHUP之前把這signal擋下來?或是直接在它執行中修改它的程式碼,讓它忽略SIGHUP...?想在runtime時變更程式的行為,讓我馬上想到gdb這個好東西。gdb可以在程式執行到一半時,attach到它的process上,接著就能做所有gdb能做的事情..。gdb能做的當然不只是debug啦,gdb可以在runtime改變程式的執行流程和行為,還能攔截程式本來應該要收到的signal...,咦,這好像就是解答了嘛!從Debugging with GDB可以查到,只要在gdb裡輸入這樣的指令,底下的程式就不會收到SIGHUP了。handle SIGHUP nopass所以這問題的解法很簡單。
  1. 從另一台電腦連上正在跑重要程式的工作站
  2. 用ps和grep找出那個程式的pi
  3. 用gdb attach它: gdb [program] ...
阅读全文

Why is Lisp so great?

自從看完了駭客與畫家後,就開始看Common Lisp相關的書和文章。其中我最有興趣的是Paul Graham不斷提起的macro。一開始我還不了解macro到底強在哪裡,為什麼能讓Lisp如此特別,直到發現Why is Lisp so great? or Why so many parenthesis?這篇文章,才大大一驚,原來macro是這樣玩的!這篇文章舉了Haskell著名的quicksort implementation為例
qsort []     = []qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_xwhereelts_lt_x   = [y | y < - xs, y < x]elts_greq_x = [y | y<- xs, y >= x]
這份實做真的非常漂亮,短短幾行就說完了qsort。但如果用原始的Lisp語法寫起來還蠻複雜的,因為Lisp沒有提供list comprehension(Haskell的中括號)這種特殊的簡潔語法。但透過macro,就可以自己幫Lisp加上新的語法,而且完全不用動到compiler。
(defun qsort (ax)(and ax(let ((a (car ax))(x (cdr ax)))(append (qsort [y (y < - x) (< y a)])   ; A(list a)          ; B(qsort [y (y<- x) (>= y a)])))))   ; C
多麼神奇的特色啊,也難怪Lisp可以活這麼久而且永遠有許多死忠支持者..。阅读全文

Google Browser Sync

Google又有新東西了,這次是Google Browser Sync。它是一個firefox extension,可以全自動sync不同電腦間的browser設定,包括bookmark, history, cookie, saved password(註), 甚至可以把目前看的所有tabs存下來,再到另一台電腦打開..。註.連saved password都要放到google上,真是有點恐怖。雖然它號稱會用你的PIN code加密過,但真的能這麼放心的把密碼也交給google嗎?阅读全文