贵站复活纪念 + 浅记近期开发经验

Hello, 欢迎登录 or 注册!

/ 2评 / 0

本文作者:  本文分类:随笔  浏览:845
阅读时间:2225字, 约2.5-3.5分钟

今天正好不打算干别的,随便写点。

杂记

贵网站已经属于两年前的东西了,看到了以前各种参差不齐的文章以及当时的交流氛围,不知道这次复活能不能带来新的可能。
这两年我可谓是啥也没干,反而放弃了许多原本热爱的东西。曾经愿意整天捣鼓的 Xcode、VS、虚拟机、各种系统等等,现在也都因为「没用」而尽数忘记。还记得以前经常把这些东西写进作文然后获得一个二十几的分数,而现在已经变得对这些不屑一顾。极少数可能没有忘记的,还是在一个极其低的频率复习着很久以前看似学会的简单 OI 算法,还有 macOS 开发、Swift 及相关内容的印象还是太深刻了,已经忘不掉了。
刚刚上号把两年前所有发过的内容全部打上了类似 Achieve 标记的东西,提醒「读者」(大概没有),以及自己注意里面的东西大多是错的、浅显的、没有用的。可能再过两年我现在写的东西随着热情的消减也会变成这样,但希望不吧。

SwiftUI 与 Swift,与 Objective-C,与过去

SwiftUI 是一个不完善、难以理解它的运作方式的一个新 UI 框架。但又是具有跨时代意义的。几个花括号几个英文单词构建出原生系统的美观界面,真是神奇的事情。今年是发布的第二年或是第三年,这不重要,但它已经在这个领域广为运用。

就那个耻辱的曾经被我用来炫耀的「C+++」而言,它的两个烂尾 2.99999999 版现在封存在我的文件夹里。一个是在原来 Cocoa 的基础上堆叠了巨大多屎山,最后因为太卡、调不出而放弃,全是我自己造成的历史遗留问题。而第二个,是我在去年年底尝试用 SwiftUI 重构的版本。光用 SwiftUI,足够打造出一个原生洁面并且良好运行,但显然没那么简单。我想要多个文件堆叠同一个窗口,像 VSCode 一样:对不起,SwiftUI 不行;我想要开始时不自动打开文件选择器:对不起,SwiftUI 不行;我想要自动保存:对不起,SwiftUI 还是不行。在简单化的同时,SwiftUI 本身作为一个完全重构的产物,也只支持了最基本的功能,开发者也需要去适应新的思维模式。

还记得 21 年,我尝试学习、写下 Objective-C 代码。我觉得它虽然复杂,但一堆中括号去调用类成员感觉很酷,但也深深感受到了不便:Swift 是啥都帮你弄好了,Objective-C 也帮你弄好了,但去使用它帮你弄好的东西却更加麻烦。可是它是几十年前的东西,也不能怪它。

无论是开发者手中的工具,还是普通用户手中的软件,在时代的进程中淘汰旧的、创造新的,但很少有把新、旧都完善好的。我手上的 macOS,在 11.0 的变革中彻底改头换面以后,风扇的转动和烫手的 CPU 让它再也无法回到从前那个安静的使用体验;iPadOS 在添加了诸多功能的同时,甚至连中文输入法都输不利气,过了好几个版本都没修。这下不得不感慨了。

相隔两年的铃声系统

现在回去看,主要感受就是我当时为什么有脸把那个东西发出来,还发到全校。纯粹是一个脑子一热试了一下系统的计时器然后随便加几行代码放铃声造出来的。这次的版本经历了一个从立项、功能开发与调试、测试、发布的完整周期,也踩了不少坑。

首先是 UI。这次用了系统的 Visual Effect,直接是模糊背景,不是两年前的那个方角半透明还自带重叠效果的。主界面沿用了以前的 Storyboard,新增的设置界面是开发重点,使用了 SwiftUI。间距、细节都是认真调过的。这次完全采用了新的算法,原来是铸币每秒判一次,现在是用了一个队列,只用 2 秒判一次队首就行了。

主要开发的 3 天里,2 天半都是在调设置界面。重难点一个是保存设置,一个是显示与修改。保存设置的话,由于不算是典型的用户设置,而是经过好几个结构体层层套娃得到的数据,所以手动存在了 UserDefaults 里面,没有用 SwiftUI 提供的更方便的东西。这次的前端和后端也是完全分离的,后端的数据结构模型就写了挺多的,从头建立了存数据的模型,还要支持类似 Comparable,Equatable,Codable 这类的协议,还因为一个 lhs 和 rhs 写反了导致玄学错误。而在前端,则踩了更多的坑。我开发阶段从头到尾都是以 macOS Monterey 作为 Deployment Target 的,所以非常顺利,循环显示任务时用到了 SwiftUI 新特性也没有注意。直到我在后续检查的时候希望支持 Big Sur,结果发现原来的东西全错了,Big Sur 时代的 SwiftUI 太多不支持了。因为能力不足,于是只能把 ForEach 里面的构造方法一个个试,最终试到满意的结果。SwiftUI 还是缺少时间的沉淀,相当不稳定(C++ STL 出玄学错误至少还有 cpp reference 告诉你是 UB 吧)。

这次对待这个项目是相当认真的,用 LaTeX 从头到尾写了一遍用户说明,把所有的虫都捉了,结果也就我们班 ClassIn 里分享了一下,因为受众面太小了,而且今年是直播课 ClassIn 自己也会提醒,到后面我自己都不用了。但这可能是我第一个从头到尾自己做的、良好运行的 App,即使简单但很有意义。

最后

这两年的变化很明显,把 Cppp 彻底弃了只用 VSCode,把虚拟机都删了只留一个 Boot Camp 和 NOI Linux,把自己用 Swift 做的小文本编辑器删了换用 Word,把之前所谓「学会」的语言全都忘光,只留有用的。这些技术终究只是一种工具,没有用的、学了用来炫耀的工具就不需要了。
很高兴看到贵站复活,希望这个新平台能有更多真正实用、有价值的东西!

易淹丁真,鉴定为:大水笔

关于作者

  1. Tianheng Ni说道:

    草 最后一张图把我吓住了

  2. 23568JXTang说道:

    每个人都有自己天真的时候呢,也不看看我当初都在发些啥
    u1s1 ringtonehy ui真好看

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注