💬 Pofat 的話
這週看了《哥吉拉 MINUS ONE》,日本人拍起來就是和美國人不同,與其先等個一小時以上的鋪陳再露面吼叫,開場不到五分鐘就讓哥佬出來怒吼,這才是我們要的哥吉拉。故事描述一個戰場逃兵雙重絕望的大環境下找到他真正的戰場,主軸雖然老套,但氛圍營造得很棒,大怪獸的魅力永遠那麼棒,這部在我心中和庵野的《正宗哥吉拉》並列第一。
下週聖誕節週末我要去玩耍,故休刊一期,先祝大家聖誕快樂。
🌎 On Swift Community
Swift 5.9.2 Released
今年最後的發版,Swift 5.9.2 增加了 SE-0407 可以同時提供多個 protocol 於 macro 的宣告,便能同時實作多個 protocol。
Apple 將推出條件定價
條件定價(contigent pricing)你可以給已訂閱 A 的用戶以優惠價訂閱 B,AB 可以屬於不同的開發者,一月會有更多細節釋出。
如何救回被 Mac 吃掉的瀏海
如果 Macbook 的瀏海吃掉圖示這件事常困擾你,這裡有篇降血壓良方。
你可以透過第一方的設定去調整位置以讓重要的圖示遠離瀏海,或直接使用第三方的解法。
我個人使用 Bartender,但因為它使用螢幕錄影的功能來確保圖示位置,所以會不時地看到指示燈,對此敏感的請留意。
https://www.jessesquires.com/blog/2023/12/16/macbook-notch-and-menu-bar-fixes/
這就是物理
最近發現一個非常性感的 repo,優雅又 Swifty 的語法、composable、以及含有滿滿的物理學⋯⋯單位!
Physical 使用上相單直覺,與書寫習慣一致(像是 12.kilometers
),可以直接使用不同單位互相比較運算,再轉換單位,看一下範例就能感受它的優美,雖然我目前應該是用不到,不過看著也是賞心悅目。
2.kelvin → .celsius // -271.2.celsius
25.celsius → .fahrenheit // 77 °F
2 * 100.kelvin // 200 K
2 * 100.celsius // Not a Thing
500.kelvin ^ 4 // 6.25e10 K⁴
500.fahrenheit ^ 4 // Not a Thing
30.fahrenheit < 30.celsius // true
🗣️ On Swift Forum
Swift OpenAPI Generator 1.0.0 釋出
從今年五月開源,經過半年的努力扺達了正式版,同時也更新了文件和 tutorial,如果已經在使用 alpha 的朋友,要注意在升級後預設的 access modifier 從 public/package
改成 internal
。
Embedded Swift on Raspberry Pi Pico
喜歡實作的朋友聖誕節(雖然台灣沒假日)不愁沒東西玩了,Pico 是 Raspberry Pi 出的一款微型控制器,有人成功地將 Embeded Swift 佈署到上面,再搭配 Swift-MMIO 來直接控制暫存器,開發的舒服度應該會提昇到很高的層次,不用再使用相對煩雜的 C 或沒有型別安全的 Micro Python,這裡有demo 。
https://forums.swift.org/t/embedded-swift-running-on-the-raspberry-pi-pico/69001
A Perf Issue to Type Inference
在使用 Swift 時建立一個新物有許多寫法,如果你認為指明了型別 compiler 就會有更好的效率,再想想。先來個猜謎,下面四種宣告法,你認為哪一種寫法會讓 compiler 花最久的時間(答案在下面先別往下滑)?
let a = "hello, world!"
let b = String("hello, world!")
let c: String = .init("hello, world!")
let d: String = "hello, world!"
結果可能會出乎你的意料,這是因為在查詢方法成員時花了不少時間(尤其是 overloading 的情況),有興趣可以在這裡看詳細探討,我的結論是大多簡單情況不用多做什麼讓 compiler 自己推斷就行,使用複雜的情況也是在變數後方指明型別就能應付大多情況,不過 Swift 整體的編譯效率持續在變慢,難怪 M 系列晶片要那麼用力成長,讓大家換電腦就是最好的效能問題解法。
對了,答案是 C。
🤪 Pofat 選推
Data leak