1. 程式人生 > >《App研發錄》面世

《App研發錄》面世

  古者富貴而名滅,不可勝記,唯倜儻非常之人稱焉。故西伯拘而演《周易》,屈原放逐,乃賦《離騷》。文人雅士一次次的譜寫著千古絕唱,而我亦不能免俗,也要附庸風雅,寫一部前不見古人、後不見來者的經典之作。

  於是,歷時一年,嘔心瀝血,結合自身3年來從事App領域的一線實戰經驗,再輔之以從事軟體行業十餘載的奇技淫巧,寫下這洋洋灑灑三百多頁十幾萬字。初稿完成後,就如同和氏璧般,竟找不到出版社願意出版,而我又不肯妥協,去寫那些無關痛癢的語法介紹和UI佈局等入門級章節。就在這時,杜勇幫我介紹了機械工業出版社的吳怡老師,促成了這本書的出版。

  臨近出版之際,約到了周鴻禕和劉江、屠毅敏等人的序言。劉江老師是帶我進入圖書出版的引路人,回想起來也是八年前的事了;而屠毅敏則是WaxPatch的發明者,全世界第一個解決了iOS熱修復線上bug的人(JSPatch要晚好幾年)。說起周鴻禕,那是我在某個微信群誤打誤撞認識的,他欣賞我一條路走到黑的研究精神,而我則欣賞他的個性張揚。現實中我們從未見過面,前幾天我去360給他送樣書,保安不讓進,我也只好鎩羽而歸。

  最後,附上本書的前言,以饗讀者:

皇皇三十載,書劍兩無成 

  在你面前娓娓而談的我,曾經是一位技術宅男。我寫了6年的技術部落格,500多篇技術文章。十年程式設計生涯,我學習了.NET的所有技術,但是從微軟出來,踏上網際網路這條路,卻發現自己還是小學生水平,當時恰逢三十而立之年,感慨自己多年來一事無成,於是又開始了新一輪的學習。選擇移動網際網路這個方向,是因為這個領域所有人都是從零開始,大家都是摸索著做,初期沒有高低上下之分。

  在此期間,我做過Window Phone的App,學會了Android和iOS,慢慢由二把刀水平升級到如今的著書立說,本來我想寫的是iOS框架設計,因為當時這方面的經驗積累會更多一些,2013年的時候我在部落格上寫了一系列這方面的文章,可惜沒有寫完。如今這本書是以Android為主,但是框架設計的思想是和iOS一致的。

  作為程式設計師,不寫本書流傳於世,貌似對不起這個職業。2008年的時候我就想寫,可那時候積累不夠,所知所會多是從書本上看到的,所以沒敢動筆,而是選擇翻譯了一本書《MSIL權威指南》。翻譯途中發現,我只能老老實實地按照原文翻譯,而不能有所發揮。我渴望能有一個地方,天馬行空地將自己的風格淋漓盡致地表現出來,在寫這本書之前,只有我的技術部落格。

  終於給了自己一個交代,東隅已逝,桑榆非晚。

