記錄參加QCon2017北京站的心得

若有侵權,請告知做者刪除。scottzg@126.com

QCon
很榮幸參加QCon全球軟件開發大會,這裏特別感謝咱們部門的總經理,也是《互聯網廣告算法和系統實踐》此書的做者王勇睿。由於他我纔有此次參會機會參加此次軟件開發大會。
接下來,我將從如下幾點來撰寫這篇文章:html

  1. 什麼是QCon?
  2. 我參加的專題演講有哪些?
  3. 我在QCon大會上學習到了什麼?
1.什麼是QCon?

QCon是由InfoQ主辦的全球頂級技術盛會,每一年在倫敦、北京、東京、紐約、聖保羅、上海、舊金山召開。自2017年3月份首次舉辦以來,已有超過萬名高級技術人員參加過QCon大會。QCon內容源於實踐並面向社區,演講嘉賓依據熱點話題,面向5年以上工做經驗的技術團隊負責人、架構師、工程總監、高級開發人員分享技術創新和最佳實踐。
北京QCon2017是在國家會議中心舉辦,時間爲:2017年4月16日—18日。git

2.我參加的專題研究有哪些?

因爲時間緣由,我是最後一天去的QCon。早上8:30起牀,而後坐地鐵到了國家會議中心。而後開始了參會學習。如下是參會內容:github

Part 1.《Software Performance Analytics: Past,Present and Future》

演講人是Kingsum,來自阿里,是阿里巴巴基建服務首席專家。主要介紹的是軟件性能分析:過去,如今和將來。
多是本身英文差的緣由,他演講的過程當中常常出現各類英文,因此有的時候沒有聽太懂。(學習英文很重要)
他介紹了一個好的程序,可是有一下幾點會影響或者制約其功能:算法

  • Software doesn’t scale
  • Hardware is too slow
  • Tuning software doesn’t work
  • Tuning software in the data center is difficult
    這個Part就這麼多了,講的過高深,表示沒有聽懂。
Part 2.《代碼未寫,漏洞已出–談談設計不當致使的安全問題》

演講人是於暘(TK老師),他是騰訊玄武實驗室總監。主要介紹了:數據庫

  • 設計不當致使的漏洞。
    設計分爲單點設計和多點耦合。舉個例子來講,單點設計就是隻設計一個功能,多點耦合就是多個功能組合在一塊兒去實現某個新的功能。也許一個功能的設計是沒問題的,也不會出現錯誤,可是若是多個沒有問題的功能組合成一個新的功能,因爲耦合也許就會出現漏洞。
    就拿相似購物類的系統,支付系統和交易系統自己他們是沒有任何漏洞可言的。可是當咱們將他們組合使用的時候就容易產生問題。好比咱們在交易的時候手動將交易金額改寫,100元改爲1元,支付系統不會校驗錢數,只會告訴用戶是否支付成功,因此當交易的時候,交易系統收到了支付系統返回的成功就會提示用戶購買商品成功。這樣的話你就用1元買了100元的商品。比較靠譜的辦法就是在支付系統成功以後返回給交易系統成功再加上支付金額。這樣就能避免這個漏洞了。
  • 實現不當致使的漏洞。
    舉個例子,對比兩個字符串相等的方法,在對比對應位的字符是否相等時,咱們也許這樣來判斷:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public bool isEqual(String s1,String s2) {
    if (s1.length != s2.length) {
    return false;
    }
    for(int i=0;i<s1.length;i++) {
    if (s1[i] != s2[i]) {
    return false;
    }
    }
    return true;
    }

