<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      2019,我在幾個(gè)新的技術(shù)領(lǐng)域的嘗試和心得

      ?       又到一年結(jié)束時(shí),回顧這一年,我在幾個(gè)新的技術(shù)領(lǐng)域取得了一些小小的收獲,這其中,有App相關(guān)的,也有App領(lǐng)域之外的。接下來(lái),我來(lái)談?wù)勛约旱囊恍?shí)踐和心得體會(huì)。


       1)《Android插件化開發(fā)指南》的英文版出版

      ?      在社區(qū)一眾朋友的幫助下,我把這本書翻譯成英文,并經(jīng)過(guò)幾番修改,終于由CPC Press在國(guó)外出版了,在中文版的基礎(chǔ)上加上了對(duì)Android O和P的插件化支持。書的英文名是《Android App-Hook and Plug-In technology》。我不知道老外對(duì)這個(gè)技術(shù)的接受程度有多少,但總算是了卻了一樁心愿,讓全世界知道Android技術(shù)在中國(guó)做的有多深入。

      ?      接下來(lái),我會(huì)在微信公眾號(hào)連載這本書的中文版本。        

       2)Appium自動(dòng)化測(cè)試框架

      ?      9月份在成都培訓(xùn)Appium的時(shí)候,順手寫了一個(gè)Appium自動(dòng)化測(cè)試框架。

      ?      自動(dòng)化測(cè)試框架的宗旨在于讓測(cè)試人員通過(guò)編寫配置文件的方式來(lái)大規(guī)模、快速產(chǎn)出自動(dòng)化測(cè)試用例,而不需要太多的編程知識(shí)。

      ?      Appium傳統(tǒng)的編程方式是的面向過(guò)程的,為此要實(shí)現(xiàn)一個(gè)自動(dòng)化測(cè)試用例,需要寫很多行代碼。這對(duì)于測(cè)試人員尤其是不擅長(zhǎng)編程的測(cè)試人員,是很難推行這門技術(shù)的。

      ?      由此而衍生出一種Page Object的設(shè)計(jì)模式。為每個(gè)頁(yè)面建立一個(gè)類,把操作預(yù)先封裝到各個(gè)頁(yè)面類中。再往前走一步,就是把操作定義在配置文件yml中,由這個(gè)自動(dòng)化測(cè)試框架來(lái)解析配置文件。這樣的好處是,即使是不擅長(zhǎng)編碼的測(cè)試人員,也可以遵循一些簡(jiǎn)單的規(guī)則,通過(guò)配置文件,迅速組織出自動(dòng)化測(cè)試用例。

      ?      另一方面,Appium同時(shí)支持Android和iOS,但并不意味著寫一套代碼,同時(shí)適用于Android和iOS。為此,需要在框架中做兼容,消除這些不一致的地方,封裝出同一套接口,從而達(dá)到一臺(tái)代碼,同時(shí)適用于Android和iOS。

      ?      Appium是一門很有趣的技術(shù),涉及大量的App技術(shù)知識(shí),各位從事Android或iOS的技術(shù)同學(xué),可以考慮入手這個(gè)領(lǐng)域。Appium的難點(diǎn)在于開發(fā)環(huán)境的搭建,90%的初學(xué)者卡在了這里,所以沒(méi)有繼續(xù)前行。對(duì)于Android和iOS開發(fā)人員而言,這都是小兒科。

      ?      在做Appium自動(dòng)化框架的時(shí)候,陪伴我多年的Android手機(jī)掛了,不能真機(jī)測(cè)試。這時(shí)夜神模擬器進(jìn)入我的視線。可以在一臺(tái)電腦上啟動(dòng)多個(gè)夜神模擬器,通過(guò)端口來(lái)進(jìn)行區(qū)分,也就是雙開技術(shù)。最關(guān)鍵是模擬器的速度,非常的流暢。缺點(diǎn)是目前只支持Android4.4、5.1和7.1這三個(gè)版本,以及只支持Windows和Mac兩個(gè)版本。         

       

       

      3)聊天機(jī)器人

      ?      在寫完Appium自動(dòng)化測(cè)試框架后,我順手寫了一個(gè)聊天機(jī)器人,仍然是借助于Appium技術(shù),捕獲到對(duì)方說(shuō)的話,然后自動(dòng)回復(fù)消息。

      ?      當(dāng)時(shí)有一個(gè)難點(diǎn)就是,在App中捕獲到的聊天內(nèi)容是圖片,如何把圖片轉(zhuǎn)換成文字?

      ?      再有就是這個(gè)程序的穩(wěn)定性。因?yàn)橐恢北O(jiān)聽App中的新消息,所以程序就放在那里。如何確保程序的穩(wěn)定性,而不是一個(gè)小時(shí)后程序就崩潰了。比如說(shuō)Appium會(huì)有一個(gè)timeout,超過(guò)這個(gè)值,Appium就會(huì)拋出一個(gè)異常然后終止程序。如何避免半小時(shí)沒(méi)有收到新消息,Appium不會(huì)因?yàn)槌^(guò)了這個(gè)timeout值而掛掉。

      ?      另一個(gè)難點(diǎn)就是人工智能。目前我寫的這個(gè)機(jī)器人還只能做到你有來(lái)言、我有去語(yǔ),但是答非所問(wèn),風(fēng)馬牛不相及。于是我最近又開始進(jìn)入“深入學(xué)習(xí)”和“知識(shí)圖譜”這兩個(gè)領(lǐng)域,去尋找成熟的解決方案。希望2020年能早日解決這個(gè)問(wèn)題。

       

      4)搭建一套測(cè)試環(huán)境

      ?      隨著內(nèi)存降價(jià)到白菜價(jià),我把自己的PC本升級(jí)到32G內(nèi)存。接下來(lái)通過(guò)VMWare,創(chuàng)建了十幾臺(tái)虛擬機(jī),分別搭建Jenkins、Nginx、Maven、Redis、MySQL、SpringMVC、Node環(huán)境,這其中大部分軟件是通過(guò)Docker來(lái)搭建的。

      ?      在安裝這些軟件的時(shí)候,我發(fā)現(xiàn)使用Docker要比直接安裝更容易一些。

      ?      另一方面,就是網(wǎng)絡(luò)配置。為每臺(tái)虛擬機(jī)同時(shí)開啟兩塊網(wǎng)卡,一個(gè)是橋接模式,動(dòng)態(tài)分配IP,用于虛擬機(jī)上外網(wǎng);一塊網(wǎng)卡是NAT模式,從而和主機(jī)形成一個(gè)小型局域網(wǎng),固定IP,這樣就不會(huì)因?yàn)橹貑⑻摂M機(jī)而導(dǎo)致IP改變。虛擬機(jī)之間通過(guò)NAT模式下的固定IP相關(guān)訪問(wèn)。

      ?      下載一個(gè)花生殼軟件。可以免費(fèi)領(lǐng)取到兩個(gè)域名,其中一個(gè)是80端口,另一個(gè)是隨機(jī)端口。把域名指向一臺(tái)安裝了Nginx的虛擬機(jī)的ip,由Nginx負(fù)責(zé)分發(fā)到其他虛擬機(jī)處理外界的請(qǐng)求。這樣外界就可以通過(guò)這兩個(gè)域名來(lái)訪問(wèn)我這個(gè)小型局域網(wǎng)提供的服務(wù)了。

      ?      Jenkins是唯一沒(méi)有通過(guò)Docker進(jìn)行安裝的,因?yàn)槲乙?jīng)常修改其中的文件。究其原因,還是出于對(duì)Jenkins的恐懼。這是個(gè)非常強(qiáng)大的持續(xù)集成工具,里面有各種配置開關(guān)。我只完成了Node項(xiàng)目、Android項(xiàng)目、SpringMVC的持續(xù)集成。

      ?      考慮到每臺(tái)虛擬機(jī)安裝的軟件以及配置都差不多,于是就做了一個(gè)虛機(jī)鏡像,這其中包括JDK、Docker、jq這些基礎(chǔ)軟件的安裝,還包括設(shè)置免密登錄、把docker加入管理員組這些基本配置。一開始我只給這個(gè)虛機(jī)鏡像分配了10G空間,但越來(lái)越不夠用,幾次擴(kuò)容后,發(fā)現(xiàn)15G是一個(gè)比較合適的值。

      ?      再后來(lái)我對(duì)鏡像做了優(yōu)化,刪除了界面組件,這樣鏡像的體積就減少了很多,同時(shí)啟動(dòng)速度也快了。

      ?      接著我把一臺(tái)虛擬機(jī)設(shè)置為maven私服、NPM私服,甚至Docker私服,從而讓我的項(xiàng)目所有的外界依賴都從這臺(tái)虛擬機(jī)獲取。

      ?      其實(shí)很多互聯(lián)網(wǎng)公司的測(cè)試環(huán)境和生成環(huán)境,都是不能之間訪問(wèn)的,都需要做一臺(tái)跳板機(jī)。我們開發(fā)人員先登錄到跳板機(jī),再通過(guò)跳板機(jī)訪問(wèn)測(cè)試環(huán)境或生成環(huán)境的虛機(jī)。

      ?      使用XShell可以同時(shí)操作多臺(tái)虛擬機(jī),還可以在主機(jī)和虛擬機(jī)之間傳遞文件。

      ?      這里只是粗略總結(jié)一下搭建一套環(huán)境的步驟。很多細(xì)節(jié),以后再詳細(xì)介紹,還有很多沒(méi)有提及的軟件,比如ELK、Grafana+Zabbix、MySQL、Redis等等。

      ?      對(duì)于一個(gè)測(cè)試人員而言,搭建一套測(cè)試環(huán)境是必須具備的機(jī)能。不能一直從事功能測(cè)試這種體力活兒,久而久之,會(huì)被這個(gè)行業(yè)所淘汰。        

       

      5)Hybrid         

      ?      從事App研發(fā)這七八年的時(shí)間,其實(shí)有一半時(shí)間在做跨平臺(tái)和動(dòng)態(tài)化技術(shù)。這幾年我一邊做培訓(xùn),一邊在系統(tǒng)梳理這方面的知識(shí)。         

      ?      首先是Hybrid。這是最老牌的跨平臺(tái)技術(shù)。經(jīng)過(guò)這十年來(lái)的發(fā)展,仍然不能突破手機(jī)瀏覽器性能低劣的桎梏,但是,它仍然是絕大多數(shù)創(chuàng)業(yè)公司的首選。你想啊,Android和iOS只要各招1個(gè)開發(fā)人員,負(fù)責(zé)實(shí)現(xiàn)原生App和H5的通信,以及日常的發(fā)版,剩下的錢就全都可以招H5開發(fā)人員了,只需要開發(fā)一套業(yè)務(wù)邏輯,這是多么節(jié)省人力成本的模式。

      ?      性能問(wèn)題是Hybrid永遠(yuǎn)的痛,業(yè)內(nèi)有很多首頁(yè)秒開的技術(shù)方案和框架,比如說(shuō)VasSonic。

      ?      原生App和H5之間的交互,以及頁(yè)面相互跳轉(zhuǎn)。可以使用成熟的框架例如Cordova,或者自己寫一套,其實(shí)并不難。

      ?      Hybrid分兩套完全不同的技術(shù)方案:

      • 方案1是直接訪問(wèn)線上的H5、JS和CSS、圖片,這會(huì)導(dǎo)致訪問(wèn)的時(shí)候比較慢,因?yàn)橐螺d很多資源,一般是Node+Express來(lái)提供H5的外殼,里面的內(nèi)容,用React還是vue亦或是Angular就無(wú)所謂了;

      • 方案2是離線包。事先把H5、JS和CSS、圖片都打包到App中,以后有更新,再?gòu)姆?wù)器下載新的zip包,可以是全量的zip包,也可以是增量zip包,后者體積會(huì)更小一些。 

       

      ?      對(duì)于流派1,難點(diǎn)主要在于:

      • Node,很多前端開發(fā)人員并不能熟練掌握Node技術(shù),畢竟這是一門服務(wù)器端技術(shù)。涉及到Jenkins持續(xù)集成、服務(wù)器查日志等等。

      • 此外,如果前端H5要發(fā)起一個(gè)網(wǎng)絡(luò)請(qǐng)求,則需要在Node層寫一個(gè)API接口,給前端H5頁(yè)面調(diào)用。 


      ?      對(duì)于流派2,主要問(wèn)題是麻煩:

      • H5端的網(wǎng)絡(luò)請(qǐng)求,由于跨域的問(wèn)題,所以要間接使用App端的網(wǎng)絡(luò)請(qǐng)求框架。順帶著,共享App端的用戶token。

      • 配置增量更新,是一個(gè)很繁瑣的事情。要逐個(gè)版本去驗(yàn)證,下載增量包后,是否升級(jí)成功了。

      • 每次調(diào)試代碼,都要經(jīng)歷一個(gè)漫長(zhǎng)的過(guò)程:生成壓縮包、打包App、清空App本地緩存,解壓H5壓縮包。 

      ?      

      ?      對(duì)于創(chuàng)業(yè)公司而言,更多的選擇方案1,因?yàn)槟芸焖俚囧e(cuò)而人力成本極低,招人時(shí)也不需要太多的培訓(xùn)成本。

       

      6)React Native        

      ?      據(jù)我所知,國(guó)內(nèi)的很多OTA公司,都已經(jīng)把原生App改造為用ReactNative來(lái)寫的了。

      ?      RN從2015年誕生至今,雖然還沒(méi)有發(fā)布一個(gè)1.0的正式版本,但是其在國(guó)內(nèi)互聯(lián)網(wǎng)公司的受歡迎程度,已經(jīng)遠(yuǎn)非其他App技術(shù)所能企及。究其原因,是iOS jsPatch被Apple禁用,但是RN的熱更新技術(shù)卻仍然能通過(guò)Apple Store的審核。迄今為止,也只有這個(gè)技術(shù)不受Apple的限制。

      ?      雖然Apple Store的審核速度已經(jīng)縮短至幾天,但是對(duì)于那種很嚴(yán)重的bug,我們還是希望能在當(dāng)天修復(fù)并上線。再有就是Apple Store圣誕節(jié)假期不審核審核App,更恐怖的是,就算你修復(fù)了bug并提交審核,還可能因?yàn)槠渌蚨鴮徍吮痪艿簟8魑籭OS程序員應(yīng)該都深有體會(huì),比如說(shuō)我最長(zhǎng)的一次審核是一個(gè)半月。

      ?      RN的熱更新技術(shù)可以自己做,也可以使用外界比較成熟的解決方案。

      ?      另一方面,ReactNative是建立在React基礎(chǔ)之上的。這使得原本就熟悉React的H5開發(fā)人員,只需要學(xué)習(xí)RN中的那些標(biāo)簽控件,就可以快速上手了。這就比從事Flutter開發(fā)還要去學(xué)習(xí)Dart要簡(jiǎn)單的多了。

      ?      ReactNative還有一個(gè)尖端技術(shù),就是拆分成多個(gè)模塊,各自打包下載。這就有點(diǎn)Android插件化的意思了。

      ?      此外,就是性能問(wèn)題了。主要是白屏,以及列表頁(yè)的優(yōu)化。業(yè)內(nèi)有一種頁(yè)面預(yù)加載技術(shù),比如說(shuō)用戶現(xiàn)在A頁(yè)面,App預(yù)先把B頁(yè)面渲染出來(lái),只是不顯示出來(lái),從而從A頁(yè)面跳轉(zhuǎn)到B頁(yè)面,可以秒開。         

       

      7)Flutter         

      ?      這是2019年最火的技術(shù),我也花了仔細(xì)的去研究過(guò)它的打包流程、模塊化、熱更新、網(wǎng)絡(luò)請(qǐng)求框架等等技術(shù)。         

      ?      Flutter的精髓是插件、模塊和包。         

      ?      我在學(xué)習(xí)研究Flutter的時(shí)候,嘗試了網(wǎng)絡(luò)框架封裝的兩種方式,一種是使用Flutter自身的網(wǎng)絡(luò)框架,另一種是復(fù)用App原生的已有網(wǎng)絡(luò)框架。我的感受是,如果是一款A(yù)pp完全用Flutter,那么用第一種方式;如果在已有App上嘗試把幾個(gè)模塊用Flutter來(lái)寫,那么采用第二種方式。         

      ?      我還嘗試過(guò)模塊化拆分。按照酒店機(jī)票火車票多個(gè)模塊的方式,把一個(gè)Flutter項(xiàng)目拆分成多個(gè)Plugin或Package(二者的區(qū)別在于要不要與原生App進(jìn)行交互)。         

      ?      我也去嘗試過(guò)Flutter的熱更新技術(shù)。官方并沒(méi)有支持這個(gè)技術(shù)。但是在Android系統(tǒng)上,可以通過(guò)暴力替換的方式,把Flutter功能替換成新版本,來(lái)實(shí)現(xiàn)熱更新技術(shù)。對(duì)于iOS,則不具備這個(gè)能力。別看缺了這么個(gè)小功能,在國(guó)內(nèi),這可是至關(guān)重要的。      

      ?      看了很多關(guān)于Flutter的技術(shù)文章,說(shuō)到Flutter的渲染速度要比原生App快。但這個(gè)優(yōu)點(diǎn)還遠(yuǎn)不足以讓各個(gè)一二線互聯(lián)網(wǎng)公司、軟件公司把App改造為Flutter。App線上出了bug,能快速修復(fù),才是關(guān)鍵。所以在國(guó)內(nèi),不具備熱修復(fù)能力,F(xiàn)lutter很難繼續(xù)走得更遠(yuǎn)。

       

      8)區(qū)塊鏈         

      ?      年底區(qū)塊鏈技術(shù)又火了起來(lái)。恰好我在2018年做過(guò)這個(gè)技術(shù),基于Fabric,搭建過(guò)一個(gè)社區(qū)買藥的區(qū)塊鏈平臺(tái)。十二月的時(shí)候,我又把這個(gè)技術(shù)拾了起來(lái)。通過(guò)前面搭建的14臺(tái)虛擬機(jī),搭建了一套Fabric區(qū)塊鏈系統(tǒng),包括4臺(tái)節(jié)點(diǎn)服務(wù)器,3臺(tái)排序服務(wù)器,3臺(tái)ZooKeeper,4臺(tái)Kafka。

      ?      區(qū)塊鏈技術(shù)大致分為Fabric和以太坊。我做的是Fabric技術(shù)。Fabric是一個(gè)龐然大物,學(xué)習(xí)這門技術(shù),需要具備以下的基礎(chǔ)知識(shí):

      • Docker,尤其是Docker Compose。

      • Shell腳本編寫能力。

      • nodejs或Java,用于使用Fabric SDK。

      • 比特幣和區(qū)塊鏈的基礎(chǔ)概念和術(shù)語(yǔ)。


      ?      在此基礎(chǔ)上,就可以從搭建區(qū)塊鏈環(huán)境入手了。Fabric有很多版本,書籍多針對(duì)于1.1,網(wǎng)上文章,則從1.0到1.4各種版本都有。建議從1.1入手,版本迭代對(duì)搭建環(huán)境影響不大。在1.1的基礎(chǔ)上,再看1.2,1.3,1.4甚至2.0都很容易。         

      ?      Fabric分為兩個(gè)大方向:         

      ?      方向1:在Fabric上做業(yè)務(wù),用GO語(yǔ)言寫智能合約,以及基于Java或Node的SDK,編寫前端業(yè)務(wù)邏輯。         

      ?      方向2:研究Fabric底層實(shí)現(xiàn),包括CA,背書,算法,安全,對(duì)其進(jìn)行功能上的擴(kuò)展,完善對(duì)外提供的SDK,包括區(qū)塊鏈瀏覽器等等。         

       

      ?      以上就是2019年我的一點(diǎn)收獲。對(duì)于我而言,很多都是全新的領(lǐng)域,如果文中的某些觀點(diǎn)有錯(cuò)誤,還請(qǐng)多多包涵多多指正,接下來(lái),我會(huì)持續(xù)更新我的公眾號(hào),依次介紹本文所涉及的這些技術(shù),包括:

      ?      1.        DevOps:從零搭建一套測(cè)試環(huán)境

      ?      2.       基于Appium搭建自動(dòng)化測(cè)試框架

      ?      3.       Android插件化技術(shù)

      ?      4.       Hybrid技術(shù)

      ?      5.       React Native技術(shù)

      ?      6.       Flutter技術(shù)

      ?      7.       Fabric區(qū)塊鏈技術(shù) 

      ?      敬請(qǐng)期待。
      ?      2020年,請(qǐng)多多關(guān)照。

      posted @ 2020-01-02 13:37  包建強(qiáng)  Views(2452)  Comments(4)    收藏  舉報(bào)
      主站蜘蛛池模板: 免费无码AV一区二区波多野结衣 | 日韩乱码人妻无码中文字幕| 伊人久久大香线焦av综合影院| 久久99精品国产99久久6尤物| 极品美女自拍偷精品视频| 久久毛片少妇高潮| 色橹橹欧美在线观看视频高清 | 中文字幕人成无码免费视频| 国产亚洲第一精品| 精品国产精品中文字幕| 欧美另类图区清纯亚洲| 久久久无码精品亚洲日韩按摩| 国产强奷在线播放免费| 国自产拍偷拍精品啪啪模特| 99网友自拍视频在线| 中文字幕国产精品自拍| 欧美老少配性行为| 久久精品熟妇丰满人妻久久| 在线观看免费人成视频色| 久久这里只精品国产免费9| 国产成人精品无码免费看夜聊软件| h无码精品动漫在线观看| 成人国产精品三上悠亚久久| 欧美成人精品在线| 国产婷婷精品av在线| 国产亚洲色婷婷久久99精品| 97色成人综合网站| 日韩一区二区三区在线视频| 人人做人人澡人人人爽| 成人午夜视频在线| 亚洲中少妇久久中文字幕| 99久久精品久久久久久清纯| 郑州市| 欧美搡bbbbb搡bbbbb| 亚洲人成网站18禁止无码| 亚洲人成色777777老人头| 国产福利微视频一区二区| 偷拍一区二区三区在线视频 | 精品少妇无码一区二区三批 | 久久一本人碰碰人碰| 国产精品色一区二区三区|