2024-05-17

39 篇热帖

1. Exercises to Learn Rust (rust-exercises.com)

文章标题:通过练习学习Rust

核心教学理念

  • 学习Rust这类编程语言,仅靠阅读或观看视频远远不够,必须通过大量实践来真正掌握。
  • 本课程融合理论与实践,通过编写代码解决量身定制的练习来帮助学习者熟悉理论。

基础课程:“100道练习学Rust”

  • 课程目标:逐步教授Rust核心概念,包括语法、类型系统、标准库及生态系统。
  • 前提要求
    • 无需Rust基础,但需掌握至少一门其他编程语言。
    • 无需系统编程或内存管理经验,这些内容会在课程中涵盖。
  • 课程结构:从零开始,通过小步练习逐步构建知识体系。完成约100道练习后,学习者将能应对中小型Rust项目。

进阶课程:大师班

  • 在掌握语言基础后,需学习如何利用Rust生态提高生产力。
  • 大师班采用与基础课程相同的“练习驱动”模式,聚焦特定主题进行深入学习。
  • 当前提供的大师班主题包括
    • Rust中的异步编程
    • 使用Rust构建Web服务
    • Rust中的嵌入式开发
    • Rust中的宏编程

课程主办方:Mainmatter

  • 所有课程由Mainmatter编写,这是一家专注于Rust的软件咨询公司。
  • 公司提供咨询、培训和指导服务,帮助企业采用或扩展Rust使用。

相关活动:EuroRust会议

  • Mainmatter组织EuroRust会议,这是一个为期两天的欧洲Rust社区盛会。
  • 会议涵盖Rust模式、系统编程、CLI工具、服务器、WASM及嵌入式系统等主题。
  • 下一届会议将于2026年10月巴塞罗那举行。
2. Bend: a high-level language that runs on GPUs (via HVM2) (github.com)

Bend: 基于HVM2在GPU上运行的高级并行编程语言

核心概述 Bend是一种高级、大规模并行编程语言,旨在提供类似Python和Haskell的表达力与特性。它支持快速对象分配、高阶函数与闭包、无限制递归以及连续体。Bend可像CUDA一样在GPU等大规模并行硬件上扩展,实现基于核心数量的近乎线性加速,且无需显式的并行标注(如线程创建、锁、互斥锁或原子操作)。其运行时基于HVM2。

关键特性与当前状态

  • 专为高性能扩展设计,支持超过10,000个并发线程。
  • 当前版本单核性能可能较低,随着代码生成和优化技术改进,性能预计将大幅提升。
  • 目前仅支持NVIDIA GPU。Windows支持尚在开发中,建议使用WSL2作为临时解决方案。

安装指南

  1. 依赖安装
    • Linux/Mac:安装Rust(通过rustup)和GCC(推荐版本至12.x)。
    • CUDA支持:在Linux上安装CUDA Toolkit 12.x。
  2. 安装Bend
    • 安装HVM2(HVM的并行交互组合子评估器):cargo install hvm
    • 安装Bend语言:cargo install bend-lang

基本使用

  • 运行程序
    • bend run <file.bend>:默认使用C解释器(并行)。
    • bend run-rs <file.bend>:使用Rust解释器(顺序执行)。
    • bend run-c <file.bend>:使用C解释器(并行)。
    • bend run-cu <file.bend>:使用CUDA解释器(大规模并行)。
    • 可通过gen-cgen-cu编译为独立的C/CUDA文件以获得最佳性能(代码生成器仍处于早期阶段)。
  • 使用-s标志:可获取减少次数、运行时间和每秒交互次数(百万级)等详细信息。

示例:顺序与并行求和

  • 顺序版本:递归计算1到1,000,000的和。计算具有依赖性(后续结果依赖前一步),因此无法并行化。
    • 运行示例:bend run-rs sequential_sum.bend -s(顺序)。
  • 可并行化版本:采用分治法计算同一求和。将任务递归分为两半,两部分计算相互独立,可并行执行。
    • 运行示例:bend run-cu parallel_sum.bend -s(大规模并行)。
    • 核心优势:只需更改运行命令,若代码本身可并行,Bend便会自动并行执行。

性能基准测试 以位图排序器(采用不可变树旋转的分治算法)为例,在不同环境下运行:

  • bend run-rs(Rust解释器,Apple M3 Max CPU):12.15秒。
  • bend run-c(C解释器,Apple M3 Max CPU):0.96秒。
  • bend run-cu(CUDA解释器,NVIDIA RTX 4090 GPU):0.21秒。 该结果展示了Bend在可并行算法上通过GPU实现的巨大加速潜力。

相关资源

  • 技术背景:阅读HVM2论文了解底层技术。
  • 文档:官方文档正在编写中,目前可参考GUIDE.md获取深入解释。
  • 功能详情:查看FEATURES.md
  • 社区:由HigherOrderCO开发,可加入其Discord社区。
3. Non-Euclidean Doom: what happens to a game when pi is not 3.14159 (2022) [video] (media.ccc.de)

本文是关于MCH2022大会上Luke Gotszling的演讲《非欧几里得毁灭战士:当圆周率不再是3.14159时游戏会怎样》的内容摘要。

演讲主题与背景 演讲探讨了在经典第一人称射击游戏《毁灭战士》(Doom)的源代码中,错误修改圆周率(π)及其他数学常数与函数后,游戏视觉表现和玩法所产生的变化。该游戏于1999年以GPL协议发布源代码。

核心实验与发现

  1. 错误圆周率的影响:演讲首先聚焦于修改Doom源码中π的值,观察其更趋错误时游戏图形的扭曲与异常。
  2. 扩展至三角函数:进一步实验改变其他三角函数(如正弦、余弦)和常量为错误值,分析玩家对虚拟世界的熟悉感知与导航能力如何被破坏。
  3. 非欧几里得几何可能性:探讨了利用数学错误在游戏中引入非欧几里得几何空间(如弯曲、扭曲的地图结构)所带来的新颖玩法潜力。

历史优化技巧简介 演讲中穿插回顾了为适配当时硬件性能,Doom所采用的一些程序优化技巧。

资源与实践指引 演讲结尾提供了以下实用资源:

  • 其他使用错误π值的游戏及公共源代码仓库链接。
  • 指导观众如何自行编译修改了数学常量的游戏版本,以进行实验。

总结 该演讲通过解构《毁灭战士》源代码中的数学基础,系统展示了修改基础数学常数如何从根本上改变游戏的视觉呈现和交互逻辑,并揭示了利用“错误”数学创造非欧几里得游戏体验的可能性。

4. Toon3D: Seeing cartoons from a new perspective (toon3d.studio)

Toon3D:从新视角看卡通

问题背景:卡通和动漫图像为了叙事和艺术表达,常缺乏严格的几何一致性。人类能从中自然感知3D场景,但传统的“运动恢复结构”(SfM)方法(如COLMAP)依赖几何一致性假设,在此类图像上会彻底失败。