這裏在對比s1[i]與s2[i]不相等的時候(類代碼,也許不能運行),攻擊者可能會在for循環作事情,好比黑客經過某種攻擊讓代碼返回true,那麼就算是兩個不相等的字符串也會返回true,可是這裏面有一點咱們會忽略,那就是時間維度。通常來講,若是對比兩個字符串最慢只須要1s,可是被黑客攻擊的代碼因爲須要進行破解攻擊,因此消耗的時間也會長一點,因此若是咱們的代碼在實現的過程當中考慮到時間,那麼代碼就會更健壯,不容易攻破。
TK老師也說明了這一點:時間是很容易被忽略的維度。編程

  • 使用不當致使的漏洞。
    這裏TK老師還介紹了他們用掃描器作實驗,掃描的的初衷就是讓支付和讀取數據方便,可是它有的時候能夠作爲一個外接鍵盤。將控制電腦的指令裝載在二維碼或者條形碼裏面,而後經過掃碼器就可以控制電腦。甚至也能夠利用激光燈,經過激光燈遠程照射讓掃描器識別,進而控制電腦。
    另外還有運營商的「短信保管箱」、」自助換卡」等功能,因爲涉及不當也在推出一段之間以後被取消。這裏的短信保管箱就是運營商將短信同步到雲裏面,而後就算用戶手機再也不身邊也能夠經過登陸雲查看短信。可是業界公認手機驗證碼做爲安全驗證,若是用戶的短信存儲雲密碼被盜,那麼用戶的短信安全驗證也就失去了做用。
    期間還說了一些漏洞問題,好比badbarcode問題、badtunnel問題等等。
    一句話總結:是故聖人不治已病治未病,不治已亂治未亂。
Part3.《軟件開發之禪》

演講人是蔡超,Amzaon(中國)技術團隊的首席架構師。主要介紹瞭如下幾點:安全

  • 形似與神似
    這裏主要講了MVC。其實還有不少其餘的架構:MVVM、MVP等等,其實他們的本質都是MVC的衍生。咱們要在使用的過程當中發現其本質的東西,也要發現其差別。
  • 教條與變通
    這裏我聽到最多的是黑板模式,所謂黑板模式,就是應用中的多種不一樣數據處理邏輯相互影響和協同完成數據分析處理,就好像多位不一樣的專家在同一黑板上交流思想,每一個轉件均可以得到別的專家寫在黑板上的信息,同時也能夠用本身的分析去更新黑板上的信息,從而影響其餘專家。比較典型的使用就是數據庫:數據庫充當黑板,不一樣的應用共享數據庫中的信息,而且能夠更新數據信息。是最多見的實現方式。
  • 優點與劣勢
    一個新的技術出現以後,它可能會給你們帶來方便,進而去解決那些如今已知技術沒法解決的問題。可是咱們必定要明白:使用新技術的同時必定要考慮到新技術所帶來的問題。只有將其研究以後,而後將其所帶來的其餘問題解決,這樣才能夠嘗試去使用,以避免在之後的過程當中遇到問題再去想解決方法。要平衡使用中的矛盾。
  • 數據與模型
  • 簡單與容易

咱們遇到問題的時候,想到的不是用如何牛逼的方法去解決,而是從問題的自己去開始研究,從最簡單的技術開始,必定要找到最簡單、最有效、最實用的方法去解決。
在咱們學習或者讀書的時候,咱們應該在學習的時候先問一下本身:我學的東西要解決的問題是什麼? 當咱們學習完以後,要想一想學過以後是否解決了咱們遇到的問題。
總之這場分享聽下來以後,給個人感受就是必定要發現事物的本質,用最簡單、最有效、最實用的方法去解決問題,而不是多繞彎路。架構

Part4.《基於移動的快速工程模式》

