2024-07-18

26 篇热帖

2. TinyPod – Apple Watch case with scroll wheel (thetinypod.com)

TinyPod – Apple Watch 保护壳(带滚轮)

TinyPod 是一款专为 Apple Watch 设计的保护壳产品,其主要特点是配备了一个滚轮。产品分为两种型号,价格不同:

  • 硬壳版本:带有滚轮,售价为 79 美元
  • 软壳版本:没有滚轮,售价为 29 美元

兼容性: 该产品广泛兼容多种 Apple Watch 型号,具体包括:

  • Apple Watch Series 9, 8, 7, SE, 6, 5, 4
  • Apple Watch Ultra 1, 2, 3

此外,内容中也提示,如果没有 Apple Watch,可以考虑购买翻新机。

3. NVIDIA Transitions Fully Towards Open-Source Linux GPU Kernel Modules (developer.nvidia.com)

NVIDIA全面转向开源Linux GPU内核模块

NVIDIA在2022年5月的R515驱动中首次以GPL和MIT双重许可发布了开源Linux GPU内核模块,最初面向数据中心计算GPU,而GeForce和工作站GPU仍处于alpha阶段。经过两年发展,开源模块已实现与闭源驱动相当或更优的应用性能,并新增多项关键能力:

  • 异构内存管理(HMM)支持
  • 机密计算
  • Grace平台的统一内存架构

支持的GPU范围

  • 必须使用开源模块:NVIDIA Grace Hopper或Blackwell等最新平台(闭源驱动不支持)
  • 建议切换至开源模块:Turing、Ampere、Ada Lovelace或Hopper等新架构GPU
  • 继续使用闭源驱动:Maxwell、Pascal或Volta等旧架构GPU,或同一系统中混合部署新旧GPU的情况
  • 辅助选择工具:NVIDIA提供新的检测辅助脚本(通过安装nvidia-driver-assistant包并运行nvidia-driver-assistant命令使用)

R560驱动版本的安装变更

从R560版本开始,所有安装方法的默认驱动类型将从闭源驱动切换为开源驱动:

1. 通过CUDA元包安装

  • CUDA 12.6之前:安装cuda元包会默认安装闭源驱动555
  • CUDA 12.6起:元包结构调整,默认安装开源驱动(图1-2展示了包结构变化)

2. 使用.run文件安装

  • 安装程序会自动检测硬件并推荐最合适的驱动版本
  • 图形界面(ncurses)新增模块类型选择菜单,支持切换proprietary(闭源)或open(开源)
  • 命令行可通过参数指定:
    # CUDA安装示例
    sudo sh ./cuda_12.6.0_560.22_linux.run --override --kernel-module-type=proprietary
    # 驱动安装示例
    sudo sh ./NVIDIA-Linux-x86_64-560.run --kernel-module-type=proprietary
    

3. 各发行版包管理器安装建议

发行版 安装最新版本 安装指定版本
Fedora/RHEL/Kylin sudo dnf module install nvidia-driver:open-dkms sudo dnf module install nvidia-driver:560-open
openSUSE/SLES sudo zypper install nvidia-open{-azure,-64k} sudo zypper install nvidia-open-560{-azure,-64k}
Debian sudo apt-get install nvidia-open sudo apt-get install nvidia-open-560
Ubuntu sudo apt-get install nvidia-open sudo apt-get install nvidia-open-560
  • 升级现有系统(以Ubuntu为例):
    sudo apt-get install -V nvidia-kernel-source-open
    sudo apt-get install nvidia-open
    

4. 特殊说明

  • Windows子系统Linux(WSL):使用宿主Windows系统的NVIDIA内核驱动,无需额外操作
  • CUDA工具包:通过包管理器安装cuda-toolkit的流程保持不变
  • 混合GPU系统:如同时包含新旧架构GPU,仍需使用闭源驱动

NVIDIA强调,所有560版本之后的驱动和CUDA 12.6之后的工具包都将遵循新的打包规范。用户可根据具体需求选择合适的驱动版本,详细安装指南可参考CUDA安装文档。

5. Ask HN: What's Prolog like in 2024?
6. Amazon's Kindle Direct Publishing is a dystopian nightmare
7. The Objects of Our Life (1983) (stevejobsarchive.com)

史蒂夫·乔布斯1983年阿斯彭设计会议演讲摘要

演讲背景与重要性

1983年6月,史蒂夫·乔布斯在阿斯彭国际设计会议(IDCA)发表了演讲。此时距麦金塔电脑发布尚有一年,个人电脑在美国的家庭普及率极低(1984年仅8%)。乔布斯此行旨在向数百名设计师发表演讲,核心是呼吁他们关注并参与个人电脑这一新兴品类的设计。

演讲核心内容

  1. 对设计师的呼吁:乔布斯预测个人电脑的销量将在1986年超越汽车,并指出无论设计好坏,这些机器都会被生产出来。他恳请设计师们介入,以确保这些即将普及的产品能被良好地设计,避免成为“垃圾产品”,从而重蹈美国汽车、电视等行业因设计落后而被外国竞争击败的覆辙。
  2. 普及电脑的认知:他通过生动的类比(如“像打个响指般快地买回一束花”)来解释计算机快速处理常规任务的本质,旨在降低听众对新技术的陌生感和恐惧感。
  3. 设计的价值与国家责任:乔布斯强调,在“电脑与社会初次约会”的时刻,有绝佳的机会通过设计将产品做得美观且富有意义。他认为设计不仅关乎产品,也关乎一个国家的责任。
  4. 电脑与人文学科的结合:他提出了一个终生追求的核心理念:将人文学科注入计算机。他认为美观的界面(如多样字体和图形)不仅是其本身所好,更是吸引人们使用、探索新知并表达自我的门户,最终目标是让电脑成为像纸笔一样自然、不言而喻的工具。

