2024-04-24

21 篇热帖

1. The man who killed Google Search? (www.wheresyoured.at)

谷歌搜索之死:追求增长如何摧毁核心产品

核心事件:2019年“代码黄”危机

  • 时间:2019年2月,谷歌广告和财务团队因搜索收入增长疲软,启动内部最高级别警报“代码黄”。
  • 矛盾:广告团队(由普拉巴卡尔·拉加万领导)与搜索团队(由本·戈梅斯领导)产生冲突。前者要求提升搜索收入,后者认为无法在不损害用户体验的前提下实现高增长。
  • 内部邮件揭示
    • 广告团队抱怨“查询增长”不足,但搜索团队指出无法“精细化优化用户参与度”,除非通过“参与度黑客”(欺骗用户增加停留时间)。
    • 本·戈梅斯警告搜索“正在过于接近金钱”,担忧公司只关注增长。

关键转折:搜索质量下降与领导层更替

  • 2019年3月更新:谷歌推出“大型搜索更新”,但被指回滚了此前打击垃圾内容的算法更改,导致曾被压制的低质量网站流量回升。
  • 广告设计变更:2019年5月及2020年1月,谷歌在移动端和桌面端将广告标签改为与自然搜索结果几乎相同的样式,被批评模糊广告与内容的界限。
  • 领导层变动
    • 2020年:本·戈梅斯(搜索核心构建者)被调职,普拉巴卡尔·拉加万接任搜索负责人。
    • 戈梅斯坚持“以用户为中心”的理念,而拉加万代表以增长和收入为导向的管理思维。

反派主角:普拉巴卡尔·拉加万的角色与历史

  • 背景:曾任雅虎搜索负责人(2005-2012年),期间雅虎搜索市场份额从30.4%暴跌至13.4%,最终放弃自研技术,转而使用必应搜索。
  • 管理风格:被描述为“管理者而非构建者”,侧重增长指标而非产品长期健康。谷歌内部邮件显示其推动收入压力,忽视搜索质量。
  • 影响:自其执掌搜索后,谷歌搜索结果质量下降,垃圾内容和SEO聚合内容增多,用户信任度受损。

系统性问题:增长至上文化侵蚀科技产品

  • “腐烂经济”:文章提出谷歌现象是“增长至上”思维的典型案例,即牺牲产品质量和用户体验来满足短期财务目标。
  • 管理层的影响:谷歌创始人离开后,职业经理人(如拉加万和具有麦肯锡背景的CEO桑达尔·皮查伊)主导公司方向,将增长置于创新和用户利益之上。
  • 对互联网的损害:谷歌作为关键基础设施,其质量下降影响了整个网络信息生态的可靠性和透明度。

结论

谷歌搜索的衰落是内部追求增长压力的直接结果。以拉加万为代表的管理团队通过施压、回滚质量算法和模糊广告界限等手段,短期内提升了收入,但长期损害了搜索的核心功能和用户体验。这一案例凸显了科技行业在管理者主导下,如何偏离构建者精神,走向增长至上的“腐烂经济”。

3. Biden signs TikTok bill into law, starting clock for ByteDance to divest (www.theverge.com)

美国通过TikTok剥离法案

法案签署与主要内容

美国总统乔·拜登签署了一项对外援助法案,其中包含一项针对TikTok的立法。该法案规定,如果中国母公司字节跳动在规定时间内未能剥离TikTok,该应用将在美国面临禁令。

  • 剥离期限:字节跳动有初始9个月时间来完成剥离交易。
  • 延期可能:如果总统认为谈判取得进展,可再延长最多3个月。
  • 法案性质:该法案被视为“剥离或禁止”法案,现已正式成为法律。

立法过程

该法案此前曾以独立法案形式在众议院通过,但在参议院一度面临搁浅风险。为推动立法,众议院将TikTok法案与向美国盟友提供紧急援助的法案捆绑打包。此举迫使参议院对两项措施一并进行审议,从而加速了法案的通过。与早先版本相比,最终版本将剥离期限从6个月延长至9个月,这一变化可能促使了部分原先持犹豫态度的议员转而支持。

TikTok的回应

  • 法律挑战:TikTok发言人Alex Haurek表示,公司计划在法庭上对该法律提出挑战。若法院在案件审理期间暂停执行,可能会延长实际的时间线。
  • 对法案的定性:TikTok首席执行官周受资在视频中明确反对该法案,称其实质是“对TikTok的禁令”,也是对用户声音的禁止,并反驳了一些议员声称该法案仅旨在切断平台与中国所有权关联的说法。
  • 公司声明:TikTok承诺,在继续挑战这项“违宪禁令”的同时,将坚持投资和创新,以确保TikTok继续成为一个能让美国用户安全分享经历、寻找快乐和获得灵感的空间。

未知因素

