“2018 ’s summary ,轉載自我的個人部落格,本文地址:www.hualong.me/2019/01/10/…”
引言
2018,是我正式踏入職場的第一年,從17年末校招進入團貸網實習,到18年夏天大學畢業開始試用最後轉正,其實回頭想一下好像發生了很多事情呀,但總感覺時間過得好快~?。
這一年到處叫慘,我也很慘,P2P爆雷、貿易戰、經濟下滑、網際網路公司年底裁員等等,這些對我的影響也就是我的股票和基金接近腰斬了吧,虧了我兩個月的工資,嗯,還沒到最慘的程度。
2018 回首,掏~
我主要從技術之內與技術之外談談我的2018,最後規劃一下2019。
技術之內
逆向
我覺得逆向是我今年學到最有價值的技術,之前一直是正向開發,對一些疑難點總是雲裡霧裡的感覺,而在學習逆向的過程中,會從底層開始學習,藉此機會,把《深入理解計算機作業系統》、《iOS應用逆向與安全》兩本書給啃完了,在腦海裡對整個APP執行流程和底層原理有了大體的框架和思路。也可以學習其他APP的實現方式,比如檢視資料庫的設計,UI的實現思路,網路請求資料格式等。另外學習逆向還有一個好處就是可以瞭解APP中的安全問題,防止犯低階錯誤。在逆向方面主要做了:
- 1.《實現 AppStore App 的自動下載》
可能會有人問,為什麼要做這麼一個專案。主要是兩點原因吧,第一點呢,是出於個人興趣,我對黑灰產的技術其實還是比較感興趣的(雖然學到的只是皮毛)。第二點呢,通過這麼一個專案的實踐,可以加深自己對逆向開發的理解,也可以幫助我們分析 Apple 作業系統。相關學習記錄和工程已經上傳到我的GitHub上面了:
github.com/L-hualong/H… - 2.《hook網路請求併成功獲取以及修改引數》
這裡我是直接拿的公司的App做的實驗,因為可以省去前期繁瑣、耗時的分析過程。可以借用monkeyDev這個工具,注入動態庫,重簽名後,可以將APP內任何請求的引數修改成自己想要的引數。 如果APP是未加固過的oc程式碼,是可以直接hook任何方法的,至於有什麼用,我就簡單舉個例子吧,eg: 微信自動搶紅包、修改微信運動的步數、視訊去廣告等等。
能做得更好的地方也有很多,比如 1、對LLVM編譯器的底層原理還是停留在表面,沒有深入學習,買了《編譯原理》這本龍書和《LLVM Cookbook》,一直沒時間看完 (也看不懂,真的太難了?)。2、對iOS逆向大神張總開源的框架《Hikari》沒有去整合到自己的專案,以至於自己部門的APP還是處於未加固狀態。
工程效率Devops
在剛進公司的時候,部門是沒有工程效率小組的,我也算是見證了部門Devops從0到1的成長,這離不開安卓、iOS、前端、後臺同事的共同努力。其中我主要做了:
- 1.《自動打包上傳包伺服器》
之前的流程是,開發人員手動打包之後發到群裡,然後測試同事去下載安裝,這麼傳統的方式自然是很低效率的。在一切自動化後,效率自然也上來了。這裡的核心指令碼命令XcodeBuild的詳細使用,可以看我下面的部落格文章: www.hualong.me/2018/03/14/… - 2.《iOS-UI自動化測試》
這裡的UI自動化,需要測試同事編寫測試指令碼。然後UI自動化的具體原理可以檢視我下面寫的文章: www.hualong.me/2018/06/20/… 其中,在測試指令碼執行的時候,它需要知道要操作的是具體哪個元素,以及元素的具體位置,否則機器怎麼自動執行點選或滑動操作呢,在這裡我自己封裝了一個為 UIAutomation 新增自動化測試標籤的第三方庫,已開源到GitHub: github.com/L-hualong/H… - 3.《iOS-效能自動化測試》
這裡說的自動化效能測試,指的是在機器執行自動化UI測試的時候,順便收集APP的效能指標。讓APP整合自己封裝的效能收集第三方庫,然後APP在執行的時候就會採集效能資料了,庫已開源至GitHub: github.com/TuanDai-MPD…
OC轉Swift
在沒來團貸之前,一直使用的是object-c語言,進來之後,部門也剛好在將專案從oc語言重構成swift語言。在這一年裡,學習了swift語言,也學習了Viper框架,結合面向協議程式設計的思想來開發需求。說說自己的體會,用swift語言寫程式碼確實很舒服,唯一的缺點就是編譯太慢了吧,你可以想象一下,隨便刪除或增加一行程式碼,就需要編譯幾分鐘的那種感受(已經是增量編譯了),怎一個痛苦可言~?
技術之外
在這一年裡,體重胖了十幾二十斤,年初的時候辦了一張健身年卡,現在一年快過去了,去健身房的次數屈指可數,或許是真的沒動力去健身房吧 (其實是因為懶)。
過去一年,我可以說是生活在舒適區的那種人,因為在這裡並沒有一線城市那樣的快節奏,上下班只需十幾分鍾。下班後的生活大多都是打手遊、看電影,重新撿起了很久沒玩的《王者榮耀》,花了兩三個星期的時間上了最強王者段位,後來發現這遊戲也沒有多少人玩了 (無敵是多麼寂寞),原來更多的人是去玩“吃雞”了?? (已經在網上買了個“吃雞神器”,希望可以改變落地成盒的現狀?)。 說到舒適區,我很欣賞我前任的一點就是,她是一個獵奇的人,是一個不願意待在舒適區生活的人,總喜歡做自己沒做過的事情,同理,她不喜歡公務員的那種生活。其實在我的觀點裡,如果你不願意去創業,只是待在工薪階層的話,公務員的生活其實比我們這些人的生活要好很多,他們工作輕鬆,工資也高,還有時間去幹副業,有什麼不好的呢?。
嗯,單身狗的身份依然沒有改變(脫單是不可能脫單的了,這輩子都不可能脫單的了,撩妹又不會,人還窮)。這一年臉上爆了很多痘痘,留下了很多痘印,雖然我很自戀地認為,如果我沒有長痘的話,我其實是比李易峰要帥的?。
之前看過一個段子,段子內容大致如下:
“一哥們讓我給他介紹女朋友,要求160以上,可愛點,別太小心眼的。剛好有個符合條件的姑娘單著,我就問了,結果女生的要求是有房有車,月入1w+,身高175以上,樣貌耐看。我去問符合該條件的男生,他對女生的要求是身高168以上,必須漂亮甜美的,很會做家務又能賺錢。我又去找了個符合該條件的女生,她的要求是男方要有別墅,有賓士,有公司,身高180以上.....去尼瑪......都特麼好好單著吧!!該!!!”
我就是這樣,我喜歡的,別人不喜歡我,別人對我有好感的,我又對她不心動。(像我這樣的人在2019年能找得到女朋友嗎??)
2019 盤他!
新的一年,一定要多運動(身體是革命的本錢),搬了新家後,家樓下就有籃球場,以後每週可以愉快地打籃球了~。
對自己新的一年技術上的目標其實還是有蠻多的,先列舉以下幾點:
-
1.《RxSwift的原理及應用》
函式響應式程式設計是我一直想學的技術,希望能在需求開發之餘的時間裡儘快弄懂它的原理,然後用RxSwift+MVVM寫個實際的demo。RxSwift所涉及到的知識點還是很多的,我先放一張圖。 -
2.《APM 效能調優》
希望微信開發團隊能儘快開源iOS平臺上的APM框架,然後藉著這個機會,看微信開源的庫和自己部門的APM庫的原始碼,取其精華,結合自己部門的APM框架學習微信團隊的APM框架。 -
3.《跨平臺Flutter技術》
現在是大前端的時代,雖然原生開發一直是最正統的 iOS 開發解決方案,蘋果也已經構建起了相當完善的開發框架和體系。但是學習最新的跨平臺Flutter技術總不是什麼壞事,也可以藉著這個機會體驗一下開源的好處,而不像iOS,一切都是未知的。 -
4.《資料結構和演算法》
應用層的東西永遠在變,也永遠學不完,所以我接下來準備刷 LeetCode來鍛鍊解決問題的思維能力,我覺得,如何去思考本身也是一個需要不斷學習和練習的技能。
2019 一起努力?。
—— Marco 記於 2019.01