核心方法:Toon3D旨在恢复这类非几何一致图像的底层3D结构。其关键洞见是:在恢复相机姿态和场景几何的同时,对输入图像进行可变形处理,从而“解释掉”几何不一致性,使之达到一致。整个流程由单目深度预测推断的结构引导。

技术流程

  1. 深度预测与标注:使用Marigold预测每张图像的深度,并用SAM生成候选临时掩模。随后通过用户友好的标注工具(Toon3D Labeler)手动标注图像,获得稀疏对应点并标记临时区域。
  2. 优化与对齐:同时优化两个主要目标:
    • 相机对齐目标:恢复相机参数。
    • 变形对齐目标:通过分片刚性变形对网格进行扭曲,使点云和对应点更好地对齐。
  3. 新视角合成:使用优化得到的相机和对齐后的稠密点云初始化高斯,并在Nerfstudio框架上运行高斯泼溅进行细化,最终可从从未绘制过的新视角渲染场景。

数据集与工具:作者策划了一个来自多部知名卡通和动漫(如《瑞克和莫蒂》、《海绵宝宝》、《辛普森一家》)的多视图图像数据集,并使用自研工具进行了可靠稀疏对应点的标注。

实验结果

  • 定性与定量评估:与COLMAP、Bundle Adjustment及DUSt3R等经典和最新学习型SfM方法对比,Toon3D能获得更可靠的相机姿态和场景几何。
  • 稀疏视图重建:在图像数量少、视角变化大的情况下,Toon3D依然能完成重建,而COLMAP可能失败。人类标注的对应点可帮助COLMAP成功,但Toon3D自身表现最佳。
  • 应用展示:除了卡通,Toon3D还能重建手绘绘画。文中展示了多个场景的重建点云、相机轨迹、新视角渲染视频,以及一个可交互的《瑞克和莫蒂》房屋内部探索演示。

结论:Toon3D成功解决了从非几何一致的创意媒体图像中恢复3D结构的问题,使人们能够体验从全新视角观看卡通和动漫的沉浸感。

5. Winamp has announced that it is "opening up" its source code (about.winamp.com)

Winamp 构建工具,赋能艺术家管理音乐和收入,同时提供一个无缝聆听体验的播放器。

6. Deutsche Bahn introduces "MetaWindow" (www.railtarget.eu)

德国铁路公司推出创新透明降噪技术“MetaWindow”。该技术与意大利初创公司Phononic Vibes合作开发,采用独特的几何超材料设计,显著提升吸音效率,降噪能力达34至37分贝,同时保持高达72%的透明度。

MetaWindow旨在解决铁路扩建中噪音控制与视觉影响之间的矛盾。德国铁路基础设施董事会成员Berthold Huber指出,该技术有助于在提升铁路网络的同时,通过降低噪音获得居民对交通项目的认可。其设计特别适用于城市、住宅区、旅游景点及景观保护区等对噪音法规要求严格的敏感区域,能减少视觉干扰,降低社区反对率。

虽然MetaWindow的材料成本较高,但其有望加快规划审批流程,缩短项目工期,从而抵消部分初始投入。该技术计划于今年晚些时候在汉堡S4铁路建设项目中首次实际应用。

7. Slack AI Training with Customer Data (slack.com)

Slack AI 训练客户数据政策摘要

  • 核心原则与承诺:Slack 的核心使命是提升工作效率,其基本原则是客户数据的隐私与安全神圣不可侵犯。公司明确声明不会使用客户数据来开发生成式AI模型。对于用于改进产品(如表情符号、频道推荐)的预测模型,其开发遵循严格的隐私保护指导原则。

  • 数据使用与隐私保护技术

    • 数据隔离:任何用于所有客户的全局模型,其训练方式均设计为无法复现任何部分的原始客户数据,并有技术控制防止数据在工作空间间泄露。
    • 员工访问限制:在开发AI/ML模型或分析数据时,Slack员工无法访问底层客户内容,有多种技术措施保障。
    • 具体应用场景示例
      • 频道推荐:基于成员、活动和主题相似性推荐。模型学习自建议和用户反馈,但使用外部模型评估主题相似性,全局模型仅基于数值评分和非客户数据工作。
      • 搜索结果:基于历史搜索和互动提升相关性,模型设计为无法复现查询或结果内容
      • 自动完成:建议基于本地工作空间内常见的公开短语,全局算法仅基于过去交互的数值评分和计数进行训练。
      • 表情符号建议:基于消息内容、情绪、历史使用频率推荐。可能使用外部模型分析消息情绪,模型仅依据特定情绪与表情符号关联的频率进行建议。
  • 客户选择权:客户可以选择退出,使其工作区的客户数据不被用于训练Slack的全局模型。选择退出后,数据仅用于改进该工作区自身的体验,但该工作区仍能受益于已训练好的全局模型。退出需由组织/工作区所有者联系Slack客服。

  • 生成式AI政策:Slack在其产品(AI in Slack)中使用第三方生成式AI(大语言模型)。除非获得客户的明确同意,否则不会使用客户数据训练这些模型。这些模型是“现成”的,不会因请求而更新或保留客户数据。客户数据在Slack的信任边界内,LLM供应商无法访问。

  • AI搜索功能来源:Slack AI的生成式搜索答案可从Slack功能、上传的文件、关联的Google Drive/SharePoint文件以及已安装的合作伙伴应用(如Box)中提取信息,用户需通过集成认证以访问这些文件,管理员可进行相关设置。

8. Visualizing algorithms for rate limiting (smudge.ai)

文章核心内容

本文介绍了**流量限制(Rate Limiting)**的核心概念,并详细解释了三种主流的限流算法及其可视化特点,最后讨论了实际应用中的关键考量。

为什么需要流量限制?

  • 公平性:防止少数用户(如垃圾信息发送者)垄断资源,确保所有用户公平访问。
  • 安全与保护:防止暴力破解攻击(如登录接口),保护昂贵的API端点免被单用户滥用。
  • 基本原理:在指定时间段内,通过计数器阻止超出预设限额的请求。

三种主要限流算法

1. 固定窗口(Fixed Windows)

  • 原理:在固定的时间窗口(如每分钟)内允许一定数量的请求。窗口结束时计数器归零。
  • 优点:实现简单,对用户而言规则可预测。
  • 缺点:若用户在窗口末尾发起大量请求,可能造成高达2倍限额的突发流量。
  • 实际应用:GitHub API采用此算法(每小时5000次请求)。
  • 变体:基于用户首次请求时间启动窗口(需向用户明确显示剩余限制时间)。