文章本天成,妙手偶得之

  這是一本前後風格迥異的書,以至於完稿後,不知道該給本書起一個什麼樣的書名。只希望各位讀者看過之後能得到一些啟示,我就心滿意足了。

  下面介紹一下本書的章節概要。本書分為三個部分共計12章。

  第1章講重構。這是後續3章的基礎。先別急著看其他章節,先看一下這一章介紹的內容,你的專案是否都做到了。

  第2章講網路底層封裝。各個公司都對App的網路通訊進行了封裝,但都稍顯臃腫。我介紹的這套網路框架比較靈巧,而且擺脫了AsyncTask的束縛,可以在底層或上層快速擴充套件新的功能。這樣講多少有些自賣自誇,好不好還是要聽讀者的反饋,建議在新的App上使用。

  第3章講App中一些經典的場景設計,比如說城市列表的增量更新、快取的設計、App與HTML5的互動、全域性變數的使用。對於這些場景,各位讀者是否有似曾相識的感覺,是否能從我的解決方案中產生共鳴?

  第4章介紹Android的命名規範和編碼規範。網上的各種規範多如牛毛,但我們不能直接拿來就使用,要有批判地繼承吸收,要總結出適合自己團隊的規範。所以,即使是我這章內容,也請各位讀者有選擇地採納。我寫這一章的目的,就是要強調“無規矩不成方圓”,程式碼亦如是。

  第5章和第6章組成了Android崩潰分析三部曲。寫這本書用了一年,其中有半年多時間花在這兩章上。一方面,要不斷優化自己的演算法,訓練機器對崩潰進行分類;另一方面,則是對八十多種線上崩潰追根溯源,找到其真正的原因。

  第7章講Android中的程式碼混淆。本不該有這一章,只是在工作中發現網上關於ProGuard的介紹大都隻言片語。官方倒是有一份白皮書,但是針對Android的介紹卻不是很多,於是便寫了這章,系統而全面地介紹了在Android中使用ProGuard的理論和實踐。

  第8章講持續整合(CI)。十年傳統軟體的經驗,使我在這方面得心應手。這一章所要解決的是,如何把傳統軟體的思想遷移到App上。

  第9章講App競品分析,是研究了市場上幾十款著名App並參閱了大量技術文章後寫出的。之前積累了十年的軟體研發經驗,這時極大地幫助了我。

  第10章講專案管理,是為App量身打造的敏捷過程,是我在團隊中一直堅持使用的開發模式。App一般2周發一次版本,迭代週期非常快,適合用敏捷開發模式。

  第11章講日常工作中的問題解決辦法。那是在一段刀尖上舔血的日子中總結出的辦法,那時每天都在戰戰兢兢中度過,有問題要在最短時間內查詢到原因並儘可能修復;那也是個人能力提升最快的一段時光,每一次成功解決問題都伴隨著個人的成長。

  第12章講App團隊建設。我是一個孔雀型性格的老闆,所以我的團隊中多是外向型的人,或者說,把各種悶騷型技術宅男改造成明騷;我是從技術社群走出來的,所以我會推崇技術分享,關心每個人的成長;我有8年軟體公司的工作經驗,所以我擅長寫文件、畫流程圖,以確保一切盡在掌握之中。有這樣一位奇葩老闆,對面的你,還不快到我的碗裡來,我的郵箱是[email protected],我的團隊,期待你的加入。

心如猛虎,細嗅薔薇

  話說,我也是無意間踏上程式設計這條道路的。如果不是在大三實在學不明白實變函式這門課的話,我現在也許是一個數學家,或者和我的那些同學一樣做操盤手或是二級市場。

  我真正的愛好是看書,最初是資治通鑑、二十四史,後來發現在飯桌上說這些會被師弟師妹們當做怪物,於是按照中文系同學的建議翻看張愛玲、王小波的小說,讀梁實秋的隨筆。在復旦的四年時光,薰出了一身的“臭毛病”,比如說看著夜空中的月亮會莫名其妙地流眼淚,會喜歡喝奶茶並且挑剔珍珠的口感。

  不要以為程式設計師只會寫程式碼。程式設計師做烘焙絕對是逆天的,因為這用到軟體學中的設計模式,我也曾研發出失敗的甜品,做餅乾時把黃油錯用成了淡奶油,然後把烤得硬邦邦的餅乾第二天拿給同事們吃。

  我涉及的領域還有很多,比如煮咖啡、唱K、看老電影,都是在程式設計技術到了一定瓶頸後學會的,每一類都有很深的學問。不要一門心思地看程式碼,生活能教會我們很多,然後反過來讓我們對程式設計有更深刻的認識。

  心若有桃園,何處不是水雲間。

