13 報

Share this post

開發者週報 #172 各種時代的眼淚

www.ethanhuang13.com

開發者週報 #172 各種時代的眼淚

Apple/iOS 開發者的連假大小事 2023/01/16-2023/01/29

13
Jan 29
3
1
Share this post

開發者週報 #172 各種時代的眼淚

www.ethanhuang13.com

13的話

農曆新年放假回來歡迎開工的週報等著你。

請訂閱 Patreon 來支持我的電子報。

(看前一期 · 回首頁)


🧪Apple Releases

  • Xcode 14.2 (14C18) 支援以下作業系統

  • iOS 16.3 (20D47)

  • macOS 13.2 (22D49)

  • watchOS 9.3 (20S648)

  • tvOS 16.3 (20K650)

iOS 16.3 的開發者 Release Notes 基本上沒內容。不過對於消費者來說,卻在 HomePod mini(以及 HomePod 二代)解鎖了隱藏的溫度與濕度感應器。驚不驚喜,意不意外?

Twitter avatar for @ezzz_au
@ezzz@ezzz.au @ezzz_au
HomePod mini 升级到 16.3 后启用了隐藏的温度和湿度传感器
Image
Image
8:38 AM ∙ Jan 19, 2023
43Likes7Retweets
Twitter avatar for @waylybaye
Baye aka 威力狈 @waylybaye
苹果真有意思,HomePod mini 里藏了一个温湿度传感器,买了几年都不知道有这功能。突然更新了 16.3 固件,HomePod 可以测环境温湿度了……
Image
Image
4:23 AM ∙ Jan 28, 2023
181Likes8Retweets

📰Apple 新聞稿

  • Apple 發表 M2 Pro 和 M2 Max:專為更進階工作流程打造的新一代晶片

  • Apple 推出搭載 M2 和 M2 Pro 的全新 Mac mini,空前強大且更具多用性

  • Apple 發表全新搭載 M2 Pro 和 M2 Max 的 MacBook Pro,帶來更突破的效能和 Mac 歷來最持久的電池續航力

  • Apple 推出全新 HomePod,帶來突破性的聲音和智慧功能

新款的 MacBook Pro 的效能跟續航力都比前代增加不算少了,不過我覺得上一代遲遲不買的人,新一代同樣不會買吧😂 至少我自己就是這樣。

如果你想要以最低的成本,獲得最大的軟體編譯效能,那麼 Mac mini M2 Pro 非常值得考慮。它的速度不會輸給 Mac Studio M1 Max。

就算不買 M2 Pro,M2 版的 Mac mini 也是非常優秀,何況相比前代還降價了。

此外,特別提醒一下,M2 Pro 系列都支援 HDMI 2.1,,具備能夠讓外接螢幕跑到 8K@60 或是 4K@240 的頻寬,有別於以往的 4K@60。有需要這項規格的朋友就懂。

比較有趣的是 HomePod。外型看不出明顯差異、SoC 從 A8 換成跟 Apple Watch Series 7 一樣的 S7。支援 Thread 通訊協定(用在 Matter)、多了溫濕度感應器、UWB 可以跟 iPhone 交換播放中的音樂。但奇怪的是 Wi-Fi 支援從 802.11ac 降為 802.11n,以及少了 2 個高音單元及 2 個麥克風。這些變更對於音質造成的影響,還是得等正式發售後的實測了。

💎The Art of Code: Apple Lisa

Computer History Museum(電腦歷史博物館)釋出了 Apple Lisa 的原始碼。就是那個 Steve Jobs 以自己女兒命名、後來被麥金塔取代的產品線(時代的眼淚 1)。

有興趣的朋友可以同意開源協議之後下載。

🙏AFNetworking is Deprecated

This repository has been archived by the owner on Jan 18, 2023. It is now read-only.