2. 滑动窗口(Sliding Windows)

  • 原理:容量不是一次性恢复,而是随时间逐步补充。平滑化流量分布。
  • 优点:能平滑处理高负载流量。
  • 缺点:对用户而言规则不如固定窗口直观;原始算法(需记录每个请求时间戳)资源消耗大。
  • 优化方案:大多数实际系统(如Upstash、Cloudflare)采用近似滑动窗口(浮点窗口)。通过加权计算前一个固定窗口和当前窗口的请求数来近似实现,效率更高。
  • 实际应用:Cloudflare的可配置限流器使用近似滑动窗口。

3. 令牌桶(Token Buckets)

  • 原理:一个桶以恒定速率补充“令牌”。每个请求消耗一个令牌,桶空则阻塞后续请求。
  • 关键特性
    • 桶容量:决定允许的最大突发请求数。
    • 补充速率:决定长期平均请求速率。
  • 优点:既能支持突发流量,又能强制执行长期平均速率,灵活性高。
  • 缺点:限额和补充规则对用户而言不如固定窗口直观。
  • 实际应用
    • Stripe(桶容量500,每秒补充0.01个令牌,支持100请求/秒的平均速率和500请求的突发)。
    • OpenAI GPT-3.5免费层(桶容量200,每天补充1个令牌)。
    • 高级用法:设置补充速率等于桶容量,可模拟“基于用户首次请求时间的固定窗口”算法。

其他重要考虑因素

  1. 数据持久化:限流状态必须存储在可持久化、可扩展的存储中(如Redis),不能仅依赖内存。
  2. 故障处理:当与持久化存储连接失败时,应默认放行(Fail open),避免阻塞服务。
  3. 流量整形:可结合节流(Throttling)来减轻突发流量的冲击。
  4. 键(Key)的选择:通常按用户ID限制;API按API密钥限制;未认证用户可使用IP、设备指纹等(效果有限)。
  5. 错误信息:向用户返回有用的限制信息,如等待时间。API应返回HTTP 429状态码和相关的x-ratelimit-*响应头。

算法选择建议

  • 需要简单规则或可预测的窗口开始时间:使用固定窗口
  • 需要在高流量下平滑化流量:考虑使用近似滑动窗口
  • 需要支持突发流量,同时限制长期平均速率:使用令牌桶
10. I don't want to spend my one precious life dealing with Google's AI search (aftermath.site)

文章作者强烈反对谷歌在其搜索引擎中未经同意强制引入AI生成内容的功能。

主要抱怨点:

  • 强制体验与加载延迟:AI生成的内容出现在搜索结果顶部,无法关闭。作者举例搜索播客信息时,必须等待约三秒钟加载无关的AI内容,才能看到真正需要的链接。
  • 累积的烦恼:虽然单次等待仅几秒钟,但对于日常高频次搜索的用户而言,这种“小摩擦”会不断累积,形成一种时间上的拖累,仿佛在浪费生命去处理不需要的信息。
  • 糟糕的体验升级:谷歌搜索体验本已因广告充斥而令人不悦,AI内容的预加载进一步加剧了这种糟糕的体验,相当于在访问广告网站前先看一次“广告预览”。
  • 即便技术改善也无法接受:作者明确表示,即使AI响应速度变得瞬时,也绝不想要这个功能,因为它来自“抄袭机器”,且用户从未主动选择使用。
  • 关闭方法无效:文章提及理论上可通过选择“网页”结果来绕过,但作者尚未看到该选项,并认为可能仍需先等待AI加载。尝试搜索“如何关闭AI搜索”本身也会返回AI结果,形成了一种讽刺的困境。
  • 生活压力增加:被迫采用“与AI结果赛跑”的手动滚动方法,反而给本已忙碌的生活增添了不必要的压力和紧迫感。

核心诉求:作者认为,这种强制性的、带有延迟的AI功能侵扰了用户体验,浪费了用户宝贵的时间,其根本诉求是希望拥有不使用该功能的自主选择权,并感叹“生命太短暂”。

11. ADSL works over wet string (2017) (www.revk.uk)

ADSL技术能在湿绳上工作,测试由一位技术人员在2017年进行,展示了宽带适应恶劣线路的能力。

测试使用了一根2米长的绳子,浸泡在盐水中以增加导电性。结果成功建立了ADSL连接,下行速度达到3.5 Mb/s,但上行速度较慢。测试表明,即使线路质量极差,ADSL仍能保持基本功能,尽管速度降低。

此外,当在绳子两端连接锡罐时,还能同时传输语音和宽带信号。这突出了ADSL的灵活性和故障处理的重要性,尤其是在服务仅表现为低速的情况下。

13. A Trial HIV Vaccine Triggered Elusive and Essential Antibodies in Humans (corporate.dukehealth.org)

HIV疫苗候选物在临床试验中诱导出关键广谱中和抗体

核心突破
杜克人类疫苗研究所开发的一种HIV疫苗候选物,在2019年的I期临床试验中,成功在少量参与者体内诱导出低水平的广谱中和HIV抗体。该抗体针对HIV-1外膜上高度稳定的“膜近端外部区域”,能阻断多种HIV毒株感染。研究证明,通过疫苗在数周内启动此类免疫反应是可行的,为疫苗研发提供重要概念验证。

试验设计与结果

  • 试验纳入20名健康HIV阴性参与者,15人接种两剂疫苗,5人接种三剂。
  • 免疫反应显著:仅两剂疫苗后,95%的参与者血清出现反应,100%的参与者血液CD4+ T细胞被激活。
  • 快速诱导广谱中和抗体:关键发现在于,广谱中和抗体在两周内即可产生,而传统感染后通常需数年才能形成。
  • 免疫细胞持续进化:疫苗诱导的免疫细胞保持发育状态,能通过突变适应病毒变化。

试验中止与原因
试验因一名参与者出现非致命性过敏反应而中止,该反应可能由疫苗添加剂引发。团队已对此进行调查。

研究意义与展望

  • 可行性证明:研究首次证实疫苗可诱导人体产生广谱中和抗体,且过程可缩短至数周。
  • 未来方向:需开发多组分疫苗靶向HIV外膜多个脆弱位点,防止病毒逃逸。本研究仅针对一个位点,下一步将增强中和抗体效力并覆盖其他靶点。

团队与资助
研究由杜克人类疫苗研究所 Barton F. Haynes 和 Wilton Williams 领导,成果发表于《Cell》。资金来自美国国立卫生研究院及比尔与梅琳达·盖茨基金会。

14. Beekeeper furious over destruction of $2M honey crop (www.rnz.co.nz)

新西兰养蜂人Steven Brown因蜂群遭受美国腐臭病(AFB)感染,其公司Springbank Honey被迫焚烧超过1万个蜂箱及相关设备,导致严重经济损失。Brown称,此次焚烧预计造成约200万美元直接损失,并因蜂箱短缺可能导致明年损失500至600万美元。

美国腐臭病是一种通过孢子传播的细菌性疾病,孢子可存活长达40年,被认为是全球最具破坏性的蜜蜂幼虫病之一。在新西兰,现行法规要求通过焚烧来消灭病原孢子,且禁止使用抗生素或疫苗等其他防治手段,这与其他允许采取多种措施的国家形成对比。