乔布斯的设计理念与成长

演讲前后,文章描述了乔布斯对设计的深刻投入:

  • 学习与吸收:他通过研究自己喜爱的物件(如蒂芙尼台灯、索尼随身听)、参观博物馆、与顶级设计师交流(如埃托·索特萨斯)以及关注时尚(如设计师的着装)来培养自己的设计眼光。
  • 核心思想:他领悟到,优秀的设计是剔除多余,让物品的本质显现,并最终与用户建立情感连接。
  • 公司层面的实践:从创立初期便重视设计(如公司备忘录强调“人会以貌取物”),到设立内部设计岗位、与外部设计公司合作,并举办设计竞赛,乔布斯始终致力于将苹果的设计打造为世界最佳。

演讲形式与影响

  • 现场互动:演讲并非独白,乔布斯花费大量时间进行问答,氛围互动融洽。
  • 未来愿景:在问答中,他展望了电子邮件、便携式电脑、交互式地图等未来场景,并阐述了创新是“沉积层”不断累积的过程。
  • 个人动机:当被问及员工忠诚度时,他将其归因于“回馈”的使命感——从人类集体经验中索取,也致力于向其中添加有价值的事物。

总结意义

这场发生在个人电脑黎明前的演讲,展现了乔布斯超越技术的远见。他不仅预见了电脑将深入日常生活,更深刻洞察了设计在此进程中的决定性作用。他将对产品美学和用户体验的执着,上升到了一种“表达对人类的关爱”的公民责任和创造哲学层面,为其后数十年引领消费电子产品设计革命奠定了思想基础。

8. Want to spot a deepfake? Look for the stars in their eyes (ras.ac.uk)

本文介绍了赫尔大学的一项新研究,该研究发现可以通过分析人眼中的反射来检测人工智能生成的深度伪造图像。核心原理在于:真实人像的左右眼球反射通常具有一致性,而深度伪造图像的反射往往不匹配。研究团队借鉴了天文学中分析星系图像的方法,特别是利用“吉尼系数”来量化眼球反射的形态特征并比较其相似度。研究表明,深度伪造图像在左右眼反射间存在差异。不过,研究者也指出,此方法并非万能,存在误判情况,但为对抗深度伪造技术提供了一种新的分析思路。该研究在英国赫尔大学和皇家天文学会的支持下进行。

9. My daughter (7 years old) used HTML to make a website (naya.lol)

7岁儿童用HTML创建的网站摘要

该网站由一个7岁的孩子(署名naya)使用HTML编写,内容简洁,主要分为两个主题板块:

主要内容

  1. 动物板块

    • 包含指向三个子页面的链接:
      • 猫的页面
      • 狗的页面
      • 猎豹的页面
  2. 科技板块

    • 包含指向两个子页面的链接:
      • 平板电脑页面
      • 电脑页面

网站特点

  • 结构简单清晰,使用基础HTML标签
  • 以超链接为核心导航方式
  • 体现了儿童对动物和科技的兴趣
  • 整体风格直观易懂,适合初级学习展示
10. Collection of Dark Patterns and Unethical Design (hallofshame.design)

黑暗模式与不道德设计集合摘要

本文列举并解释了多种黑暗模式(Dark Patterns)及不道德设计策略,旨在帮助用户识别欺骗性设计实践。以下是主要模式的概述:

主要黑暗模式类型

  • 诱购(Bait and Switch):用诱人条件吸引用户,随后意外更改条款,隐藏原始承诺的附加条件,误导用户做出非自愿承诺。
  • 确认羞辱(Confirmshaming):通过让用户感到内疚或羞耻来迫使其注册产品或服务。
  • Cookie壁垒(Cookie Wall):用户首次访问网站时,被要求接受默认设置为将个人信息用于营销和广告的Cookie偏好。
  • 伪装广告(Disguised Ad):网站上的广告伪装成界面元素,诱使用户点击后跳转至其他网站。
  • 虚假稀缺(Fake Scarcity):通过显示虚假的低库存或高需求信息,制造产品或服务有限的假象,促使用户因害怕错过而快速行动。
  • 隐藏费用(Hidden Cost):在结账最后阶段添加之前未提及的额外费用(如配送费、税费等)。
  • 误导(Misdirection):通过界面设计转移用户注意力,使其难以执行预期操作(例如使用低对比度的主要按钮)。
  • 骚扰(Nagging):通过持续打断干扰用户,施加压力迫使其接受请求,即使这不符合其最佳利益。
  • 阻碍(Obstruction):用户在完成任务时遭遇不必要的障碍或阻碍,使其难以获取所需内容。
  • 预选(Preselection):向用户提供预先选定的选项,以影响或避免用户的决策过程。
  • 隐私欺诈(Privacy Zuckering):服务或网站欺骗用户,使其分享超出预期的信息。
  • 订取消困难(Roach Motel):常见于订阅服务,注册容易但取消困难(例如需要联系客服)。
  • 暗中加入购物车(Sneak into Basket):在结账过程中,网站将额外商品自动加入购物车,迫使用户主动移除。
  • 误导性问题(Trick Questions):常见于注册流程中的复选框,初看意思一致,但仔细阅读后含义完全不同。