會當凌絕頂,一覽眾山小

  如果後續還有第二卷,我希望是講資料驅動產品。就在本書寫作期間,我的思想發生了一次昇華,那是在2015年初的一個雪夜,我完成了從糾結於寫程式碼的方法到放眼於資料驅動產品的轉變。這也是這本書前面程式碼很多,越到後面程式碼越少的原因。

  資料驅動產品是未來十年的戰略佈局。之前,我們過多地關注於寫程式碼的方法了,卻始終搞不清使用者是否願意為我們辛辛苦苦做出來的產品買單,技術人員不知道,產品人員更不知道。產品人員需要技術人員提供工具來幫助他們進行分析,比如說ABTest,比如說精準推送平臺,比如說使用者畫像,而我們檢查自己的程式碼,卻發現連PV和UV都不能確保準確。

  這也是我接下來的研究和工作方向。

相關推薦

App研發面世

  古者富貴而名滅,不可勝記,唯倜儻非常之人稱焉。故西伯拘而演《周易》,屈原放逐,乃賦《離騷》。文人雅士一次次的譜寫著千古絕唱,而我亦不能免俗,也要附庸風雅,寫一部前不見古人、後不見來者的經典之作。   於是,歷時一年,嘔心瀝血,結合自身3年來從事App領域的一線實戰經驗,再輔之以從事軟體行業十餘載的奇技淫

APP研發》筆記

最近兩天在專案不忙的時候讀了《APP研發錄》,雖然是看的PDF版,但還是受益匪淺,由於時間關係,還沒有對其中的問題進行demo驗證, 僅對一些重要內容做了筆記,現將筆記貼出來與大家共同學習,如果有問題,大家可以留言或私信。在今後的額閱讀中,再對筆記的內容進行補充說明。 面

App研發 架構設計 Crash分析和App競品技術分析

第1章原始碼:  1.1 重新規劃Android專案結構  1.1.zip  1.2 為Activity定義新的生命週期 1.2.zip  1.3 統一事件程式設計模型      1.3.zip  1.5 Adapter模板   1.5.zip  1.6 型別安全轉換函式   1.6.zip  第2章原

App研發讀後總結(二)

App開發中高階技巧 2.1  crash 異常收集與統計,作者在書中介紹瞭如何收集crash 到資料庫,如何對大量crash資訊進行去重,如何生成crash報表,如何將crash 自動分配給開發人員提供一整套解決方案。 2.2 作者花了大量時間,列舉出100多個cras

App研發》讀書筆記

這本書基本上涵蓋了移動開發中常見的關注點,之所以用關注點而不用技術點這個詞是因為這本書並沒有講到具體的技術實現,但提供了行之有效的解決方案。讀這本書的時候非常有感觸,它很多的框架設計和解決方案與我

讀書筆記App研發--資料快取設計

讀書筆記App研發錄–資料快取設計 標籤(空格分隔): 資料快取 android 優化 資料快取策略 在2G和3G網路狀態下,MobileApi訪問速度過慢,會導致不好的使用者體驗。網路端的資料接受的限制主要是傳輸速度的限制。 策略 減少Mo

App研發》 原始碼

第1章原始碼:  1.1 重新規劃Android專案結構  1.1.zip  1.2 為Activity定義新的生命週期 1.2.zip  1.3 統一事件程式設計模型      1.3.zip  1.5 Adapter模板   1.5.zip  1.6 型別安全轉換函式   1.6.zip 

App 研發、架構設計、Crash分析和競品技術分析------讀書筆記(第二章)