管理该疾病的法定机构(由行业征税支持)的总经理Niha Long表示,焚烧是唯一能有效销毁孢子的方法,并强调该机构旨在协助受疾病影响的养蜂人。她指出,过去一年全国有2900例AFB报告,同比减少15%,受影响的养蜂人占比低于8%。

然而,养蜂人及相关行业组织对此方法提出强烈批评。新西兰养蜂协会主席Jane Lorimer指出,新西兰在阳性检测后强制焚烧蜂箱的做法“几乎独此一家”,并呼吁政府改革《生物安全法》及相关害虫管理计划。她强调,当前法规缺乏上诉机制,且行业正面临困境——商业蜂箱数量在过去两年内已减半。

养蜂人呼吁政府立即废止现行害虫管理计划,并更新防治策略,以减轻行业经济负担并提高防治效果。

15. Welcome to the Parallel Future of Computation (hvm-page.pages.dev)

文章摘要:欢迎来到计算的并行未来

本文介绍了两个旨在简化并行计算的核心技术项目。

Bend 并行语言

Bend 是一种新的并行编程语言,其核心目标是让开发者能够轻松编写在多核CPU和GPU上运行的并行代码。它具备以下关键特性:

  • 易用性:其语法和感觉类似于 Python,旨在降低并行编程的门槛。
  • 自动化并行:开发者无需处理锁、互斥锁、原子操作等传统并发编程的复杂性。系统会自动识别并执行那些可以并行处理的任务。

HVM 并行运行时

HVM 是一个基于理论突破构建的高性能并行运行时系统。

  • 理论基础:它基于 Yves Lafont 在1997年提出的“交互组合子”并行计算模型。该模型被认为在某些基础层面超越了传统的图灵机和λ演算。
  • 实现与性能:基于此模型构建的HVM编译器和求值器,能够自动实现接近理想的并行加速比,理论上可支持超过1000个线程。
  • 与Bend的关系:Bend 语言被特别设计为能够充分利用HVM的强大并行能力。

项目生态

文章展示了Bend、HVM以及相关的Kind项目构成的整体技术栈,并通过树基数排序(100万个分支)的性能对比图表,直观体现了其并行计算优势。最终,文章邀请读者参与并共同塑造计算的并行未来。

16. Improvements to Data Analysis in ChatGPT (openai.com)

数据分析功能改进摘要

ChatGPT 的数据分析能力得到增强,基于自然语言理解数据集并完成任务。用户可上传一个或多个数据文件,ChatGPT 将通过编写和运行 Python 代码进行分析,支持多种数据任务,如合并和清理大型数据集、创建图表以及挖掘洞察。这降低了初学者进行深入分析的门槛,并节省了专家在常规数据清理上的时间。

新功能优化了文件集成方式:用户可直接从 Google Drive 或 Microsoft OneDrive 添加文件类型,无需先下载到本地再上传。这使 ChatGPT 能更快速地处理 Google Sheets、Docs、Slides 以及 Microsoft Excel、Word、PowerPoint 等文件,提升效率。

图表交互功能得到扩展:用户现在可在对话中自定义和交互条形图、线形图、饼图和散点图,包括悬停查看元素、提问附加问题或调整颜色。图表完成后可下载用于演示或文档。

例如,用户可直接从 Google Drive 选择包含公司用户数据的 Google Sheet,并要求 ChatGPT 创建按队列显示留存率的图表,从而简化分析流程。

17. A long list of (advanced) JavaScript questions, and their explanations (github.com)

本文内容与标题《A long list of (advanced) JavaScript questions, and their explanations》不符。

实际提供的文本内容并非高级JavaScript问题列表及其解释,而是GitHub网站界面的通用HTML代码片段,主要包含以下元素:

  • GitHub的产品功能导航链接(如Copilot, Actions, Codespaces, Advanced Security等)。
  • 按公司规模、使用案例、行业等分类的解决方案入口。
  • 社区、支持、资源和企业解决方案的链接。
  • 一个要求用户提供反馈的界面模块。
  • 搜索、登录/注册等页面通用组件的代码。

核心结论:所给文本是GitHub网站布局的源代码,并未包含任何与JavaScript问答相关的实质内容。因此,无法依据此文本对标题所承诺的“高级JavaScript问题列表及其解释”进行概括。

18. DNA confirms there IS a big cat roaming the British countryside (www.discoverwildlife.com)

DNA证据证实英国乡间存在大型猫科动物。研究人员在湖区一只死羊身上提取的样本中,首次检测到了属于豹属(Panthera)的DNA,极可能是一只豹。

该分析由华威大学罗宾·阿拉比教授的实验室完成。阿拉比教授表示,从动物尸体上提取DNA通常非常困难,但此次证据确凿,这让他转变了看法,成为英国存在非本地大型猫科动物的支持者。此前,他还曾鉴定过来自英格兰北部的一个爪子碎片也属于豹属。

据报道,这只死羊由坎布里亚郡居民莎朗·拉金-斯诺登于去年十月在一处高地发现。她看到一只体形如德国牧羊犬大小的黑猫正在啃食羊尸,随后跳墙离去。接收了超过1000份相关目击报告的专家里克·明特认为,该动物最可能是一只豹。在豹属的五个物种中,只有豹和美洲豹拥有黑色变种,而美洲豹不太可能出现在英国乡间。

此次发现是继2022年在格洛斯特郡刺铁丝网上发现疑似大型猫科动物的黑色毛发后,又一支持其存在的物证。

20. LoRA Learns Less and Forgets Less (arxiv.org)

LoRA 学习更少且遗忘更少

研究概述 本文对比了低秩适应(LoRA)与全参数微调在两个目标领域(编程和数学)上的性能,涉及两种数据场景:指令微调(约10万对提示-响应数据)和持续预训练(200亿未结构化词元)。研究发现,在标准低秩配置下,LoRA的性能显著低于全参数微调。

主要发现

  1. 性能与遗忘权衡:LoRA在目标领域任务上表现较弱,但能更好地维持基础模型在目标领域外任务上的性能,即减轻了“灾难性遗忘”。
  2. 遗忘缓解效果:LoRA在减轻遗忘方面的效果优于常规正则化技术(如权重衰减和Dropout),并且有助于保持生成内容的多样性
  3. 扰动秩差异:全参数微调所学习的参数扰动秩,比典型LoRA配置的秩高10到100倍,这可能是性能差距的部分原因。
  4. 实践建议:研究最后提出了使用LoRA进行微调的最佳实践建议。
21. Using Llamafiles for embeddings in local RAG applications (future.mozilla.org)

