这段 JavaScript 代码创建了网页上由特定元素触发的交互式工具提示(气泡)。它解析页面文本内容中的自定义 `[[术语|标题|内容]]` 标记,并将其替换为按钮。点击或聚焦这些按钮,将显示一个工具提示,其中 `标题` 作为标题,`内容` 作为内容。 该代码智能地将工具提示相对于触发元素进行定位,确保其保持在视口内,并通过调暗触发元素分支外部的区域来避免重叠内容。它处理鼠标交互(悬停/点击)和键盘导航(聚焦、Esc 键)以打开和关闭工具提示。 该脚本还包括对移动/触摸设备的优化(“粗略”模式),并在窗口大小调整或滚动时动态重新定位工具提示。它管理工具提示状态,防止同时打开多个工具提示,并确保设置了正确的可访问性属性。最后,它使用动画来实现平滑的打开和关闭过渡。
## 理解 Traceroute:一个 Rust 实现
本文详细介绍了作者学习和使用 Rust 实现一个基本 traceroute 工具的过程。Traceroute 通过发送 UDP 数据包,并逐步增加 Time-To-Live (TTL) 值来工作。路径上的每个路由器会减少 TTL;当 TTL 达到零时,路由器会发送回一个 ICMP “Time Exceeded” 消息,从而显示其 IP 地址。
作者构建了一个 Rust 程序,利用原始套接字发送这些探测包并监听 ICMP 响应。最初,该实现仅识别跃点,但后来扩展到包含时序信息(往返时间)并处理每个跃点的多个探测包——模仿了标准 traceroute 的行为。关键改进包括通过 ICMP 类型检查正确识别到达的目的地,并防止无限循环。
虽然功能可用,但作者承认存在局限性:不对称的回程路径、MPLS 隧道、ICMP 速率限制以及缺乏 IPv6 支持都没有解决。这项练习表明,traceroute 提供的是网络路径的*草图*,而不是确定的地图。最终,作者认为构建 traceroute 是一次宝贵的学习经历,加深了他们对网络协议的理解,并激发了他们对现代互联网基础设施的进一步探索。完整的代码可在 GitHub 上获取。
这段文字详细描述了卡尔曼滤波器在跟踪飞机距离和速度方面的初始化和首次迭代,使用了雷达数据。系统状态由向量 **x** = [距离,速度] 表示。初始化使用第一个雷达测量值 [10,000米,200米/秒] 作为初始状态估计。测量不确定性由协方差矩阵 **R** 量化,基于雷达信号强度(距离的标准差为4米,速度的标准差为0.5米/秒)。
首次迭代包括*预测*——使用恒定速度模型估计下一个时间步(5秒后)的状态——和*更新*——使用新的测量值 [11,020米,202米/秒] 优化这个预测。卡尔曼增益 (**K**) 根据预测和测量各自的不确定性,对它们进行最优加权。
更新方程结合了预测和测量,从而产生更准确的状态估计并降低不确定性(由协方差矩阵 **P** 表示)。该过程还结合了过程噪声 (**Q**) 以解释对飞机运动的不可预测影响。卡尔曼滤波器迭代地重复这些预测和更新步骤,以不断优化状态估计。
## Baremail:轻量级 Gmail 客户端
Baremail 是一款极简的渐进式 Web 应用 (PWA),专为低带宽环境设计——例如飞机 WiFi 或农村连接——在这些环境下,完整的 Gmail 界面过于臃肿。它提供基本邮件功能,体积小巧:gzip 压缩后不到 200KB,并且在首次加载后仅使用 Gmail API JSON 数据进行网络传输。
主要功能包括带有指示器的收件箱查看、星标和归档、打字机效果的纯文本阅读、撰写/回复、搜索、标签(收件箱、星标等)以及浅色/深色主题。它采用离线优先的设计,允许用户阅读缓存的邮件并在没有连接的情况下排队发送消息。
设置过程涉及一个引导向导,通过 Google Cloud 项目连接到 Gmail API——无需编码。它可以作为 PWA 安装,实现即时加载,并且可以直接在浏览器中使用。Baremail 优先考虑速度和可访问性,旨在在具有挑战性的网络条件下提供可用的邮件体验。它是开源的(MIT 许可证),并专注于保持其尺寸最小化以实现最佳性能。