老司機 iOS 週報 #93 | 2019.12.02

老司機iOS週報發表於2019-12-02

老司機 iOS 週報,只為你呈現有價值的資訊。

你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。

文章

? ? 美團外賣前端容器化演進實踐

@蓮叔:容器化和動態化是目前大前端業務開發中最繞不開的兩個命題。尤其是在產品架構已經相對成熟,業務側的需求逐步過渡到精細化運營之後,往往隨之而來的就是單個頁面承載大量功能,並由不同的團隊負責,程式碼也部署在不同的倉庫,這給業務開發的效果、質量的把控都帶來的新的挑戰。本文介紹的美團提單頁就是這樣的一個典型場景,本文從提單頁面臨的現狀問題以及業務的特點,介紹了通過容器化的思路來解決上述問題,雖然方案中部分模組美團並未開源,但其架構與設計思想仍然值得借鑑。

? ? 瞭解 SIMD 指令

@五子棋:SIMD 是一種常見的利用單指令完成多資料量處理的計算方式。本文給出了基於 Xcode 環境的實踐的 SIMD 指令使用指南,同時通過資料加法來對比 SIMD 指令對於計算效能的提升。對於想要了解 SIMD 相關知識的讀者來說是一篇適合快速上手的教程。

? 天羅地網? iOS卡頓監控實戰(開源)

@EyreFree:本文介紹了作者在公司專案中使用的 Swift 版卡頓監控工具 XXPerformanceMonitor 的整個開發歷程。作者通過對比 fps、ping、runloop、hook、msgSend 等主流卡頓監控方案的優缺點,陳述了自己的方案選擇理由。並且給出了關鍵邏輯的核心程式碼例項,同時結合流程圖直觀地演示了具體的卡頓排查分析方法。作者最後還給出了自己在實際工作過程中遇到的常用卡頓場景的總結,以及在做完針對性優化後的線上效果對比,值得一看。

? How Swift Achieved Dynamic Linking Where Rust Couldn't

@四娘:ABI 穩定是 Swift 重要的里程碑之一,但相關的資料卻很少,其實這可以說是 Swift 做過最有野心,最具原創性的功能。這篇文章就比較詳細地闡述了相關的實現內容以及實現難度,並與 Rust 進行對比,解釋為什麼 Rust 從設計上就難以做到動態連結。

? ? 技術文章配圖指南

@享耳先森: 如果你是技術博主,相信都遇到過如何給文章配圖的困惑,本文從配圖的原則、工具、實踐等方面進行論述,建議閱讀。

? HTTP/2 的學習實踐和翻譯

@老峰:本系列是 @halffrost 霜神 關於HTTP/2 的學習實踐和翻譯的分享,其中包括 HTTP/2 基礎概述、多路複用、HTTP 語義、HTTP/2 頭壓縮演算法 —— HPACK 等,有換工作的同學可以深入瞭解下。

? Secret Management on iOS

在平時的開發中,我們會將涉及到需要加密的重要內容都放到服務端上儲存,因為目前如何在 iOS 上安全的儲存一直是一個尚未解決的問題。本文詳細解釋了無論是採用硬編碼、Xcode Configuration 還是對程式碼進行混淆進行儲存都可能存在的風險,所以,請儘量不要在客戶端儲存設計機密的檔案。

工具

LookinLoader

@張嘉夫Lookin 是一款免費的 macOS App,用於 iOS View Debugging。但由於 Lookin 官方沒有提供整合的越獄版本,不便於逆向分析,因此作者參考 RevealLoader 編寫了這個叫做 LookinLoader 的外掛,支援 iOS 8~iOS 13。LookinLoader 可以在越獄裝置上的 iOS App 中動態載入 LookinServer(支援 Lookin.app),然後通過 Lookin 來檢視和修改 iOS app 中的檢視,就像 Xcode 的 UI Inspector 和 Reveal 那樣。此外還包括 Console 和 Method Trace 等功能,iPhone 和 iPad 甚至不用連線到 Mac 就可以執行 Lookin。

SwiftPM Catalog

@xiaofei86:SwiftPM Catalog 是 SwiftPM Library 的一款輕量且實用的 macOS 前端,用來查詢和瀏覽使用 Swift Package Manager 的 Packages。SwiftPM Library 通過開源社群維護的倉庫 SwiftPMLibrary 中的 JSON 檔案 來找到這些 Packages 並抓取相應的資訊作為搜尋結果展示。此列表已經有 100 多位貢獻者,彙集了 3000 多個 Packages,基本覆蓋了所有常用的 Swift 庫。在將來的某個時候,也許蘋果或 GitHub 會提供正式的 Packages 列表,但是在那之前,總比沒有的好。

Commitizen

@AidenRao:Git 提交資訊生成和約束工具,幫助團隊成員規範化 Commit Message。它使用的是 Angular 規範,有對應的工具去生成 change log。每次提交,Commit message 都包括 Header, Body 和 Footer 三個部分。 Header 是必須的,包括三個欄位:type, scope 和 subject,用於說明提交類別,影響範圍,和一個簡短的描述。Body 部分是對本次 Commit 的詳細描述,Footer 用於 close issue 和宣告版本不相容情況的遷移方法。也可以自定義規範,並且新增約束,對不符合規範的 commit 直接拒絕。

程式碼

? MyLinearLayout

開源 UI 介面佈局框架 MyLayout1.9 釋出!MyLinearLayout 是一個目前幾乎整合了大前端所有 UI 介面佈局解決方案的開源佈局框架,其提供的九大布局體系可以滿足您所有的 UI 佈局需求。本庫從 2015 年開始釋出,歷時四年的維護和發展,服務應用了數千 app,目前 GitHub 上 star 數量 3600 左右。是一個值得接入並提高您工作效率的好框架。

由美團資深開發 歐陽大哥 自薦。

Siren

@looping:Siren 是使用 Swift 開發的用來檢測並提醒使用者進行應用版本升級的類庫。它會從 iTunes 的 lookup 介面獲取應用在 App Store 的版本資訊,幫我們處理了包括版本比對(支援 2 到 4 位版本系統)、彈窗提醒(3 種彈窗樣式)等基本操作,支援規則自定義,同時包括對 App Store 更新延遲、最低支援系統、階段性發布等問題也做了相容處理,考慮很全面,即使不直接使用這個類庫,自研版本更新提醒的話,也是很有參考價值的。

xcconfigs for Universal Frameworks

@極速男孩:在我們維護一個多平臺的 framework 的時候我們經常要去複製多個 target,而有了這個 Xcode configuration 我們可以僅僅使用一個 target ,然後根據不同的條件,使用不同的 build settings 中的設定,方便我們去複用和修改。這樣我們只要在編譯時選擇對應的平臺就會自動選擇不同的 build settings。

內推

深圳-位元組跳動,抖音 App 基礎技術小組 客戶端研發崗位

  • 職位內容:主要負責抖音基礎技術方向的研發工作,包括不限於元件化、自動化測試、研發流程工具指令碼等方向的研發工作。
  • 聯絡方式:郵箱(chenxiancai@bytedance.com) / 微信(cheney-cai)

老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。

如果你想找工作,點這裡:www.yuque.com/iosalliance…

如果你想招人,點這裡:www.yuque.com/iosalliance…

當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。

關注我們

我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。

老司機 iOS 週報 #93 | 2019.12.02

同時也支援了 RSS 訂閱:github.com/SwiftOldDri…

說明

? 表示需翻牆,? 表示編輯推薦

預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)

相關文章