该网页是Mozilla产品页面,主要宣传其最新产品并引导用户注册。页面核心内容如下:

  1. 页面核心目的:推广Mozilla的新产品,邀请用户尝试和反馈,以共同塑造下一代技术。页面强调其构建“以人为本”的解决方案。
  2. 主要产品介绍
    • Solo:一个可免费创建网站并连接自定义域名的工具,旨在帮助用户快速在线上推出业务。
    • 0din:一个AI系统漏洞赏金计划。用户可通过发现LLM(大型语言模型)中的安全漏洞来获得奖励,以贡献AI安全。
    • Tabstack:一个专为AI系统设计的网络浏览和数据转换API。它旨在为开发者的AI代理、研究工具、数据流水线等应用提供可靠、简单的网络访问和交互能力。
  3. 用户引导:页面设有多处“Sign up”或“Try”按钮,鼓励用户体验上述产品或注册以获取Mozilla最新产品资讯。
  4. 公司理念:页面底部重申Mozilla致力于建设一个开放、可及且隐私优先的互联网未来。
22. How to read C type declarations (2003) (www.unixwiz.net)

如何阅读C类型声明(2003年)

C语言的声明由一个基本类型和零个或多个派生类型构成,遵循操作符优先级规则。

基本类型与派生类型

  • 基本类型:位于声明最左侧,包括 charintfloatstructunionenum 等。
  • 派生类型:有三种,用于修饰基本类型或其他派生类型:
    • *:指向...的指针
    • []:...的数组
    • ():返回...的函数
    • 派生类型必须与介词(如“指向”、“的”、“返回”)一起使用。

解析规则

  1. 起始点:从变量名开始,以基本类型结束。
  2. 操作符优先级[](数组)和 ()(函数)的优先级高于 *(指针)。
  3. 解析口诀:“能向右则向右,必须时则向左”。
    • 从变量名出发,尽可能向右消耗派生类型标记([]()),直到遇到分组括号。
    • 然后向左匹配分组括号,并消耗左侧的 * 标记。

示例解析

  • 简单示例long **foo[7];
    • 解析步骤:
      1. foo 是 ... long
      2. 向右消耗数组:foo 是 7个元素的数组 ... long
      3. 向左消耗指针:foo 是 7个元素的数组 指向 指向 long
  • 复杂示例char *(*(**foo[][8])())[];
    • 解析步骤(逐步应用规则):
      1. foo 是 ... char
      2. 向右消耗数组:foo 是 ...的数组 ... char
      3. 继续向右:foo 是 8个元素的数组 的数组 ... char
      4. 遇到分组括号,向左消耗指针:foo 是 8个元素的数组 的数组 指向 指向 ... char
      5. 消耗括号,向右消耗函数:foo 是 8个元素的数组 的数组 指向 指向 返回...的函数 ... char
      6. 继续向左和向右:最终描述为 “foo 是 指向 返回 指向 8个元素的数组 的数组 的函数 的指针 的数组 的指针”,类型为 char

抽象声明符

当类型需要独立描述(如类型转换或 sizeof)而不与变量名关联时,使用抽象声明符。查找变量名应插入的位置:

  • 在所有“指向”派生类型标记的右侧。
  • 在所有“数组”和“函数”派生类型标记的左侧。
  • 在所有分组括号内部。

语义限制

  • 不能有函数数组:改用函数指针数组。
  • 函数不能返回函数或数组:改用返回函数或数组指针的函数。
  • 在多维数组中,只有最左侧的 [] 可以无维度。
  • void 类型只能用于指针或函数返回类型,不能作为基本类型单独使用。

调用约定声明(Windows)

在函数声明中,调用约定(如 __stdcall__cdecl)是函数属性,而非指针属性。在函数指针声明中,它应位于指针之后、分组括号之内:

  • BOOL (__stdcall *foo)(...); 解析为:foo 是 指向 返回BOOL的 __stdcall 函数 的指针

通过应用这些规则和口诀,可以系统地解读任意复杂的C语言类型声明。

23. Wind farms can offset their emissions within two years, new study shows (newsroom.taylorandfrancisgroup.com)

研究发现:风力发电场可在两年内抵消其全生命周期碳排放

一项发表于《新西兰皇家学会杂志》的新同行评审研究表明,与燃煤或燃气发电厂相比,一座陆上风力发电场在运行不到两年后,即可抵消其从建设到退役整个30年生命周期内产生的碳排放。

该研究基于新西兰哈拉帕基陆上风电场的实际建设数据,详细分析了涡轮机部件制造、运输、安装以及最终退役处理的整个过程。研究得出该风电场的碳足迹为10.8克二氧化碳当量每千瓦时(gCO2eq/kWh)。以此计算,与替代的联合循环燃气涡轮机相比,该风电场的温室气体回收期约为1.5至1.7年,而能源回收期仅为0.4至0.5年(即运行约半年即可偿还制造涡轮机所消耗的全部能量)。

研究主要作者伊莎贝拉·皮门特尔·平塞利指出,虽然具体碳回收时间取决于所替代的旧技术类型(在新西兰主要替代燃气涡轮机,在其他国家则主要替代化石燃料发电),但研究结果应能适用于国际上大多数风电场,因为所使用的涡轮机技术具有全球一致性。该研究突显了陆上风能发电的环境效率及其在能源转型中的关键作用。

研究同时识别出改进方向:涡轮机的制造环节是碳和能源足迹的最大贡献者。此外,安装和运输阶段合计也贡献了近10%的排放。合著者艾伦·布伦特教授强调,需持续优化供应链以减少负面影响,例如开发退役叶片的回收工艺(目前因商业可行性多被填埋)。研究表明,通过机械或化学方法回收叶片,有望将碳足迹从10.8 gCO2eq降至9.7 gCO2eq。鉴于技术快速发展,定期更新相关研究也至关重要。

该研究存在一些方法局限,主要关注能源强度和碳排放生命周期分析,未涵盖臭氧损耗、人体毒性、酸化等其他环境影响,也未考虑社会、野生动物或经济影响。

24. The Forged Apple Employee Badge (cabel.com)

这篇文章讲述了作者在eBay上发现一起伪造的苹果公司早期员工徽章拍卖事件。拍卖品被宣传为苹果公司第10号员工Sherry Livingston的徽章,外观看起来有年代感,但作者发现诸多疑点:塑料磨损痕迹不自然、地图上的污渍过于刻意、打字机输入的文本异常均匀。

苹果公司第8号员工Chris Espinosa(仍在职)亲自鉴定后确认这是赝品。作者随后调查卖家提供的“来源证明”——一张据称来自德国红十字会的购买收据。收据看似真实,但细节经不起推敲:文件摆放过于刻意、卖家主动强调货币细节反而暴露造假意图。德国网友的反馈也证实收据是伪造的。

尽管作者揭露了骗局,该徽章仍以946美元售出。文章最后强调了关键教训:警惕伪造的苹果历史物品、避免从此类卖家购买、遇到疑问时应借助网络社区进行验证。

25. Online censorship's institutional power (madattheinternet.substack.com)

网络审查的机构性权力