这些模式通过操纵用户心理和界面设计,损害用户自主权和信任,最终可能带来不良用户体验和非自愿决策。

11. Psilocybin desynchronizes the human brain (www.nature.com)

文章摘要

核心发现: 该研究通过精密功能映射(密集重复功能磁共振成像)发现,单次高剂量(25mg)裸盖菇素会显著、广泛地使人类大脑去同步化

主要研究内容与结果:

  1. 急性效应(服药后约6小时内):

    • 破坏功能连接(FC): 裸盖菇素在大脑皮层(尤其是关联网络)和皮层下区域(如丘脑、基底神经节、小脑和海马体)引起了深刻且广泛的FC变化。其效应强度远超对照药物哌甲酯和日常波动,甚至接近个体间的差异水平。
    • 网络解体: 裸盖菇素削弱了默认模式网络(DMN)内部的整合性以及DMN与其他网络(如额顶叶、背侧注意和突显网络)之间的隔离性。这种“网络解体”是迷幻状态的共同特征。
    • 增加空间复杂度/去同步化: 使用归一化全局空间复杂度量化分析,发现裸盖菇素显著增加了大脑活动模式的空间熵,即信号变得更加去同步和随机。该效应与迷幻体验强度高度相关,且在关联皮层和5-HT2A受体高密度区域最为显著。
    • 主观体验关联: 全脑FC变化和空间复杂度的增加与参与者报告的迷幻体验(通过神秘体验问卷测量)强度密切相关,尤其是“超越时空”维度。
    • 任务状态的调节: 参与感知任务可以减弱裸盖菇素引起的FC破坏和去同步化,这为临床上使用“接地”技术缓解迷幻效应提供了神经科学依据。
  2. 持久效应(服药后3周内):

    • 大脑整体网络结构基本恢复至基线水平。
    • 但在前海马体观察到了持久的FC变化。具体表现为,海马体与DMN(特别是顶叶和额叶部分)之间的FC在服药后至少3周内显著降低。海马体是已知的神经发生关键区域,此发现可能与裸盖菇素的神经可塑性和抗抑郁机制有关。

研究意义与机制解释:

  • 桥接微观与宏观尺度: 本研究将细胞层面观察到的迷幻药使神经元群去同步化的现象,与宏观脑网络层面的功能连接变化和主观意识状态改变联系起来。
  • 治疗机制启示: 裸盖菇素引起的显著网络活动模式偏离(去同步化),可能触发了大脑的稳态可塑性反应,包括上调神经营养因子(如BDNF)等,这被认为是其快速和持久抗抑郁作用的基础。效应集中于DMN和海马体等与抑郁症相关的环路。
  • 研究方法创新: 采用个体化的精密功能映射,能够高精度地刻画个体内稳定的脑网络组织,并捕捉药物引起的特异性变化,为理解迷幻药的治疗机制提供了强有力的工具。

结论: 裸盖菇素通过激动5-HT2A受体,使人类大脑活动,特别是与自我参照和当前体验相关的网络(如DMN和海马环路)发生急性去同步化,这可能通过诱导神经可塑性产生持久的治疗性脑变化。

12. SAPwned: SAP AI vulnerabilities expose customers' cloud environments and privat (www.wiz.io)

研究背景与重要性

Wiz 研究团队对多个 AI 服务提供商的租户隔离性进行了调查,发现 AI 服务因其允许用户运行自定义代码(模型训练与推理),天然存在更高的隔离风险。AI 基础设施正迅速成为企业环境的核心,其安全漏洞可能带来重大影响。

研究目标与对象

本次研究聚焦于 SAP AI Core 平台。研究目标是确定攻击者能否利用该平台执行代码的能力,横向移动并窃取客户的敏感数据,特别是用于访问客户云环境(如 AWS、Azure、SAP HANA Cloud)的访问密钥。

关键发现与漏洞链

研究人员以合法用户身份开始,通过 SAP AI Core 运行自定义的 AI 训练任务(Argo Workflow),在 Kubernetes Pod 中获得了执行任意代码的能力。尽管环境受网络限制,但通过以下漏洞链实现了全面突破:

  1. 网络隔离绕过:利用 shareProcessNamespacerunAsUser (UID 1337) 配置,绕过了 Istio 代理的网络流量限制,获得了内部网络访问权限。
  2. AWS 凭证泄露:通过访问内部 Grafana Loki 服务的 /config 端点,获取了用于访问 S3 存储桶的 AWS 密钥,该桶包含大量服务日志。
  3. 未授权数据访问:发现了多个未设置认证的 AWS Elastic File System (EFS) 实例,可直接访问大量客户的 AI 代码、数据集等文件。
  4. 内部服务接管:发现了未认证的 Helm v2 服务器 (Tiller)。通过该服务器:
    • 获取了访问 SAP 内部 Docker 注册表和 Artifactory 服务器的高权限凭证(读写权限)。
    • 部署了拥有集群管理员权限的恶意 Pod,完全控制了 SAP AI Core 的 Kubernetes 集群。
  5. 客户秘密窃取:利用集群管理员权限,研究人员可以读取所有客户 Pod 中的敏感数据(模型、数据集、代码),并直接访问客户配置的云服务密钥(如 AWS、SAP HANA、Docker Hub 的访问凭证)以及 SAP 自己的 Google Container Registry 密钥。