演講人是徐大芮(子之),淘寶無線技術專家。內容主要是如何基於移動,應用去作快速開發。
主要是爲了應對手淘的快速開發,好比馬老闆說淘寶首頁來個發紅包,那麼就須要及時迅速的去完成這個需求。而他們開發團隊僅僅用了幾個小時就將此需求上線。
在應對業務發展快、流量集中、交互複雜的狀況下(過山車),如何快速開發完成併成功上線是一個很值得研究的問題。
因此他們就經過模板配置、插件組裝的方式來讓研發提速。好比說淘寶的一個頁面:
模板化
他們作了一套模板,而後去承載這個頁面,而後經過配置數據,從而完成了快速開發迭代。在開發的過程當中若是可使用現有模板,那麼久直接裝載便可。在開發過程當中,模板會有不一樣的版本,有本身的獨立版本控制,而業務實例每一個版本都有獨立關聯的一個模板ID和版本。
而後還開發了各類組件,榜單、投票、評論等等,經過數據配置就能完成快速開發。
另外還有淘寶不按期推出的活動動畫,淘寶這邊使用AE作成動畫,而後用JSON承載,而後經過移動端的ViewController上面的一層Layer或者Player來展現,期間容許對JSON進行二次定製開發。
這裏還有一個頗有趣的事情,有位觀衆提了一個問題:蘋果不容許JSBridge,那馬如何實現不發版的狀況下實現更新呢?演講人的回答是不知道。可是他說不太肯定蘋果是不容許拉文件更新,仍是容許相似RN方式的開發。若是隻是不容許拉文件的話,那麼能夠考慮使用RN的方式來搞。框架

Part5.《3x3:提速移動App交付》

3x3提速開發交付
演講人是來自LinkedIn的軟件開發工程師胡克秋。主要介紹瞭如何快速發版。
介紹了LinkedIn發版,說是一週發一次,我看了一下領英iOS更新記錄,沒有那麼頻繁,也許是可以支持一週發一次吧。
他們移動開發是專門的一個移動平臺組,裏面沒有任何的產品、UI什麼的。當其餘有需求的時候,就會把人派到指定的部門開發。從當初的30個移動工程師到如今的超過300個移動工程師,從原來的的超過一個月交付一次App到如今的3x3快速開發。
所謂3x3快速開發,就是:
一天發佈3次。
代碼提交到發佈<3個小時
後來經瞭解他們的1天發佈三次實際上是天天發佈3個可用的版本,這些版本可以隨時拿過來使用。
他們的iOS客戶端徹底採用Swift開發。所以在經歷Swift2.2—Swift3.0升級的過程當中,8我的在開發項目室從上午9:00到晚上10:00作升級。總共用了一個禮拜的時間纔將Swift2.2升級到了Swift3.0。
關於代碼提交,他們只有一個分支,而後在開發過程當中,他們有個小要求:就是在有限制的時間內作代碼提交,若是超過了這個deadline,那麼久不能提交代碼。這樣保證了代碼在某個時間點的穩定性。
關於測試,他們還有個DogFood,也就是全部公司員工必須去使用他們的最新版本,而後他們會收集Crash信息,而後進行修復。
還順便介紹了幾個開源的框架:模塊化

  1. LayoutTest-iOS
  2. bluepill
    有興趣的同窗能夠自行下載查看。
    還有一點:他們的iOS開發作UITest和UnitTest,關於測試,他們作的很足,並且通常QA寫測試場景,開發寫測試用例。並且他門可以很好控制寫測試用例的時間再10%左右。
    以上就是我在QCon上參加的專題演講。
3. 我在QCon大會上學習到了什麼?

如下是對我學到的東西進行的一些簡單總結:

  1. 編程不只僅只是寫代碼那麼簡單,還有多考慮其安全性。另外在設計的時候也要提早構思、考慮全面
  2. 用最有效最實用、最簡單的方法去解決問題。
  3. 新技術的產生有的時候必定要先對其進行學習和多方面的瞭解。如何應對新技術可能引起的問題?若是解決?
  4. 人家的iOS開發都是有用UITest和UnitTest。
  5. 經過模塊和組件化的方式作開發,提高開發效率。
  6. 學習好英語很重要。
  7. 使用模塊化和組件化的方式提升開發效率。(我的以爲僅限於比較大型的項目,小項目就大材小用了)
注:

1.若有侵權,請告知做者刪除。scottzg@126.com

2.轉載請標明來源:http://www.cnblogs.com/zhanggui/p/6744941.html

3.更多可參見這裏:http://2017.qconbeijing.com/schedule

相關文章
相關標籤/搜索