本文以作者管理Kiwi Farms论坛的亲身经历为例,探讨了财富与影响力如何系统性地构建起网络审查的机构性权力,并以个案揭示了其运作模式与广泛威胁。

核心案例:Liz Fong-Jones与对Kiwi Farms的审查

人物背景:Liz Fong-Jones是一名跨性别百万富翁,前谷歌员工,现任两家旧金山科技创业公司——Honeycomb(企业级可观察性平台)与Tall Poppy(声誉管理公司)的高管。其网络声誉管理能力远超常人。

审查动因与起源:2017年,Liz Fong-Jones使用其谷歌工作邮箱,就Kiwi Farms论坛上关于慈善组织Trans LifeLine的调查帖子提出投诉,试图关闭该论坛的邮件服务。该论坛用户当时发现该组织可能涉嫌欺诈和管理不善,后其高管被开除并被指控挪用数十万美元。Fong-Jones最初试图掩盖此事,此举被视为其长期针对该论坛行动的起点。

系统性审查策略

Liz Fong-Jones构建了一套多层面的审查策略:

  1. 媒体叙事塑造:通过与媒体的联系,塑造不利于目标的公共叙事。
  2. 维基百科巩固:利用其在维基百科的管理员朋友关系,将上述媒体叙事确立为“可信来源”,从而巩固为“事实”。维基百科因编辑门槛和内容保护机制,成为难以挑战的权威信息源,其内容深刻影响搜索引擎结果和AI生成内容。
  3. 直接施压ISP:向互联网服务提供商(ISP)提交维基百科等页面的链接,作为目标网站存在“滥用”行为的证据,要求断网或停止服务。
  4. 法律与学术施压:在澳大利亚提起高额诽谤诉讼,尽管关联牵强;其审查实践被剑桥大学等机构作为研究案例,并在IEEE等重要国际标准组织中进行展示,试图影响未来互联网的技术规范。
  5. 触及基础设施层:成功说服顶级互联网骨干网提供商(如Cogent)和内容分发网络(如Cloudflare)终止对目标网站的服务,这是前所未有的、触及互联网基础架构的审查。

制度化审查的网络

文章指出,支持审查的群体已形成一个由财富、影响力与人脉构成的紧密网络:

  • 资本与平台:Tall Poppy获得了Y-Combinator等投资,并拥有Spotify、Twitch等重量级客户。
  • 精英人脉:该公司得到前Reddit CEO Ellen Pao、前维基媒体CEO Katherine Maher等科技界名人的背书。
  • 意识形态与机构的结合:Katherine Maher对维基百科“自由开放”原则的质疑,以及其与NPR、Signal基金会的关联,体现了这种审查思维在重要机构中的渗透。

反审查力量的困境

与此相对,反审查力量呈现分散、孤立且应对不力的状况:

  • 组织碎片化:缺乏有效协调,常因个人问题内耗。
  • 战略短视:过度关注流行文化(如游戏角色服装)的局部胜利,忽视基础设施层面正在发生的根本性威胁。
  • 机构失效:老牌组织如电子前沿基金会(EFF)虽有“保护协议栈”等倡议,但因惧怕争议、内部人员偏见等原因,未能有效介入最前沿的案例,成就甚微。
  • 缺乏风险意识:如Rumble等新兴反审查平台,在明知合作伙伴(如Cogent、Path)存在严重问题和审查行为的情况下,仍选择依赖它们,暴露出对系统性风险认识的不足。

结论与呼吁

作者认为,Kiwi Farms的遭遇是一个警示案例。针对它的审查策略正在被研究、文档化和标准化,未来将被应用于更易于攻击的目标。这种由资本和机构权力驱动的审查,意图绕过法律限制,从技术和制度层面重塑一个更封闭、更可控的互联网。

文章最后发出行动呼吁:反审查力量需要从分散转向联合,需要有资源的个体或团体组建新的、更具实质性的行业联盟或组织,以对抗已高度组织化的审查力量。对普通人而言,则应致力于提升自身的生产力与地位,将精力投入到具有建设性的长期斗争中,而非仅限于文化领域的表面抗议。

26. Build WebGPU Apps Today with PlayCanvas (blog.playcanvas.com)

PlayCanvas 编辑器正式支持 WebGPU

WebGPU 的发展
自 2010 年创建以来,PlayCanvas 一直基于 WebGL 构建。2017 年,PlayCanvas 与 Mozilla 合作推出了对 WebGL 2.0 的支持。2023 年 4 月,谷歌在 Chrome 113 中默认启用 WebGPU,标志着网络图形进入新阶段。此后 WebGPU 的采用率迅速增长,据 Web3D 调查显示,目前已有 62.19% 的终端用户能够运行 WebGPU。随着 Firefox 和 Safari 预计在不久的将来推出 WebGPU 支持,预计到 2024 年这一数字将大幅上升。

WebGPU 的重要性
在 PlayCanvas 项目中启用 WebGPU 后,初期可能不会注意到明显差异。PlayCanvas 团队已投入大量精力,确保在 WebGPU 下运行的 WebGL 项目在视觉上保持一致。然而,由于 WebGPU 降低了驱动层开销,长期来看将带来显著的性能提升。
WebGPU 独有的关键特性是支持计算着色器(Compute Shaders),可在 GPU 上执行通用计算。PlayCanvas 引擎从 v1.70.0 版本开始支持计算着色器,文章中展示了利用计算着色器在 GPU 上模拟 100 万个粒子的示例(可在支持 WebGPU 的浏览器中体验)。总之,WebGPU 代表了 PlayCanvas 的未来,预计未来几个月在性能和功能上将有重大进展。

如何在 PlayCanvas 中开始使用 WebGPU
目前,PlayCanvas 中的 WebGPU 支持仍处于 Beta 测试阶段,部分功能尚未实现(例如,运行时光照贴图尚未支持)。因此,用户需要手动“选择加入” WebGPU 支持。操作步骤如下:

  1. 在编辑器中打开项目的 Inspector(检查器)
  2. 进入 Project Settings(项目设置),展开 RENDERING(渲染) 部分。
  3. Graphics Devices(图形设备) 更新为包含 WebGPU (beta)

待 WebGPU 支持足够成熟后,它将成为默认选项。

反馈渠道
由于 WebGPU 支持是新增功能,开发团队依赖社区反馈。如果遇到问题,请提交 issue;若想深入讨论 WebGPU 支持,可在论坛发起新话题。PlayCanvas 团队欢迎用户提供意见与反馈。

27. Why neural networks struggle with the Game of Life (2020) (bdtechtalks.com)

神经网络为何难以学会生命游戏

研究背景 生命游戏是英国数学家约翰·康威于1970年设计的网格自动机,通过四条简单规则(关于细胞存活、死亡和诞生)就能生成极其复杂的模式。尽管规则简单,但最新研究表明神经网络要准确学习这些规则面临挑战。