根本原因与潜在影响

  • 根本原因:AI 训练过程本质上允许执行任意代码,而平台在内部网络服务的安全加固和沙箱隔离方面存在严重不足。内部网络被错误地视为可信环境,许多服务缺乏认证。
  • 潜在影响:攻击者可窃取客户数据、云账户凭证,还能篡改 Docker 镜像和 Artifactory 构建产物,对 SAP AI Core 及其客户发动供应链攻击。

修复与披露

所有漏洞已报告给 SAP 安全团队并已修复,未发现客户数据因此泄露。披露时间线从 2024 年 1 月 25 日报告开始,至 7 月 17 日公开披露。

核心教训

  1. 深度防御的重要性:单一的网络隔离措施(如 Istio)不足。内部服务必须假设已被突破,需实施严格的认证和最小权限原则。
  2. Kubernetes 租户隔离挑战:在管理型服务中,控制平面(服务逻辑)与数据平面(客户计算)之间的分离至关重要,但 Kubernetes 架构可能模糊这一界限。
  3. AI 流程的特殊风险:由于 AI 开发必须运行不可信代码,平台需要部署比传统云服务更强大的防护机制和沙箱,以确保代码与内部资产及其他租户的严格隔离。
13. Hash-based bisect debugging in compilers and runtimes (research.swtch.com)

基于哈希的二分调试技术在编译器和运行时中的应用

核心问题

在编译器或底层库开发中,优化或修改代码后,大型、不熟悉的测试套件可能会突然失败。传统调试方法在这些庞大的代码库中效率低下。

解决方案:二分搜索思维

文章回顾了二分搜索在调试中的历史应用:

  1. 数据调试:如用二分法从一千张穿孔卡片中找出唯一一张错误的卡片。
  2. 版本历史调试:如git bisect,通过二分版本提交历史来定位引入缺陷的具体提交。
  3. 程序位置调试:这是本文介绍的新“魔术”——在程序代码位置上进行二分搜索,而不仅是版本历史。其核心工具是bisect

哈希二分算法的原理

为实现对代码位置的二分搜索,使用了哈希二分-约简(Hash-Based Bisect-Reduce)算法

  1. 目标:找到一个最小的代码位置集合(如函数、源代码行、调用栈),仅在这些位置启用某个变更(如新优化、新实现)就会导致测试失败。
  2. 哈希化:为每个代码位置计算一个哈希值。哈希值与位置顺序无关,适用于并行编译等场景。
  3. 后缀匹配:使用哈希值的二进制后缀来代表一组位置。例如,后缀0代表所有哈希值以0结尾的位置,后缀01代表更具体的子集。
  4. 递归搜索:算法递归地测试“是否仅启用哈希后缀为0的位置就会失败?”,若否则测试1,若两边都不单独失败,则组合搜索。通过这种方式逐步缩小范围,最终定位到导致失败的特定位置(或最小组合)。

优势与价值

  • 精准定位:即使测试代码庞大且不熟悉,也能快速指向具体的几行代码或一个调用栈,极大降低了调试难度。
  • 处理多因素:能发现需要多个位置同时变更才会引发的缺陷。
  • 自动化bisect工具自动执行整个搜索过程,无需人工干预。

实际应用案例

文中列举了在Go语言开发中利用该技术解决的多种问题:

  1. 函数优化选择:定位编译器新后端优化导致失败的特定函数。
  2. 优化规则选择:找到触发测试失败的特定优化重写规则。
  3. 浮点乘加指令:确定使用FMA指令导致浮点结果出错的具体代码行。
  4. 语言特性变更:定位循环变量作用域改变导致闭包行为异常的特定循环。
  5. 库实现变更:如新的time.Timer实现,通过调用栈哈希定位到使用新实现即失败的具体调用栈。

工具与实践

  • Go语言提供了bisect命令行工具,可安装使用。
  • 工具通过环境变量或命令行参数接收一个哈希模式,在测试过程中反复执行命令,并逐步替换哈希模式以进行搜索。
  • 处理测试波动:工具支持-count=N参数多次运行测试以识别不稳定的测试,避免误判。

结论

基于哈希的二分调试是一种强大且通用的技术,它将二分搜索的思想从版本控制扩展到了程序内部的代码空间。该技术通过自动化工具,能够在面对庞大、不熟悉的代码库时,迅速将调试范围从数千行代码缩小到特定的几行或一个调用栈,极大地提升了调试编译器和运行时变更的效率。

14. The unexpected poetry of PhD acknowledgements (science.anu.edu.au)

本文探讨了澳大利亚国立大学(ANU)博士论文中“致谢”部分所蕴含的独特“诗意”与人文价值。作者通过阅读数百篇科学论文的致谢,总结了以下核心要点:

情感释放的专属出口

攻读博士学位是一项艰巨且充满挑战的任务。与论文正文的严谨客观不同,致谢是作者释放压抑情感的空间。科学家们在此倾注最深厚的情感,使用最华丽的辞藻,却又常因感激之情过于强烈而感到语言的匮乏与局限。