網路底層框架設計 1、不要自己定義網路請求框架,網路層不要使用AsyncTask 2、在網路返回資料Response的應該有一個規範的格式 { "isError":true, "errorType":1, "errorMessa

APP研發》讀書筆記(1、重構)

1、重新規劃Android專案結構 將主專案中的類分門別類的進行劃分,放置在各種包中 詳細介紹如下: activity:所有的activity放在同一個包中,細分的話,將不同模組的activity劃分到不同的包下。 adapter:將所有的介面卡放在一塊

APP研發讀書筆記:網路底層框架設計

一.統一響應實體類Response      我們一般採用JSON作為API返回結果,資料格式一般為: { "errorCode":0, "errorMessage":""; "res

APP研發》讀記(二)

##第三章:經典場景設計 ###圖片快取設計: 圖片快取的出現是為了避免出現OOM問題,根據需要對圖片的載入進行一些壓縮和優化,它主要完成三個任務: 圖片的快取,可以有效的減少對於流量的消耗,優化使用者體驗 圖片的壓縮載入,降低載入大圖時出現OOM的機率

架構設計之APP研發學習筆記

一、APP研發錄總結 1、重構的憂傷 如果版本發行後很短的時間內,就需要對其進行重構,除了小部分其他原因外,最重要的只能說是程式碼寫的爛,架構設計不夠靈活,導致耦合度很高。 要是非得要做重構,必須充分考慮現有資源,在非極端情況下,可

App狀態維持

情況 同時 ken .com 登錄 ron nsh 認證 一段 轉載地址:http://www.jianshu.com/p/4b6b04244773 目前APP大都支持長登錄,就是用戶登錄一次後,如果用戶沒有主動註銷、清除APP緩存數據或卸載APP,就在一段時間

Tp5框架 關於Apptoken唯一加密算法

function Nid ati gin plog web 加密算 login set web登錄靠的是cookies裏的sessionid來區分唯一性。app登錄靠的是token唯一性。 個人針對token加密的筆錄: public static function se

告別加班 移動APP研發提速利器之EMAS跨平臺解決方案

又到週末了,大家手頭的工作完成的怎麼樣啦?還沒有完成的繼續加油鴨!想要告別加班,給大家推薦一個移動APP研發提速利器。本文根據2018杭州雲棲大會移動研發平臺EMAS專場,阿里巴巴產品專家言沛的主題演講《移動APP研發提速利器之EMAS跨平臺解決方案》整理成文。 在座各位應該都是移動APP研發負責人,大

如何合理地設計APP頁——視覺篇

應用 梳理 運用 都是 什麽 要去 一點 樣式 思考 一、怎麽理解登錄頁? 每一產品app都會有一個登錄頁面,它是產品第一次接觸用戶的頁面,也是第一個傳遞信息給用戶的媒介,由此可見它非常重要的,作為一個招牌或者是門面,一個好的登錄頁往往會給用戶留下深刻印象,無論是界面視覺表

線上聊天App研發說明(android學習總結)

初識android確定學習android之後,開始動手,跟之前做過android的同事,要了開發環境和一本電子書《深入淺出Android--Google手持裝置應用程式設計》。書很薄只有一百多頁,週六用一天時間在家一邊看一邊敲例子,一天下來,已經可以寫個身高體重BMI計算的了

app性能測試【通過loadrunner制】

端口 dash rip 路徑 tar des use 壓測 solution 隨著智能手機近年來的快速增長,從遊戲娛樂到移動辦公的各式各樣的手機APP軟件滲透到我們的生活中,對於大型的手機APP測試不僅要關註它的功能性、易用性還要關註它的性能,最近發現LoadRunner1

iOS 關於啟動app循環播放視頻功能(常用於登時)

循環播放 tar com hang 視頻 ... 應用 需要 ios 摘自:http://www.jianshu.com/p/85786fce9234 附上DEMO的地址需要的話可以看一下:https://github.com/zhangyqyx/startMovie

【轉】關於loadrunner11制手機app腳本的配置問題

描述 環境準備 mob 圖片 進行 and 如果 步驟 ted http://www.cnblogs.com/qianjin100/articles/6293282.html 公司需要進行性能測試,服務器是web,但客戶端用手機app。 因目前網上最新只有load