波報 | Pofat 的 Swift 中文電子報

Share this post

波報 #37 - Apple Music Classical

pofat.substack.com

波報 #37 - Apple Music Classical

Swift 大小事 2023/3/6 - 2023/3/12

Pofat
Mar 12
Share this post

波報 #37 - Apple Music Classical

pofat.substack.com

💬 Pofat 的話

本期發刊前的週末發生了一件超級大事,超過半數矽谷新創存錢的美國矽谷銀行 (SVB)因不利於己的消息和(結果上來看)失敗的應對而瞬間倒閉,眾多新創急如熱鍋上的螞蟻,此情此景讓我想到電影「白銀帝國」的場景。熱門事件的網路解析文章數量與恐慌度成正相關,相關討論大家可以找到很多,只是感歎今年才一季就有層出不窮的事件持續渲染大環景氣將如巖冬的氛圍,不過大家也別太絕望,亂世才能出英雄嘛,總之還是祝大家都能安好地找到自己的歸屬。

《看前一期 | 所有文章》


🌎 On Swift Community

Introducing Swift Certificates and Swift ASN.1

Swift 公佈兩個新的官方 package:swift-certificate 與 swift-asn1,前者可以處理常見用來辨識身份的 X.509 證書(如 TLS)流程;而該證書的資表達格式則稱做 ASN.1, 其格式彈性且複雜,還有特定的序列化和反序列化規則(BER、DER), 這些是則後者的職責所在。swift-certificate 目前尚在前期開發階段以取得更多社群回饋,樂見這個非 app 開發者的關鍵需求終於有了 Swift 的原生版本。

Twitter avatar for @SwiftLang
Swift Language @SwiftLang
Announcing swift-certificates and swift-asn1, two packages that provide a faster and safer way to work with X.509 certificates and TLS.
swift.orgIntroducing Swift Certificates and Swift ASN.1I’m excited to announce two new open source Swift packages: swift-certificates and swift-asn1. Together, these libraries provide developers a faster and safer implementation of X.509 certificates, a critical technology that powers the security of TLS.
3:57 PM ∙ Mar 7, 2023
133Likes27Retweets

Apple Music Classical

Apple 的全新古典音樂專用 app,目前開放預購,3月 28號可以正式開聽。其內容還是來自於 Apple Music ,有人可能會疑惑「為什麼要把相同的內容再放到另一個 app 裡?」

因為古典音樂的分類法、屬性和流行音樂非常不同,光人名就很難處理了,比如柴可夫斯基就可能找到四十多種不同的拼法,目前的推薦演算法也不是針對這類型的音樂需求最佳化,主流串流服務提供的清單多是「Relaxing Classical」、「Chilled Classical」這類型的粗分,可以滿足業餘聽眾,但遠不及滿足更進階的群族(縱使不多)。而這個 app 其實來自於 Apple 在 2021 年八月收購的古典音樂串流新創 - Primephonic,Apple Music Classical 應該會基於它們原本的介面,利用它們的經驗提供古典音樂粉絲更好的體驗,原訂 2022 年發佈不過想必又是因為疫情而延期了,我個人非常期待!

Twitter avatar for @AppleClassical
Apple Music Classical @AppleClassical
Introducing Apple Music Classical, the new app designed specifically for classical music. Pre-order today on the @AppStore. apple.co/AppleMusicClas…
3:22 PM ∙ Mar 9, 2023
3,202Likes893Retweets

Vapor 最新動態

Vapor (Swift on Server Side framework)最近才釋出了移植到 AWS 和用 DocC 建立 API 文件的重要基礎建設,接下來會有新的設計,MySQLNIO 的底層重寫,以及讓 Vapor 全面支援 Swift Concurrency,這麼多的工作竟然只有兩個核心成員在推動,有興趣的 Swift 開發者不妨也投身加入這個新領域。

手工打造 HTML 解析器的那些事

重量級的技術長文,也許 HTML 轉 NSAttributedString 的需求不是太熱門,所以只好手動實現套件的歷程與技術結構詳解,對於技術狂應該是個很棒的早午餐搭配(可能會看到午餐)。

Twitter avatar for @zhgchgli
ZhgChgLi @zhgchgli
前陣子自行實現了一套 HTML 轉換 NSAttributedString 的 Swift 套件- ZMarkupParser。 又花點時間寫了篇文章,描述開發背景及整個工具的技術細節、實際程式碼介紹、運作架構...等等。 希望最終能讓這個項目是對整個社群有幫助並且持續優化與擴充功能。
medium.com手工打造 HTML 解析器的那些事ZMarkupParser HTML to NSAttributedString 渲染引擎的開發實錄
2:47 AM ∙ Mar 12, 2023
47Likes12Retweets

Universal Link Debug 實錄

又是看得很爽的技術推文,架上跳轉如果有問題又沒有設定錯誤,可以留意 Apple CDN 是不是被擋住了。

Twitter avatar for @johnnie_tseng
Johnny @johnnie_tseng
下午協助同事解決一個問題 雖然不是什麼真・技術問題,不過繞了好大一圈 決定記錄一下解決過程 & 思路。 問題: .well-known 底下已經放了 apple-app-site-association,用 mode=developer 繞過 Apple CDN 可正常跳轉到 App。但是架上版卻壞掉,無法正常透過 Universal link 跳轉到 app
Image
1:54 PM ∙ Mar 9, 2023
73Likes12Retweets

macOS: Slow by Design