目前尚存两个关键不确定因素:

  1. 中国政府的立场:中国是否会允许字节跳动出售TikTok,尤其是其核心推荐算法。
  2. 司法程序的影响:法律挑战的最终结果将直接影响法案的执行时间表和TikTok在美国的未来。
4. CoreNet: A library for training deep neural networks (github.com)

CoreNet:深度神经网络训练库

概述

CoreNet 是一个深度神经网络工具包,支持研究人员和工程师训练标准及新型的中小型和大型模型,用于多种任务,包括基础模型(如 CLIP 和 LLM)、物体分类、物体检测和语义分割。

主要特性与更新

  • 最新版本 (v0.1.1, 2024年10月):引入了 KV Prediction 功能。
  • 应用范围广泛:支持从计算机视觉到自然语言处理的多种任务。
  • 源于 CVNets:CoreNet 从 CVNets 发展而来,扩展了应用范围,涵盖更广泛的任务,包括大型语言模型(LLM)的训练。

苹果公司基于 CoreNet 的研究成果

以下为使用 CoreNet 的苹果公司出版物列表,相关项目文件夹内包含训练/评估配方及预训练模型链接:

  • KV Prediction for Improved Time to First Token
  • OpenELM: 高效语言模型系列
  • CatLIP: 实现 CLIP 级视觉识别精度,且预训练速度提升 2.7 倍
  • 强化数据,倍增影响:提升模型精度与鲁棒性的数据集强化技术
  • CLIP 遇见模型专家:用于视觉增强的伪监督
  • FastVit: 使用结构重参数化的快速混合视觉 Transformer
  • 字节是一切所需:直接在文件字节上操作的 Transformer
  • MobileOne: 改进的毫秒级移动网络骨干
  • RangeAugment: 基于范围学习的高效在线数据增强
  • MobileViTv2: 用于移动视觉 Transformer 的可分离自注意力
  • CVNets: 高性能计算机视觉库 (ACM MM'22)
  • MobileViT: 轻量级、通用且移动友好的视觉 Transformer (ICLR'22)

安装指南

前提条件:需安装并激活 Git LFS。 系统要求

  • Linux: Python 3.10+,PyTorch >= v2.1.0
  • macOS: Python 3.9+

通用安装步骤

  1. 克隆仓库:git clone git@github.com:apple/corenet.git
  2. 进入目录并安装 Git LFS:cd corenetgit lfs installgit lfs pull
  3. (推荐) 创建并激活虚拟环境:python3 -m venv venv && source venv/bin/activate
  4. 以可编辑模式安装 CoreNet:python3 -m pip install --editable .

可选依赖 (用于音视频处理):

  • Linux: sudo apt install libsox-dev ffmpeg
  • macOS (使用 Homebrew): brew install libsox ffmpeg

macOS 注意事项:文件系统默认不区分大小写,可能引起 Git 问题。建议通过 cd $(pwd -P) 切换到路径大小写敏感模式。

目录结构简述

CoreNet 的代码和资源按以下逻辑组织:

目录 说明
tutorials/ 入门教程,包含 Jupyter Notebook 和指南,涵盖从零训练、多节点训练以及各类任务(CLIP、语义分割、物体检测)示例。
projects/ 训练配方与项目,包含可复现的训练配置、预训练权重和出版物的详细说明。每个项目文件夹通常包含 README.md 和 YAML 配置文件。涵盖项目包括 KV Prediction、ByteFormer、CatLIP、CLIP、FastVit、MobileNet/ViT 系列、OpenELM 等。
mlx_example/ MLX 示例,演示如何在 Apple Silicon 上高效运行 CoreNet 模型。
corenet/modeling/models/ 模型实现,按任务分类(如 audio_classification, classification, detection, language_modeling, multi_modal_img_text, segmentation)。模型类通过 @MODEL_REGISTRY.register 装饰器注册。
corenet/data/datasets/ 数据集,同样按任务分类,结构与模型实现类似。
其他核心目录 包括 loss_fn (损失函数)、metrics (评估指标)、optims/scheduler (优化器与调度器)、train_eval_pipelines (训练评估流程),以及 data 下的子目录(如 collate_fns, sampler, transforms 等)。

维护与贡献

  • 当前维护者:Maxwell Horton, Mohammad Sekhavat, Yanzi Jin, Dmitry Belenko。
  • 前维护者:Sachin Mehta, Farzad Abdolhosseini。
  • 贡献:欢迎社区提交 PR,相关指南详见项目的贡献文档。
  • 许可证:详情参见项目 LICENSE 文件。

引用

如果相关工作有用,请引用:

@inproceedings{mehta2022cvnets, 
     author = {Mehta, Sachin and Abdolhosseini, Farzad and Rastegari, Mohammad}, 
     title = {CVNets: High Performance Library for Computer Vision}, 
     year = {2022}, 
     booktitle = {Proceedings of the 30th ACM International Conference on Multimedia}, 
     series = {MM '22} 
}
6. ESPHome (esphome.io)

ESPHome是一款通过简单YAML配置让ESP32、ESP8266、BK72xx、RP2040等支持板变为强大的智能家居设备的平台。其主要特点包括:无需编码,使用YAML配置文件代替复杂的C++代码;支持无线(OTA)更新,无需物理接触设备;模块化设计,支持数百种传感器、显示器及其他组件;设备实现本地控制,无需依赖云端。

使用人群涵盖:

  • DIY爱好者:可根据自身需求定制传感器、开关和显示屏。
  • 智能家居爱好者:用低成本自定义设备扩展自动化系统。
  • 专业集成商:为客户部署可靠且本地控制的智能设备。
  • 制造商:可使用标准固件打造ESPHome认证产品。

ESPHome支持的主控芯片包括:

  • Espressif ESP32与ESP8266,广泛应用于众多IoT项目。
  • RP2040,树莓派的微控制器。
  • 其他芯片如Nordic nRF52、Realtek RTL87xx、Beken BK72xx。
  • 桌面平台,许多组件可通过主机平台在电脑上运行。

入门方式:

  • 通过Home Assistant插件是最简便的上手途径,官方提供详细指南。
  • 高级用户可使用命令行工具进行配置与管理,有专门文档说明。
  • 用户可选择预配置的常用项目快速开始,覆盖多种典型应用场景。
7. Sysadmin friendly high speed Ethernet switching (blog.benjojo.co.uk)

这篇文章详细介绍了作者如何将Mellanox SN2010以太网交换机改造为基于Debian Linux的开放网络设备,实现高度自定义和控制。

核心目标与选择SN2010的原因: 作者寻找一款经济、高效且软件可控的高速以太网交换机。传统高端交换机价格昂贵,二手设备缺乏软件支持;低端产品则软件质量差且无法自主维护。SN2010因其使用Mellanox(现为Nvidia)自有芯片和开源驱动(mlxsw)而脱颖而出,使得用户能够自行管理软件更新,无需依赖供应商,但同时也需自行承担维护责任。

硬件改装与Debian系统安装

  • SN2010具有18个SFP28(25Gbit)和4个QSFP28(100Gbit)端口,功耗仅60W。
  • 它内置Intel Atom处理器和管理端口,本质上像一台“带有巨型网卡的笔记本电脑”。
  • 作者绕过ONIE,直接通过USB键盘进入BIOS(默认密码“admin”),并从USB启动Debian netinstall镜像进行安装。
  • 安装和启动时需在GRUB中添加内核参数console=tty0 console=ttyS0,115200以启用串口控制台。

内核配置与固件升级

  • 官方Debian内核不包含mlx-core模块,需要自行编译内核并启用一系列关键配置选项(如CONFIG_MLXSW_CORE=mCONFIG_NET_SWITCHDEV=y等),以支持交换芯片功能。作者提供了预编译内核供尝试。
  • 驱动需要特定版本的ASIC固件。通过dmesg可查看兼容性,固件可从Mellanox官网获取并放置于/usr/lib/firmware/mellanox
  • 固件升级通常由驱动自动完成,但对于HPE等品牌型号,可能需使用mstfwmanager工具手动升级。

网络接口管理与路由配置

  • 使用udev规则将交换芯片管理的接口命名为swp*,便于识别。
  • 通过ethtool可查看端口类型(如100G QSFP28)。
  • 作者将交换机用作路由器(称其为“swooter”),配置了:
    • 两个上行链路端口,通过VLAN提供互联网接入和BGP会话。
    • 内部服务器通过一个Linux网桥(br-rack0)连接,使用OSPF进行地址协调。
    • BGP和OSPF路由协议由Bird软件处理,但需谨慎过滤,仅将默认路由和内部路由安装到硬件路由表(硬件约支持8万条路由)。
  • 强烈建议设置推荐的sysctl参数,以优化Linux内核行为,使其更贴近硬件路由器的预期。

高级功能

  • 硬件辅助防火墙:由于大部分流量不经过CPU,传统iptables无效。但可通过Linux TC(Traffic Control)的flower分类器在硬件中实施ACL,实现限速、丢弃等策略。
  • 监控:标准Linux工具(如ip -s)的计数器与硬件同步。使用devlink trap可查看为何特定流量被发送到CPU。
  • 包采样/sFlow:通过hsflowd的psample功能支持,用于流量统计或DDoS检测。

总结与展望: 作者认为Mellanox的硬件和开源驱动生态系统非常出色,提供了业界罕见的自主可控性。该方案已在生产环境中稳定运行。文章也提到了Arista和Marvell等其他提供类似开放驱动选项的厂商作为替代,并希望未来Mikrotik等性价比高的硬件也能支持自定义软件栈。

8. Piet (2018) (www.dangermouse.net)

Piet 是一种程序外观类似抽象艺术的编程语言,以几何抽象艺术先驱皮特·蒙德里安命名。

设计与核心概念

  • 设计原则:程序代码形式为抽象艺术。
  • 颜色系统:使用20种特定颜色,其中18种通过色相循环(红→黄→绿→青→蓝→品红→红)和亮度循环(浅色→正常→深色→浅色)相关联。白色和黑色不参与循环。
  • 码元与色块:程序由图形构成,单个像素颜色点有意义。放大的程序中,单个代码像素被称为“码元”。基本代码单位是色块,即连续的同色码元区域(仅对角相邻不算连续)。
  • :所有数据值存储在栈中,仅以整数形式存在(可通过命令进行字符读写)。
  • 程序执行:解释器从包含程序左上码元的色块开始执行,维护一个初始向右的方向指针和一个初始向左的码元选择器。执行遵循规则:从当前色块在DP方向最远的边缘开始,找到该边缘上在CC方向最远的码元,然后移动到该码元DP方向所指的下一个色块。

语法与命令

  • 数字表示:非黑、非白色块代表一个整数,其值等于该色块中的码元数量。
  • 黑块与边缘:黑块和程序边缘会限制流程。当移动受阻时,解释器会切换CC,若仍失败则顺时针旋转DP。若八次尝试均失败,程序终止。
  • 白块:白块是“自由”区域,解释器可在其中沿DP方向直线“滑行”,直到遇到非白色块。滑行不执行命令,可用于改变当前颜色(便于构建循环)。在白块内遇到阻碍时,同样通过切换CC和旋转DP来尝试新路径。
  • 命令执行:命令由从一个色块移动到下一个色块时的颜色过渡决定。过渡的色相变化步数亮度变化步数共同定义了一个命令,如pushaddsubtractmultiplypointerout等。若通过滑行白块过渡,则不执行命令。
  • 错误处理:操作无法执行(如栈值不足、除零)时通常忽略该命令,继续执行。整数溢出和栈溢出的具体处理取决于实现。

其他说明

  • 该规范由作者早期编写,现有社区和多种解释器实现,不同实现对规范可能有细微解读差异。
  • 作者提供了一些示例程序和第三方工具链接供参考。
  • 文档最后更新于2018年9月27日。
9. Simulating Jupiter (emildziewanowski.com)

本文介绍了在游戏引擎中模拟木星大气流动的实时技术,核心思路是用“速度场纹理”驱动图像变形,避免了高消耗的计算流体动力学(CFD)模拟。

一、 模拟目标与挑战

  • 目标:在游戏天空盒中创建一个动态的、类木星的气态行星,通过加速大气运动来增强视觉吸引力。
  • 挑战:实时模拟复杂流体(如涡旋、急流)非常困难,传统CFD方法计算成本过高。

二、 传统游戏流体模拟技术回顾 文章回顾了几种历史方法,它们虽已过时,但作为复杂系统的组成部分仍有价值:

  • 颜色循环:通过改变调色板中的颜色索引产生动画。
  • 逐帧动画:存储多张精灵图,内存占用大,动作卡顿。
  • 纹理滚动:通过UV坐标偏移模拟流动,但仅适用于层流。
  • Quake/Unreal扭曲技术:在CPU上对纹理像素进行实时扭曲,是着色器出现前的巧妙方案。

三、 核心模拟方法:速度场驱动与反馈循环

  1. 基础概念:使用两个纹理,一个存储颜色,另一个存储二维速度场(红绿通道表示XY速度分量)。速度场用于逐帧修改颜色纹理的采样坐标。
  2. 欧拉方法集成:简单地直接用速度偏移UV会导致错误变形。正确做法是使用显式欧拉法进行数值积分:每帧根据当前位置的速度,计算下一步的位移,并将结果写回颜色纹理,形成反馈循环。
  3. 在Unreal Engine中实现:利用 Canvas 节点系统,可以实现对同一渲染目标纹理的读写,从而构建反馈循环。主要步骤包括创建渲染目标纹理、设置每帧触发的渲染事件,以及使用材质实例进行绘制。

四、 效果优化与问题解决

  1. 改进速度场:基础噪声效果呆板。应用旋度算子可生成充满涡旋的速度场,使流动更自然。
  2. 解决混合问题:长时间运行后,流动颜色会混合成单一色块。通过从初始颜色纹理采样并与当前渲染目标混合,可以重新引入色彩。使用点阵或噪声蒙版可以使混合更自然。
  3. 解决模糊问题:混合会导致纹理模糊。引入锐化操作(一种基于邻域像素的加权计算)可以增强细节。为防止锐化在反馈循环中产生条纹伪影,需要对计算的差值进行钳制
  4. 模拟色彩变化:通过随时间轻微修改初始颜色,可以模拟木星大气成分(云层)随环流的变化。

五、 创建木星特征的速度场纹理 将木星大气分解为三种主要流动模式,并用 Substance Designer 预先生成高细节的速度场纹理:

  • 气旋:生成大的黑白点,应用旋度算子生成涡旋,可结合梯度算子模拟吸入/喷出效果。可变形拉长以增加复杂性。
  • 急流:用模糊的条纹表示赤道平行方向的层流,用旋度作用于一系列点生成在急流交汇处的湍流涡旋。涡旋的旋转方向需与相邻急流匹配。
  • 风暴:代表更小、更湍流的结构。通过多个动画的噪声层(八度)混合而成,可打包成纹理并通过移动蒙版混合,形成集群状的湍流区域。

六、 总结与后续

  • 优势:该方法资源消耗极低(一个1024x1024纹理的完整行星渲染耗时低于0.5ms),且允许艺术家手工塑造流动,无需物理计算。
  • 挑战:需要艺术家对流体动力学有基本理解。
  • 后续步骤:还需完成颜色映射、球形UV贴图以及为气态行星定制的大气着色模型,才能得到一个视觉上完整的行星。
12. The Optimizations in Erlang/OTP 27 (www.erlang.org)

Erlang/OTP 27 优化概览

历史背景

Erlang/OTP 的优化始于2018年,其核心编译器和运行时系统经历了多次重要演进:

  • OTP 22:引入基于SSA的中间表示,为后续优化奠定基础。
  • OTP 24:引入JIT(即时编译器),在模块加载时将BEAM指令转换为原生代码,提升性能。
  • OTP 25:引入基于类型的优化,允许编译器向JIT传递类型信息以生成更优代码。
  • OTP 26:进一步改进类型优化,显著提升了二进制处理(如Base64编解码)的性能。

Erlang/OTP 27 的主要优化

1. 记录(Record)操作优化

  • 合并连续更新:编译器能识别并合并多个连续的记录更新操作为单个创建操作,减少不必要的复制。
    % 原始代码
    R0 = #foo{},
    R1 = R0#foo{a=N},
    R2 = R1#foo{b=2},
    R2#foo{c=3}.
    % 优化后等效于
    #foo{a=N, b=2, c=3}.
    
  • 原地更新(Destructive Update):引入新的JIT提示inplace。当编译器确定某记录在运行时无其他引用时,允许JIT生成直接修改原记录的代码,避免复制。
    • 安全性检查:JIT会检查记录是否位于堆的“安全部分”(介于高水位线与堆顶之间),以确保不会违反垃圾回收器的分代不变式(例如,老代对象不能引用新代对象)。
    • 优化效果:当新值为小整数、字面量(如函数引用)或已知安全的原子时,JIT可生成更简短的原生代码,跳过安全检查和复制回退逻辑。

2. 函数(Fun)优化

  • 表示简化:重构了Fun在运行时的内部表示,使其在进程堆上占用的空间减少两个字。
  • 创建优化:简化了Fun环境的复制过程,部分实例使用AVX指令同时移动多个变量。对于外部Fun(如fun M:F/A),所有实例均以字面量形式存储,不再占用进程堆空间。
  • 测试优化:将Fun的arity(参数数量)信息存入头部字,使得is_function(F, A)的检查更快捷。

3. 整数算术改进

  • 算法升级
    • binary_to_integer/1的实现从朴素的BIF改为使用分治算法的Erlang实现。
    • 大整数乘法采用Karatsuba算法
    • 底层辅助函数利用128位整数类型进行优化。
  • 性能提升:这些改进使得处理大整数的基准测试(如pidigits)和binary_to_integer/1的执行速度显著加快。

4. 杂项代码生成增强

  • 类型分析改进:编译器和JIT的类型分析能力增强,能生成更优化的代码。
  • 特定模式优化:例如,针对Map =:= #{}的空映射相等性测试,JIT会生成专用的快速检查代码,避免调用通用比较函数。
  • 寄存器缓存:优化了BEAM寄存器的缓存机制。

总结

Erlang/OTP 27 的优化集中在减少不必要的内存分配与复制(尤其是记录更新和Fun创建)以及利用底层硬件特性生成更高效的原生代码(如使用AVX指令)。这些改进协同作用,旨在提升运行时性能并降低垃圾回收压力。尽管某些优化(如原地更新)在极端情况下可能产生副作用,但平均而言预期会带来性能提升,尤其对于涉及大型记录或频繁函数创建的应用。

13. Other People’s Problems (seths.blog)

我们在帮助朋友解决问题时,往往比自助更慷慨且更容易找到解决办法。原因有二:

一是因为我们不了解朋友为自己设定的各种真实或假想的界限。如果问题容易解决,朋友本可以自行解决,但这些界限让他们觉得某些人或系统无法挑战。若能放宽这些限制,问题便会更容易解决。

二是因为阻力的存在。解决问题意味着前进并面对新的、更令人畏惧的挑战。有时停留在原地、沉浸于“困境”中反而显得更容易。

当我们真正关心自己的问题时,愿意松开那些看似不可松开的限制,并勇于迎接随之而来的新挑战。

16. Digitized Continuous Magnetic Recordings for the 1859 Carrington Event (agupubs.onlinelibrary.wiley.com)

本文提供了Wiley Online Library网站的一个用户访问界面信息,主要涉及账户管理功能。页面显示,用户因浏览器禁用了Cookies而无法正常访问该网站,并提示需要启用Cookies才能使用认证及其他网站功能。网站详细的信息可在其隐私政策中查看。

页面上展示了多项账户相关操作选项,包括:

  • 修改密码:操作成功后会显示“Password Changed Successfully”提示。
  • 忘记密码:用户可输入注册邮箱地址以接收密码重置说明。
  • 请求用户名:如果用户忘记用户名,可通过输入邮箱地址来获取相关信息。

这些功能表明该页面是用户登录或账户恢复的一部分,而非目标研究论文《1859年卡林顿事件的数字化连续地磁记录》的实际内容页面。

17. Apple's risky bet on CarPlay (www.theturnsignalblog.com)

苹果在CarPlay上的冒险赌注

当前CarPlay的优势

尽管最好的原生车载系统在不断发展,苹果的CarPlay因其核心优势而备受驾驶员喜爱。在2022年全球开发者大会(WWDC)上,苹果指出79%的驾驶员仅会考虑配备CarPlay的汽车。其主要优势包括:

  • 最佳应用与服务整合:驾驶员常使用的导航、音乐和播客等应用组合,在原生车载系统中几乎无法全部找到。CarPlay通过连接iPhone,可以直接使用手机上的应用。
  • 无缝体验:无需在车内系统上重复下载、登录和设置,CarPlay能将手机上的状态(如正在播放的播客)无缝延续到车机上。
  • 熟悉的设计:无论驾驶哪辆车,CarPlay界面都保持与iPhone一致的熟悉设计、语言和偏好设置。
  • 长久性:CarPlay的版本更新独立于车辆硬件,使得老款车型也能体验到最新的车机系统,延长了车载技术的使用寿命。

CarPlay 2:深度集成的新版本

苹果正在开发下一代CarPlay(暂称CarPlay 2),它与现有版本有本质区别。当前CarPlay仅是通过标准协议将手机画面投射到车机屏幕,而CarPlay 2旨在与车辆的软件栈进行深度集成。

这意味着CarPlay 2可以接管整个信息娱乐显示屏、数字仪表盘以及副驾屏幕。它能控制更多车辆功能,但实现这一目标需要苹果与汽车制造商进行大量的定制化协作开发。苹果在WWDC上的展示明显是向汽车制造商进行推广,但目前的反响似乎并不热烈。

汽车制造商犹豫不决的原因

部分汽车制造商对集成CarPlay 2持谨慎态度,主要原因如下:

  • 品牌差异化:随着电动汽车在动力总成上的趋同,内饰设计和信息娱乐系统正成为品牌差异化的关键。CarPlay 2带来的标准化界面,与许多汽车制造商希望通过独特设计彰显品牌的理念相冲突。
  • 设计控制权丧失:例如,特斯拉的独家充电路径规划功能是其核心卖点之一,这依赖于自研软件。如果依赖CarPlay,这类深度定制化的功能将难以实现。
  • 盈利潜力:汽车制造商渴望通过软件订阅等服务获得持续收入。如果车机体验被苹果掌控,他们将失去直接向用户销售软件服务的机会。
  • 集成成本与价值评估:CarPlay 2需要汽车制造商投入更多开发资源,但他们怀疑这是否会显著影响消费者的购车决策。同时,并非所有车主都是iPhone用户,投入巨资开发可能仅为附加功能的系统,性价比存疑。

苹果的挑战与潜在策略

苹果的策略是在完全掌控软硬件平台的前提下,为汽车制造商提供定制化服务。这是一个平衡术:既要满足合作伙伴的需求以推动普及,又要控制自身的开发投入。为了说服持观望态度的汽车制造商,苹果可以考虑以下策略:

  1. 提供更灵活的UI定制:借鉴Apple Watch Nike的合作模式,允许汽车制造商在保持苹果设计语言的基础上,加入品牌专属字体、表盘等元素。
  2. 开放第三方集成:允许汽车制造商开发在CarPlay环境中运行的专属应用或小组件(如越野信息显示),以体现品牌特色。
  3. 强化乘客娱乐体验:结合苹果的TV+和AirPlay优势,将CarPlay 2扩展到副驾屏幕,提供领先的影音娱乐解决方案,成为切实的卖点。
  4. 探索收入分成模式:与汽车制造商分享通过CarPlay平台达成的服务订阅或应用购买收入,以弥补其潜在损失。
  5. 打造最佳导航与车辆服务集成:将Apple Maps打造成集路线规划、充电预约、停车缴费于一体的顶级导航应用,使其成为推动CarPlay采用的关键服务。
  6. 扩展生态联动:深化CarPlay与Apple Home、iPhone等生态的整合,实现远程温控、电池状态查看、手机钥匙等功能,展示跨设备协同的长期价值。

结论

苹果正通过CarPlay 2深度介入汽车行业,其成功与否取决于能否说服足够多的汽车制造商接受这种深度的集成模式。这是一场赌注:苹果需要在坚持控制用户体验的同时,给予合作伙伴足够的定制空间和商业利益。尽管面临挑战,但随着首批搭载CarPlay 2的车型上市,其对消费者购车决策的影响力将成为检验这一策略成败的关键。

18. Show HN: Podlite - a lightweight markup language for organizing knowledge (podlite.org)

Podlite 是一种轻量级、基于块的标记语言,专注于灵活性和易用性。它不受特定领域、编程语言或概念的限制,是一种用于组织知识的通用标记语言,适用于文档、教育材料、博客等多种场景。其规范以 Artistic License 2.0 许可发布。

主要特性:

  • 基于块的结构:以“块”为基本文档单元,支持定义属性和嵌入富内容。
  • 丰富的链接能力:允许在块、术语和定义之间建立多种关系链接,增强文档的互连性。
  • 支持公式和 Markdown:既可插入复杂数学公式,也支持使用熟悉的 Markdown 语法进行文本格式化。
  • 可扩展与可定制:可通过自定义块和内联代码扩展功能,适应项目特定需求。

Podlite v1.0 版本更新要点:

  • 自定义与扩展性

    • 重构自定义块以增强定制化。
    • M<> 扩展内联标记功能,支持更丰富的文本格式。
  • 处理与数据处理

    • =markdown 成为标准块,并集成新的 Markdown 解析模式。
    • =include=data 块新增 :mime-type 属性,便于处理多种数据类型。
    • 引入 data: 模式,简化 =picture=table 中的数据嵌入。
    • 支持通过 =data 块的 :filename:encoding 属性直接嵌入二进制数据。
    • 增强的 =table 块可直接从 CSV 文件渲染表格。
  • 内容结构与导航

    • 引入选择器以实现动态内容交互和操作。
    • 增强 =toc 块以生成详细目录。
    • 新增 =include 块以无缝引入外部文件。
    • 新增 =row=cell 块,支持 :header:rowspan:colspan 等属性以实现复杂表格设计。
    • 链接功能新增 :id:caption:lang 属性,丰富元数据与可访问性。
    • W<> 用于创建上下文反向链接,增强导航与参考能力。
    • 新增 :folded 属性以控制内容折叠显示,目录块支持 :folded-levels 控制嵌套显示级别。
  • 文档呈现增强

    • 引入通知块(带 :notify 属性)以提升文档交互性。
    • 通过 =item 块和 :checked 属性引入任务列表。
    • O<> 用于高亮和标记错误,适用于教育和评审场景。
    • J<>H<> 分别用于文本对齐和水平定位。
    • E<> 支持插入表情符号。
    • =picture 块和 P<> 增强图片处理功能。
    • =formulaF<> 增强对复杂数学公式的支持。
  • 弃用/移除内容: 为简化工具集并减少重叠,部分功能被弃用或移除,包括:P<toc:>P<man:>P<doc:>:margin 属性、=encoding 指令、声明块、上下文别名、=finish 指令、注释中的标记、P<>(放置链接)、:formatted:like 属性等。

反馈与贡献: 鼓励通过 GitHub Discussions 提供反馈,以支持 Podlite 的持续开发与改进。

相关资源:

19. Chechnya bans music outside the range of 80-116 beats per minute (www.smithsonianmag.com)

车臣共和国颁布音乐节奏禁令,规定所有音乐、声乐及舞蹈作品的节奏必须在每分钟80至116拍之间。该禁令由车臣领导人拉姆赞·卡德罗夫批准,旨在消除所谓“污染”地区的西方文化影响,并确保艺术创作符合“车臣心态和音乐节奏”。车臣文化部长穆萨·达达耶夫于4月5日的会议上宣布此令,强调“借鉴其他民族的音乐文化不可接受”,必须传承车臣文化遗产。

官方要求所有不符合新节奏规定的音乐作品在2024年6月1日前重新编写,届时起禁止公开演奏。这一禁令实际上禁止了全球夜店中常见的大部分舞曲音乐,如Dubstep、Techno和House音乐,因这些音乐节奏通常超过每分钟116拍。部分嘻哈和说唱音乐(节奏通常在60-140拍/分钟)理论上仍可能符合规定。

报道指出,这一禁令是卡德罗夫领导下车臣实施的系列限制措施之一,包括严格的着装要求。卡德罗夫自2007年执政以来,常利用宗教巩固权力并压制异议,其政权多次被指控侵犯人权。

禁令影响范围广泛:泰勒·斯威夫特的《Shake It Off》和碧昂丝的《Single Ladies》因节奏过快被禁,披头士的《Hey Jude》因过慢被禁。甚至俄罗斯国歌(节奏为每分钟76拍)也不符合文化部规定的节奏范围。

20. PyPy v7.3.16 (www.pypy.org)

PyPy v7.3.16 版本发布

PyPy 团队发布了 PyPy v7.3.16 版本,这是一个微版本更新,所有 API 与 7.3 系列其他版本兼容,建议用户升级。

主要更新内容

  • 安全修复:整合了来自上游 CPython 的安全更新。
  • 垃圾回收器修复:修复了垃圾回收器(GC)中的错误,具体细节在一篇关于 GC 错误修复的博客文章中说明。

包含的解释器

此次发布同时提供了三个不同的 Python 解释器:

  1. PyPy2.7:支持 Python 2.7 语法和功能,包含 CPython 2.7.18+ 的标准库(+ 表示已向后移植安全更新)。
  2. PyPy3.9:支持 Python 3.9 语法和功能,包含 CPython 3.9.19 的标准库。
  3. PyPy3.10:支持 Python 3.10 语法和功能,包含 CPython 3.10.14 的标准库。

项目信息与下载

  • 版本:v7.3.16(上一个版本是 2024年1月15日发布的 7.3.15)。
  • 下载地址https://pypy.org/download.html
  • 支持平台:提供适用于常见 x86 操作系统(Linux 32/64 位、macOS 64 位、Windows 64 位)、64位 ARM Linux(aarch64)、Apple M1 arm64(macos_arm64)以及 s390x Linux 的二进制文件。对于 Windows 32 位、Linux PPC64(大/小端序)和 Linux ARM 32 位等平台提供支持,但不发布官方二进制文件。

关于 PyPy

  • PyPy 是一个 Python 解释器,可作为 CPython 的替代品
  • 其速度优势来源于集成的追踪式即时编译器(JIT)
  • 团队欢迎其他动态语言开发者探索 RPython 的潜力。
  • 呼吁 Python 库维护者考虑提供基于 HPy/CFFI/cppyy 的版本,以在 PyPy 上获得更好性能。cibuildwheel 和 multibuild 系统已支持为 PyPy 构建 wheel 包。
  • 鼓励社区通过提交代码、改进文档等方式参与贡献。
21. Fallout1-ce: Fallout for modern operating systems (github.com)

Fallout Community Edition(Fallout1-ce)是对原版《Fallout》游戏引擎的完整重制,包含原始玩法、修复了引擎的错误,并增加部分便利性功能,可在多种操作系统上流畅运行。此外还有 Fallout 2 Community Edition。

安装方式:

  • 必须拥有游戏本体(可在GOG或Steam购买),下载最新版本或自行编译。
  • Windows:下载fallout-ce.exe并放入Fallout目录,替换falloutw.exe即可。
  • Linux:以Windows安装为基础,复制Fallout目录至系统中。可使用innoextract工具从GoG安装包提取所需文件。下载fallout-ce并放入该目录,安装SDL2后运行。
  • macOS:需10.11及以上系统。以Windows安装为基础复制数据,也可通过MacPlay/The Omni Group原版数据包提取游戏资源或用Homebrew+innoextract从GoG提取。下载fallout-ce.app并运行。
  • Android:游戏控制以触摸板模式模拟鼠标,支持单指移动、单/双指点击和滚动。须将Windows版数据文件(master.dat、critter.dat、data)复制至设备(文件名需小写),安装fallout-ce.apk,首次运行按提示选择数据文件夹并等待加载。
  • iOS:与Android类似,使用fallout-ce.ipa通过AltStore或Sideloadly安装。首次运行后需用Finder或iTunes将数据文件复制到应用内(文件名需小写)。

配置说明:

  • 主要配置文件为fallout.cfg,需根据实际游戏文件名调整配置项(master_dat、critter_dat、music_path1等),或将文件名与配置对应。
  • 音乐(ACM文件)需全部大写,路径需严格匹配fallout.cfg。
  • f1_res.ini用于设置窗口大小及是否全屏。推荐桌面可自由调整,移动端按设备最佳逻辑分辨率配置。
  • 目前配置需手动修改,未来将提供游戏内界面调整。

贡献与开发目标:

  • 计划升级到v1.2版(现基于Reference Edition v1.1),v1.2有多语言支持等改进。
  • 考虑回溯移植Fallout 2部分便利性和功能补丁,但需保持游戏平衡。
  • 用户可提交建议或功能需求。

许可协议:

  • 源代码按“可持续使用许可证”(Sustainable Use License)开放。