2024-11-24 Hacker News Top Stories #
- 本文介绍了一种基于 FPGA 的 192 通道相控阵麦克风系统,通过 FPGA 采集和处理麦克风数据,然后通过千兆以太网发送到计算机进行进一步处理。
- 欧洲航天局发布了四张最新的太阳图像,包括迄今为止对其整个可见表面的最高分辨率图像。
- 远程工作可以节省大量通勤时间,提高生活质量,并且对于像慢性病患者和残疾人来说是唯一的选择。
- Quake 3 的网络模型使用 NetChannel 模块抽象通信,主要使用 UDP/IP 协议,没有使用 TCP/IP 协议,因为可靠传输会引入不可容忍的延迟。
- 数千名美国人因金融科技公司 Synapse 的崩溃而失去储蓄,Synapse 是一家金融科技公司,为非银行机构提供银行服务。
- 谷歌最近宣布了一项重大突破:他们使用表面码实现了逻辑 qubit 的错误率降低,表面码是一种量子纠错码,通过将多个物理 qubit 组合成一个逻辑 qubit 来实现错误纠正。
- RGFW 是一个跨平台、轻量级、单头文件的窗口抽象库,用于创建图形程序或库,支持多种后端,包括 XLib、Cocoas、webASM 和 WinAPI。
- MaXX Interactive Desktop 是一个高性能的工作站环境,旨在提供快速、稳定和低资源消耗的用户体验,是 SGI Desktop 的继承者,保留了原来的 CLASSIC 外观和感觉,同时也提供了一个现代化的 MODERN 外观。
- OpenMPTCProuter 是一个使用 MultiPath TCP (MPTCP) 技术来聚合多个互联网连接的路由器,可以将多个互联网连接聚合成一个更快、更稳定的互联网连接。
- SQLite 是一个 SQL 数据库引擎,是世界上最广泛使用的数据库引擎,它的设计受到 TCL 的启发,两者在处理数据类型和源代码格式方面有很多相似之处。
Phased Array Microphone (2023) #
https://benwang.dev/2023/02/26/Phased-Array-Microphone.html
本文介绍了一种基于 FPGA 的 192 通道相控阵麦克风系统。该系统由一个中央集线器和多个臂板组成,每个臂板上有 8 个数字输出的 MEMS 麦克风。麦克风数据通过 FPGA 采集和处理,然后通过千兆以太网发送到计算机进行进一步处理。
系统的硬件部分包括中央集线器、臂板和连接器。中央集线器上有一个 FPGA 芯片,用于采集和处理麦克风数据。臂板上有 8 个麦克风和一个输出缓冲器,用于将麦克风数据发送到中央集线器。连接器用于连接臂板和中央集线器。
系统的软件部分包括 FPGA 上的程序和计算机上的程序。FPGA 上的程序负责采集和处理麦克风数据,然后将数据发送到计算机。计算机上的程序负责接收和处理 FPGA 发送过来的数据,然后进行相控阵处理和可视化。
系统的设计目标是实现一个低成本、低延迟的相控阵麦克风系统。系统的成本大约为 700 美元,延迟小于 1 毫秒。系统的性能测试结果表明,系统能够实现高质量的音频采集和相控阵处理。
系统的应用包括会议录音、公共广播、安全监控等领域。系统的优势包括低成本、低延迟、易于集成等。
HN 热度 560 points | 评论 179 comments | 作者:bglazer | 1 day ago #
https://news.ycombinator.com/item?id=42215552
- 通过测量声音速度可以优化系统模型,甚至可以用作温度计
- 高中生通过测量加压圆筒内压力下降速度来估算绝对零度
- 测量任何事物时,都应该同时测量环境温度
- IMU 可以通过科里奥利效应测量经度
- Asahi Linux 和 MacOS 通过测量扬声器线圈的电阻来检测扬声器过热
- 便宜的焊台通过测量加热器电阻来调节温度,而不是使用温度传感器
- 扬声器可以作为未记录的麦克风使用,因为它们可以感应电压变化
- 动态扬声器(带有音圈和磁铁)可以作为麦克风,但不是所有扬声器都能
- 电容式扬声器可能需要更大的增益或偏置电压才能作为麦克风使用
- 扁球论者使用昂贵的光纤陀螺仪测量地球旋转,但结果并不准确
- 惯性测量单元(IMU)可以通过地球自转测量纬度或真北方向
- 艺术品和精密测量中的最高级量块使用激光干涉测量,其热膨胀系数和尺寸变化非常微小
Highest-resolution images ever captured of the sun’s surface #
欧洲航天局(ESA)刚刚发布了四张最新的太阳图像,包括迄今为止对其整个可见表面的最高分辨率图像。每张图像都是由太阳轨道器任务于 2023 年 3 月 22 日拍摄的 25 张高分辨率照片拼接而成。太阳轨道器在距离太阳不到 4600 万英里的地方捕捉到了所有 100 张图像。拍摄过程花费了四个多小时,因为航天器需要为每张单独的照片改变位置。在最终的拼接图中,太阳的直径几乎有 8000 个像素。
太阳轨道器是欧洲航天局和美国宇航局(NASA)联合发射的任务,于 2020 年 2 月发射,次年 7 月发布了第一批图像。自发射以来,该项目已经取得了许多里程碑,捕捉到了太阳的最接近图像和第一批极地区域的特写图像。
虽然航天器携带了六台成像仪器,但新发布的图像仅使用了其中两台:偏振和日震成像仪(PHI)和极紫外成像仪(EUI)。PHI 负责了三张新的太阳视图:可见光图像、磁场方向图和速度图,展示了太阳表面部分的速度和方向。EUI 则拍摄了太阳外大气(日冕)的紫外光图像。
这些新图像为我们提供了太阳的高清之旅。首先,可见光图像展示了太阳不断移动的表面,其温度在 8152 华氏度至 10832 华氏度之间,发出大部分辐射。表面下方是太阳的对流区,其中密集的等离子体像地球的地幔中的岩浆一样翻滚。这种现象使太阳表面看起来像颗粒状,科学家说太阳的磁场是由对流的等离子体驱动的。
在 PHI 的可见光图像和磁场图中都可以看到黑色形状的太阳黑子。太阳的磁场在太阳黑子处更强,图像中的红色表示磁场向外移动,蓝色表示磁场向内移动。太阳黑子是磁场的浓缩区域,等离子体从太阳的热混合对流流中被转移,使其比周围区域更冷。因此,太阳黑子中的等离子体发出较少的光,在可见光图像中显得黑暗。
在第三张图像(速度图)中,PHI 捕捉到了太阳表面部分的运动,蓝色表示向太阳轨道器移动,红色表示远离太阳轨道器。图像显示,虽然太阳表面的等离子体通常随着太阳绕其轴旋转,但在太阳黑子周围被推向外部。
最后,EUI 的紫外光图像捕捉到了太阳的日冕,其外部大气只能在地球上看到一次太阳全食。图像显示了太阳黑子周围的有趣活动:沿着磁场线向外喷发的等离子体,有时连接相邻的太阳黑子。
太阳轨道器项目科学家丹尼尔·穆勒说:“这些新的高分辨率地图显示了太阳表面的磁场和流动的美丽, 同时对于推断太阳日冕中的磁场至关重要。太阳的磁场是理解我们家园星球从最小到最大尺度的动态性质的关键。”
HN 热度 369 points | 评论 106 comments | 作者:Brajeshwar | 15 hours ago #
https://news.ycombinator.com/item?id=42220155
- 链接提供了高分辨率太阳图像的原始文件,包括可见光、磁图、速度图和紫外线图像
- 太阳边缘的锯齿状可能是由于图像拼接和光学畸变造成的
- 太阳边缘的暗化是由于太阳大气的透明度变化,称为“边缘暗化”
- 提供的可缩放图像虽然可以使用,但分辨率和比例尺信息不足
- 使用 OpenSeadragon 进行图像展示,但有人认为 Leaflet 可能更好
- 有人提供了更高质量的太阳表面图像链接,这些图像是由 Andrew McCarthy 和 Jason Guenzel 拍摄的
- 139 兆像素的太阳图像可以购买用于打印,但有人质疑是否为 AI 增强
- Andrew McCarthy 作为业余天文摄影师,其作品非常令人印象深刻
- 长时间拍摄的图像可能显示的是静态特征而非动态变化,用词令人困惑
- 提供的图像虽然美丽,但经过了大量数字处理,不完全是真实的太阳照片
The ‘Return to Office’ Lies #
这个网页是一篇博客文章,作者在抱怨公司强制员工返岗的做法。作者认为,这种做法是微观管理和浪费资源,尤其是对于像自己这样的慢性病患者和残疾人来说,远程工作是唯一的选择。
作者指出,公司的理由是为了促进团队合作和社交,但是实际上大部分工作都是在线完成的,根本不需要面对面交流。作者还提到,公司的这种做法是对员工的不信任和不尊重,尤其是当员工已经证明自己可以高效地远程工作时。
作者还分享了自己因为慢性病而远程工作的经历,感谢公司允许自己远程工作,这样自己才能继续工作和照顾自己的健康。作者认为,远程工作不仅对自己有益,也对公司有益,因为可以减少员工流失和提高工作效率。
最后,作者警告公司,如果继续强制员工返岗,可能会导致员工流失和工作效率下降,尤其是当公司面临着人才流失和老龄化的问题时。
HN 热度 331 points | 评论 437 comments | 作者:speckx | 9 hours ago #
https://news.ycombinator.com/item?id=42221623
- 远程工作可以节省大量通勤时间,提高生活质量
- 为了孩子的成长和家庭幸福,愿意接受工资减少和延迟退休
- 财富的价值在于能够帮助他人和社区,而不仅仅是积累
- 社会上富裕的人往往变得更加自私,财富与乐于助人之间存在较小的交集
- 财富是工具,持续保持亿万富翁状态是资本的低效使用
- 通过合理使用财富,如资助社区项目,可以对社会产生积极影响
- 保持亿万富翁身份的人通常渴望权力和地位,而不是真正帮助他人
- 每个人都应该思考如何有效使用自己的财富,而不是仅仅追求积累
- 通过远程工作获得的平静和安宁,比高薪带来的退休储蓄更重要
Quake 3 Source Code Review: Network Model (2012) #
https://fabiensanglard.net/quake3/network.php
Quake 3 网络模型分析(三)
Quake 3 的网络模型是游戏引擎中最优雅的部分。它使用 NetChannel 模块抽象通信, NetChannel 模块首次出现在 Quake World 中。网络模型的核心思想是:在快速更新的环境中,不需要重发丢失的信息,因为它们已经过时了。因此,引擎主要使用 UDP/IP 协议,没有使用 TCP/IP 协议,因为可靠传输会引入不可容忍的延迟。
网络模型分为两层:加密层和压缩层。加密层使用预共享密钥,压缩层使用预计算的哈夫曼编码。
网络模型的关键部分是服务器端的设计。服务器端维护一个主游戏状态(Master Gamestate),并将其传播给每个客户端。客户端发送命令给服务器,每帧更新一次。服务器端使用三种机制来实现这一点:
- 主游戏状态(Master Gamestate):这是游戏状态的真实状态。
- 快照系统(Snapshot system):服务器端为每个客户端维护一个快照数组,数组中存储了最近 32 个游戏状态。
- 虚拟游戏状态(Dummy gamestate):服务器端维护一个虚拟游戏状态,所有字段都设置为零。
当服务器决定向客户端发送更新时,它会使用这三个机制来生成一个消息。消息中包含了游戏状态的变化,使用位标记来表示哪些字段发生了变化。
快照系统的工作原理是这样的:服务器端将主游戏状态复制到客户端的快照数组中,然后与之前的快照进行比较,生成一个包含变化的消息。如果没有有效的快照,服务器端会使用虚拟游戏状态来生成一个完整的更新消息。
网络模型的优雅之处在于其简单性和普遍性。无论客户端是否确认收到更新,服务器端都使用相同的算法来生成消息。消息中包含了游戏状态的变化,使用位标记来表示哪些字段发生了变化。
Quake 3 使用内存 introspection 来比较快照。它使用一个预构造的数组来存储每个字段的位置和大小,然后使用这个数组来生成消息。
网络模型还使用预分段技术来避免网络包的分段。它将消息分成 1400 字节的块,即使最大传输单元(MTU)是 65507 字节。这样可以避免路由器对包的分段,从而减少延迟。
最后,网络模型提供了可靠和不可靠的消息传递机制。可靠消息用于确保某些命令的传递,例如玩家退出或服务器需要客户端加载新关卡。
HN 热度 267 points | 评论 59 comments | 作者:mmh0000 | 1 day ago #
https://news.ycombinator.com/item?id=42218532
- 阅读这篇文章让人感到有趣,但同时也让人对自己的工作感到无聊和缺乏动力
- 减少工作时间可以让人有更多精力投入到兴趣项目中
- 有孩子会占用很多业余时间,导致很难有大块时间进行游戏或学习
- 在工作日已经花费大量创意能量,周末更倾向于消费型的休闲活动,如看电视、阅读等
- 对于 FPS 游戏,使用简单的预测和修正机制比复杂的操作转换技术更合适
- 原始 Q3A 客户端的网络代码在局域网中表现良好,但在远程游戏中对延迟敏感
- Quake 3 冠军的经历帮助学习了网络、文件系统和着色器等技术,这些技能对后来的职业生涯很有帮助
- 通过 Quake 3 的修改和配置,激发了自学编程的兴趣,最终成为职业软件工程师
Americans see their savings vanish in Synapse fintech crisis #
数千名美国人因金融科技公司 Synapse 的崩溃而失去储蓄。Synapse 是一家金融科技公司,为非银行机构提供银行服务。今年 5 月,Synapse 与其合作银行 Evolve Bank & Trust 发生争执,导致 Synapse 关闭了其系统,数千名客户无法访问自己的账户。
Synapse 随后申请破产,破产管理人发现客户资金中有高达 9600 万美元的缺口。然而,六个月来,法院一直无法解决这个问题,因为 Synapse 没有足够的资金雇用外部公司来进行全面核算。受影响的客户包括教师、企业主和牙医等,他们将数年来的储蓄存入了 Synapse 合作的银行账户。他们认为自己的钱是安全的,因为这些账户是由银行托管的。但是,事实证明,这些客户的钱并没有得到充分的保护。例如,一位名叫 Kayla Morris 的教师将自己 15 年的储蓄存入了 Yotta 账户,总计 28.2 万美元。但是,当她试图取出钱时,却发现账户被冻结了。
Yotta 的创始人 Adam Moelis 表示,Yotta 有 13,725 名客户,他们总共存入了 6490 万美元,但只有 1180 万美元可以被取出。受影响的客户正在努力要回自己的钱,但前景不容乐观。
HN 热度 212 points | 评论 202 comments | 作者:hunter2_ | 19 hours ago #
https://news.ycombinator.com/item?id=42219407
- Yotta 以低于平均的利率吸引用户存款,并通过合作银行的高利率账户赚取差额,但最终转向传统赌博业务导致资金危机
- Yotta 并非真正的银行,而是金融技术公司,其资金托管银行声称有 9600 万美元资金不翼而飞
- 消费者应警惕“非银行”机构托管资金,这些机构可能无法提供与银行同等的保障
- 欧洲的“电子货币”计划要求金融技术公司提供详细的客户余额报告,以避免类似问题
- Wealthfront 和 Fidelity 等公司虽然不是银行,但因规模和声誉,其资金管理服务相对更可靠
- Fidelity 的现金管理账户受 SIPC 保护,且可能将现金转移到 FDIC 保险账户中
- “金融技术公司”这一术语本身可能就是风险的标志,应谨慎对待
- 历史上多次出现金融技术公司以非银行身份运营,最终因资金管理不当导致用户损失的情况
Understanding Google’s Quantum Error Correction Breakthrough #
https://www.quantum-machines.co/blog/understanding-googles-quantum-error-correction-breakthrough/
量子计算与量子控制
本文讨论了量子计算中的一个关键挑战:量子比特(qubit)的脆弱性。即使是微小的干扰也可能导致 qubit 出错,这使得量子计算变得非常困难。为了解决这个问题,研究人员使用了量子纠错(Quantum Error Correction,QEC)的方法。QEC 通过将多个物理 qubit 组合成一个逻辑 qubit 来实现错误纠正。
谷歌的突破
谷歌最近宣布了一项重大突破:他们使用表面码(surface code)实现了逻辑 qubit 的错误率降低。表面码是一种量子纠错码,通过将多个物理 qubit 组合成一个逻辑 qubit 来实现错误纠正。谷歌的实验表明,当逻辑 qubit 的码距(code distance)从 5 增加到 7 时,错误率降低了 2.14 倍。这意味着逻辑 qubit 的寿命比物理 qubit 长了一倍多。
控制工程的挑战
谷歌的实验不仅仅是测试表面码,还需要精确的控制工程。控制系统需要在多个方面实现精确控制,包括同步、频率控制、测量保真度、实时解码和稳定性。实验中使用的实时解码器需要在 63 微秒内完成解码,这对于维持逻辑 qubit 的稳定性至关重要。
结论
谷歌的突破表明,量子纠错可以有效地降低逻辑 qubit 的错误率。这个结果对于实现可扩展的量子计算至关重要。然而,实现这种控制工程的挑战仍然存在,需要进一步的研究和发展。
HN 热度 171 points | 评论 92 comments | 作者:GavCo | 1 day ago #
https://news.ycombinator.com/item?id=42215910
- 量子纠错与经典纠错不同,经典纠错不依赖于简单复制比特,而是使用更高效的纠错技术如 ECC
- 量子纠错中,由于不可克隆定理,不能直接复制信息,而是通过将量子比特嵌入更大的空间中来实现错误检测和纠正
- 经典纠错码和量子纠错码在某些方面有相似之处,但量子纠错码需要考虑量子态的脆弱性
- 经典计算机中的信号由多个电子组成,低功耗下信号中的电子数量减少,导致错误率增加,这可以看作是一种硬件层面的重复码
- 量子纠错码可以看作是经典纠错码的量子版本,但具体实现方式不同
- RAID-1 和备份是经典计算机中用于错误抵抗的复制实例,但 RAID-1 不提供实时错误检测或纠正
- 作者可能对经典纠错码的理解有误,误以为是基于多数投票的机制
- 现代的大型语言模型(LLM)在描述已知技术时通常不会犯这种错误,这可能是作者的误解或简化
- 经典计算机的内存依赖于隐式的复制,通过增加每个比特的单元大小来实现,类似于信号传输中的重复码
- 从抽象层面看,经典计算机的“内存”可以指任何保持状态的组件,包括简单的逻辑电路,而不仅仅是 RAM
RGFW: Single-header C99 window abstraction library #
https://github.com/ColleagueRiley/RGFW
RGFW 是一个跨平台、轻量级、单头文件的窗口抽象库,用于创建图形程序或库。它支持多种后端,包括 XLib(UNIX)、Cocoas(MacOS)、webASM(emscripten)和 WinAPI(Windows XP、10 和 11、ReactOS)。RGFW 还支持多种图形后端,包括 OpenGL(EGL、软件、OSMesa、GLES)、Vulkan、DirectX 和 Metal。
RGFW 的特点包括:
- 单头文件和可移植性(使用 C99 编写)
- 体积小
- 仅依赖于系统 API 库(Winapi、X11、Cocoa)
- 可以使用少量函数调用创建窗口和管理窗口事件
RGFW 不会处理任何渲染工作,也不会提供除最基本功能之外的任何功能。
RGFW 支持的 GUI 库列表可以在 RGFW Wiki 上找到。
RGFW 提供了几个示例,包括基本示例、事件示例、回调示例、DirectX 示例、OpenGL 3.3 示例、OpenGL ES 2 示例和 Vulkan 示例。这些示例可以使用 Makefile 编译和运行。
RGFW 还提供了一个基本示例,展示了如何使用 RGFW 创建一个窗口并处理事件。示例代码包括创建窗口、设置图标、处理按键事件和更新窗口内容。
HN 热度 145 points | 评论 87 comments | 作者:klaussilveira | 1 day ago #
https://news.ycombinator.com/item?id=42217535
- 单头文件 C 库在没有适当包管理器的系统中仍然有用,因为它们设计为极简主义
- 依赖系统包管理器提供 C/C++ 依赖项是痛苦的,现代语言如 Go 和 Rust 可以开箱即用
- Windows 有多个包管理器,如 scoop、chocolatey、pacman(在 msys2 中)和 winget,但默认安装的 winget 降低了使用门槛
- 使用 OS 依赖的包管理器对于 OS 无关的项目并不理想,现代语言通常不依赖 Linux 包来管理依赖
- C99 标准中 stdint.h 提供了固定宽度的整型,应优先使用以避免类型定义冲突
- Windows 的 long 类型在 32 位和 64 位模式下都是 32 位,而 Linux 的 long 类型在 x64 架构下是 64 位,在 x86 架构下是 32 位
- MSVC 编译器从 Visual Studio 2010 开始支持 stdint.h,从 2015 年开始更加稳定
- 单头文件库在跨平台测试时可能存在兼容性问题,尤其是对于 Windows 平台的测试不足
MaXX Interactive Desktop – the little brother of the great SGI Desktop on IRIX #
https://docs.maxxinteractive.com/
MaXX Interactive Desktop 是一个高性能的工作站环境,旨在提供快速、稳定和低资源消耗的用户体验。它是 SGI Desktop 的继承者,保留了原来的 CLASSIC 外观和感觉,同时也提供了一个现代化的 MODERN 外观。MaXXdesktop 的目标是提供一个高性能、智能和绿色的桌面环境,能够最大限度地提高用户的创造力和生产力。
MaXXdesktop 的特点包括:
- 高性能和低资源消耗
- 智能多核工作负载管理
- 强大的异步多线程消息子系统
- 基于模块化微服务架构
- 现代化的配置管理子系统
- 快速和容易的内容预览
- 硬件加速和优化
- 集中式系统监控子系统
- HiDPI 支持和易于使用的应用程序预设
- MotifTM 的现代化和 ViewKit 框架的更新
- 开发者友好的软件开发环境
- 支持多个 CPU 架构和操作系统
MaXXdesktop 的安装指南、开发文档和更多信息可以在网页中找到。网页还提供了一个博客,记录了 MaXXdesktop 的开发过程和更新信息。
HN 热度 139 points | 评论 55 comments | 作者:gjvc | 1 day ago #
https://news.ycombinator.com/item?id=42218184
- SGI 5.6+ 版本的设置控制是最早的“Electron 应用”,使用了 Mozilla 进程和 CSS1.x 来模拟 Motif 样式
- CDE 现在是开源的,仍在积极维护中,可以在旧版主机平台上使用
- SGI 的桌面环境虽然不错,但最好的创新是拖放目标,这些小方块可以提示用户在此处拖放文件是有用的
- macOS 中也有类似的拖放目标,但使用并不广泛
- GNOME 桌面环境的问题在于单线程和扩展程序可能导致整个会话崩溃
- 桌面在早期更加简洁,现代桌面设计浪费了大量空间,尤其是扁平设计
- KDE 可以自定义以减少空间浪费,4K 屏幕可以容纳更多工作内容
- 早期桌面环境假设 72 DPI 的显示器,因此在现代 96 DPI 的屏幕上看起来更小
- 真正可见和可拖动的窗口边框是早期桌面环境的一个重要特点
- 早期桌面环境的滚动条设计优秀,拖动时有阴影显示位置,可以中间点击直接移动或控制点击标题栏降低
- 有人认为 dwm 不适合使用绘图板,因为需要通过编辑源代码来定制
- 有人怀念 HPUX 的 SAM 功能,希望能在现代系统中使用
OpenMPTCProuter: Aggregate and encrypt multiple internet connections using MPTCP #
https://www.openmptcprouter.com/
OpenMPTCProuter 是一个使用 MultiPath TCP (MPTCP) 技术来聚合多个互联网连接的路由器。它可以将多个互联网连接(如光纤、ADSL、VDSL、4G、5G 等)聚合成一个更快、更稳定的互联网连接。
OpenMPTCProuter 的主要特点包括:
- 聚合多个互联网连接,提供更快、更稳定的互联网体验
- 支持多种互联网连接类型,包括光纤、ADSL、VDSL、4G、5G 等
- 可以与任何互联网服务提供商 (FAI) 一起使用
- 提供故障切换功能,确保互联网连接的可靠性
- 支持加密和混淆数据传输,确保数据安全
- 支持多种协议,包括 OpenVPN、V2Ray、XRay 等
OpenMPTCProuter 的更新日志显示,该项目正在不断更新和改进。最近的更新包括:
- OpenMPTCProuter v0.61:更新内核版本,修复了一些 bug,添加了一些新功能
- OpenMPTCProuter v0.60:更新内核版本,添加了一些新功能,修复了一些 bug
- OpenMPTCProuter v0.59:更新内核版本,修复了一些 bug,添加了一些新功能
总的来说,OpenMPTCProuter 是一个功能强大的路由器,能够聚合多个互联网连接,提供更快、更稳定的互联网体验。它支持多种互联网连接类型,提供故障切换功能,确保互联网连接的可靠性。同时,它还支持加密和混淆数据传输,确保数据安全。
HN 热度 129 points | 评论 31 comments | 作者:yamrzou | 16 hours ago #
https://news.ycombinator.com/item?id=42219890
- MPTCP 在不同链路(如 WLAN、LAN、LTE)之间聚合数据时面临实际特性差异大和头部阻塞问题,限制了其广泛应用
- MPTCP 在 iOS 设备上已广泛使用,通过内置应用如 Siri 等,即使用户不知情,也经常在使用 MPTCP
- 应用程序如媒体流传输可能需要单一流,但通常 4Mbs 的带宽已经足够,其他应用如文件传输可以通过多个并发流实现
- 通过管理会话而不是按包聚合,可以优先选择重要会话的路由,但这种方法可能导致某些会话获得较差的链路
- QUIC 解决了中间盒问题,可以通过将 QUIC 流放在不同的连接上来解决头部阻塞问题,但这种方案适用于特定的视频流传输场景
- 使用 OpenMPTCProuter 可以有效聚合 FTTC 和 5G 连接,提高整体下载速度,同时保持较低的延迟,适用于日常网页浏览
- XRay 和 V2Ray 等协议在特定场景下(如规避审查)非常流行,但在 OpenMPTCProuter 中使用时需要考虑稳定性和兼容性问题
- 在偏远地区,OpenMPTCProuter 可以通过聚合多个 LTE 连接来提供稳定的互联网访问,实际效果取决于具体配置和环境
SQLite’s Use of Tcl (2017) #
https://www.tcl.tk/community/tcl2017/assets/talk93/Paper.html
SQLite 是一个 SQL 数据库引擎,是世界上最广泛使用的数据库引擎。它被集成到所有手机中,是手机上数据持久化的主要手段。SQLite 也被集成到大多数 Web 浏览器中,是 MacOS 的核心组件,并且被 Windows 10 所依赖。SQLite 的使用范围非常广泛,据估计,目前有超过 1 万亿个 SQLite 数据库在使用中。
SQLite 的设计受到 TCL 的启发,两者在处理数据类型和源代码格式方面有很多相似之处。SQLite 的索引使用案例最初是在一个工业公司的 Tcl/Tk 应用程序中。从一开始,SQLite 就依赖于 TCL,尽管现在 SQLite 不再使用 TCL 内部代码,并且可以独立于 TCL 解释器运行。
SQLite 的类型系统与 TCL 非常相似,两者都支持灵活的类型系统。SQLite 将列名中的数据类型视为建议,而不是硬性要求。SQLite 可以在声明为 “SHORT INT” 的列中存储 100KB 的字符串值,就像 TCL 可以在同一个变量中存储大字符串或小整数一样。SQLite 还支持类型亲和性,如果列声明为 “INT”,并且插入的字符串看起来像一个整数,可以安全地转换为整数,则会自动进行转换。
SQLite 的 C/C++ 接口中有一个重要的对象是 “sqlite3_value”,它与 TCL 中的 Tcl_Obj 对象类似。两者都使用双重表示法,每个值可以同时表示为字符串和其他类型。SQLite 的源代码主要是 TCL 代码,尽管最终的可交付代码是纯 C 代码。SQLite 的测试脚本和文档也大量使用 TCL 代码。
HN 热度 121 points | 评论 38 comments | 作者:fanf2 | 15 hours ago #
https://news.ycombinator.com/item?id=42220078
- SQLite 的创建者 D. Richard Hipp 的文章值得一读,同时 TCL 的创建者 John Ousterhout 的著作和观点也极具影响力
- Ousterhout 的《软件设计哲学》是软件工程实践类别中最好的书籍之一
- Ousterhout 因 Tcl 而广为人知,但他在分布式系统研究方面的工作如 Raft 同样重要
- 使用 SQLite 处理脏数据时,可以先将所有数据作为字符串加载,然后逐步清理至符合严格表的约束,这是处理生物统计学数据的最佳方法
- SQLite 的类型系统虽然灵活,但不如严格类型系统有助于早期发现错误
- 在 SQLite 中,NULL 值与空字符串"“是区分的,但在早期版本中可能没有这种区分
- 通过联合类型等现代类型系统概念,可以更好地理解 NULL 作为类型的意义
- Tcl 会议曾是获取 Tcl 内部和扩展信息的重要来源,会议内容广泛,不仅限于 Tcl 本身
- 早期版本的 Tcl 确实不支持二进制数据,直到 8.0 版本才加入支持
- 处理一次性数据集时,SQLite 无需服务器和系统管理员的介入,使用更加便捷
- 大多数人通过 JavaScript 等弱类型语言进行编程,尽管在 SQL 中 NULL 的概念并不需要一个独立的类型