💬 Pofat 的話
最近好多可以玩的東西,各種遊戲、Advent Of Code、Stable Diffusion,以及正紅的 ChatGPT,希望大家在今年最後一個月都玩得開心。
🌎 On Swift Community
Apple 釋出 Core ML 上的官方 Stable Diffusion 整合
Stable Diffusion 釋出後就一直很受歡迎,不論是輸入文字以生成圖畫或超解析度功能等都帶來頗多話題,如此 Apple 官方釋出了轉換工具與新 OS (macOS 13.1 與 iOS/iPadOS 16.2)包含 Core ML 的最佳化。
已經有人加上 SwiftUI 做了個簡單的文字轉圖 app
在 Advent Of Code 旅程中發現 Swift Bug
每月十二月都會舉辦的 Advent Of Code 是工程師們在 code freeze 季節愛玩的活動之一,把解題變成一種娛樂活動。
然而今年的題目之一剛好滿足觸發 Swift 冷門 bug 的條件 - 如果餵給 Set.intersection (跟輸入的集合取交集) 一個 Sequence,且 Sequence 重複元素的個數和 Set 本身缺少的元素相等,則會返回 self 本身,要避免則把 Sequence 改成 Set 就好。
沒想到 Set.intersection(_:)
這麼基本操作也會有 bug ,雖然觸發條件頗嚴苛。大家也別擔心,此 bug 已於 Swift 5.7 修復(其PR在此)。
升級 framework 的 minimum deployment target 到 iOS 13+ 可獲得些許啟動時間的加速
因為 iOS 12 與之前的 ObjC runtime 沒有正確地支援 Swift 初始化,所以會插入正確的方法並在 Static Initializer Calls 的階段(app 啟動非常早的一個階段,在 main 之前)替換 runtime 實作(詳細討論可見 Swift Forum),只是第三方的 framework 未必能輕易地升級。
修改模擬器 status bar 的指令在 iOS 16 沒有效果
simctl status_bar
可以讓你修改模擬器 status bar 上的狀態(WiFi、cellular 與 battery 等),不過看起來動態島好像把它搞壞了,如果有此需求請改用 15.x 的模擬器。
ChatGPT
ChatGPT 產生了不少有趣的作品,本週 13 的 Apple 開發者電子報收集了不少趣味推,有些文章老實說真的寫得很不錯,尤其空想文學。
試玩後,我覺得它除了娛樂性外,最實用的地方在於提供一個快速的「框架」或基礎,比如你想要寫篇 proposal ,它給出的文章結構都不錯,可以在那個結構基礎上調整論述或修正資訊即可。這種做法雖然可能扼殺個人寫作風格,但對於功能性的文章可以用來當做現成的模組零件,像請它寫 Swift Evolution 時發現了金句。
我試著用它生一篇 Swift 每周新聞,但這時間點貌似在 2019...
不過這種用法也可能造成一堆濫芋充數的文章浮現,而且不太容易在第一眼就辨認真偽。
另外,我在這篇回答中看到了熟悉的編劇手法,很酷。當成搜尋零件點子的引擎來用似乎也不錯,總之 ChatGPT 應該是不錯的工具人...
🗣️ On Swift Forum
[Pitch] Task Pools
Task group 是 Swift Concurrency 中用來群組 Task 的工具,也允許把 Task 的回傳值傳出 group 外給使用者,但這個功能同時也限制了一種使用上的可能性 - 根據先前 Task 回傳值來決定是否新增 Task。
現在的設計下會讓這些後來增加的子 Task leak,長久下來就可能榨乾你的資源。於是提案內容意在提出一個新的 Task Pool 來滿足這樣的需求,只是最大的挑戰之一可能是這工具要變成 Sendable,這是 Task group 想避免的事。
[Pitch] Allow Property Wrappers on Let Declarations
Property Wrapper 只能用在 var 的變數上引來使用上的不同調,縱使實際變數的投射值不需變化(我們平時使用 let 的時機),你仍必須用 var 來宣告,如今這個討論已久的話題總算進展到實作的行為討論。
Swift Async Algorithms: Design Guidelines
Swift Async Algorithms 是 Apple 官方用來拓展 Swift Concurrency 功能的 package,比如耳熟能詳的 throttle 、debounce 與 combineLatest 等。如今這個 package 正積極地推進至 1.0 ,而相關文件的工作也有進展,design guidelines 的討論串提供不少有意思的內容。單看 api 和用途的話與 reactive programming 都會有的工具箱很類似,但與 reactive 把響應結果推到下一個函數的概念相比,Async Algorithms 則是把結果都拉進 asynchronous sequences 裡。
🤪 Pofat 選推
這兩個月有太多遊戲可玩了,每天上班時的心情
坎站不夠只能扛下傷害了
微積分魔物的黑暗召喚 (好像有新 app 的點子了...)
發現一個新 app 因長新冠的問題而生,追蹤 illness,而不是 fitness,少見的切入點。
???