在weekly.fatbobman.com[1]订阅本周报的电子邮件版本。访问我的博客肘子的 Swift 记事本[2]查看更多的文章。加入Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。
在上周一,我的博客的 HTTPS 证书出现了短暂的失效。好在失效后五分钟,就有热心网友提醒了我。联系云服务商后发现,是对方处理 SSL 证书自动续签的代码出现了故障。经过两个小时的排查,问题得以解除,网站恢复了正常。
目前博客使用的是云服务商提供的 90 天自动续签证书。随着SC-081v3 提案[4]的通过,SSL/TLS 证书的有效期被正式缩短为 47 天了。虽然全面实施仍需时日,但可以预料,各大云服务商与科技巨头必然会提前“积极响应”,迫使广大网站管理员和普通用户被动接受这一现实。
证书有效期的大幅缩水,带来的不仅是系统运维人员和用户工作量的增加,更可能直接影响人们选择服务商时的倾向。比如我现在使用的图片 CDN 服务,至今未提供免费且有效的自动续签方案,也不能轻松整合 Let's Encrypt 自动续签机制。如果未来几个月它依旧无法给出合理方案,我大概率将不得不挥手告别。
SSL/TLS 证书缩短有效期也许有其安全上的合理性,然而不止证书,我们周围的软硬件也在以越来越快的速度更新迭代。即便是当前最火的智能电动车,也因电池寿命和芯片算力的限制,实际使用寿命远低于传统燃油汽车,逐渐向消费类电子产品的更新节奏靠拢。这种趋势,也未必是普通消费者真正期待看到的未来。
耐人寻味的是,在数字世界的“有效期”越缩越短的同时,现实生活中许多本应新鲜短暂的商品却反而拥有了更长的“保质期”,尤其是水果。得益于现代化仓储技术和全球物流网络的飞速发展,采购商与经销商们倾向于耐储存和耐运输的新品种,反过来迫使果农放弃传统品种,种植更加“持久耐用”的水果。这些水果外观越来越精美,耐储存能力越来越强,却也渐渐失去了童年记忆里独特的风味和模样,想要再次品味那种单纯的美味,已变得越来越困难。
在这个快速变迁的世界里,无论是更短的证书有效期还是更长的水果保质期,都折射出技术与商业如何重塑我们的生活。作为开发者,我们深谙敏捷迭代与快速更新的重要性;而作为消费者,我们依然渴望能拥有一些经得起时间考验的东西。在不断适应变化的同时,保有选择的自由和对品质的坚持,也显得尤为珍贵和重要。
欢迎点赞、转发
随着 AI 能力的快速提高,低代码甚至无代码的时代似乎即将到来。然而,过去一年间,针对专业开发者的各类编程工具并未减少,反而层出不穷。无论是 AI 辅助编程的突破,还是协作、跨平台能力的持续提升,都在证明着专业开发者仍是不可或缺的重要群体。反观苹果生态,作为最重要的开发工具,Xcode 近年来却未能带来真正令人振奋的改变。在这篇文章中,我将分享自己对未来 Xcode 的几点期望。
在 SwiftUI 中,Color
并不只是字面意义上的颜色。它符合ShapeStyle
协议,且在底层与Shape
共享渲染管线,这让 SwiftUI 的Color
拥有了其他架构中少见的能力。在本文中,Gabriel Theodoropoulos[8]展示了Color
视图中一些常被忽略但非常实用的特性:多级颜色、内建渐变、颜色混合和内外阴影。只需简洁的代码,即可实现丰富的视觉效果。在构建视觉层次或提升界面细节感时,不妨优先考虑这些内建特性。
苹果在 iPhone 16 上引入了相机控制按钮,使用户能够以物理方式实现更顺畅的相机缩放体验。作为第三方拍照应用的开发者,Weichao Deng[10]希望在 PhotonCam 中还原类似 iOS 相机 App 的缩放滑块体验: 滑块轨道上标示离散的缩放比例,其中关键比例以白色高亮显示;当黄色滑块靠近这些关键比例时会自动吸附(snap),且需要更大幅度的拖动才能脱离吸附状态。在本文中,Deng 分享了他为实现这种吸附体验所采用的实现方式和背后的算法。如果你也在设计带有吸附交互的滑块组件,文中所提出的思路或许值得参考。
这是一篇兼具情感与思考的 WWDC 热身文,适合静下心来读一读。Daniel Steinberg[12]在文中记录了他对 WWDC 的观察与感受——从大会中“开发者”的角色逐渐被边缘化,到传闻中的新 UI 可能给工作带来的额外负担;也谈到了他目前关注的技术栈:App Intents、SwiftData、SwiftUI、Swift 6 和 Swift Testing 等等。文章最后,Daniel 呼吁让 Swift 从苹果的附属品中走出,设立真正开放的基金会与开发者大会。
系统弹窗是 iOS 中最常见的 UI 组件之一,看似简单,实则暗藏诸多细节:按钮顺序、角色设定、颜色规范等,稍有不慎就可能导致用户困惑。在本文中,Nikita Ermolenko[14]深入结合苹果的 Human Interface Guidelines(HIG),详尽讲解了如何正确使用.alert
,并指出了常见误区。这是一篇实用性极高的 UI 细节指南,不仅提醒开发者关注平台规范,也揭示了 SwiftUI 在设计一致性方面仍有改进空间。
作为 Swift 工具箱中的利器,理解reduce
的用法能让你写出更简洁、更具表达力的代码。reduce
用于将集合中的多个值“归约”为一个值,最经典的用途是求和,但它的能力远不止于此。Antoine van der Lee[16]在本文中讲解了reduce
与reduce(into:)
的用法,并通过示例展示它们如何在构建字典、统计出现次数、扁平化嵌套数组等场景中发挥作用。
由Cameron Cooke[18]开发,XcodeBuild MCP 是一个基于 MCP(Model Context Protocol)协议的服务器,专为 AI 助手与自动化客户端设计,提供标准化的 Xcode 操作接口。它支持项目构建、部署、模拟器控制等关键任务,旨在消除传统命令行调用中的不确定性与易错性,使 AI agents 能够更稳定、高效地与 iOS/macOS 项目交互并执行自动化开发流程。
由Kishikawa Katsumi[20]开发,Swift Regex是一个将传统正则表达式转换为 SwiftRegexBuilder
语法的工具,并支持实时测试和结果预览。在最近的更新[21]中,该工具新增了调试功能,开发者现在可以逐步执行 Swift Regex,深入分析匹配过程中的回溯行为。对于使用 Swift 原生正则进行开发与优化的场景尤为实用。
#079 微软收紧插件、谷歌发力云端,Xcode 何去何从?
如果你觉得这份周报或者我的文章对你有所帮助,欢迎点赞、赞赏,并将其转发给更多的朋友。
参考资料
[1]
weekly.fatbobman.com:https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本:https://fatbobman.com
[3]
Discord:https://t.ly/gzxeh
[4]
SC-081v3 提案:https://groups.google.com/a/groups.cabforum.org/g/servercert-wg/c/9768xgUUfhQ
[5]
我所希望的 Xcode:https://fatbobman.com/zh/posts/my-hopes-for-xcode/?utm_source=fatbobman%20weekly%20issue%2080&utm_medium=web
[6]
【小贴士】如何在 VSCode/Cursor 中测试 Core Data 代码:https://fatbobman.com/zh/snippet/how-to-test-core-data-code-in-vscode-cursor/?utm_source=fatbobman%20weekly%20issue%2080&utm_medium=web
[7]
探索 SwiftUI Color 特性 (SwiftUI Colors – Exploring Overlooked Features):https://l.fatbobman.com/w080-01
[8]
Gabriel Theodoropoulos:https://x.com/gabtheodor
[9]
🪜 打造更自然顺手的滑块吸附体验 (Crafting a Better Snapping Experience for Sliders):https://l.fatbobman.com/w080-021
[10]
Weichao Deng:https://juniperphoton.substack.com/
[11]
关于 WWDC 的一些想法 (Thinking of WWDC):https://l.fatbobman.com/w080-03
[12]
Daniel Steinberg:https://mastodon.social/@dimsumthinking
[13]
iOS 弹窗:简单背后的细节陷阱 (Alerts in iOS: Simple but Tricky):https://l.fatbobman.com/w080-04
[14]
Nikita Ermolenko:https://x.com/otbivnoe
[15]
Swift 中的 reduce 用法 (Swift Reduce: Combining Elements Into a Single Value):https://l.fatbobman.com/w080-05
[16]
Antoine van der Lee:https://x.com/twannl
[17]
XcodeBuild MCP:https://l.fatbobman.com/w080-06
[18]
Cameron Cooke:https://x.com/camsoft2000
[19]
Swift Regex:https://l.fatbobman.com/w080-07
[20]
Kishikawa Katsumi:https://hachyderm.io/@kishikawakatsumi
[21]
更新:https://github.com/swiftfiddle/swiftregex
[22]
线上报名:http://xiniu-edu.com/k12/competition