## 用于全文搜索的布隆过滤器:可扩展性研究
本文探讨了使用布隆过滤器创建空间高效的全文搜索索引的可能性,即使对于大型文档集合也是如此。核心思想利用了布隆过滤器的小尺寸——可能允许静态网站的客户端索引——但当扩展到少量文档之外时,会面临挑战。
最初尝试通过排序或树形结构化过滤器来提高查询性能的努力被证明是无效的,因为自然语言具有高维度和固有的重叠性。一种更有希望的方法是使用“布隆过滤器的倒排索引”,使用树将词典单词映射到文档过滤器,模仿传统的倒排索引,但可能具有更小的存储空间。
然而,分析表明存在一个关键的限制:虽然布隆过滤器可以有效地将词典*压缩到*过滤器中,但它们不会在过滤器*之间*共享信息。每个文档的过滤器必须重新编码其所有单词,导致随着文档数量的增加而增加空间消耗。超过大约 7,200 个文档后,标准的倒排索引会更节省空间。
最终,布隆过滤器擅长将大型词典压缩成*少量*过滤器。随着过滤器数量的增加,优势会减小,这凸显了在选择数据结构时考虑数据协同作用的重要性。
此软件包提供工具,用于在 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,或者现代图像的大小超过超级马里奥兄弟——突出了这种差异。
虽然有些臃肿是合理的,但无能和过度工程也贡献了很大一部分。不必要的依赖、为简单应用程序使用微服务以及过度的容器化都会增加开销。重要的是,优化在性能关键领域(如编解码器、归档器和虚拟机)*仍然很重要*。关键在于平衡:避免过早优化,同时认识到完全推迟优化也会产生不利影响。
## Tenacity:一款免费且开源的音频编辑器
Tenacity是一款跨平台、多轨音频编辑器和录音工具,适用于Windows、Linux和其他操作系统。它由志愿者社区开发,为音频编辑需求提供了一种用户友好的替代方案。
主要功能包括从各种音频设备录音、支持广泛的音频格式(可通过FFmpeg扩展)、高达32位浮点的高质量音频处理,以及与VST、LV2和AU插件的兼容性。用户还可以利用Nyquist和Python等脚本语言进行高级编辑。
Tenacity优先考虑可访问性,提供键盘导航和屏幕阅读器支持。提供预打包的构建版本,或用户可以从源代码构建。社区支持在Matrix、Mastodon和Lemmy上活跃,开发托管在Codeberg上。它建立在其他Audacity分叉的遗产之上,提供了一种协作且不断发展的音频编辑解决方案。