Apple Foundation 還沒有 URLSession 的時代,AFNetworking 是處理網路層最好的選擇。Swift 推出以後,對應的 Alamofire 逐漸取代前者的地位。

如今,時代的眼淚(2), 功成身退。

🖊Flutter Forward 摘要──zonble

這次發表了 Flutter 的最新穩定版本 3.7版,Dart 語言方面,也發表了 Dart 3 的 Alpha 版本,根據之前發表的 roadmap ,Dart 3 會在今年中發表穩定版本,預計會在 Google I/O 發表。同時也介紹了一些新的開發工具。

  • 本文

  • YouTube 錄影

  • zonble 的推文串

👀值得一看: Twitter 關閉第三方 App API

Twitter 幾週前,無預警地關閉一些第三方 app 的 API 的存取權,使得許多非官方的 Twitter 客戶端應用程式直接變成無法使用。最熱門的 app 像是我寫週報時整理推文的工具 Tweetbot、史上第一個 Twitter app──Twitterrific 都受到影響。

在談 Twitter 之前,我想岔開話題,講一個身為 iOS 開發者的經驗。

我寫過一個 iOS 筆記 app(目前還在架上,我自己也還在用)。其中一次重大改版是想加入 CloudKit 同步機制,同時我發現 Dropbox 推出了一個叫做 Datastore API 的服務,可以讓使用者擁有超快速的同步體驗,給開發者的 SDK 簡單好用。由於該 app 本來就有匯出筆記到所登入的 Dropbox 帳號的功能,於是我決定同時支援兩種同步機制,讓使用者自行選擇。

當時還有一個類似的服務叫做 Parse(時代的眼淚 3),被 Facebook 買下來不久就停止支援了。類似的 Firebase Realtime Database 則是這之後幾年才推出。

經過幾個月的開發與測試,就在我準備要把更新版送審上架時,Dropbox 宣布將在一年內停止支援 Datastore API😱。背後的原因不外乎是推出該服務後使用人數太少,對公司的效益不夠。

這消息對我當然是晴天霹靂。對我的 app 來說,這個功能如果推出給使用者,很快就要拔掉。我只好當機立斷地把該功能拔除,之前有大半努力都白費了。幸好,當時的架構有做好切割,所以切除手術並沒有影響到其他部分。大概一個工作天就把相關部分砍完了🥹

這個經驗讓我深刻體會到任何 dependency 都存在風險。只要你的軟體依存於其他軟體或者服務,就要嚴格考慮「一旦該部分不再能使用,原本的程式會怎麼樣」。能找到替代方案嗎?能輕易地替代掉嗎?對於開發團隊的影響是什麼?對於使用者體驗又會帶來什麼衝擊?輕微的情況是找到替代方案,花時間去替換原本的部分。而最糟的情況則是,整個軟體的價值不復存在。

我很感謝,在接觸 iOS 開發的頭兩年就學到這麼寶貴的一課。

回到 Twitter。

Twitter 官方並沒有事先對開發者進行預告,在關閉存取權以後好長一段時間也沒有正面回應。

事後得知,這並非服務出問題,而是 Twitter 官方有意為之。原因不難理解──非官方 app 不顯示廣告,對營收不利。但是 Twitter 沒有任何事前事後溝通,透明度為 0,是極度糟糕的處理方式。

第三方 Twitter apps 是很多開發者挑戰自我的題目,原因不外乎是:技術方面的難度、有大量的使用者、UX 有既定慣例,也有可以自行創新的地方。早期 Twitter 的成功大概也離不開各種第三方應用。

面對 Twitter 這種「管你去死」的態度,開發者們當然是很不爽,不過他們能做的事情就是宣布停止這些 apps(時代的眼淚 4),然後順便說「我們已經在開發 Mastodon/ActivityPub App,敬請期待」。