揭示科研的真实过程

致谢展现了科学研究背后的真实面貌。无论课题多么高深复杂或依赖高科技设备,研究的成功往往依赖于他人的帮助。日常的对话、耐心的倾听与思想交流被反复提及,成为推动科研进展不可或缺的关键因素。

感谢对象的时代演变

1980年代以前的致谢多为公事公办,主要感谢导师、资助机构和打字员。而现代致谢的对象包罗万象,延伸至宠物、音乐、咖啡师甚至冰箱里被遗忘的食物,生动反映了科研生活的多元与个性。

个人牺牲与生活变迁

读博伴随着巨大的个人代价,如时间成本与远离家人。致谢中高频出现的“没有你我不可能做到”,深刻反映了亲友支持的不可或缺。同时,致谢也记录了求学期间经历的真实生活变故,如疫情、自然灾害或新生命的降临。

定格的完美瞬间

致谢构建了一个只有感恩、没有指责的“完美世界”。它将作者定格在旅程结束与人生新起点交汇的最佳时刻,真实记录了完成这一重大里程碑时的解脱、喜悦,以及对所有支持者的深切感激。

15. Premature Abstraction (arendjr.nl)

过早抽象

核心观点:后架构强调增量式定义架构,而非预先设计。它提倡在开发早期优先追求速度,并最小化做出错误架构决策的风险。然而,实践中常见的一大陷阱便是“过早抽象”——抽象虽然是一种有用的工具,但过早应用反而会阻碍可维护性。

经历与反思: 作者以自身学习C++和面向对象编程的经历为例,指出早期教育往往将特定范式(如面向对象)视为普遍真理,导致开发者倾向于过度设计。经过15年的实践,作者认识到许多复杂的抽象和设计模式是不必要的,甚至是有害的。

实践指导

  1. 拥抱过程式编程:在项目初期,应从最基本的过程式编程开始,使用纯函数作为构建基础。这能保持代码简单,避免不必要的复杂性。
  2. 优先考虑数据结构:好的数据结构比精巧的代码模式更重要。应首先关注数据结构及其关系,而非急于创建抽象层。
  3. 识别数据流:大多数程序都包含可识别的数据流(如查询数据库返回响应)。这些数据流可以用纯函数来实现,纯函数易于测试且行为可预测。
  4. 向外推移状态:通过“功能核心,命令式外壳”模式,将状态管理和I/O(输入/输出)推移到系统的外层,内部核心逻辑则保持纯函数特性。这能最小化“活动部件”,简化系统。Redux和榆树架构是这一模式的成功实例。

总结: 过早抽象是万恶之源。在项目初期,应专注于保持简单,使用基本的过程式和函数式编程方法,确保数据结构合理。让架构随着项目需求自然涌现,而非预先强行定义。只有当实际需要时,才引入对象导向或更复杂的函数式抽象,且应确保其服务于明确的工程目标。

16. A RP2040 based DECstation 3000 emulator that can run DECWindows (github.com)

基于RP2040的DECstation 3000模拟器总结

本文档介绍了“DECstation 2040”项目,这是一个基于树莓派RP2040微控制器构建的DECstation 3000模拟器,其关键特性是能够运行DECWindows图形界面。

核心硬件

该模拟器围绕RP2040构建,主频可达300MHz(运行于1.8V),配备32MB PSRAM、8MB SPI闪存、MicroSD卡槽,并支持1024x864单色VGA输出及RMII以太网物理层。

软件与关键技术

1. PIO与内存子系统:

  • 采用一个4端口的PSRAM/HyperRAM PIO引擎,提供约42/32 MB/s的读写带宽。
  • 这4个端口允许被模拟的CPU、视频DMA及以太网收发流量独立、并发地访问内存,充分利用了RP2040所有32个PIO指令槽。

2. 视频输出与DMA设计:

  • 视频PIO引擎支持高达系统时钟一半的像素率,可支持1080p60,但默认配置为1024x768@70Hz。
  • 使用5个DMA通道驱动视频引擎。通过巧妙运用DMA嗅探器(sniffer)动态生成PSRAM地址,并利用一个DMA通道实现命令循环,仅需86个DMA命令包即可驱动高清视频,内存占用与显示格式无关。
  • 设计了专门的ps_read_chan以消除PSRAM读取数据的延迟,确保非视频的PSRAM通道能及时获得内存访问。

3. USB HID支持:

  • 支持特定型号的USB键盘鼠标组合,如Rii mini X1和Logitech K830。

4. 系统模拟器:

  • 基于Dmitry Grinberg的LinuxCard项目进行修改,适配RP2040平台,并添加了视频和USB输入支持。
  • 经过超频和使用汇编版CPU模拟器,被模拟系统的BOGOMIPS评分约为13.44。

快速入门指南

硬件组装: 文档提供了详尽的分步焊接指南,适用于rev 1.5和rev 2.1两个版本的PCB,并建议先构建一个CMSIS调试器用于烧录和调试。 软件编译与运行:

  1. 从Dmitry的项目获取模拟镜像(如ultrix.gui)并存于FAT32格式的MicroSD卡中。
  2. 配置Pico SDK环境变量。
  3. blink_bringup目录开始,编译基础固件以验证硬件连接。
  4. 编译CMSIS调试器固件并烧录到调试板。
  5. 进入psram目录,可编译多个测试和应用,包括核心的uMIPS模拟器。
  6. 使用提供的Shell脚本通过调试器将程序加载到目标板运行。模拟器可从SRAM或Flash运行。

项目心路与展望

作者分享了项目开发中的挑战与收获,例如成功实现PSRAM PIO引擎、解决DMA循环计数问题等,同时也经历了设计失误(如PCB布局错误、元件选型问题)的教训。 未来计划包括:

  • 优化光标PSRAM命令以减少内存占用。
  • 为模拟器编写Lance以太网模拟代码。
  • 移植MicroMac操作系统。

致谢与资源

项目在很大程度上依赖于Dmitry的LinuxCard项目、PicoDVI框架以及多个开源硬件和软件项目(如DEC鼠标适配器、lk201emu、pico-rmii-ethernet)的支持。文档最后包含了项目不同阶段的实物照片和视频链接。

17. A brief interview with Awk creator Dr. Brian Kernighan (2022) (pldb.io)
18. Little Languages (1986) [pdf] (staff.um.edu.mt)

《小语言》(1986) 文章摘要

本文探讨了小语言的概念、应用和设计原则。小语言是指任何用于表达意图的、针对特定问题领域的专用语言,其用户可以在短时间内掌握,且实现相对简单。

核心概念与示例

  • 定义与广泛性:编程中处处存在小语言,如FORTRAN的格式描述~6.2、COBOL的图片999.99,以及UNIX Shell命令。它们为特定任务(如数值格式化、任务控制)提供了简洁的表达方式。
  • PIC语言:文章以Brian Kernighan的PIC语言为核心案例,这是一个用于描述线条图的文本小语言。用户通过命令(如ellipse, arrow, box)描述图形,而非使用交互式绘图工具。
    • 特点:PIC拥有变量、循环等编程构造,能便捷地生成复杂图形(如带循环的几何图案),但也缺乏传统语言的一些特性(如声明、复杂的控制流)。
    • 优势:相比交互式系统或调用绘图子程序库,PIC易于管理(文本可编辑)、能集成到文档生产系统中,且适合描述程序生成的或结构复杂的图形。

小语言的应用与生态系统

  1. 预处理器:PIC支持构建更专用的预处理器,进一步扩展其能力。
    • SCATTER:一个用于生成散点图的微型语言,其输入(尺寸、范围、标签等)可编译成PIC代码。
    • CHEM:一个用于描述化学结构的语言,其命令可编译成PIC宏,从而绘制化学分子式。这体现了小语言的可组合性(一个处理器的输出是另一个的输入)。
  2. 构建工具:PIC本身也是通过UNIX中的“小语言”工具构建的:
    • LEX:使用正则表达式定义词法分析器。
    • YACC:使用上下文无关文法定义语法分析器。
    • MAKE:管理项目文件编译与依赖关系。 这些工具将编译器构造中成熟的技术打包成了专用的描述语言。

设计原则

文章总结了设计优秀小语言的关键原则:

  • 明确设计目标:先确定问题是否真的适合用小语言解决,或者交互式系统、子程序库是否更合适。
  • 简洁性:语言应尽可能简单,便于实现、学习和使用。
  • 基本抽象:识别问题领域中的核心对象(抽象数据类型)和操作。
  • 语言结构:提供清晰的语法结构(如缩进、注释),并考虑表达的自然性与实现的简易性之间的权衡。
  • 设计过程:像生长软件一样迭代设计,先以简练形式(如BNF)定义语言,通过描述多样实例来测试,再在实际使用中演进。
  • 借鉴编译技术:构建语言处理器时,应将前端(语言分析)与后端(处理/生成)分离,并充分利用LEX、YACC等工具。
  • 优良属性:好的小语言应具备正交性、通用性、节制性、完整性、可扩展性和开放性(允许调用其他工具)。

结论

小语言在计算领域影响深远,它不仅存在于第四代/第五代语言和应用生成器中,更是一种为复杂程序或系统模块间通信提供优雅接口的通用范式。其设计应以问题为中心,强调简洁和恰当的抽象,并通过迭代成长,最终提供比交互式界面或通用编程接口更高效、更专注的解决方案。

19. Show HN: SQLite Transaction Benchmarking Tool (github.com)

SQLite 事务基准测试工具

该项目用于测试SQLite的事务行为,是配套博客文章 reorchestrate.com/posts/sqlite-transactions 的代码实现。

使用方法

  • 通过运行 cargo build --release 进行编译。
  • 运行方式示例:cargo run --release -- --help

基准测试参数

程序名为 sqlite-bench,主要参数如下:

  • --path / -p:指定SQLite数据库文件路径(必需)。
  • --output / -o:指定结果输出文件路径(必需)。
  • --seed / -s:设置初始植入表的记录数量,默认为100万条。
  • --threads / -t:设置要启动的并发线程数量,默认值从1到16。
  • --scans / -s:设置每个事务执行的扫描操作次数,默认为0和10。
  • --updates / -u:设置每个事务执行的更新操作次数,默认为0、1和10。
  • 也支持 --help--version 参数。

重要建议

为保护固态硬盘(SSD),建议首先在内存文件系统中运行此工具。

  • MacOS:使用命令创建并挂载RAM磁盘。
  • Linux:使用命令创建并挂载tmpfs文件系统。

Docker镜像

提供了一个多平台的Docker镜像,地址为:https://github.com/users/seddonm1/packages/container/package/sqlite-bench

