在最近于维尔纽斯举办的一次黑客马拉松中,我和队友将一台旧式转盘电话改造成了一位人工智能音乐管家。通过将树莓派接入电话硬件,我们集成了 ElevenLabs 和 Spotify API,让用户可以通过带有约克郡口音的对话式人工智能来点播各类小众音乐播放列表。值得一提的是,我们整个项目没有编写一行代码,而是利用人工智能驱动的工具专注于系统架构而非语法。 这次经历凸显了黑客马拉松的一个转变:随着软件开发变得日益“已解决”且自动化,真正的挑战在于物理硬件的集成。我相信黑客马拉松的未来在于复古技术的复兴——将废弃设备改造为荒诞、复杂且“道德上令人困惑”的机器。 现代黑客马拉松应摆脱平庸、以风投为导向的网页应用,转而投向那些突破界限的物理“电线方尖碑”。无论是情感收银机还是支持社交媒体的传真机,目标都应是通过人工智能与怀旧硬件的融合,创造出荒谬、过度设计的项目,从而挑战我们对现实的认知。
### 摘要:关于电子邮件验证的真相
电子邮件地址验证常常导致不必要的复杂性和技术债务。尽管人们普遍认为开发者应使用复杂的正则表达式来“清理”用户输入,但作者认为这是一种反模式,往往会疏远用户,并且会在不断演变的规范面前失效。
主要结论:
* **不要过度验证:** 电子邮件规范(RFC)深受历史影响,其宽容程度远超大多数开发者的想象。许多被认为是“无效”的地址(如带有加号标签、非 ASCII 字符或非常规域名结构的地址)实际上是有效的。
* **优先考虑用户体验(UX):** 不要使用限制性的正则表达式,而应使用简单的检查来防止明显的拼写错误。你的目标应该是协助用户,而不是限制他们。
* **验证,而非校验:** 真正“验证”电子邮件的唯一方法是发送一封邮件。依靠验证码或链接,而不是执行耗费资源的服务器端检查或 MX 记录查询。
* **谨慎处理身份信息:** 存储电子邮件时,应避免使用破坏性的大小写归一化(如 `UPPER()`),因为这可能会导致国际字符出错。应使用数据库原生解决方案(如 `citext`)或适当的排序规则来妥善处理不区分大小写的匹配。
**总结:** 保持简单。停止试图将电子邮件地址强行塞入僵化且过时的框架中。