Twitter avatar for @KrauseFx
Felix Krause @KrauseFx
Tapbots Memorial page for @tweetbot casually being one of the most beautiful landing pages. Still can't believe all of this is real, and how there is no statement from @elonmusk or @TwitterComms 🐓🐔 Once the Ivory Mac client is ready, I'll cross-post *from* Mastodon
Image
Image
3:34 PM ∙ Jan 29, 2023
18Likes4Retweets

對我個人的資訊流與工作流來說,Twitter 現在變得很難用,Mastodon 還完全無法取代過去的 Twitter。不過我最想跟大家說的,還是上面提到的經驗:「一旦失去了某個 dependency(以今天的例子就是 Twitter API 存取權),軟體的存在意義就消失。」這種事情是會發生的,而且還可以用比你想像地到最糟糕還要糟的方式發生。

希望這整起事件、我個人的經驗分享,可以帶給你的軟體開發有一些啟示。

其實一個人要能活在現代社會,無處不是 dependency。不過這樣就扯太遠了😂

🤪Random Tweets

Twitter avatar for @tualatrix
TualatriX @tualatrix
用 SwiftUI 把产品做到中后期,遇到的问题越来越多,很难解决,节省下来的时间全都还回去了。放弃幻想,认清现实,决定用 UIKit/AppKit 重新实现了,只把 SwiftUI 当作 UI 库来用,不当作 App Framework 来用。
3:30 AM ∙ Jan 29, 2023
190Likes30Retweets
Twitter avatar for @ethanhuang13pro
13 Pro @ethanhuang13pro
我的經驗是,原生 SwiftUI 本身毛病不多,絕大部分問題都發生在呼叫 UIKit 來實作的部分。像是 List、Navigation 相關、presentation 相關、文字輸入、手勢等等
Twitter avatar for @tualatrix
TualatriX @tualatrix
用 SwiftUI 把产品做到中后期,遇到的问题越来越多,很难解决,节省下来的时间全都还回去了。放弃幻想,认清现实,决定用 UIKit/AppKit 重新实现了,只把 SwiftUI 当作 UI 库来用,不当作 App Framework 来用。
2:08 PM ∙ Jan 29, 2023

💼職缺/履歷交流區

  • 富果帳戶:Senior iOS Engineer 軟體開發工程師(Flutter)

如果你有 iOS 相關職缺或是求職履歷想要刊登在開發者週報,請見關於。


🙏支持 13 寫作,請訂閱我的 Patreon。也歡迎按喜歡❤️、留言💬、回信✉️與我交流。

1
Share this post

開發者週報 #172 各種時代的眼淚

www.ethanhuang13.com
1 Comment
Phineas
Feb 1·edited Feb 1Liked by 13

[分享]

在 iOS 16 剛出的時候,有發現使用原生 TTS 會閃退,目前在 iOS 16.3 上應該是修好了,

我這邊有驗證 iPhone 11 pro, iPhone 13 pro max, 14 pro max 試跑時間都有連續 8hr+。

---

Crash Report

Crashed: com.apple.TextToSpeech.SpeechThread

0 libobjc.A.dylib 0x1c38 objc_msgSend + 56

1 libobjc.A.dylib 0x15d8 AutoreleasePoolPage::releaseUntil(objc_object**) + 196

2 libobjc.A.dylib 0x4f80 objc_autoreleasePoolPop + 256

3 libobjc.A.dylib 0x32bbc objc_tls_direct_base<AutoreleasePoolPage*, (tls_key)3, AutoreleasePoolPage::HotPageDealloc>::dtor_(void*) + 168

4 libsystem_pthread.dylib 0x1bd8 _pthread_tsd_cleanup + 620

5 libsystem_pthread.dylib 0x4674 _pthread_exit + 84

6 libsystem_pthread.dylib 0x16d8 _pthread_start + 160

7 libsystem_pthread.dylib 0xba4 thread_start + 8

Expand full comment
Reply
TopNewCommunity

No posts

Ready for more?

© 2023 ethanhuang13
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing