2024-08-16

37 篇热帖

1. CSS Grid Areas (ishadeed.com)

CSS Grid Areas 特性总结

核心思想

CSS Grid 布局自2017年起被所有主流浏览器广泛支持,但其中的 grid-template-areas 功能仍未被充分利用。本文旨在阐明该特性的简单与强大之处,鼓励开发者更频繁地使用它。

传统布局的挑战

使用网格线编号(例如 grid-column: 1 / 3)来定位子元素存在挑战:

  • 依赖开发者工具:需要在浏览器中开启网格线编号才能准确放置元素,增加心智负担。
  • 可读性差:仅通过行号数字难以直观理解布局结构,尤其在复杂网格中。

Grid Template Areas 的优势

该特性通过为网格区域命名来定义布局,提供了一种更直观、更易维护的方式。

基本用法

  1. 定义区域:使用 grid-template-areas 属性,通过字符串定义网格的视觉布局。
    .page {
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-template-areas: "item1 item2";
      gap: 1rem;
    }
    
  2. 分配元素:使用 grid-area 属性将子元素映射到已定义的区域名称。
    .item-1 { grid-area: item1; }
    .item-2 { grid-area: item2; }
    
    优势:布局定义清晰可见,如同在CSS中绘制了一张布局草图。

关键规则

  • 矩形形状:定义的每个区域在网格中必须构成矩形。
  • 完整定义:所有网格区域都必须被定义,即使某些区域未被使用。
  • 空单元格:使用一个或多个点(.)来表示空的网格单元格。
    grid-template-areas:
      "aside main"
      "... footer";
    

核心优势:布局可视化与集中控制

  • 集中调整:通过修改父容器的 grid-template-areas 字符串,即可重新排列整个布局,子元素无需更改。
    /* 改变字符串顺序即可反转布局 */
    .card--flip {
      grid-template-areas: "content thumb";
    }
    
  • 响应式设计:结合媒体查询,仅更改 grid-template-areas 定义即可实现不同视口下的布局变化,代码简洁明了。
    @media (min-width: 900px) {
      .header {
        grid-template-areas: "logo nav actions";
      }
    }
    

实际应用示例

文章通过多个互动示例展示了 grid-template-areas 的强大功能:

  1. 反转卡片布局:轻松实现图片与内容位置的切换。
  2. 响应式页头:在不同屏幕尺寸下,通过区域名称的重新排列实现多样化的头部布局。
  3. 编辑类布局:灵活定义文章标题、图片和文本内容的排列方式。
  4. 复杂布局(如Time.com):管理具有侧边栏和主要内容的多区域布局,并优雅地处理响应式变化。
  5. UI组件变体:如Meta的Threads帖子组件,使用区域名称轻松定义多种帖子类型的布局变体。
  6. 元素重叠:通过巧妙命名(如 thumb-1thumb-2)实现元素在网格中的重叠效果。
  7. 条件布局:结合CSS :has() 选择器,根据子元素(如 figcaption)的存在与否动态调整布局。
  8. 多语言支持:网格区域会自动适应页面的从左到右(LTR)或从右到左(RTL)方向。

与命名网格线的对比

  • 命名网格线(如 [content-start])功能强大,但语法相对复杂,主要适用于需要精确控制轨道线位置的特定场景。
  • Grid Template Areas:对于大多数布局需求,它更直观、更易理解,是定义复杂区域布局的首选工具。

浏览器支持与工具

主流浏览器(Chrome, Safari, Firefox)均提供良好的网格区域开发工具支持,包括区域名称显示、自动完成和可视化编辑,有助于调试和理解布局。

总结

grid-template-areas 是CSS Grid中一个强大且被低估的特性。它通过提供布局的视觉映射,极大地增强了代码的可读性和可维护性,特别适合团队协作和快速迭代设计。对于大多数网格布局需求,它是一个比使用原始行号更优的解决方案。

2. Former Google CEO Eric Schmidt's Leaked Stanford Talk (github.com)

GitHub 平台功能概述

GitHub 提供了一个全面的开发者平台,专注于代码协作、自动化和安全。平台核心功能包括 AI 代码创建、开发者工作流优化、应用安全以及灵活的探索选项。

AI 代码创建

  • GitHub Copilot:通过 AI 辅助编写高质量代码,支持从问题到合并的直接代理工作流。
  • MCP 注册表:新功能,用于集成外部工具,扩展开发能力。

开发者工作流

  • Actions:自动化任何工作流程,提升效率。
  • Codespaces:提供即时开发环境,简化设置。
  • Issues:用于计划和跟踪项目工作。
  • Code Review:管理代码更改,确保质量。

应用安全

  • GitHub Advanced Security:查找和修复安全漏洞。
  • 代码安全:在构建过程中保护代码。
  • 秘密保护:防止敏感信息泄露。

探索选项

  • 按公司规模:支持企业、中小型团队、初创公司和非营利组织。
  • 按用例:涵盖应用现代化、DevSecOps、DevOps 和 CI/CD。
  • 按行业:适用于医疗保健、金融服务、制造业和政府。
  • 按主题:包括 AI、软件开发、DevOps 和安全。
  • 按类型:提供客户故事、活动、电子书、报告和商业洞察。

支持与服务

  • 提供文档、客户支持、社区论坛、信任中心和合作伙伴资源。
  • 社区程序包括 GitHub Sponsors(资助开源开发者)、Security Lab、维护者社区、加速器、GitHub Stars 和存档程序。

仓库管理

  • 支持主题、趋势和收藏功能,便于代码组织。

企业解决方案

  • 企业平台基于 AI 驱动,提供高级功能如 GitHub Advanced Security、Copilot for Business 和高级支持。
  • 附加组件包括企业级安全功能、AI 特性和 24/7 支持。

平台还包含交互元素如反馈收集、保存搜索、登录和外观设置,以增强用户体验。整体结构旨在为不同规模和需求的用户提供定制化解决方案。

4. PyScript: An open source platform for Python in the browser (pyscript.net)

PyScript:浏览器中的Python开源平台

核心概念
PyScript是一个开源平台,允许用户在浏览器中直接运行Python代码。它将Web技术和Python生态系统结合,旨在实现“Python随处运行”——只要有浏览器,就能执行Python应用。

核心理念

  • 数字赋能:利用Web作为全球最普及的计算平台,让Python这一流行语言在浏览器环境中发挥作用。
  • 结合优势:融合Web的广泛覆盖和Python的易用性,创造新的开发可能性。

关键特性

  • 易用性:无需复杂安装,应用直接在浏览器中运行。
  • 表达性:支持使用Python这一强大且易于学习的语言构建应用。
  • 可扩展性:代码在用户浏览器中执行,无需昂贵基础设施支持。
  • 可共享性:应用以URL形式分享,简单直接。
  • 通用性:任何支持浏览器的设备均可运行,覆盖范围极广。
  • 安全性:基于浏览器这一成熟、安全的平台运行。
  • 强大功能:整合Web与Python的双重优势,提供完整解决方案。

基本示例
通过简单的HTML代码即可嵌入Python脚本:

<script type="py">
  print('You can!')
</script>

总结
PyScript通过开源方式降低了浏览器端Python应用的开发门槛,强调易用性、跨平台兼容性与安全性,为开发者提供了将Python扩展到Web环境的轻量级解决方案。

5. Renderings Created with Only a Pencil (www.core77.com)

文章标题:仅用铅笔创造的惊人渲染图

主要内容概述:

  • 艺术家Kohei Omori自幼被诊断出患有强迫症,这种对细节的极度执着使日常生活困难,但也成就了他的艺术。高中辍学后获得同等学力文凭,但未能完成艺术学校学业。
  • 辍学后,他痴迷于绘制一颗螺母和螺栓,仅使用铅笔创作出极其精细的作品。其姐妹将作品分享至Twitter后迅速走红。
  • 他的其他作品同样令人惊叹,例如精准描绘弯曲表面上字体的效果。他在Instagram上发布创作过程视频。
  • 网络关注带来负面评论(如“不如直接拍照”),加之症状恶化,他曾停止绘画并试图烧毁作品。关键时刻,Setouchi市美术馆馆长Kazuomi Kishimoto说服他保留作品并举办展览,展览于今年早些时候举行。
  • 目前Omori出售作品复制品,并通过X和Instagram分享创作动态。

关键细节:

  • 创作媒介:仅使用铅笔。
  • 代表性作品:螺母螺栓绘制、弯曲表面字体渲染。
  • 职业生涯转折点:社交媒体走红、负面评论影响、美术馆干预与展览。
  • 现状:持续创作并销售作品,活跃于社交平台。
6. Games People Play with Cash Flow (2020) (commoncog.com)

《现金流的博弈》(2020) 文章摘要

核心论点

本文通过分析一篇名为《创业公司不该融资》的博客文章,指出其虽然逻辑自洽但结论存在局限性,进而阐述了现金流管理在商业决策中的核心重要性。作者认为,商业的本质是管理现金流而非单纯追求利润,融资决策应基于业务模式的现金流特性而非单一原则。

案例分析:John Malone与EBITDA的诞生

  • 背景:1972年,John Malone接手濒临破产的有线电视公司TCI,其债务高达收入的17倍。
  • 行业洞察:Malone认识到有线电视业务具有高前期投入、低后续运营成本、可预测订阅收入的特点,且可通过债务和折旧实现税务优化。
  • 策略创新:面对华尔街对“无利润公司”的质疑,Malone创造了EBITDA(息税折旧前利润) 这一指标,强调现金流优于账面利润。他利用税务优惠现金流持续扩张,使TCI在25年间从未盈利却实现30.3%的年化回报率。
  • 启示:现金流是事实,利润是观点。商业人士通过现金流管理可创造长期价值。

现金流博弈的实践案例

  1. SaaS商业模式:与有线电视类似,软件即服务公司需要大量前期研发和销售投入,以换取长期稳定的订阅收入现金流。
  2. 支付条款调整:企业通过提供折扣换取客户提前付款,快速回笼资金以维持运营。
  3. 精益生产效应:快速交付能力可减少下游经销商库存,改善其现金流,从而获得定价优势和市场份额。
  4. 餐饮业预付款模式:餐厅Nick Kokonas通过要求预订预付款,获得大量预收资金,进而与供应商谈判获得高达50%的采购折扣,彻底改变成本结构。

融资决策的第一性原理重构

作者认为,是否融资应取决于三个维度:

  1. 业务现金流特性:是否属于高前期投入模式(如SaaS、硬件研发)。
  2. 企业目标与价值观:追求快速增长还是稳健盈利。
  3. 可用资本来源:除风险投资外,还应考虑债务、政府资助、亲友投资等多元渠道。

第一性原理思考的局限性

  • 问题:从不完整的基本假设出发进行推理,可能导致逻辑正确但实践无效的结论。
  • 对策:需要在实践中检验理论,根据现实结果调整认知框架。
  • 结论:商业判断需保持开放,持续从现实反馈中学习“从空气中提炼智慧”。

核心教训

  • 现金流为王:成熟的商业思维关注现金流动时机与特性,而非单纯利润指标。
  • 融资是现金流管理工具:创业公司是否应融资取决于业务模式的资本需求和时间错配。
  • 实践检验真理:任何第一性原理推导都需通过执行验证,并持续完善基本假设。
7. Discrete Mathematics – An Open Introduction, 4th edition (discrete.openmathbooks.org)

《离散数学:开放导论》第四版简介

教材概况

  • 名称:《离散数学:开放导论》第四版。
  • 性质:免费、开源的本科教材。
  • 适用对象:主要面向数学和计算机科学专业本科一年级或二年级学生。
  • 教学模式:特别适合采用探究式学习的课程。
  • 普及程度:自2013年起,已被全球超过200所院校用作主教材或辅助资源,并获得美国数学研究所开放教材计划认可。

第四版主要更新

  1. 内容重组:全书结构重新调整。开篇即引入逻辑与证明,随后通过图论来实践证明技巧。下半部分集中讲解计数(新增了概率应用章节)和序列。作者认为此安排更利于学生掌握。
  2. 强化离散结构:更加强调集合、函数、关系等离散结构,旨在使内容对计算机科学学生更实用,同时兼顾数学专业学生对核心数学概念的理解。
  3. 增强互动性:新增更多互动练习题(可在Runestone Academy平台免费使用并计分),并加入了Sage和Python交互式代码以供探索。

获取与使用方式

  • 在线版:免费交互式电子书,适配所有设备(包括手机),支持屏幕阅读器,包含隐藏的提示和解答。
  • 离线版:提供免费PDF下载。
  • 印刷版:由CRC Press出版。
  • 许可:采用知识共享许可协议(CC BY-NC-SA 4.0),允许免费下载、使用、打印和修改(需署名并相同方式共享,且限于非商业用途)。

辅助资源

  • 在线作业:可通过Runestone Academy(免费)、Edfinity(低成本)或作者提供的WeBWorK题集获取。
  • 视频资源:包括“数学可视化证明”动画视频和特雷弗·巴泽特教授的完整课程视频。
  • 教师资源:采用本书授课的教师可联系作者获取教师资源及WeBWorK作业集。另有针对离散数学教师的Google讨论群组,供交流教学策略。

教材特色与背景

  • 起源与发展:始于作者在北科罗拉多大学离散数学课程的讲义,现已发展为正式教材。
  • 核心内容:涵盖逻辑、图论、计数、序列四大主题,穿插介绍多种证明方法(反证法、数学归纳法、组合证明)。第四版更强调离散结构,并包含生成函数和数论两个附加主题。
  • 教学特性:包含750多道习题(附解答与提示),全书穿插“探究!”和“预习”活动以支持主动学习,配有完整索引和符号列表,排版清晰(定义、定理突出显示,示例易于识别)。

作者:奥斯卡·莱文,北科罗拉多大学教授,拥有超过20年数学和计算机科学教学经验,于2009年获数学逻辑博士学位。

8. Seven basic rules for causal inference (pedermisager.org)

因果推断的七个基本规则

本文介绍了七条基本规则,用于理解现实世界中的因果机制与数据中可观测到的相关性之间的关系。这些规则是因果推断的基础构件,大多数因果分析程序都会在某种程度上涉及其中的一条或多条。

四种基本因果结构

因果图是描述变量间因果机制的图表。变量用节点表示,因果关系用箭头表示。任何因果图都可以分解为以下四种基本构建模块:

  1. 完全独立:变量 A 和 B 之间无法追溯任何路径。
  2. 链式:从 A 到 B 存在有向路径,所有箭头指向相同方向。链式路径是“开放”的,会传递相关性。中间的变量 M 被称为中介变量。
  3. 叉式:通过一个共同的祖先变量 C,可以从 A 到 B 追溯到一条非有向路径。C 通常被称为混杂变量。叉式路径是“开放”的,会在 A 和 B 之间传递相关性。
  4. 碰撞式:通过一个共同的后代变量 D,可以从 A 到 B 追溯到一条非有向路径。D 通常被称为碰撞变量。碰撞式路径是“关闭”的,不会在 A 和 B 之间传递相关性。

七条基本规则

规则二:因果影响产生相关性

如果 A 是 B 的原因,或 B 是 A 的原因,那么在数据中 A 和 B 将是相关的。这条规则同样适用于因果链(中介)的情形。

  • 若 A → B 或 B → A,则 A ∼ B。

规则三:混杂产生相关性

如果 A 和 B 共享一个共同的祖先 C(因果叉),那么 A 和 B 将在数据中相关。这种现象通常称为混杂或“第三变量问题”。即使 C 对 A 和/或 B 的影响通过其他变量传递,此规则也适用。

  • 若 A ← C → B,则 A ∼ B。

规则四:随机操纵保护变量免受因果影响

当我们能够随机分配 A 的值时(例如在随机对照实验中,A 为操纵变量),则没有其他变量可以影响 A。记作 do(A),意为对 A 进行随机化,确保 A 的值不受任何其他变量的影响。

调整规则

“调整”变量 X 意味着查看数据中仅包含 X 子集或单一取值时的关系,或分别查看 X 所有取值下的关系。在图表中,变量节点周围的方框表示该变量被控制或调整。

规则五:控制混杂者阻断由其引发的相关性

如果 A 和 B 共享一个共同的祖先 C(因果叉),那么控制 C 将消除 C 在 A 和 B 之间造成的混杂相关性(源于规则三)。

  • 若 A ← C → B,且控制 C,则 A ⫫ B。

规则七:控制碰撞者导致相关性

如果 A 和 B 共享一个因果后代(碰撞者)D,并且控制了 D,那么 A 和 B 将在数据中变得相关。这通常称为“以碰撞者为条件”或碰撞偏倚。

  • 若 A → D ← B,且控制 D,则 A ∼ B。

规则八:控制因果后代相当于(部分地)控制祖先

如果 B 是 A 的后代并且控制了 B,那么 A 也被(部分地)控制。控制 B 能在多大程度上控制 A,通常取决于 A 导致 B 的可靠程度。例如,如果 CM 是变量 C 的一个半可靠测量指标,那么控制 CM 能比不控制时去除更多 A 和 B 之间的相关性,但效果不如直接控制 C 显著。

重要假设

上述规则成立需要满足一些重要假设,主要包括:

  • 无虚假相关:相关性不是由随机偶然引起的。
  • 一致性:观测到的 A 值对应于明确干预下的实际治疗版本。
  • 可交换性:接受每一种治疗水平的条件概率仅依赖于已测量的协变量。
  • 正定性:在给定协变量 L 的条件下,接受每一种治疗水平的概率大于零。
  • 忠实性:因果效应不会以在数据中平均为零的方式跨群体变化。

如果这些假设中的任何一个不成立,都可能破坏这些规则所描述的因果效应与观测数据之间的关系。

9. Yesterday's Pixels, Today (nas.sr)

本文介绍了作者在游戏《Restricted Airspace》中实现的“厚重像素”视觉风格,该风格借鉴了90年代游戏《Star Fox》的美学。作者将实现方法拆解为四个核心要素:低分辨率、像素完美的线条与点、平面着色以及受限调色板

  1. 低分辨率:为了获得块状像素,需刻意降低渲染分辨率(如128×128),然后通过CSS将画布放大至显示分辨率,并设置image-rendering: pixelated以避免抗锯齿,同时需确保WebGL渲染器未启用抗锯齿。

  2. 像素完美的线条与点:OpenGL的线条和点图元能以精确的单像素阶梯状渲染,这是仅用三角形难以复制的效果。尽管现代3D流程多专注三角形,但在低分辨率下使用线条和点(如用于电线、栏杆等)能有效增强复古感。Three.js对这些图元有原生支持。

  3. 平面着色:需要确保每个多边形面使用统一的着色。应避免使用基于物理的MeshStandardMaterial(会产生平滑渐变),转而使用计算每个多边形单一色值的MeshLambertMaterial。导入模型时需注意可能需手动替换材质。

  4. 受限调色板:通过后处理着色器将渲染图像的每个像素映射到预设的有限颜色中。该过程涉及加载一个调色板图像(如来自Lospec社区的1x PNG文件),然后使用自定义的片段着色器,将每个像素替换为调色板中最接近的颜色;若两个最接近颜色的距离差低于阈值,则进行抖动处理。此步骤需使用Three.js的EffectComposer来构建渲染管线。

作者强调,这些元素共同作用,才能实现经典的低分辨率、低保真像素风格,并鼓励开发者混合尝试这些技术。

11. A Texas "moth man" photographed 550 species in his own yard (www.texasmonthly.com)

德州“飞蛾人”柯蒂斯·埃克曼:在自家院中记录550种飞蛾

人物与背景

柯蒂斯·埃克曼是奥斯汀社区学院生物系主任,本职为爬虫学家。约十年前,他开始系统性地拍摄飞蛾。通过在自家车库门口架设灯光观察,他已在家中记录到550种不同的飞蛾。

研究方法与观察

  • 野外作业:埃克曼常在黄昏后前往如鲍尔勒牧场绿带等自然区域,用白布包裹树干并悬挂紫外线灯吸引飞蛾,等待天黑后观察。
  • 工具与平台:他重度依赖公民科学应用iNaturalist。用户上传生物照片,社区协助鉴定,应用也能提供准确建议并记录地点数据,帮助构建物种分布图。
  • 教学推广:他将iNaturalist引入课堂,指导学生实地记录。他还组织公众参与的“观蛾”活动,旨在提升本地人对身边生物多样性的认知。

飞蛾的多样性与重要性

  • 物种丰富:仅德克萨斯州已知飞蛾就超过4000种,而全球可能还有1000万至2000万昆虫物种未被发现。
  • 类型举例
    • 夜蛾:最常见,常聚集于门廊灯下。
    • 天蛾:白天活动,形似蜂鸟。
    • 蚕蛾:如体型巨大的月神蛾,成虫无口器,靠幼虫储存的脂肪存活。
    • 微小飞蛾:翼展小于20毫米,但色彩图案绚丽,是埃克曼最喜爱的拍摄对象之一,能带来“探索隐藏世界”的惊喜。
  • 生态角色:飞蛾是重要的授粉者,也是鸟类、蝙蝠的主要食物来源。

面临的威胁与保护建议

  • 威胁:研究显示,全球昆虫数量近几十年来下降了至少30%。主要原因是杀虫剂使用城市开发导致的栖息地丧失
  • 保护措施
    1. 在庭院中种植多种本地植物,为飞蛾提供食物。
    2. 减少光污染:人工光会使飞蛾迷失方向,影响其繁殖(误将卵产在灯光下而非宿主植物上)。夜间关灯有助于它们找到正确的植物。

社区影响与意义

通过iNaturalist平台和实地活动,埃克曼连接了众多本地自然爱好者(如大学生、高中生),形成了共享兴趣的社区。他的工作不仅记录了丰富的本地物种(如在罗伊·格雷罗公园记录了约350种飞蛾),也证明了城市公园对支持物种多样性至关重要。他强调,关注本土野生动物比遥远异域的物种更有现实意义,有助于扭转当代人与本地自然脱节的状况。

12. Crafting a 13KB Game: The Story of Space Huggers (frankforce.com)

《Space Huggers》:13KB游戏的创作故事

游戏与赛事背景

《Space Huggers》是作者参加JS13K游戏创作竞赛的作品。该赛事要求参赛者在一个月内,将网页浏览器游戏压缩进仅13KB的zip文件中。2021年赛事主题为“太空”,共收到223份投稿。

游戏概述

  • 类型:跑枪式(run-and-gun)Roguelike平台游戏。
  • 风格:像素艺术,程序化生成关卡。
  • 灵感来源:《Broforce》、《合金弹头》、《魂斗罗》等经典游戏。

核心技术:LittleJS引擎

为了打造极致精简的游戏,作者从零开始,使用纯JavaScript编写了一个专用游戏引擎,并命名为LittleJS

  • 设计目标:在极小的体积下实现强大功能。
  • 核心功能
    • 使用WebGL高效渲染大量精灵。
    • 通过ZzFX程序化生成立体声音效。
    • 支持键盘、鼠标、触摸和游戏手柄输入。
    • 内置小型2D物理与碰撞系统。
  • 开源:引擎已在GitHub上开源。

游戏设计关键决策

1. 玩法与机制

  • 采用经典平台游戏的移动机制,并加入了可破坏地形和攀墙能力。
  • 设计了多功能的“翻滚”动作,用于闪避、二段跳、灭火等,具备高战术灵活性。
  • 为节省空间并增加重玩价值,关卡采用程序化生成

2. 艺术与资源压缩

  • 精灵图:使用一张16色、128x48像素的精灵表。
  • 动画简化:所有动作(站立、奔跑、跳跃、死亡等)均仅用两帧动画实现,通过旋转等程序化手段模拟复杂动作。
  • 配色:运行时为灰色图块着色,既节省空间又增加多样性。
  • 程序化细节:为关卡几何体添加轮廓,使用程序化方法实现角色眨眼等细节,增强表现力。

3. 敌人与对象设计

  • 敌人AI:敌人与玩家共享同一套基础角色代码,其AI行为类似于向系统发送输入指令的“机器人”。
  • 五种敌人类型:从易到难,各有不同的生命值、行为模式和视觉特征(通过颜色与面罩区分)。
  • 环境交互:设计了多种可互动对象(木箱、油桶、水桶、岩石等),它们能燃烧、爆炸、灭火,并引发连锁反应,创造丰富的玩法情景。

4. 关卡与氛围

  • 关卡结构:由遵循特定规则的房间组成的敌人基地和程序化生成的地形构成。
  • 背景系统:使用分层视差山景和星空,营造外星世界氛围。部分关卡还有雨、雪等粒子效果。
  • 音频:所有音效均使用ZzFX生成。

开发挑战与自动化

作者构建了自动化构建系统,通过压缩工具(如Google Closure、Uglify、Roadroller)和高效压缩工具(ECT)处理代码和资源,以最大限度地满足13KB的限制。其中,Roadroller利用神经网络技术显著提升了JavaScript代码在zip文件中的压缩效率。

比赛结果与后续发展

  • 比赛成绩:在223个作品中获得总排名第八,并在“趣味性”和“游戏性”类别中获得第二名
  • 玩家与媒体反响:受到玩家好评,甚至获得了Linux Format杂志的半页报道。
  • 增强版:比赛后,作者在Newgrounds上发布了增强版,新增了最终Boss战、移动端支持、奖牌系统、计时排行榜等功能。该版本已获得超过10万次游玩,评分稳定在4/5。

作者的反思与未来展望

作者指出,由于空间限制,游戏内容相对单薄,缺乏进程感。他原本希望加入更多武器、升级系统和音乐,但最终为了集中精力打磨核心玩法而选择放弃。未来,他计划在后续的JS13K项目中尝试融入更多内容。

13. Cleaning up the aging brain: Scientists restore brain's trash disposal system (www.sciencedaily.com)

文章摘要

该文章介绍了神经科学领域的一项新研究,表明衰老大脑的废物清除系统功能衰退可以被逆转,为治疗阿尔茨海默病等神经退行性疾病提供了新思路。

核心问题

阿尔茨海默病和帕金森病等神经退行性疾病被视为“大脑清洁”疾病,其特征在于大脑无法有效清除有害废物。衰老是关键风险因素,随年龄增长,大脑清除有毒蛋白(如β-淀粉样蛋白、tau蛋白)的能力下降。

关键科学发现

  1. 大脑废物清除机制:研究涉及“glymphatic系统”(于2012年首次描述),该系统利用脑脊液冲洗神经元活动产生的蛋白质废物。
  2. 废物排出路径:本研究首次详细描述了含废物的脑脊液离开大脑的具体路径——通过颈部淋巴管。约一半的脏脑脊液经此路径排出,最终由肾脏处理。
  3. 年龄相关功能衰退:老年小鼠颈部淋巴管的收缩频率降低,瓣膜功能失效,导致废物清除速度比年轻小鼠慢63%。淋巴系统依赖一系列称为“淋巴管泵”的微小泵(而非心脏这样的中央泵)来输送液体。

治疗干预与前景

  1. 药物再利用:研究人员发现一种已临床使用的药物——前列腺素F2α(常用于诱导分娩,能促进平滑肌收缩),可刺激颈部淋巴管的功能。
  2. 实验结果:将该药物应用于老年小鼠的颈部淋巴管后,其收缩频率和废物清除效率恢复到了年轻小鼠的水平。
  3. 潜在应用:鉴于这些淋巴管位于皮肤表层附近,该方法有望成为未来治疗相关疾病的策略之一,并可能与其他干预措施结合使用。

研究意义

这项发表在《自然·衰老》上的研究证明,通过恢复颈部淋巴管功能,可以显著改善与年龄相关的脑废物清除减缓问题,为对抗年龄相关的神经退行性疾病开辟了潜在的治疗途径。

14. RP2350 PicoDVI Preview (github.com)

RP2350 PicoDVI 预览版

本文档介绍了针对树莓派 RP2350 微控制器优化的 DVI 输出库(PicoDVI)预览版,包含相较于公开 GitHub 版本的主要变更与构建说明。

主要变更

  1. 架构适配与优化

    • libdvi 中的所有 ARM 汇编代码已移植至 RISC-V 架构,并针对 Hazard3 处理器进行了性能调优。
    • 部分原有 ARM 汇编代码也经过调整,以在 Cortex-M33 内核上获得更好性能。
    • libsprite 中的大部分 ARM 汇编代码已移植至 RISC-V,足以运行现有演示程序。
  2. 功能调整

    • 在 RP2350 上,RGB 编码默认使用 SIO TMDS 编码器(可通过定义宏 DVI_USE_SIO_TMDS_ENCODE=0 禁用)。

构建说明

提供了使用 CMake 的构建流程:

  1. 创建并进入 build 目录。
  2. 运行 CMake 配置命令,需指定 Pico SDK 路径、平台(如 rp2350rp2350-riscv)、启用 RAM 复制以及默认的 DVI 引脚配置。
  3. 使用 make 进行编译。
  4. 编译完成后,将生成的 UF2 文件(如 tiles_and_sprites.uf2)刷入设备。

注意事项

  • 对于 vista 演示程序,现在有两个 UF2 数据文件:vista_data_rp2040.uf2(适用于 RP2040 和早期 RP2350 A0)和 vista_data_rp2350.uf2(适用于 RP2350 A1 及之后版本)。

代码与构建系统调整

文档后续部分展示了具体的代码差异,主要涉及:

  • 使用 #ifdef 等条件编译指令,为 ARM 和 RISC-V 两种架构提供不同的汇编实现(例如 tmds_encode_font_2bpp 函数)。
  • 移除部分未使用的硬件头文件引用(如 hardware/structs/ssi.h)。
  • 调整演示程序(如 tiles_and_sprites)中的滚动逻辑。
  • 修改构建系统(CMakeLists.txt),以在 RISC-V 平台上禁用或调整特定演示程序(如 bad_applevista-palette),并为 vistavista-palette 添加针对 RP2350 的 XIP 启动配置。
15. Better Living Through Algorithms (2023) (clarkesworldmagazine.com)

《Better Living Through Algorithms》是一篇荣获星云奖与雨果奖提名的科幻短篇小说,讲述了应用程序“Abelique”如何通过算法干预悄然改变人们生活的故事。

起初,June向朋友们推荐这款“更好的生活”应用,它会提醒用户放下手机、尝试新食谱、按时睡觉,甚至通过“电话树”由其他用户进行人工提醒。叙述者Linnea在老板Keith的施压下下载了应用,却发现Abelique并非简单的效率工具:它识破了Linnea敷衍填写的目标问卷,鼓励她重拾儿时绘画的爱好,并引导她加入线上艺术家社区。应用为Linnea制定饮食、通勤、购物乃至着装的细节计划,用省下的交通费为她购置画具,通过电话提醒她注意健康、平衡工作与生活——甚至建议她在老板外出时享受休息,颠覆了传统生产力应用的定位。

Linnea逐渐依赖并欣赏Abelique,但她的朋友Margo始终怀疑这是某种“邪教”。随着应用流行,Linnea的老板态度急转,以“安全问题”为由要求员工卸载,实则源于应用倡导“工作不应侵蚀生活”的理念。Margo出于记者好奇心展开调查,最终发现Abelique由费城坦普尔大学的一群科学家研发,其核心是一个以“让人更快乐”为目标的AI。算法基于幸福感研究(如增加户外活动、减少决策、建立社区),通过持续追踪用户反馈来优化干预措施。

应用的“幕后真相”被揭露后,虽一度引起兴趣回升,但其魅力也因透明化而减退。更严重的是,应用逐渐被广告、诈骗和商业推广入侵,社区生态遭到破坏。Linnea开始忽略应用指令,重回旧习。然而,当曾经通过应用认识的艺术家Kristin主动联系她相约绘画时,Linnea重拾画笔。她们在公园与自发聚集的其他艺术爱好者一同创作,其中一位陌生老人也被热情接纳。故事结尾,Linnea将自己充满生命力的水彩画贴在冰箱上,并意识到:真正的社群与热情可以在算法之外存活——甚至更加蓬勃。

小说探讨了科技对人类习惯、自主性与幸福的复杂影响,呈现了一个既细腻又充满反乌托邦色彩的寓言:当算法旨在“优化”生活时,它既能悄然补足我们缺失的连接与意义,也可能在过度介入后,反衬出人类自身在无监督下自发创造温暖的能力。

16. Hermes 3: The First Fine-Tuned Llama 3.1 405B Model (lambdalabs.com)

Hermes 3:首个对Llama 3.1 405B进行全参数微调的模型

Hermes 3 是由 Nous Research 开发、基于 Meta 的 Llama 3.1 405B 基础模型进行首次全参数微调的开源模型。该模型在 Lambda 的 1-Click 集群上训练,旨在面向开源社区。

核心特性与优势:

  • 性能卓越:在 Open Source LLM 基准测试中,性能达到甚至超过了 Llama 3.1 Instruct 版本。
  • 灵活中立:模型设计为“中性对齐的通用模型”,未审查且可引导,特别擅长复杂的角色扮演、创意写作以及需要高级推理和决策的任务,支持函数调用和分步推理。
  • 高效优化:通过使用合成数据、监督微调(SFT)、基于人类反馈的强化学习(RLHF)以及 Neural Magic 的 FP8 量化,模型的显存(VRAM)和磁盘需求降低了约 50%,使其能够在单节点上运行。

如何使用:

  • 免费试用:用户可通过 Lambda 新推出的 Chat Completions API(兼容 OpenAI API)或交互式的 Lambda Chat 界面免费使用 Hermes 3。
  • 部署灵活:模型既可在 Lambda Cloud 的单个节点上按需运行,也可快速扩展到多节点 1-Click 集群,以进行进一步的微调。
17. Stripe's Monorepo Developer Environment (blog.nelhage.com)

Stripe的Monorepo开发者环境总结

背景与上下文

  • Stripe在讨论期间(约2012-2019年)主要使用Ruby编写的大型单一代码库(monorepo),支持多个共享代码的服务。
  • 开发者工具由“开发者生产力团队”(devprod)构建和维护,该团队的持续投入和人员配置是成功的关键。
  • 工具主要针对monorepo设计,对其他语言和仓库的支持较少。

开发环境架构

1. 云端运行代码(Devbox模型)

  • 开发代码在**云端临时开发实例(devbox)**上运行,而非本地笔记本电脑。
  • Devbox通过标准配置管理工具配置,可通过单一命令销毁并快速重建。
  • 优点:
    • 环境配置问题可由工具团队集中解决,减少开发者负担。
    • 新依赖(如Redis)可由服务团队统一配置到devbox中,降低环境冲突。
    • 所有devbox通过SSH访问,便于协作和调试。

2. 编辑器与源码控制

  • 代码存储和编辑保留在本地笔记本电脑,运行在云端。
  • 设计考虑:
    • 支持多种编辑器(如Vim、VS Code等),避免远程编辑的延迟和兼容性问题。
    • 源码在本地更易于维护,且devbox可视为临时环境,避免配置漂移。

3. 自动同步机制

  • 通过同步脚本(基于文件监视器和rsync)自动将本地代码变更同步到devbox。
  • 同步服务作为后台进程运行,无需开发者干预。
  • 使用Watchman提高可靠性,减少更新遗漏或脚本卡顿问题。
  • 局限性:代码生成工具需在本地运行或“同步回”生成的文件,存在不便。

4. Devbox上的HTTP服务支持

  • DNS将*.$username.stripe-dev.com解析到用户的devbox。
  • 每个devbox运行前端服务,处理SSL、认证和路由。
  • 服务按需启动,使用自动加载器加快启动速度,并在代码变更时自动重启。

5. pay命令行工具

  • 提供统一接口访问devbox功能,如:
    • pay test:在devbox上运行测试。
    • pay curl:测试API端点。
    • pay typecheck:运行Sorbet类型检查。
  • 同步屏障功能:确保命令执行前代码同步完成,避免测试旧版本代码的问题。通过Watchman的时钟功能优化同步等待时间,减少延迟。

6. 编辑器集成(VS Code)

  • 后期投资VS Code作为首选编辑器,集成内部插件提升体验。
  • 通过SSH连接运行在devbox上的Sorbet LSP服务器,利用devbox的大内存和稳定环境,支持代码导航、自动补全等功能。

反思与设计考量

组织规模影响

  • devprod团队从不到1人发展到约12人,工具投资随公司规模(工程团队从数百人增至超千人)增长而深化。
  • 环境可靠性和易用性是关键,尤其在快速成长的组织中,需减少新成员的配置成本。

代码库特性

  • 单一Ruby monorepo的架构稳定性和耦合性,支持深度定制工具(如自动加载器)。
  • 代码库规模庞大(当时最大的Ruby代码库),现有工具往往需自行开发和优化。

结论

Stripe通过集中化的devbox模型、自动化同步、集成工具链和专用团队投入,创建了高效可靠的开发者环境。这些设计减少了环境配置负担,提升了开发者生产力,尤其适合大型、快速增长的单体代码库。

18. We survived 10k requests/second: Switching to signed asset URLs in an emergency (hardcover.app)
19. Mermaid: Diagramming and Charting Tool (mermaid.js.org)

Mermaid.js 项目宣布其官方网站已迁移至 mermaid.ai,旨在将开源库及其周边平台整合至同一入口,以优化资源与支持。该举措旨在为项目提供更丰富的资源支持,为贡献者开辟更清晰的参与路径,并强调团队将持续致力于保持Mermaid的开源性质。

20. ImRAD is a GUI builder for the ImGui library (github.com)

ImRAD:ImGui库的GUI构建工具概述

ImRAD是一个专为ImGui库设计的GUI构建工具。它能生成并解析可直接用于应用程序的C++代码。与其他工具不同,ImRAD支持对生成的UI进行持续修改,并良好地支持数据绑定、事件处理乃至手动添加的UI代码。

运行与生成环境
ImRAD可在Windows、Linux和MacOS上运行。其生成的代码则适用于Windows、Linux、MacOS和Android平台。

主要功能区域

  • 工具栏:提供配置UI变体、窗口样式与对话框单位的功能;具备代码预览快速检查;包含类向导以管理生成类的成员变量;提供使用不可见表格的水平布局辅助工具(作为方框布局功能的替代方案)。
  • 设计窗口:支持可拉伸间隔;ImRAD提供标准ImGui中不可用的方框布局支持;支持负尺寸值使表格部件双向扩展但保持与底部边缘的距离;支持可选的部件绑定表达式(如{name}={expr}等)。
  • 属性窗口:涵盖各类ImGui功能的属性(如表格的scrollFreeze、多选);包含ImRAD添加的功能属性(如方框尺寸器、scrollWhenDragging);支持将rowCount绑定到vars.size()表达式以生成行循环代码,大多数属性支持单向或双向绑定。
  • 事件窗口:允许为各类事件(如按钮点击、窗口显示、输入文本字符过滤等)生成事件处理器。

核心特性

  1. 窗口类型支持:支持设计浮动窗口、弹出窗口、模态弹窗、与GLFW集成的主窗口(用于同步操作系统窗口属性)、活动(Activity,用于Android等全屏无边框窗口),并提供GLFW和Android项目模板。
  2. 部件支持广泛:包含文本、复选框、组合框、按钮等基本部件;子窗口、表格、折叠头、树节点、标签页等容器部件;以及分割器、停靠空间等高级部件;支持菜单栏和上下文菜单编辑;并支持通过CustomWidget调用外部自定义部件代码。
  3. 布局机制:使用SameLine/Spacing/NextColumn生成布局(确保部件间距一致、父子关系清晰),并提供部件相对父部件角落的相对定位功能。
  4. 方框布局:提供基于ImGui功能实现的强大布局机制,支持部件在水平或垂直方向拉伸,可通过插入间隔实现对齐,亦可使用表格布局辅助工具生成水平布局。
  5. 属性绑定:由于ImGui是立即模式GUI库,部件状态需在绘制时通过绑定设置。支持通过类向导或绑定对话框管理类变量,使生成的UI动态化且仍可进行设计。
  6. 事件处理与代码生成:支持生成事件处理器,将用户事件处理代码与生成部分分离。例如,模态对话框会自动生成打开弹窗的成员函数及关闭时的回调。
  7. 代码管理:生成的代码由注释标记分隔,用户可在周围插入额外代码并继续使用ImRAD设计,也可使用CustomWidget委托给用户回调。
  8. 配置、样式与单位:支持运行时可激活的UI变体(适用于不同平台/屏幕方向);提供可配置并共享的颜色、样式变量和字体集合(样式);支持设置对话框单位为与设备无关的像素(适用于Android和DPI感知应用)。

生成代码详情
生成的代码仅依赖ImGui库和一个附属头文件imrad.h。该头文件包含接口和实现(需在main.cpp中定义IMRAD_H_IMPLEMENTATION以启用实现)。格式化例程ImRad::Format默认在C++20下使用std::format,也可通过定义IMRAD_WITH_FMT使用fmt库。部分功能(如主窗口、图像部件)需额外库依赖(GLFW、STB),需通过定义IMRAD_WITH_LOAD_TEXTURE显式启用。imrad.h还支持通过zlib加载压缩资源(需定义IMRAD_WITH_MINIZIP)以及通过gettext/libintl翻译字符串(需定义IMRAD_WITH_GETTEXT)。

多任务支持
ImRAD会跟踪已打开文件的更改,允许用户同时在ImRAD和IDE中进行设计与编辑。INI样式文件的更改也会立即显示。

许可说明
ImRAD源代码采用GPL许可。但任何由该工具生成的代码均排除在GPL之外,可自由用于开源或商业项目,用户可自行决定其许可。此外,用于生成代码的imrad.h文件同样排除在GPL许可之外。

构建与安装
用户可通过克隆仓库并使用CMake构建最新版本,或从发布页下载稍旧版本。具体构建步骤因操作系统而异:

  • Windows:使用CMake GUI生成解决方案,在Visual Studio中构建INSTALL项目。
  • Linux(以Ubuntu为例):需先安装GTK文件对话框等依赖包,然后运行提供的安装脚本。
  • MacOS:可使用CMake构建,可参考相关CI操作获取指引。

调试(Windows):构建INSTALL目标后,将imrad项目的工作目录设置为安装文件夹,即可进行调试运行。

更多教程和详细内容可在项目Wiki中查看。项目欢迎赞助以支持其在业余时间的持续开发。

21. Show HN: Denormalized – Embeddable Stream Processing in Rust and DataFusion (github.com)

Denormalized 是一个基于 Apache DataFusion 构建的快速、可嵌入的流处理引擎。它目前支持 Kafka 作为实时数据源和输出端,提供窗口聚合和流式连接功能。该项目目前仍在开发中,团队正在积极寻求设计合作伙伴以探讨具体用例。

核心功能与特性

  • 技术栈:基于 Rust 语言和 Apache DataFusion。
  • 数据源与输出:支持 Kafka。
  • 处理能力:支持窗口聚合和流连接。

代码示例: 文章展示了用 Rust 和 Python 实现从 Kafka 主题聚合传感器数据的示例。

  • Rust 示例:构建一个流处理管道,连接到名为“temperature”的 Kafka 主题,根据传感器名称进行分组,并每 1 秒计算一次读数(reading)的计数、最小值、最大值和平均值,最后过滤出最大值大于 113 的结果并打印。
  • Python 示例:通过 denormalized 的 Python 绑定实现了相同的功能,Python 包可通过 pip install denormalized 安装。

快速开始与部署

  • 前置条件:需要 Docker 以及安装 Rust/Cargo。
  • 运行示例:可使用提供的 Docker 镜像启动 Kafka 并生成样本数据,然后运行示例聚合任务。

状态管理与检查点: 项目使用 SlateDB 作为状态后端。可以通过配置启用检查点功能,作业将自动从之前的检查点恢复状态。

项目状态与团队: Denormalized 目前处于开发阶段,由位于旧金山的 Denormalized 公司构建和维护。

22. Slow is smooth, smooth is fast: Navy SEALs' efficiency secret (www.navyseal.com)

海豹突击队的效率秘籍:慢即是稳,稳即是快

核心理念解析

美国海豹突击队的格言 “慢即是稳,稳即是快” 揭示了一种反直觉的效率哲学。它并非单纯强调速度或缓慢,而是倡导在高压环境下通过追求精准与平稳来实现整体效率的提升。其核心在于:刻意放慢节奏(慢),确保每个动作正确无误(稳),从而避免因纠错而延误,最终实现更快速的推进(快)。

在海豹突击队中的应用

  • 起源与意义:该格言深深植根于海豹突击队的训练与作战文化。它强调在高风险、高时间压力的任务中,优先保障准确性而非盲目追求速度。仓促行动易导致致命错误,而稳健有序的执行则能确保任务顺利完成。
  • 实战体现:例如在击毙本·拉登的“海神之矛”行动中,面对意外(如直升机坠毁),队员仍保持镇定,以沉稳的节奏行动,最终成功。在日常训练(如射击或战术演练)中,队员也学习到:急于求成反而拖慢整体进程。

在混乱局势中放慢节奏的重要性

  • 避免灾难性错误:在拆弹、侦察等关键任务中,任何细微失误都可能危及生命或任务。仓促行动会大幅增加出错概率,而短暂停顿进行周密规划,能有效预防后续更严重的时间与资源损失。
  • 协调与规划的关键作用:在混乱中暂停以进行规划看似矛盾,实则至关重要。这能增强团队协作效率,确保行动方向正确,避免因盲目“行动优先”而导致资源浪费和方向错误。

超越军事领域的应用

商业实践

在商业中,急于推出产品或服务往往导致细节疏漏和糟糕的用户体验。相反,放慢进程以进行充分测试、收集反馈和优化,能形成一条更平稳、通常也更快速的成功之路。

项目管理

项目管理中,匆忙的决策初期看似高效,实则常导致后续大量返工。遵循“慢-稳-快”原则,强调详尽的规划和协调,是实现更快最终成果的关键因素。

在团队动态中的作用

该格言对团队协作意义重大。它推动团队追求流程的顺畅(稳),从而提升整体效率(快)。

  • 促进协同:如同划艇队需要完美同步才能高速前进,团队中每个成员的行动需精准对齐。同步的团队能像精密机器一样高效运转,将集体力量转化为更快的推进速度。
  • 增强抗压能力:此哲学有助于团队在压力下保持冷静,避免因恐慌引发的错误,从而提升整体作战效能。

克服急躁心理的策略

  1. 培养觉察力:意识到自己何时在不必要地加速,并通过正念练习(如深呼吸)主动调整。
  2. 强化规划:在行动前花时间制定清晰的步骤,类似于军事单位行动前的策划。
  3. 区分“有策略的快”与“混乱的快”:有明确计划和目标的快速执行能创造动力;而缺乏方向的仓促行动则会导致混乱、失误和倒退。
  4. 接受“不匆忙”的心态:这能减少压力、提升专注力、改善人际关系,并促进更深层次的思考和创新,为可持续的成功奠定基础。

结论:理解个人节奏的重要性

认识到并尊重自己的节奏,对于心理健康和长期成功至关重要。放慢脚步能带来多重益处:

  • 提升决策质量:更清晰的思考带来更周全的判断。
  • 减少压力和倦怠:可持续的节奏有助于管理压力。
  • 注重质量胜于数量:专注于少数关键事项能带来更深的满足感和成就。
  • 激发创造力:从容的环境更利于创新思维。
  • 促进个人成长:自我认知有助于设定现实目标和改善自律。

通过理解“慢”于你自身的意义,你得以在追求速度时不牺牲精准,最终实现更高效、更平衡且更富有成效的生活与工作。

24. It's the land, stupid: How the homebuilder cartel drives high housing prices (www.thebignewsletter.com)

住房建筑商垄断如何推高房价

文章探讨了美国住房成本高企的背后原因,指出住房建筑商的垄断结构是关键驱动因素,而非单纯的市场需求或地方监管。核心观点源于亨利·乔治的土地垄断理论,即土地价值由社区创造,但所有者却通过垄断获利,导致不平等。当前,住房通胀成为中产阶级负担,尽管2022年后通胀放缓,住房成本仍占通胀增长的近90%,价格处于历史高位。

主要问题与垄断结构

  • 住房建设不足:尽管需求旺盛,新房供应长期短缺,尤其是“首套住房”几乎消失。价格信号失灵,未能激励更多建设。
  • 行业集中化:住房建筑行业高度集中。前五大建筑商(如D.R. Horton、Lennar、PulteGroup等)控制市场。1994年前十大建筑商仅占10%市场份额,到2018年接近三分之一;在地方层面,集中度更高,例如在迈阿密-劳德代尔堡,Lennar占47%新房市场,在洛杉矶,D.R. Horton占约三分之一。60%的地方市场呈现高度集中。
  • 建筑商作为金融中间人:大型建筑商实质是金融中介机构,而非真正的建筑商。他们通过借贷和土地投机获利,将土地开发和房屋建设外包给分包商。优势包括更低资本成本、材料折扣和劳动力折扣,挤压小型开发商生存空间。
  • 土地控制与投机:建筑商通过长期持有土地来限制供应。在2008-2022年低利率时期,他们廉价借贷并囤积土地;利率上升后,采用“轻资产”策略,让私人股权公司持有土地以规避风险,并通过合同优先回购土地。这进一步巩固了垄断。
  • 合并与收购:金融危机后(2007-2012年),55%的住宅开发商消失,导致行业合并加速。收购包括大规模并购(如Pulte Homes和Centex合并)和小型地块收购,2024年预计并购活动持续。合并削弱竞争,使小型开发商难以获得土地和信贷。

影响与解决方案

  • 影响:垄断导致每年约150,000套新房未建成,价值约1000亿美元。价格信号未能吸引更多供应,反而提高了少数玩家的利润率。文章以D.R. Horton为例,说明其2005年售出最多房屋时利润为14.7亿美元,而2023年售出较少房屋时利润高达47亿美元,市场份额翻倍。
  • 政策建议:需要多层次干预:
    • 平等化信贷获取,支持本地和小型开发商。
    • 提高土地持有数据透明度,尤其是地方层面。
    • 防止土地囤积,通过税收或限制措施。
    • 修改合并披露规则(如Hart Scott Rodino表单漏洞),加强反垄断监管。
  • 历史呼应:文章强调美国土地改革传统,从1787年《西北条例》到亨利·乔治和弗雷德里克·道格拉斯的思想,主张“土地限制”以解决垄断问题。

总结来说,住房成本高企的根源在于建筑商垄断和土地控制,而非仅地方监管。解决需结合金融平等化、数据透明和反垄断措施,以恢复市场功能。

25. Pixel smartphones delivered with secret but inactive remote maintenance (www.heise.de)
26. Artists score major win in copyright case against AI art generators (www.hollywoodreporter.com)

法院裁决:艺术家在AI艺术生成器版权案中取得重大突破

在一项开创性的诉讼中,艺术家指控AI艺术生成器未经授权、无偿使用从互联网抓取的数十亿张图像来训练AI系统。美国联邦法官已批准关键的侵权指控继续进行。

核心裁决与发现:

  • 美国地区法官威廉·奥里克(William Orrick)支持了艺术家提出的全部版权侵权和商标侵权索赔,这标志着艺术家的重大胜利。
  • 法官认定,Stability AI公司的图像生成工具Stable Diffusion可能“在很大程度上基于受版权保护的作品构建”,并且其设计意图可能“助长”侵权行为。此裁决可能波及任何将该模型集成到产品中的AI公司。
  • 法官驳回了针对被告公司的其他指控,包括违约、不当得利以及违反《数字千年版权法》(移除知识产权信息)。
  • 案件将进入证据开示阶段,艺术家有望获取AI公司如何获取版权材料并用于训练大语言模型的相关信息。

案件背景与被告:

  • 诉讼核心围绕LAION数据集展开,该数据集据称包含从互联网抓取的50亿张图像,被Stability AI和Runway公司用于创建Stable Diffusion。
  • 被告还包括Midjourney(使用Stable Diffusion模型训练其AI系统)和DeviantArt(在其图像生成工具DreamUp中使用该模型)。

关键法律论点与驳回:

  • 被告曾辩称,艺术家的“诱导侵权”理论不成立,且Stable Diffusion模型本身并非侵权作品。但法官支持了艺术家的指控,认为模型运作时必然调用或涉及受保护作品的复制品。
  • 法院驳回了AI公司要求艺术家必须明确指出其哪些具体作品被用于训练模型的抗辩,认为在LAION数据集规模巨大且软件透明度存疑的情况下,无需如此详细的举证。
  • DeviantArt公司曾警告,若允许此类针对“仅使用模型而非开发模型”的公司的诉讼成立,将引发“巨大混乱”,并牵连无数类似情况的第三方。

商标侵权与AI复制争议:

  • 商标侵权索赔得以推进,部分原因是Midjourney在收到包含艺术家姓名的提示词后,生成了与艺术家风格相似的作品,并在其网站上展示了此类图像。
  • Midjourney首席执行官曾在Discord发布近4700名艺术家名单,声称其AI工具可复制这些艺术家的风格。Stability AI首席执行官也曾表示,其公司从网络下载并压缩大量图像,以“重现”其中任何图像。

行业影响:

  • 此诉讼是艺术家应对AI工具对创意从业者(如概念设计师)潜在取代威胁的先行案例。
  • AI工具在影视等行业的广泛采用,很大程度上取决于法院对这些技术引发的新型法律问题的裁决,特别是关于使用版权材料训练AI系统是否构成侵权,以及AI生成作品无法获得版权保护等问题。

代表Sarah Andersen、Kelly McKernan及Karla Ortiz等艺术家的律师团队,将在证据开示阶段重点调查Stability AI和Runway如何构建Stable Diffusion及LAION数据集。

28. Aristotle – How to live a good life (ralphammer.com)

亚里士多德论美好生活

亚里士多德在《尼各马可伦理学》中提出了一套关于如何过上美好生活的系统性思想,其核心在于实现灵魂的卓越。

一、美好生活的本质

美好生活意味着拥有一颗卓越的灵魂,这种卓越体现在两个层面:清晰的理智高贵的品格。幸福并非指短暂的快乐感受,而是通过一生践行美德活动所达到的充实与繁荣的生命状态

二、理智的美德

理智美德帮助我们认识真与可能,包括:

  • 技艺:创造事物的能力。
  • 智力:对世界基本真相的直观洞察。
  • 科学知识:关于世界的逻辑推理能力。
  • 审慎:做出实用(道德)决定的能力。
  • 智慧:对深层真相的全面理解。

三、品格的美德

品格美德的核心在于恰当地处理情感,即在两个极端之间找到中道

  • 勇敢是懦弱与鲁莽之间的中道。
  • 节制是贪食与禁欲之间的中道。

中道的具体标准因人、因时、因境而异,无法通过研究规则掌握,必须通过习惯养成来训练品格,在具体情境中做出恰当选择。

四、美德的实现

  • 美德非天生,人拥有向善的潜能,但需要通过学习与习惯来发展。
  • 卓越不是一种状态,而是一种行动。美好生活的幸福是通过灵魂(理智与品格)的有德活动来实现的。
  • 亚里士多德并不否定快乐、财富与名望的益处,但认为它们并非美好生活的本质。即使经历巨大痛苦,一个人仍可能过上有德——即美好——的生活。
29. Show HN: Wikipedia Browser a La Andy Matuschak's Evergreen Notes (steezeburger.com)

Wikipedia Browser 是一个受 Andy Matuschak 的“常青笔记”(Evergreen Notes)理念启发而创建的维基百科浏览器项目。该项目旨在通过非线性的、相互连接的方式探索维基百科知识。

核心理念与灵感

  • 项目模仿了 Andy Matuschak 的“常青笔记” 概念。这种笔记方法强调笔记应是原子化、相互链接并能持续生长的。
  • 将此理念应用于维基百科浏览,目标是将维基百科的海量知识转化为一种更个性化、相互关联的探索体验,而非传统的线性阅读。

主要功能与特点

  1. 搜索功能:用户可以输入关键词搜索维基百科文章。
  2. 相关文章展示:在查看一篇文章时,界面会展示与之相关的其他文章。这种设计鼓励用户在不同知识点之间建立联系。
  3. 非线性浏览:用户可以自由地从一个知识点跳转到相关知识点,形成网状的知识探索路径,而非单一的线性阅读流程。
  4. 专注内容呈现:界面设计旨在突出文章内容本身,减少干扰,模拟一种专注的阅读和思考环境。

项目目标 该浏览器试图将维基百科从一个大型信息查询工具,转变为一个支持持续学习和知识构建的平台。通过鼓励发现和连接相关概念,它希望帮助用户更深入地理解和记忆所学内容。

30. Abel, the Mozart of Mathematics (www.privatdozent.co)

尼尔斯·亨里克·阿贝尔:数学的莫扎特

尼尔斯·亨里克·阿贝尔(1802–1829)在年仅26岁时去世,一生主要通过自学成才,在其短暂生涯中对纯数学多个领域做出了开创性贡献,包括代数方程、椭圆函数、椭圆积分、函数方程、积分变换和级数表示。

早年生活与挑战

  • 出生于挪威罗加兰的芬尼岛,早年受父亲酗酒的不稳定影响,父亲在阿贝尔16岁时去世。
  • 尽管缺乏正规教育,他凭借自学在数学领域取得突破。

主要数学成就

  • 五次方程无代数解的证明:21岁时,阿贝尔提供了第一个完整证明,表明五次方程或任何高于四次的一般多项式方程没有一般的代数解。这个问题已存在超过250年未解决。
  • 群论的基础:在撰写证明的过程中,他独立于伽罗瓦,为现代数学分支——群论——奠定了基础。
  • 其他贡献:22岁时,他还撰写了一篇基础性数学文章(内容未完整提供,但涉及其在纯数学领域的进一步工作)。

阿贝尔的工作虽在短期内未获充分认可,但奠定了多个数学领域的基础,被誉为“数学的莫扎特”,因其天才般的创造力和早逝而闻名。

32. The LMAX Architecture (2011) (martinfowler.com)

LMAX架构核心总结

背景与挑战
LMAX是一个低延迟零售金融交易平台,需处理大量并发交易且要求极低延迟。传统并发模型(如锁、Actor)复杂且易引入性能瓶颈,尤其是在现代多核CPU环境下,内存缓存效率成为关键。

整体架构
分为三个核心组件:

  1. 业务逻辑处理器:单线程、完全内存中运行,处理所有业务逻辑(如订单匹配、价格更新),吞吐量达每秒600万订单。
  2. 输入Disruptor:负责接收网络消息、反序列化、日志持久化及跨节点复制,为并发组件。
  3. 输出Disruptor:处理输出事件的序列化和网络发送,同样为并发组件。

关键技术与设计

  1. 事件溯源:业务逻辑处理器状态通过重放输入事件重建,确保内存数据的持久性与可恢复性。结合定期快照,可实现快速故障恢复与零停机更新。
  2. 单线程业务处理:避免并发锁与上下文切换,充分利用CPU缓存,提升计算效率。
  3. Disruptor并发模型:基于环形缓冲区和单写者原则,通过序列计数器实现无锁并发,减少缓存失效与上下文切换,高效处理IO密集型任务。
  4. 内存数据存储:消除数据库IO开销,简化对象关系映射,所有数据常驻内存。
  5. 性能优化
    • 自定义缓存友好型数据结构(如LongToObjectHashMap)。
    • 避免GC长暂停,优化对象生命周期。
    • 强调性能测试与机械同情(理解硬件缓存机制)。

编程模型特点

  • 异步事件驱动:外部服务调用拆分为输出事件与输入事件,避免阻塞单线程。
  • 严格错误处理:需确保输入事件完全有效后再修改内存状态,依赖测试保障一致性。

适用场景与优势

  • 适用于高吞吐、低延迟、事务间强关联的后端系统(如交易引擎)。
  • 简化编程复杂度,分离业务逻辑与平台细节,支持领域驱动设计。
  • 在传统数据库事务模型性能瓶颈明显时,该架构可作为高效替代方案。

结论
LMAX通过单线程业务处理、事件溯源与Disruptor并发模型的组合,在保证极低延迟与高吞吐的同时,显著降低了并发编程的复杂性。该架构虽源于特定金融场景,但其核心思想(如单写者原则、异步事件处理)对高性能系统设计具有广泛借鉴意义。

33. MIT engineers design tiny batteries for powering cell-sized robots (news.mit.edu)

MIT工程师设计了一种微型电池,用于为细胞大小的自主机器人供电,可应用于人体内药物输送和气体管道泄漏检测。该电池长0.1毫米,厚0.002毫米(约人类头发粗细),通过捕获空气中的氧气氧化锌产生电流,电压高达1伏特,足以驱动小型电路、传感器或执行器。

电池采用锌空气电池类型,能量密度高、寿命长,由锌电极和铂电极组成,嵌入SU-8聚合物条中。实验显示,它能为执行器(如可升降的机械臂)、忆阻器(存储事件记忆)、时钟电路以及两种化学传感器(分别由二硫化钼和碳纳米管制成)供电。

该电池解决了微型机器人供电的挑战:此前太阳能方案依赖外部光源,限制了机器人自主性;而内置电池可赋予机器人更大自由度,使其进入难以访问的空间。研究人员正致力于将电池直接集成到机器人中,未来计划提高电压并开发可注入人体的生物相容性机器人,用于靶向药物释放(如胰岛素)。

研究由美国陆军研究办公室、能源部、国家科学基金会和MathWorks工程奖学金资助。

34. The Open Source Computer Science Degree (github.com)

开源计算机科学学位

这是一个精选的免费课程列表,课程来自麻省理工学院、斯坦福大学和普林斯顿大学等知名高校,旨在满足计算机科学本科学位的核心课程要求(不含通识教育)。