20. Sparrows may be 'canary in the coal mine' for lead poisoning in children: study (www.abc.net.au)
21. Show HN: VisCircuit – A Note-Taking Website for Electronics and Circuits (viscircuit.com)

VisCircuit 摘要

VisCircuit 是一个专为电子和电路学习设计的笔记网站。它结合了电路图编辑器和Markdown笔记功能,使用户能够更轻松地记录、理解和分析电路知识。主要特点包括:

  • 核心功能:作为电路图编辑器,支持Markdown笔记,便于在电路设计中添加注释和说明。
  • 兼容性:电路图与KiCad Schematic完全兼容,确保与行业标准工具无缝集成。
  • 文件与模拟:用户可以下载KiCad Schematic文件,并直接进行电路模拟,以验证设计和加深理解。

VisCircuit 旨在通过集成笔记和电路图编辑,帮助初学者和专业人士更有效地学习电子和电路相关知识。

22. Overcoming the limits of current LLMs (seanpedersen.github.io)

克服当前大语言模型的局限性

当前大语言模型存在三大核心缺陷:幻觉(生成看似合理实则无依据或错误的内容)、缺乏置信度估计(无法为预测结果标注可信程度)以及缺乏引用来源。这些缺陷严重制约了LLM在事实性任务中的可靠性。

主要局限性与缓解策略

1. 幻觉问题

  • 根源:模型无法自我检查训练数据中的逻辑矛盾,仅能在输入上下文窗口内进行有限的一致性检测。
  • 缓解方法
    • 一致性自举训练:通过人工筛选高质量、无矛盾的数据集(如经过验证的维基百科和科学文献)训练基础模型,再用该模型筛选更多一致文本逐步扩展训练数据,旨在减少训练数据中的矛盾。
    • 基于熵的检测:通过分析输出概率分布的方差或生成多个回答的语义熵来估计不确定性,但其有效性存在争议,且难以准确区分合理多样输出与幻觉。
    • 检索增强生成:通过检索外部知识库并提供引用来源(如Perplexity.ai、WikiChat),部分可检测输入是否超出训练数据分布。

2. 自我改进机制

  • 强化学习自我反思:在可验证领域(如编程、数学)中,让模型在失败后生成自我反思分析,并在后续尝试中利用这些反思。若成功,则奖励反思过程。该方法能使小模型(70亿参数以下)性能提升显著,甚至超越10倍大的模型。
  • 代码世界模型:在预训练中结合代码执行轨迹(如Python解释器状态),提升模型对代码动态行为的理解。

3. 上下文窗口的关键作用

  • “逆转诅咒”现象:模型仅能从训练数据中的单向关系(如“A是B”)回答问题,无法反向推理(如“B是A”)。但如果先将正向问题及答案放入上下文窗口,模型便能回答反向问题。
  • 启示:这表明LLM的逻辑推理能力主要依赖于上下文窗口,而非其参数(压缩的训练数据)。因此,链式思维提示和RAG技术能有效提升复杂推理性能。

架构性根本限制

  • 顺序生成:LLM逐个词元生成文本,早期错误会沿序列累积,导致长序列上下文失连贯。
  • 缺乏整体思考:无法像人类一样先形成抽象概念再线性化输出,只能顺序预测。
  • 结论:基于Transformer的LLM在长上下文任务中无法根本解决幻觉问题,需转向能整体构建和操纵概念结构的新架构。

未来展望

最终目标是使LLM能够主动创建并验证新知识,据此更新自身世界模型或权重(实现自我修正)。当前研究方向包括一致性训练、自我反思强化学习以及世界模型集成,但突破架构限制才是根本出路。

23. Closed form arc length parametrization is impossible for quadratic Bézier curves (ninjakoa.la)

本文证明了在二次贝塞尔曲线中,弧长参数化不存在闭式解。弧长参数化是指给定一个弧长参数 s,计算曲线上对应点的过程,这等价于求解弧长函数 l(t) 的反函数 l^{-1}(s)。尽管二次贝塞尔曲线的弧长本身有闭式表达式,但其反函数已被普遍认为没有闭式解,此前未见严格证明。

证明的关键依赖于林(Ferng-Chin Lin)的定理,而该定理的成立又基于尚未被证明的Schanuel猜想。Schanuel猜想断言,在复数域上,αe^α 之间不存在非平凡的代数关系。若该猜想成立,林定理可表述为:对于一个既约多项式 F(x, y),若方程 F(α, log(α)) = 0 成立,则 α 要么是1,要么不是“初等数”。这里的“初等数”是指通过有理数有限次进行加、减、乘、除、取指数和对数运算以及解多项式方程所能得到的数。

作者通过一个具体的二次贝塞尔曲线来证明不可能性。选取控制点为 p_0 = (0, 0), p_1 = (1/2, 0), p_2 = (1, 1/2),对应的参数方程为 x(t) = ty(t) = t²/2。其弧长函数 f(t) = ∫₀ᵗ √(1+s²) ds 有闭式解:f(t) = (1/2)[ t√(t²+1) + ln(t + √(t²+1)) ]

证明的目标是说明,对于某个特定的弧长值 s = ln(2)/2,其对应的参数 t 的值 t* 不可能用闭式表达。这等价于证明函数 f^{-1} 不是闭式函数。

