GDG DevFest筆記

2013年10月20日

  2013 GDG DevFest。上海東軟件園二樓。主持人陸康,也就是交大BBS上大家所熟知的康爺(areyoulookon),他曾經是Google板的板主。

  進入會場之前,原本以爲需要簽到,但實際上卻是直接領資料和禮品卡,還有餐券和飲用水,還送一個袋子。實是非常體貼。會場很大,和大的電影院差不多,容納400人沒問題。我八點半到的,Yves當時還在東昌路。

  開場主持人袁yi,播放了一段預先錄製的視頻,內容是欒躍對大家的歡迎和祝詞。主持人介紹道,活動白金贊助商谷歌,然後是七牛雲存儲,博文視點,接下來還有好多,包括創智天地,創智空間。接下來是陸康發言。陸康說到七週七語言活動,交50塊錢,給三道題,如果做出來,那麼就把錢還給你,否則就吞了發給做得出題的人。Google I/O Extended。

  Tony Chan(香港人?)講Modern Android Design。怎樣在Google Play上面做一個好的應用。競爭越來越大。質量和功能如何可以組合得更完美。相關網站Android Design in action。developer.google.com/design。Action Bar下面彈出的Navigation Drawer,類似於主菜單,用於在應用內導航。Combination。不要放兩個應用在Google Play上面,一個手機版,一個平板版。用Fragment,自適應不同設備的屏幕大小,對於手機則顯示兩個屏幕,而在平板上則可以合併在一個屏幕上。或者使用SlidingPaneLayout。通常要考慮手機、7寸平板、10寸平板。還有一種辦法是,micro reflow,比如,在平板上顯示兩列,在手機上顯示一列。或者在平板上,每個項用大圖標,手機上用小圖標。或者在平板上文本大一些(考慮到年紀大的用戶)。res/layout/*.xml可以用來配置不同設備上的佈局參數,比如margin和文本大小等。不同移動平臺的設計應該根據目標平臺做優化,比如用Android平臺,就最好用Android的原生控件,就算是從另一個平臺移植過來的程序也是這樣。

  怎樣的應用沒有辦法被Google Play推薦:沒有feature graphics、logo’s rounded corner超過5%、使用其他平臺的圖標(比如蘋果iOS的Share icon)、在UI裏面有back button(iOS按鈕)、退出的時候詢問用戶是否要退出應用(不符合Android生命週期模型;遊戲裏面back按鈕應該和暫停按鈕效果一樣)。微信、新浪微博等應用就很follow iOS的設計,所以它們不會被Google Play推薦。但是人家是大廠,耍大腕,有啥辦法捏?

  許式偉,Go語言佈道師,兩年來講了幾十場Go語言,講思維而不講語法。最小心智負擔原則:最少特性,最少驚異,最少犯錯機會。Go, Next Java? No, Next C! less is exponentially more. 最對胃口的並行支持。類型系統的綱:interface。OOP:可以爲struct定義方法,簡化的符號訪問權限控制(大寫表示公開,小寫表示私有),顯式的this指針,包內可以訪問私有成員(類似於C#)。函數多返回值(類似於ABAP;Go使用最後一個返回值代表錯誤對象),內置error類型、defer。功能內聚,強大的組合(composition,而不是繼承)能力。消除了堆和棧的邊界(自動分配)。最友善的C語言支持(類似於C#的p-invoke,go還可以內嵌C代碼)。完整的演示文稿下載:http://open.qiniudn.com/where-can-you-use-golang.pdf

  Go語言支持連接,使用Pipeline,組件與組件之間的連接方式。以軟件工程爲目的的語言設計,有那麼一點點痞子氣(並不怎麼遵守學術派觀點)。主戰場實際上是服務端開發。將來會蠶食其他方面。C語言因爲Unix而興起,Go語言因爲雲計算而興起。

  雲計算:服務外包代替技術外包。互聯網服務的技術挑戰越來越大。聯網的人越來越多,人均的上網時間也越來越長。服務器壓力今非昔比。富媒體越來越取代文字來成爲表達的手段。運維難度也越來越大。競爭越來越激烈,巨頭橫行,大量的同質化產品(一堆公司會做同一個有用的點子),如何讓自己跑得比別人快,創業者需要善假於物。所以我們需要強悍的服務器!(2007年用過Erlang,雲計算剛剛興起)。

  服務器的核心問題:高併發(如何提高I/O併發,如何降低鎖粒度)。一、異步回調模型。例子:Node.js。二、輕量級進程模型(提高I/O的方法就是讓更多人幹活,也就是多個輕量級進程,讓設備忙起來)。例子:Golang。三、混合型。例子:Erlang,一開始以爲它是輕量級進程模型,但發現它在高併發場合需要異步回調才能充分利用硬件。

  鎖。Erlang爲什麼不需要鎖?不是因爲函數式編程語言沒有變量,而是因爲,它串行化處理。go語言的goroutine不是串行化執行的--即使設置最大線程數爲1也不能避免用戶模式下goroutine的併發(多任務調度),所以仍然需要鎖,不過是用戶模式的鎖。鎖最大的問題是難以控制,不小心就忘記解鎖。次要問題就是,它是性能殺手,因爲加了鎖了就串行化了。但是,相對於消息等其他通信原語來說,要快得多。就算是原子操作(interlocked sth.)也只比鎖快一點。網上有人用go語言的channel來實現鎖,這是很錯誤的做法。

  sync.RWMutex(讀寫鎖)。[]sync.Mutex(鎖數組,適合數據分區)。除了七牛之外,現在豆瓣用go。美團用go。

  go和其他語言不一樣的地方是,goroutine實際上是線程池加上協程的模型。這樣它的可伸縮性更加好。一般操作系統能支持幾百個線程已經有點累了,幾千個則是極限了。所以增加協程,在用戶模式調度。它的實現會有I/O被動調度和搶佔式調度兩種。

  午飯四菜一湯,咖喱牛肉很多,魚也不少,青菜,木耳炒山藥,酸辣湯,還有酸奶和香蕉。真的很不錯哦~~

  午飯遇到兩個老兄在聊天,一個是VMware的,一個是國有銀行金融類企業的(怎麼聽着名字叫摩根???),做產品設計。VMware老兄說他那邊是工程師文化,我問他是否認識一位叫高博的同事,他說不認識(悲哀~~)。國企也加班,有一次搞到凌晨二點,而且,大領導說要做什麼就得做什麼,直接越級要求做某些功能,發佈日期隨心定,不顧客觀規律,有一次把發佈日期定在5月28日,說是黃道吉日,而這產品不僅要演示,還要讓記者們實際操作一下,這麼一來,基本的功能就必須做好,但是根本來不及,最後只能延期兩次,到七月才做好。一些八卦:VMware兄認出對面那國企帥哥的時候,錯把他當作另一個人了,原來那人也在同一家公司工作過,而且這兩人是兄弟,長得很像。另外,國企哥說,張江高斯路附近有一個核物理加速器,底樓住戶會受到影響。

  外面有些贊助公司的推廣,包括slideidea(www.sld.im)和觸寶垃圾電話識別軟件和手機輸入法。

  王淮做主持人。龐小偉,e都市的CEO,被投資人弄得不爽了,就不幹了。產品和技術是核心。王建碩,2005年創辦客齊集(2008改名爲百姓網)。平時就拿代碼來娛樂,有時把開源的一些代碼當小說來讀。創業的比喻:一開始就像火車站旁邊開飯店,不需要太關注質量,但到後來就接近小區模式,需要回頭客。比如說,流氓軟件越來越少了,就算有也比較高級了,需要把功能做好了,不像以前用戶很容易被騙。產品在早期最好就引入用戶,這樣可以讓產品反饋的鏈條縮短。

  創業的時候需要評估生意到底有多大。要和合夥人一起討論到底要投資哪個方向。投資其實是很平等的過程。如果談判了很多投資人,但大家都沒啥興趣,那麼就是項目的問題。反過來,項目是好項目,那麼就得選投資者。選的時候要注意,不要只是看誰給的錢多,就像結婚一樣,找了錢最多的,期望很大,要是結了婚不幸福了,那就反而失望很大。如果投資人問出來的問題都不對路,那就不要談了。最好的老婆對你的事業上會有很大幫助,中等的老婆不過問但也不添亂,差的老婆就給你添亂,投資者也是這樣。投資人要有一個真正當好老婆的心態。王建碩說,VC要有服務精神,而不是像上級一樣判斷公司做得是好還是不好。

  偉大的產品經理並不只是思考產品的交互和功能,還要考慮產品的市場將會是怎樣。有時聽到創業公司說,他們找不到人,但我(龐小偉)覺得關鍵是你花了多少時間,多麼瘋狂地去招人。(王建碩)技術人員和非技術人員的溝通會有障礙,因爲技術人員的思路問題。但是要考慮我們的公司到底要做幾年,到底我們公司是人心本善還是人心本惡,什麼的,找合夥人的話,一定要長遠目標要一致,小地方的看法則越不一樣越好。(王淮)合夥人要日久生情而不要一見鍾情。(王建碩)我非常認同這個觀點,可能你的合夥人一開始是技術最牛的,但是公司運營長了以後總會招到技術更牛的人。

  龐小偉:創始人可能是多個,而時間久了以後,CEO的地位會越來越重要,而第二、第三個合夥人則知道CEO的所有弱點,要是他們對這種情況反感的話,公司就會有危險。所以這個關過了,公司纔會長久地發展下去。

  王建碩:大公司要能持續地做出好的產品,才能戰勝小公司。否則,他們就必須去買那些做得更好的小公司(讓我想起了SAP和SuccessFactors)。

  初創的公司怎樣提高影響力:(王建碩)首先要問自己,爲什麼需要影響力。有一些媒體,小的時候需要影響力。但有的比如說做企業級應用的,關鍵則要把產品做好。如果真的需要,那麼就可以通過推廣啊、廣告什麼的來做推廣。龐小偉:與其天天不斷地去檢查page rank,不如問自己是否做出來的東西解決了用戶的問題,是否滿足用戶的需求。另外就是用戶羣在哪裏,就去哪裏推廣。

  像百姓網這樣,王建碩需要花相當一部分時間來思考半年內公司應該怎樣來發展。龐小偉:創始人時刻要關心競爭對手的動向,新的技術、新的功能等等。另外就是要想應該怎樣管理,固然網上能找到很多這方面的資料,但是信息過多以後就形成了很多噪聲,所以要形成自己的方法,慢慢建立起來自我。王淮:我兩週讀一本書,而不是碎片化的閱讀。因爲碎片化的閱讀無法引發深度的思考。

  14:30茶歇時間,有蛋糕、小番茄、薯片、提子等小食,以及可樂、雪碧等汽水。和王建碩先生稍微聊了兩句。我還記得2001年他來交大Microsoft Club講.NET,播放了一段有關smart phone的搞笑視頻,美國大街,某人摔倒了,骨折了,他馬上在地面上用smart phone通過.NET平臺聯繫了他的私人醫生。私人醫生很快把他救了,然後通過.NET平臺查到了他的歷史病歷。最後經過好久,出院了,剛一出院,到了大街上又摔倒了。。。還說到西雅圖地震,那年西雅圖地震,甚至有的服務器摔到地上。但硬盤居然沒壞(讓我對硬盤的抗震性能又刮目相看)。。。還說到UTF-8,之所以用UTF-8而不是UCS-2的原因是,UTF-8裏面一個英文字母佔一個字節,而UCS-2(或UTF-16)裏面一個英文字符佔兩個字節,所以西方人覺得不合算。最後我還提了個問題,便得到了一套Visual Studio .NET Beta 1光盤(第一版.NET的前身哦~~)和DevDays 2000光盤,在那上面認識了Steve Ballmer。。。

  接下來是快速演講。第一個題目:關於App KPI那點兒事。Testin雲測試真不錯,幫助App開發者確定應用閃退、崩潰的場景,修復之後第二日用戶留存率從32%上升到45%。一、有30%的遊戲在第一次上線就無法成功運行。二、資源包下載失敗。比如假定超過30秒就判斷超時,但有些地方的手機網絡的確速度很慢,要兼容更長的超時時間才行;另一方面,用戶卻沒有等待超過8秒的耐心。所以要從下載速度和容錯兩方面來提高。三、留存率低。雖然其他因素總會導致低的留存率,但是否滿足用戶需求,並且質量足夠好,則是首要的兩個條件。要主動探求用戶的感受。

  第二個題目:Smali Injection可以用於反編譯一個Android程序並在框架層注入代碼。一個應用場景是,改造一個應用的Action Bar。

  第三個題目:英語流利說App推廣:這個應用的特色是它有打分功能。現在已有數百萬用戶。還有詞典功能,採用英國劍橋大學官方提供的詞典。

  第四個題目:Angular框架。www.angulargirl.com。可以用於驗證一個人是不是男的?當然不是啦,而是可用來綁定數據到網頁,以及驗證用戶的輸入。主要是javascript實現的,但實際上是一個後臺和前臺組合的框架。做了演示,效果不錯。還能自定義指令。

  第五個:xx酒店特價(沒有PPT,沒聽清是什麼名字)。Tip:當你有一個好的想法的時候,就一定要去驗證它。

  第六個:火花電視創始人。火花追劇神器。要討論API設計。API一旦上線就無法再調整(就是嘛,想當年Windows API花了多少年還不能擺脫非Unicode程序)。只能重構實現,不能修改接口。必須兼容這個設計,即使糟糕。所以設計的規範和原則很重要。RESTful API:GET /series,GET /series/:seriesId/;PUT;DELETE。實際場景下可能會有嵌套的資源等更復雜的情況。爲什麼選擇RESTful,因爲這保證API是從資源出發而不是純粹從需求出發設計的API。Single Responsibility;拒絕頁面粒度的API(而拆分得更明確;比如返回帖子,就只返回帖子正文;至於帖子上的回覆則通過別的API來獲取);Batch Request(用來提高性能,同時解決拆分API帶來的性能問題)。TDD(測試驅動開發),能驗證設計的合理性,而且可以move fast, don’t break things(借鑑FaceBook)。CoralAPI: unstable => StoneAPI: stable,實際上維護的是兩套API,先測試(可能包括公測),等到接口穩定了再整合到穩定API。

  第七個:Ucloud。騰訊、百度、阿里等自建雲,七牛、又拍等雲存儲,以及一些其他雲廠商提供的公有云。或者私有云,習慣用OpenStack。Ucloud提供雲服務宿納以及運維服務。現在有一些明星用戶,包括英語流利說和蜻蜓Fm還有36Kr。

  第八個:SlideIdea的Echo。SlideIdea changes the way you create and demonstrate slides. PowerPoint and KeyNote is not designed to take advantage of mobile technology, or cloud technology (but now SkyDrive is emerging). SlideIdea–you can use your phone to interact with my presentation. You can ask questions, interact with your tablet, etc. www.sld.im/64659. There can be a conversation between the speaker and the audience. Also “Vote” feature. You no longer need to use e-mail to share a slide. Fast and Easy slide creation. On a tablet, if you use PPT, you’ll take 2-3 minutes to create a slide, but with SlideIdea you will use only 30secs (experience optimized for tablet).

  第九個:觸寶的王jian先生。觸寶輸入法會在手機連接到熱點的時候抓緊更新詞庫,以優化用戶體驗。後來的熱詞更新功能能更快地推送熱詞,數據量小而頻度很高,比完整的詞庫更新要更快更省流量。再後來就做了雲輸入功能,讓輸入結果更準確。

  微博互動抽獎!

  獵豹瀏覽器的曾崴先生帶來“移動瀏覽器視頻的挑戰”。他曾經是金山毒霸的參與者之一。Robbie身邊就有兩個人用獵豹瀏覽器,看上去是IE和FireFox雙核心,而且還有很多自己的特色,遠不止是一個IE的外殼,不過這次講的是手機版。市面上手機的瀏覽器:UC(塞班時代、省流量)、QQ(閱讀)、海豚(社交)、百度(資源整合)、Chrome(功能強大、性能優異、通用性強)。用戶場景:應急搜索、資訊、閱讀、圖片瀏覽。手機體驗不夠完美:性能弱,屏幕小,速度慢,網絡不穩定,專門適配手機的網站:稀少。有一些瀏覽器有文本閱讀模式,能對網頁做一些優化。用戶纔不理會技術限制,他們需要和PC上一樣好的體驗。更進一步,想要有炫的效果,還要完成網上支付、能夠在線看視頻。目前用戶經常是從電腦上下載視頻,然後再拷到手機上,再看。所以手機上直接看視頻的功能,用戶希望有,金山希望做。挑戰:1. 格式衆多;不像視頻網站自己開發的應用,可以爲自己的視頻做優化,通用播放器很難做;2. 專門爲PC做的網頁上面的播放按鈕等做得在手機上看起來很小。各網站爲了差異化,各種奇葩調用(有的是爲了避免用戶自行下載視頻)。不同於視頻App,瀏覽器沒有視頻的元數據,很難實現劇集、連播、清晰度切換等特性。Android又原生不支持Flash(Surface RT倒支持)。

  方案:劇集的連續播放:先播放劇集,同時在後臺查詢劇集信息,如果查到,那麼就顯示劇集播放面板。而這個劇集分析引擎,有兩套路子:一是本地分析,通過分析目標網站的信息;二是雲端分析,在金山的服務器上分析,好處在於分析程序更新快,一旦目標網站改版,能較快地調整和適應。最後合併結果,展示儘可能全的信息。雲端分析引擎還能查找同一連續劇在不同網站之間的信息,這樣可以在當前網站沒有最新的集數的時候,可以找到別的擁有同樣電視劇且有下一集的網站。

  清晰度:平時可能手機配置比較好,連接到WiFi的時候希望看高清乃至超清,但是連接到3G網絡時一般希望流暢。一般如果只是拿到Flash播放器的地址,則沒有視頻源,所以需要找到視頻源信息。同樣經過本地和雲端兩個分析引擎。

  獵豹在加載視頻網頁時,會自動檢查視頻信息,並自動生成大菜單(方便觸摸的大小,而不是原網頁縮小後在手機屏上看起來很小很小的按鈕),以方便用戶。而且,針對沒有版權的影片,還提供離線緩存機制。

  視頻前通常會有廣告,而採用獵豹瀏覽器之後,廣告將不再顯示,這會影響視頻網站的收入。金山也在和各個視頻網站聯繫,以合作解決這個問題。獵豹固然也有其他特色,比如搶火車票,但是視頻是最大的切入點。

發佈了112 篇原創文章 · 獲贊 10 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章