## 流式管道中的数据质量:超越 Kafka 与 Schema Registry
现代数据工程解决了存储和处理挑战,但数据*质量*仍然是一个关键问题。不良数据会导致不可靠的模型和报告,并且防止“垃圾进”是困难的。虽然 Apache Kafka 是流式数据的主要摄取方法,但它本身并不验证数据——它只是将数据视为字节。
现有的解决方案,如 Confluent Schema Registry,增加了验证功能,但依赖于客户端实现,引入了复杂性、人为错误的可能以及对不同客户端的有限支持。Schema 演进也存在风险,因为兼容性检查并非总是被强制执行。
Bufstream 提供了一种不同的方法:一种 Kafka 的即插即用替代方案,它将验证转移到代理。它利用 Protobuf 进行高效的数据序列化,并利用 Buf Schema Registry 在源头强制执行 schema 和*语义*验证(业务规则)。
主要功能包括防止运行时 schema 更改,并利用 Protovalidate 进行自定义规则强制执行。这确保了数据质量是核心原则,而不是可选过程,从而实现更可靠的数据管道。Bufstream 旨在将数据质量视为一等公民,提供比传统 Kafka 设置更强大的解决方案。
此软件包提供工具,用于在 Linux 系统上使用 Phomemo M02、M110、M120、M220 和 T02 热打印机打印图像。它通过逆向工程官方 Android 应用程序与打印机之间的蓝牙通信来开发。
连接方式包括蓝牙和 USB。蓝牙需要通过 `bluetoothctl` 配对,并通过 `rfcomm` 连接。USB 连接使用 `/dev/usb/lp0` 或 `ttyACM0`。支持 CUPS(通用 Unix 打印系统)集成,需要为每个打印机型号安装和设置特定的 PPD 文件(例如,`Phomemo-M02.ppd.gz`、`Phomemo-M110.ppd.gz`)。
核心打印功能依赖于发送 EPSON ESC/POS 命令,这些命令是通过数据包分析发现的。该软件包包含一个 `phomemo-filter.py` 脚本(目前适用于 M02)来处理图像。蓝牙功能可能需要 SELinux 设置为宽松模式。M110/M120/M220 型号支持不同的介质类型(LabelWithGaps、Continuous、LabelWithMarks)。
## 四足体建模与设计见解
本文详细介绍了作者对混凝土四足体建模的探索——这种常用于海岸防御的消波结构,最近在设计领域也越来越受欢迎。出于好奇,作者试图找到一种数学上优雅的方法来定义四足体的形状,参考了Danel和Anglès d’Auriac的原始专利,其中规定了腿部的角度和比例。
作者使用build123d和CQ-editor成功地建模了一个四足体,从一个包围四面体的立方体的角开始构建。令人惊讶的是,“目测估算”方法得出的比例与发明者的规范非常接近——腿长和宽度大致等于立方体边长的一半。
该模型使用截断锥体来形成腿部,截断锥体的锥角由潜在的几何形状确定。关键尺寸,如大腿和脚踝的圆,是根据整体尺寸计算得出的,从而产生一个合理且视觉上准确的表示。作者提供了详细的公式以及一个交互式three.js动画和源代码的链接,供进一步研究。最后,作者思考了腿部的交汇点以及倒角脚设计背后的潜在工程目的。
## 现代软件臃肿问题
尽管硬件取得了进步——快速的CPU、充足的内存和巨大的存储空间——但软件效率往往被忽视。普遍的观点是,当资源廉价时,优化不再那么重要,重点应该放在开发人员的生产力和可维护性上,这呼应了克努斯关于“过早优化”的警告。
然而,现代软件臃肿并非仅仅由于效率低下。其中很大一部分是*权衡*的结果,为了提高安全性、健壮性、全球化支持以及使用复杂的框架。这些补充解决了过去资源受限的计算中普遍不存在的问题,那时程序通常用低级语言编写以实现最大控制。将今天的软件与旧程序进行比较——Windows 11计算器与Windows 95,或者现代图像的大小超过超级马里奥兄弟——突出了这种差异。
虽然有些臃肿是合理的,但无能和过度工程也贡献了很大一部分。不必要的依赖、为简单应用程序使用微服务以及过度的容器化都会增加开销。重要的是,优化在性能关键领域(如编解码器、归档器和虚拟机)*仍然很重要*。关键在于平衡:避免过早优化,同时认识到完全推迟优化也会产生不利影响。