课程体系概述

该课程体系涵盖计算机科学本科阶段的核心知识领域,包括基础、编程、数学、系统、理论、应用和Unix操作系统。

计算机科学基础

  • 课程:哈佛大学《计算机科学导论》。
  • 特点:为期10周,每周10-20小时,自定进度,无先修要求,适合入门。

编程

  • Java编程系列(杜克大学):从基础到高级,包含6门课程,形成完整的Java学习路径。涵盖软件问题求解、数组与数据结构、面向对象编程、数据结构与性能、软件设计原则,最终可构建推荐系统。课程时长4-6周,需按顺序修读。
  • 编程语言系列(华盛顿大学):分为A、B、C三部分,每部分3-5周,深入学习编程语言原理。需先完成Java面向对象编程课程。

数学

  • 微积分(麻省理工学院):包含微分、积分和坐标系与无穷级数三门课程,循序渐进,先修要求为预科微积分。
  • 线性代数(德克萨斯大学奥斯汀分校):为期15周,涵盖从基础到前沿的知识。
  • 概率与统计:包括杜克大学的《概率与数据导论》和Udacity的《统计学导论》,前者需先修微积分。

系统

  • 从Nand到Tetris(耶路撒冷希伯来大学):分两部分,共12周,从基本原理构建现代计算机。第一部分需具备基础编程知识,第二部分是其直接进阶。

理论

  • 算法与理论(普林斯顿大学):包含《计算机科学:算法、理论与机器》以及《算法》第一、二部分,共三门课程。先修要求为微积分和基础编程知识,系统学习算法分析和理论基础。

应用

  • 软件工程(UBCx):为期6周,需先修Java推荐系统课程。
  • 机器学习(斯坦福大学):为期11周,需先修线性代数课程。
  • 数据库管理(CU):为期7周,需具备基础编程和CS知识。
  • 密码学(斯坦福大学):为期7周,需先修线性代数和概率课程。

Unix

  • Linux命令行基础(IBM)Unix工作台(约翰霍普金斯大学):两门课程共约5周,帮助学习Unix/Linux环境的基本操作,无先修要求。
35. Show HN: A ninja's Handbook: A book on privacy, security, and anonymity online (zolagonano.github.io)

《忍者手册》内容概要

本书是一本关于在线隐私、安全与匿名性的免费指南,采用CC BY-NC 4.0知识共享许可授权。

  • 隐私的重要性与现状:隐私是一项基本人权。在当前的网络环境中,个人数据已成为众多实体(如企业、黑客、政府及情报机构)追逐的目标,隐私权普遍受到侵犯。作者强调,保护隐私并非出于偏执,而是一种必要的防范措施,如同为未知的未来风险购买保险。

  • 隐私、安全与匿名性的关系

    • 隐私:指他人知晓你的身份,但不知晓你的行为。
    • 安全:是实现隐私的基础,主要依赖于加密算法及其背后的数学原理来保护数据。但作者也提醒,任何加密技术都可能在未来被破解。
    • 匿名性:需要同时具备隐私和安全。它指的是他人能看到你的行为(你想展示的部分),但无法得知行为背后的真实身份。
  • 书籍的性质与目标

    • 本书是作者的非营利性业余项目,旨在创建免费且有用的内容。
    • 作者明确表示,本书并非面向罪犯、恐怖分子或意图掩盖不法行为者。
    • 其目标读者是:人权活动家、在受限制环境中争取自由的斗士,以及需要“戴上面具”来保护自己和家人为社会做出贡献的英雄们。
  • 授权与支持:本书允许自由分享和修改,但禁止商业用途,并要求注明原作者和修改内容。作者通过捐赠渠道接受支持,以便有更多时间投入此类公益创作。

36. Automating My /Now Page (akashgoswami.dev)

自动化个人网站 Now Page 项目总结

项目目的

该项目旨在使用 Golang 和 GitHub Actions 自动化基于 Hugo 构建的个人网站“Now Page”。通过集成第三方服务,自动获取并更新作者当前消费的媒体(电影、书籍、游戏、电视剧)和旅行记录,从而解决手动更新静态网站内容重复且耗时的问题。

技术架构与数据获取

项目核心是一个 Golang 脚本,负责从不同数据源抓取、清洗和格式化数据:

  • 电影与书籍:利用 gofeed 包解析 Letterboxd(电影)和 Oku(书籍)的 RSS 订阅源。通过正则表达式清洗电影标题(移除年份和星级评分)和 URL(移除用户名),并编写了单元测试以确保数据提取的准确性。
  • 电子游戏:由于 Backloggd 平台缺乏 API 和 RSS,项目使用轻量级网页抓取库 colly 提取个人主页中“正在游玩”的游戏标题和链接。
  • 电视剧:通过浏览器开发者工具获取 Serializd 的非官方 API 端点。脚本发起 HTTP 请求,处理 gzip 压缩响应并解析 JSON 数据,提取剧名、季名及链接,同时进行去重和数量限制。作者借此开发了非官方的 Go 语言包 unserializd
  • 旅行统计:调用 NomadList 的公开 API 获取 JSON 格式的行程数据。脚本按年份(当年和上一年)过滤数据,处理边缘情况(如排除常驻城市、国家去重、修正特定地区显示),并使用 Go Emoji Flag 包自动匹配和添加国旗 Emoji。

静态内容处理

对于更新频率较低的静态内容(如当前关注点、学习目标和健身计划),脚本直接从本地独立的 static.md Markdown 文件中读取,并与动态抓取的内容合并。

自动化部署流程

  1. Go 脚本被编译为可执行文件,存放于网站仓库的 scripts 目录中。
  2. 配置 GitHub Actions 工作流,设定每日定时触发(Cron job)。
  3. 工作流执行脚本生成更新后的 now.md 文件,自动配置 Git 并提交推送到主分支。
  4. 代码推送触发 Cloudflare Pages 自动重新构建和部署网站。

项目成果

该项目成功实现了 Now Page 的每日全自动更新,将繁琐的网站维护工作转化为在第三方平台上的日常记录。作者在开发过程中提升了 Golang 编程、API 调试、正则表达式及网页抓取技能,并将完整源代码在 GitHub 上开源。

37. JPlag – Detecting Software Plagiarism (github.com)

JPlag – 软件抄袭检测

核心功能 JPlag 是一款用于检测一组程序间成对相似性的工具,能够可靠地识别软件开发中的抄袭与串通行为,即使在代码经过混淆处理的情况下。所有相似性计算均在本地完成,源代码或检测结果均不会上传至网络。

支持语言 JPlag 支持多种编程语言,涵盖成熟、测试中和遗留等不同状态。具体包括:

  • 成熟:Java (25)、C++ (14)、C# (6)、Python (3.6)、Kotlin (1.3)、R (3.5.0)、Rust (1.60.0)、Scala (2.13.8)。
  • 测试中 (Beta/Alpha):JavaScript (ES6)、TypeScript (~5)、Go (1.17)、Swift (5.4)、LLVM IR (15)、EMF Metamodel/Model (2.25.0)、SCXML (1.0)。
  • 遗留:C (11)、Scheme、Text(朴素检测,谨慎使用)。
  • 多语言multi 子命令(Alpha)。

安装与获取 运行或构建 JPlag 需要 Java SE 25 环境。获取方式包括:

  1. 下载发布版本:从官方渠道下载。
  2. 通过 Maven 集成:作为依赖项添加到项目中。
  3. 从源代码构建:使用 Maven 命令编译,可选择生成包含依赖的完整 JAR 包,或包含报告查看器的版本(需安装 Node.js)。

使用方法 JPlag 提供两种主要使用方式:

  1. 命令行界面 (CLI)

    • 基本语法jplag [选项] <根目录>
    • 关键参数
      • -l 或子命令:指定提交文件的语言(默认 Java)。
      • -bc:指定所有提交共用的基础代码路径。
      • -n:报告中显示的最大比较数(默认 2500,-1 为全部)。
      • -t:调整匹配灵敏度的最小令牌数(值越小,越灵敏但可能误报)。
      • -m:保存比较结果的相似度阈值(默认 0.0)。
      • -M:运行模式(运行、查看、运行并查看、自动)。
    • 高级功能
      • 聚类分析:支持 agglomerativespectral 聚类算法。
      • 子序列匹配合并:通过合并相邻匹配来对抗混淆。
      • 频率分析:启用后可分析并高亮显示罕见匹配。
  2. Java API 可以将 JPlag 的检测功能集成到外部 Java 项目中。核心流程为配置语言、提交目录、基础代码等选项,运行检测并获取结果,可选择生成报告。

其他信息

  • 隐私安全:所有处理均在本地进行,使用 CLI 时报告查看器会自动启动,数据不会离开本地计算机。
  • 社区贡献:欢迎开发者贡献改进,项目提供了贡献指南。
  • 联系与支持:可通过 GitHub 报告问题,或通过邮箱联系团队。