研究目的 美国斯沃斯莫尔学院与洛斯阿拉莫斯国家实验室的研究人员,旨在探究神经网络能否自动学习并完美重现生命游戏的底层规则。该游戏成为理想实验对象的原因包括:

  • 已知解的存在:可手动设计一个完美实现规则的小型神经网络作为基准。
  • 无歧义性:若网络预测错误一次,即表示未真正掌握规则。
  • 可调节难度:通过预测未来时间步的数量来控制任务复杂度。

实验设计与核心发现

  1. 可行性验证:研究者首先手动调参,构建了一个能完美预测游戏演变的小型卷积神经网络,证明存在最小规模的可解网络。
  2. 训练困境:当随机初始化相同架构的网络并用大量游戏样例进行训练时,网络很难收敛到最优解。其性能高度依赖初始参数和训练数据的选取,且随着预测时间步增加,表现进一步下降。
  3. 规模与性能的权衡
    • 增加网络层数和参数量(即使用更大更复杂的网络)可以显著提高准确率,最终达到近乎完美的性能。
    • 这验证了“彩票假说”:在大型随机初始化的网络中,存在特定的小型子网络(“彩票”),如果其参数初始化得当,就能高效解决问题。

启示与意义

  • 对神经网络的普遍启示:研究结果表明,对于那些需要遵循多步隐藏规则、涉及符号推理的任务(如逻辑/数学求解器、流体动力学模拟、图像/语言中的逻辑推断),神经网络学习起来非常困难,往往需要规模庞大的模型。
  • 对简单符号规则的挑战:即使是生命游戏这种能用相对简单符号规则描述的问题,小型网络也难以掌握,更复杂的符号操控预计需要更大规模的网络。
  • 对机器学习实践的反思:虽然扩大网络规模是当前提升性能的常用手段,但该研究也指出了其潜在弊端:
    • 资源消耗:训练和运行大型网络需要更多计算资源,导致更高的能耗与碳排放。
    • 数据依赖:可能促使收集更大规模的数据集,而忽视寻找更优的数据分布策略,在涉及伦理和隐私的领域可能不可行。
    • 行业门槛:过度依赖超大规模模型可能巩固大公司的技术优势,抬高研究门槛。

未来方向 作者希望该研究能推动对神经网络局限性的探索,从而开发出不严重依赖大规模网络的、更优的学习算法和搜索方法。

28. Exit Strategy: The Case for Single-Stair Egress (www.architecturalrecord.com)

单楼梯出口:美国建筑规范改革的案例分析

现行规范的问题

美国建筑法规通常要求大型多户住宅建筑设置多个疏散楼梯。这一规定限制了建筑设计,导致当前美国新建公寓楼外观趋同,普遍采用“五层木结构加一层混凝土”的“五 over one”模式。这种设计采用双走廊布局和两端楼梯,使得建筑进深大、走廊长且无窗,非角落户型仅单面采光,主要适合一居室或开间布局。

单楼梯设计的优势

与欧洲常见的单楼梯建筑相比,美国现行设计在多个方面存在不足:

  • 采光与通风:单楼梯建筑通常建筑进深较浅,每个户型至少有两面采光,部分户型三面采光,提供更好的光线、空气和隔音隐私。
  • 户型多样性:多面采光使在紧凑户型中也能布置多卧室套房。
  • 社区营造:单楼梯建筑通常以20户左右为单位,规模较小便于邻里相识,促进社区建设。例如纽约皇后区杰克逊高地的“花园公寓”。
  • 小地块适应性:单楼梯设计能在小型填充地块上实现经济可行的多户住宅开发,因为双楼梯加走廊会占用过多建筑面积。

实施案例与改革现状

  • 美国例外:纽约和西雅图是20世纪全程允许单楼梯建筑的两个美国城市。纽约的杰克逊高地花园公寓被早期建筑期刊称赞。
  • 规范分歧根源:美国强调通过多个出口便于逃离可燃建筑;欧洲则注重防火材料和分区以防止火灾蔓延。统计显示欧洲火灾死亡率持续低于美国。
  • 安全措施:允许单楼梯建筑的城市通常将其高度限制在六层以下,并要求防火结构和喷淋系统,以确保消防云梯可达。
  • 改革进展:夏威夷首府檀香山2012年效仿西雅图法规重新允许单楼梯公寓。加利福尼亚、俄勒冈和华盛顿州去年立法允许单楼梯建设,将于2025-2026年生效。另有数个州正在考虑类似立法。

改革协同与前景

建筑规范改革需与分区改革协同推进。即使分区允许建多户住宅,若建筑规范要求双楼梯,小型地块仍难以开发。单楼梯设计在小地块上兼具成本与质量优势,在大地块上则提供公园式内部庭院的独特环境。允许单楼梯建筑可能使多户住宅更易被社区接受,因为它们比巨型整块公寓楼更亲切、更具邻里感。

支持者认为,美国应借鉴欧洲经验,通过修订建筑规范,在全国范围内合法化单楼梯多层公寓,以增加住房供应并提升居住品质。

30. BIMI and DMARC Can't Save You: The Overlooked DKIM Exploit (www.zone.eu)

本文揭示了DKIM(DomainKeys Identified Mail)标准中一个被广泛忽视的漏洞,该漏洞源于对标准参数“l=”(邮件正文长度标签)的宽松解释,允许攻击者篡改已通过DKIM加密检查的邮件,并使其成功通过DMARC验证,从而绕过现有的电子邮件认证机制。随着BIMI(品牌标识消息识别)的普及,该漏洞的危害性进一步加剧,因为BIMI依赖DMARC验证,篡改后的邮件可能显示品牌logo,增加欺骗性。

漏洞技术原理

  • 核心问题:DKIM标准RFC 6376中的“l=”标签用于指定邮件正文长度,但该参数存在安全风险(见RFC 6376第8.2节)。攻击者可利用此标签,在不破坏DKIM签名的前提下,通过修改或添加Content-Type头及MIME结构,替换邮件显示内容。
  • 攻击方式
    1. 修改Content-Type头中的边界值(boundary),并在邮件末尾添加新的MIME结构。
    2. 即使Content-Type头已被签名,攻击者仍可通过添加未签名的头来利用漏洞。
    3. 篡改后的邮件仍通过DKIM签名检查,但邮件客户端会优先解析新添加的MIME结构为主要内容。
  • 示例:研究团队成功篡改了多家财富500强公司(如特斯拉、DHL、eBay等)发出的DKIM签名邮件,这些邮件在受害者收件箱中正常显示。

影响与严重性

  • 全球风险:该漏洞影响整个电子邮件生态系统,数十亿用户面临钓鱼攻击风险。
  • BIMI加剧风险:BIMI认证依赖DMARC,通过验证的伪造邮件可能在苹果邮件、Gmail等客户端显示品牌标识,使钓鱼邮件更可信。
  • 广泛存在:研究人员发现至少3040个域名的数百万封邮件使用了“l=”标签,其中32个域名通过了BIMI验证。