作者通过一系列代换将问题转化为应用林定理。令 φ(t) = t + √(t²+1),其逆函数为 φ^{-1}(x) = (x²-1)/(2x)。将 f(t) 中的变量进行替换和整理后,得到了一个关于新变量 xlog(x) 的方程。经过代数处理,最终得到方程 G(α, log(α)) = 0,其中 G(x, y) = 16x⁴ + 4xy - 1

利用计算机代数系统SageMath验证,多项式 G(x, y) 在复数域上是不可约的。根据林定理的变体,满足该方程的 α 如果是初等数,则必须等于1。然而,将 α=1 代入方程 16·1⁴ + 4·1·log(1) - 1 = 15 ≠ 0,表明 α=1 不是解。因此,在Schanuel猜想成立的前提下,满足该方程的 α 必定不是初等数。

由代换关系可知,这个 α 与弧长值 s = ln(2)/2 所对应的参数 t* 直接相关(α = φ(f^{-1}(s))/2)。如果 f^{-1} 是一个闭式函数,那么 α 将是一个闭式数(因 φ 也是闭式函数)。但这与 α 不是初等数(从而更不是闭式数)的结论矛盾。

因此,假设Schanuel猜想成立,则弧长反函数 f^{-1} 不可能是一个闭式函数。这意味着不存在一个通用的闭式公式,能够直接计算二次贝塞尔曲线上具有指定弧长 s 的点。该证明虽然以Schanuel猜想为前提,但为这一几何-分析问题提供了严格的代数不可能性解释。

24. Americans' confidence in higher education has taken a nosedive (lithub.com)

根据盖洛普一项新的民意调查,美国人对高等教育的信心急剧下降。三分之一的受访者表示对高等教育“几乎没有信心”或“完全缺乏信心”,这与2015年57%的受访者表示“相当”或“非常”有信心形成鲜明对比。

调查受访者指出了这种态度转变的几个主要原因,其中**“推行政治议程、不教授实用技能以及学费过高”**最为突出。这种信心下降的趋势存在于所有被调查的人口统计群体中。不过,保守派群体的不满情绪尤为明显,共和党人尤其担心自由主义的“思想灌输”,这是他们选择放弃四年制大学的一个重要原因。

文章将这一现象与美国高等教育当前面临的多重危机联系起来,包括:1) 学费昂贵、难以负担;2) 学生贷款骗局被揭露;3) 就业市场前景黯淡,非STEM专业的回报递减;4) 关于“言论自由”的复杂争论。从兼职教师到校友,学术界的各个角落都深陷困境。

文章作者认为,受访者提出的不仅是物质层面的反对。“上不上大学”日益成为一个伦理问题。即便年轻人知道一所私立大学的人文学科专业可能在职业上毫无用处,直到最近,人们至少还相信这样的学位能带来某种隐晦的智识收益。然而,作者指出,文理教育所承诺的传统核心目标——例如**“鼓励终身探索自我与价值观”、“为有意义的事业生涯做准备”以及“为全面、文明地参与公共生活做准备”**——在今天看来显得过于理想化,甚至脱离现实。因为“公民参与”的途径已大不相同,“有意义的事业生涯”定义在变化,而“公共生活”在一个对基本现实都难以达成共识的国家也日益割裂。

作者表示理解当代美国年轻人的选择,认为临时课程、培养爱好、泡图书馆学习一门有强大工会支持的行业作为人生规划看起来越来越合理。一项非科学的内部民调也支持这一看法。

最后,调查也指出了一个值得注意的趋势:对社区大学和两年制项目的信心反而有所上升

26. Prover-Verifier Games improve legibility of language model outputs (openai.com)

证明者-验证者游戏提升语言模型输出的可读性

核心问题

在复杂任务(如解决数学问题)中,确保语言模型生成的文本易于理解至关重要。研究表明,若仅以“获取正确答案”为单一目标来优化强模型的解题过程,会导致其输出的解决方案变得难以理解。人类评估者在有限时间内审查这些高度优化的方案时,出错率几乎是审查普通方案的两倍。这凸显了AI生成文本在保证正确性的同时,必须具备清晰度和易验证性。

解决方案:证明者-验证者游戏

为解决模型性能与可读性之间的冲突,研究引入了证明者-验证者游戏(Prover-Verifier Games) 机制。该框架包含两个核心角色:

  • 证明者(Prover):负责生成问题的解决方案。
  • 验证者(Verifier):负责检查该解决方案的准确性。

关键机制与效果

  • 提升可读性(Legibility):通过训练高级语言模型(证明者)生成让较弱模型(验证者)也能轻松验证的文本,研究发现人类评估者同样能够更有效地评估这些文本。
  • 双重保障:此方法不仅确保了模型输出的正确性,还大幅提高了输出内容对人类和其他AI系统的可理解性与可验证性。

研究意义

理解并解决模型“性能”与“可读性”之间的平衡问题,能够打造出更有效、更值得信赖的AI应用。这对于需要精确、清晰沟通的广泛领域具有重要的应用价值,并有助于推动AI技术的安全与对齐发展。

附注:本文作者为 Yining Chen 与 Jan Hendrik Kirchner,并有多位研究人员(如 Angela Baek, Yuri Burda, Jan Leike 等)参与贡献。研究涉及 GPTEthics、Safety、Reasonings & Policy 以及 Learning Paradigms 等领域。