本文作者發現新買的 M2 Pro 編譯與單元測試 rustc 的速度與硬體規格無法匹配,偉哉大 M2 怎麼沒什麼驚人改進,而且連 VPN 時還會更慢,原來是 macOS X El Captain (10.11)引進的 SIP 機制,執行程式前會把執行文件做 checksum 並送到蘋果的伺服器檢測是否為惡意程式,如果想對信任的程式關閉這項檢查,可以把工具加入隱私設定裡的 Developer Tools 中。

Twitter avatar for @cyukang
yukang @cyukang
我有几年没怎么用 Mac 了,新买了个 M2 才用起来就碰到苹果这么一个奇葩设计,写篇文章分享一下。这是确实是 Slow by design !
catcoding.me苹果:为了安全让 M2 吃灰 | 程序员的喵All about coding and writing
3:49 PM ∙ Mar 6, 2023
676Likes168Retweets

🗣️ On Swift Forum

SE-0392 Custom Actor Executors

這是個很重要的提案, Swift Concurrency 目前的設計旨在讓使用者聚焦於不能同步存取、需被隔離(actor isolation)的資料,因此「刻意地」模糊化程式執行的環境(OS 的執行緒,或 GCD 的 queue),也避免了熱點執行緒太忙的情況,比如規劃專門執行緒給 Disk I/O 這種常見的設計,在大量資料同步時可能會阻礙了在上面高優先的工作。目前的例外只有 @MainActor ,因它必跑在 main thread 上。

這樣的設計就有如自排車,使用者不用考慮太多便可安全地達成目的,而隨著 Swift Concurrency 日漸蓬勃,加入手自排的功能也不錯,尤其是某些與外部元件互動的場合,可能會需要把程式跑在特定的環境上(例如利用 thread local variable 儲存的狀態、切換 thread 後這些便會丟失),SE-0392 主要新增了一個 protocol SerialExecutor ,其中的 func enqueue(_:) 可以拿到將即執行的工作,actor 透過它便能把工作都依序地執行在指定的環境(執行緒或者 context )上,看起來長這樣:

actor 只要指定 UnownedExecutor 是上述建立的 executor 即可:

此外,這提案還引入了一個用來在 synchronous 方法裡檢查是不是在正確的 executor 上執行,比如 assumeOnMainActorExecutor, 這原本是另一個獨立提案但因為跟這個提案密不可分便合併進來。

[Pitch] @OptionSet macro

SE-0389 Attached Marcos 實現了可以定義改變函數簽名、增加成員等的 macros,可以取代許多 code-get 工具,裡面的一個例子 OptionSet 現在被抽出成一個獨立的 SE pitch。使用過 OptionSet的人想必能認同使用這個資料型態需要寫不少模版程式且容易出錯,比如下面的範例,若項目一多可能會不小心使用到重複的數字而出錯:

解決方式則是利用一個內部的 enum 來取代手工 increment:

而那繁瑣的 initializer 一看就是 compiler 該負責的事情,所以本提案的主旨就是把 @OptionSet 加入 standard library,簡化後即能寫成如下:

不過我個人對於 standard library 「幫忙寫程式碼」的概念感到有點多此一舉,既然定義都在一起何不直接開個新的 type ( Alternatives 裡提到的 optionset),或是留言中提到的另一個好替代點子,用 enum 包複的 option set,至少我個人一直以來使用它的體驗都是「可複選的 enum」:

最後對於整個 Swift Macro 系列提案有興趣的可以到其example project 玩玩,需先到官方下載 2023.3.8 之後的 Swift development snapshot 搭配使用。


🤪 Pofat 選推

Apple 英國新辦公室上週啟用,可以在 Pink Floyd 的專輯裡工作惹

Twitter avatar for @squeakytoy
Steven Peterson 🏳️‍🌈 @squeakytoy
It’s so weird that I work in a Pink Floyd album now
Image
12:37 AM ∙ Mar 8, 2023

Twitter 再度自爆(!?

Twitter avatar for @levelsio
@levelsio @levelsio
Twitter didn't pay its API bill....to itself?
Image
5:21 PM ∙ Mar 6, 2023
2,794Likes172Retweets

檢查 app 是不是 ChatGPT 套一層皮的方式

Twitter avatar for @unixzii
@Cyandev@mastodon.social @unixzii
One simple way to tell if an application is ChatGPT-based.
Image
10:57 AM ∙ Mar 5, 2023

🫡 疫情期間的新創企業家們

Twitter avatar for @ChrisJBakke
Chris Bakke @ChrisJBakke
Running a company: 2020: can you survive a pandemic? 2021: still here? we’re going to give all of your competitors $100m series A rounds. 2022: wow, you made it? okay, all engineers cost $600,000/year now. 2023: nice job! okay, we’re going to take away your bank account.
7:09 PM ∙ Mar 10, 2023
6,636Likes881Retweets

螢幕數量與等級

Twitter avatar for @flaviocopes
flavio @flaviocopes
Image
12:39 PM ∙ Mar 10, 2023
3,428Likes261Retweets

Indie 們是這種感受嗎?我是有在睡夢中解過程式啦

Twitter avatar for @kimnenemMM_art
nenem @kimnenemMM_art
Artists problems
Image
11:01 AM ∙ Mar 8, 2023
68,262Likes10,315Retweets
Share this post

波報 #37 - Apple Music Classical

pofat.substack.com
Comments
TopNewCommunity

No posts

Ready for more?

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