缓解措施

  • DKIM评估方:应忽略使用“l=”标签的签名,或严格限制其使用。
  • 邮件发送方
    1. 避免使用“l=”标签。
    2. 定期轮换DKIM密钥,防止旧邮件被用于伪造。
    3. 若使用“l=”标签,需对Content-Type头进行双重签名以增强保护。
  • 临时方案:评估方应拒绝使用旧DKIM签名(如SHA1-RSA或弱密钥)的邮件。

时间线与响应

  • 2024年1-3月:研究人员向谷歌、苹果、微软及CERT-EE披露漏洞。谷歌和苹果确认问题存在并计划修复。
  • 2024年4月:谷歌实施了缓解措施。
  • 2024年5月:谷歌建议公开披露。
  • 注意:微软未将此视为问题。

结论

该漏洞凸显了电子邮件标准实现中长期存在的风险,需全生态系统协作修复。尽管部分服务商已采取措施,但彻底解决需严格遵循DKIM安全建议,并废弃不安全的旧实践。

31. The Vietnamese Computer Scientist Who Made Toy Story Possible (time.com)
32. History of the Italian electrical system (samuele963.github.io)

内容摘要

根据提供的信息,目标文章《意大利电力系统史》的实际内容未能加载。当前页面显示为一条重定向提示,未包含关于意大利电力系统历史的具体文字、数据或论述。

因此,基于所给材料,无法生成一份包含具体史实、关键发展节点、重要公司或技术变革的实质性总结。如需完成该主题的准确概述,需重新获取包含完整正文的原始文章内容。

34. The Beauty of Concrete (worksinprogress.co)

建筑装饰衰落的原因:文化选择而非经济必然

20世纪以来,建筑装饰(Ornament)在各类高地位建筑中大幅减少。关于这一现象,主流的“供给侧”经济学解释并不准确,其本质是现代主义思潮驱动下的“需求侧”文化选择。

对“供给侧”理论的反驳

主流观点(基于“鲍莫尔成本病”)认为,装饰属于劳动密集型工作。随着现代技术发展,其他行业生产力提升,导致手工装饰的劳动力机会成本急剧上升,使其变得过于昂贵而被简约风格取代。

然而,19至20世纪的技术革命实际上大幅降低了装饰的生产成本:

  1. 生产机械化:木工铣床和车床实现了木装饰的高效量产;石材雕刻也逐渐引入机械与机器人技术。
  2. 新材料的应用:铸铁、人造石(混凝土)和赤陶等材料的普及,以极低的边际成本实现了装饰的规模化生产。
  3. 规模经济:铁路等交通网络的完善大幅降低了运输成本,催生了跨区域的大型装饰制造工厂;早期摩天大楼的巨大体量也带来了规模经济。

这些技术进步促成了装饰的“民主化”,使其在19世纪至一战前广泛普及于普通大众的住宅中。

装饰衰落的真实动因:需求侧的文化选择

如果装饰因昂贵而被淘汰,它应首先从廉价建筑中消失。但事实恰恰相反:

  • 大众住宅保留装饰:在现代英美等国的大众市场新建住宅(如郊区房屋)中,装饰依然普遍存在,证明普通买家仍对其有强烈需求。
  • 精英建筑摒弃装饰:政府大楼、企业总部等精英建筑的装饰大幅减少,是因为决策者和建筑师受到了20世纪现代主义艺术与设计思潮的影响,主动改变了对建筑的审美需求。

结论

建筑装饰在现代社会中的衰落并非技术或经济发展的必然宿命,而是一场深刻的文化选择。若审美需求未受现代主义思潮改变,现代工业技术本可以支撑起一个更加华丽、充满装饰的城市建筑景观。

36. Ideas and Creativity (2019) (bastian.rieck.me)

文章核心观点总结:

本文旨在挑战关于创造力的常见误解,认为创造力并非少数人拥有的二元天赋,而是一种可以通过特定方法和心态培养的能力。

主要内容:

  1. 创造力并非天生固有的二元属性

    • 人们常错误地认为存在“有创造力”和“无创造力”两类人。
    • 作者认为,如同知识可以增长一样,创造力也可以通过后天练习提升。每个人(如幼儿)都天生具备创造潜力,只是这种潜力在成长过程中未得到充分锻炼。
  2. 好想法不必完全新颖

    • 追求“完全新颖”可能导致自我审查和创造力抑制。
    • 大多数新想法是通过组合小幅扩展现有概念而产生的(如智能手机、瑞士军刀)。关键在于选择有意义的组合方式,这本身就需要创造力和想象力。
    • 应避免“这都已被做过”的消极心态,而是采用“是的,而且……”的即兴创作思路,对初始想法进行扩展和修改。
  3. 创造力的促进因素

    • 无意识处理:将问题交给潜意识,通过散步、睡眠等方式暂停有意识的努力,常能催生解决方案(以数学家庞加莱和哈迪为例)。
    • 准备充分的头脑:通过广泛阅读和跨领域学习来丰富知识储备,为灵感出现做好准备(引用巴斯德的名言)。
    • 游戏式探索:以玩耍的心态对待新概念,通过增减其关键特征来激发新思路(以汽车移除马匹、非欧几何的诞生为例)。
  4. 结论与建议

    • 任何人通过练习都可以变得更富有创造力。
    • 遇到思维困境时,可以尝试文中提及的策略或其他多种头脑风暴技巧。
    • 产生一个好想法通常需要先拥有许多不成熟的想法,因此不必过分担忧初期的想法质量。
    • 推荐了相关参考书籍(《Thinkertoys》和《数学领域中的发明心理学》)以供进一步探索。
38. Smart Pointers in (GNU) C (snai.pe)

本文介绍了在C语言中模拟C++智能指针的实践。作者因频繁忘记释放内存,尝试利用GCC的__attribute__((cleanup))属性实现自动内存清理,但该方案对包含动态分配成员的复杂结构体效果有限。

为更通用,作者设计了在内存块前存储元数据的方案:

  1. 核心机制:定义smallocsfree函数,在分配时预留元数据空间,存储析构函数指针和用户自定义数据。释放时Sfree先调用析构函数再释放内存。
  2. 智能指针宏:利用cleanup属性定义smart宏,使变量离开作用域时自动调用Sfree。进一步封装出unique_ptrshared_ptr宏,简化使用接口。
  3. 共享指针挑战:实现引用计数面临线程安全与异步信号安全的冲突。当前方案使用原子整数计数,并假设不会在异步上下文中发生析构。
  4. 易用性改进:通过宏处理变长参数,减少函数参数数量;根据建议改为传入类型而非大小参数,使使用更简洁;还扩展实现了智能数组。

最终形成一个可实验的智能指针库,开源在GitHub上,包含安装说明和示例。该方案为C语言提供了更安全的内存管理方式,但尚需成熟化。