2025 03 21 HackerNews

2025-03-21 Hacker News Top Stories #

  1. FOSS 基础设施正面临人工智能公司的攻击,导致开发者无法访问 GitLab 等开发平台。
  2. Claude 网页助手现在可以搜索互联网,提供更及时和相关的回应,提高其在需要最新数据的任务中的准确性。
  3. GitHub Actions 的设置和维护存在复杂性和安全性问题,开发者需要谨慎使用和配置。
  4. 前端开发领域存在“重写代码”的趋势,但这种做法可能并不是决定产品成功与否的关键因素。
  5. 荷兰议会通过动议,敦促政府放弃使用美国科技公司的产品和服务,转而使用本土替代方案。
  6. Bolt3D 是一种可以在几秒钟内生成 3D 场景的算法,具有广泛的应用前景。
  7. macOS 存在安全漏洞,可能导致密码和其他敏感信息泄露,用户需要及时更新系统和软件。
  8. AI 代理的工作原理可以通过图结构来理解,节点和边的结构实现决策和执行任务的过程。
  9. 加拿大最大 AI 黑客马拉松存在漏洞,可以被利用来绕过评审过程,获得不公平的优势。
  10. CSS 间隙装饰是一种新的绘制分隔线的方法,扩展了现有的 column-rule 属性,允许在网格和 flexbox 布局中绘制分隔线。

FOSS infrastructure is under attack by AI companies #

https://thelibre.news/foss-infrastructure-is-under-attack-by-ai-companies/

这篇文章讨论了人工智能公司对自由开源软件(FOSS)基础设施的攻击,特别是通过爬虫程序的方式造成的困扰。以下是文章的详细总结:

  1. ** 背景与事件 **:

    • 三天前,SourceHut 的创始人 Drew DeVault 在其博客上表达了对大型语言模型(LLM)公司爬取数据的不满,指责它们未遵循 robots.txt 协议,导致 SourceHut 出现严重的宕机问题。
    • 随后,KDE 的 GitLab 基础设施也遭到类似的攻击,AI 爬虫使得 KDE 开发者无法访问 GitLab。
    • GNOME GitLab 实例出现了一个加载页面,称为 Anubis,这是一个对抗 AI 爬虫的工具,它要求用户进行一些数学运算才能获得网站访问权限。
  2. ** 爬虫的行为与影响 **:

    • LLM 爬虫不尊重 robots.txt,频繁请求高开销的 API 接口,如 git blame 等。它们使用随机的用户代理(User-Agent)从大量 IP 地址发起请求,以混淆正常流量。
    • Drew 指出,这种爬虫行为已经导致多个开源项目的高优先级任务被延迟,影响到开发者的日常工作。
  3. ** 解决方案与反应 **:

    • KDE 的系统管理员表示,他们通过屏蔽冒充 Microsoft Edge 的爬虫 IP 来应对攻击,但这种措施可能无法持久。
    • GNOME 的临时解决方案是限制未登录用户访问合并请求和提交记录,虽然这种方法也影响了正常用户的体验。
    • 一些组织采用 Anubis 来对抗爬虫,虽然这也导致了一些用户在访问时的延迟。
  4. ** 数据与数字 **:

    • 一名 GNOME 系统管理员分享了数据,表明在短时间内收到的请求中有 97% 来自爬虫,只有 3% 是正常用户。
    • 其他项目,如 LWN 和 Fedora,报告称其流量中大部分也来自 AI 爬虫,甚至需要阻止整个国家的 IP 地址才能保持网站的正常运行。
  5. **AI 生成的漏洞报告问题 **:

    • 开源项目面临 AI 生成的虚假漏洞报告问题,报告内容看似可信,实际上却是 AI 的幻觉,这给开发者带来了额外的负担。
    • 开源项目维护者对这些低质量报告的回应成本高昂,可能导致开发者流失。
  6. ** 总结与呼吁 **:

    • 作者呼吁,不要将 AI 或 LLM 系统用于检测安全漏洞,因为它们无法理解代码的意图和上下文。
    • 开源项目通常资源有限,因此更容易受到这类攻击的影响,维护者希望 AI 公司能更尊重开源社区的资源和规则。

HN 热度 878 points | 评论 555 comments | 作者:todsacerdoti | 11 hours ago #

https://news.ycombinator.com/item?id=43422413

  • 人工智能公司的行为正在破坏开源基础设施和互联网秩序
  • 人工智能公司的行为是对知识产权和劳动权的威胁
  • 人工智能公司的行为可能会导致失业和社会不稳定
  • 人工智能公司的行为是资本主义制度的体现,追求利润而忽视社会责任
  • 人工智能公司的行为可能会导致知识产权法的改革和重构
  • 人工智能技术的发展可能会导致人类社会的根本变化和挑战
  • 人工智能公司的行为需要被监管和制约,以防止其滥用权力和破坏社会秩序
  • 人工智能技术的发展需要考虑其对社会的影响和后果,确保其为人类带来真正的益处

Claude can now search the web #

https://www.anthropic.com/news/web-search

Claude 网页助手现在可以搜索互联网,提供更及时和相关的回应。通过网页搜索,Claude 可以访问最新的事件和信息,提高其在需要最新数据的任务中的准确性。当 Claude 将网页信息纳入其回应时,它会提供直接的引用,以便用户可以轻松核实来源。

Claude 的网页搜索功能可以被广泛应用于各个领域。例如,销售团队可以通过分析行业趋势来了解客户的关键举措和痛点,从而提高销售成功率。金融分析师可以通过评估当前的市场数据、财报和行业趋势来做出更好的投资决策。研究人员可以通过搜索互联网上的原始资料来构建更强大的资助提案和文献综述,发现新兴趋势和当前文献中的空白。

Claude 的网页搜索功能目前仅对美国的付费用户开放,免费用户和其他国家的用户也将在近期获得支持。要开始使用此功能,用户需要在个人设置中开启网页搜索,然后开始与 Claude 3.7 Sonnet 进行对话。当相关时,Claude 将搜索网页以提供更准确的回应。Claude 的网页搜索功能扩展了其庞大的知识库,提供了实时的洞察力和基于当前信息的回应。


HN 热度 678 points | 评论 344 comments | 作者:meetpateltech | 7 hours ago #

https://news.ycombinator.com/item?id=43425655

  • 大多数人在工作中表现平平,人类也可能不擅长自己的工作。
  • 许多工作可能是没有意义的,但这并不意味着从事这些工作的人没有价值。
  • 现代经济可能是基于“无意义”的消费和广告,导致资源浪费和环境问题。
  • 人们可能需要重新思考自己的生活方式和经济模式,以实现更可持续的发展。
  • 即使在专业领域,人们的技能水平也存在很大差异,达到顶级水平非常困难。
  • 在许多领域,达到中等水平就足够了,不需要成为最好的或最差的。

The Pain That Is GitHub Actions #

https://www.feldera.com/blog/the-pain-that-is-github-actions

这篇文章主要讲述了作者在使用 GitHub Actions 进行持续集成(CI)时遇到的各种问题和困扰。作者表示,他们的 CI 设置非常复杂,包括合并队列、多个运行器、Rust 构建、Docker 镜像和集成测试,每个 PR 合并都需要花费大量的 CI 时间。

作者认为,GitHub Actions 技术上可以实现他们所需的功能,但设置过程却充满了隐藏的陷阱、不一致的行为和令人质疑的调试体验。例如,作者需要在 CI 运行前和合并队列中运行 CI,以自动修复琐碎的问题和验证最终合并结果,但 GitHub Actions 使得实现这一点变得非常困难。

此外,作者还对 GitHub Actions 的安全模型表示担忧,认为它过于复杂,难以理解,容易导致安全问题。作者指出,GitHub 的安全模型依赖于一个名为 GITHUB_TOKEN 的默认令牌,但这个令牌的权限设置却不明确,需要用户手动配置。此外,作者还发现,使用自托管运行器可能会带来安全风险,但 GitHub 的文档并没有明确说明如何避免这些风险。

最后,作者提到了使用 Docker 和 GitHub Actions 的组合带来的问题,例如文件权限问题、HOME 目录变化问题和与宿主系统交互的问题。作者认为,开发 GitHub Actions 的工作流程使用 YAML 语言会变得非常复杂,容易出错。

总的来说,这篇文章反映了作者在使用 GitHub Actions 进行 CI 时遇到的各种挑战和困扰,包括设置复杂性、安全性问题和与 Docker 的兼容性问题。作者希望通过分享自己的经验,能够帮助其他开发者避免类似的陷阱和问题。


HN 热度 560 points | 评论 430 comments | 作者:qianli_cs | 20 hours ago #

https://news.ycombinator.com/item?id=43419701

  • 应该尽量将 CI 逻辑写在自己的代码中,并且让管道可以在本地开发机器上运行,以便于测试和调试。
  • 应该避免使用 YAML,并且不应该将自己绑定在某些新兴的 CI 工具上。
  • 使用强大的本地构建工具,如 Nix 和 Bazel,可以提供很好的本地复现性和可靠性。
  • 下一代 CI 系统应该能够与本地工具深度集成,并提供更好的可视化和调试功能。
  • Jenkins 和 GitHub Actions 等 CI 工具存在很多问题,应该考虑使用其他工具,如 TeamCity。
  • CI 工具的设置和维护需要工程师的参与和投入,不能仅仅依赖工具本身。
  • 应该避免将 CI 逻辑绑定在特定的 CI 工具上,而应该使用通用的构建工具和脚本。

The Frontend Treadmill #

https://polotek.net/posts/the-frontend-treadmill/

这篇文章讨论了前端开发领域的一个普遍现象,即许多前端团队认为重写前端代码会带来更好的结果。作者认为,这种想法是错误的,前端框架的选择并不是决定产品成功与否的关键因素。即使产品在五年后仍然存在,所选择的前端框架也可能已经过时。因此,作者建议前端团队应深入了解当前使用的框架和工具,而不是不断地更换新框架。

作者还提醒工程师在求职时应考虑框架的选择,并避免在新团队中推行自己的框架偏好。同时,作者建议公司应减少前端技术过时的成本,通过让团队更接近 web 平台,减少复杂的抽象层。这种方法可以让工程师更容易地适应新的技术,并提高他们的职业价值。

此外,作者指出当前的前端生态系统存在问题,新开发者难以学习足够的技能,公司也难以找到合适的开发人员。作者认为,这是因为人们过于关注当前的技术栈,而忽略了 web 的基本原理。这种情况会导致开发者在技术栈变化时难以适应,并对他们的职业生涯造成负面影响。

作者最后强调了 web 平台的优势和潜力,认为它是一种非常有能力和独特的软件交付平台。然而,当前的前端框架层却在阻碍 web 平台的发展。作者呼吁开发者和公司重新关注 web 的基本原理,减少复杂的抽象层,发挥 web 平台的优势。


HN 热度 393 points | 评论 438 comments | 作者:Kerrick | 12 hours ago #

https://news.ycombinator.com/item?id=43422162

  • 前端开发领域过度拥抱破坏性更新和弃用,导致开发者难以跟上更新的步伐。
  • 前端领域的影响者和教程创作者推动着新技术的发展,但也导致了旧技术的快速弃用。
  • 视频教程在前端开发中很受欢迎,但有些人认为视频教程不如文字教程有效。
  • 视频教程可以提供动态的示例和调试过程,但也可能被用来娱乐而不是真正的学习。
  • 有些人认为视频教程更适合初学者,而经验丰富的开发者更喜欢文字教程。
  • 前端开发的快速更新和变化导致了开发者感到疲惫和沮丧。
  • 前端开发领域的快速更新和变化可能是由教程创作者和影响者的商业利益驱动的。

Dutch Parliament: Time to ditch US tech for homegrown options #

https://www.theregister.com/2025/03/19/dutch_parliament_us_tech/

荷兰议会通过八项动议,敦促政府放弃使用美国科技公司的产品和服务,转而使用本土替代方案。这些动议是在荷兰众议院讨论政府数据被转移到海外的担忧时提出和通过的。提出这些动议的荷兰议员芭芭拉·卡特曼表示,随着政府将越来越多的 IT 服务转移到美国科技巨头,荷兰变得越来越“愚蠢”和“虚弱”。

卡特曼的动议具体要求政府停止将荷兰信息和通信技术迁移到美国云服务,创建一个荷兰国家云,将.nl 顶级域名迁回荷兰境内的系统,并为所有由美国科技巨头托管的政府系统准备风险分析和退出策略。其他动议也呼吁消除美国科技公司在政府系统中的存在,优先使用本地替代方案。

荷兰议会通过这些动议的背景是特朗普政府加剧了与多个美国盟友(包括欧盟)的紧张关系。近 100 家欧盟基于的科技公司和游说团体本周致信欧盟委员会,要求其找到一种方法来摆脱美国公司管理的系统,因为“欧洲面临着严峻的地缘政治现实”。欧盟科技专家也对欧洲对美国科技公司的依赖表示担忧,尤其是在特朗普政府的国际姿态变得越来越咄咄逼人之际。

荷兰议员卡特曼表示,美国政府已经使科技主权成为一个紧迫的地缘政治问题。她的党派(绿党和劳工党联盟)已经与执政的中间党(新社会契约)合作,开发了一项新的荷兰科技计划,旨在减少对美国科技公司的依赖。卡特曼希望荷兰政府能够采取行动,成为第一个从美国科技公司中撤回其科技堆栈的欧洲国家。尽管政府没有义务遵循这些非约束性动议,但卡特曼相信,八项动议全部通过,政府将很难不采取行动。


HN 热度 315 points | 评论 265 comments | 作者:rippeltippel | 12 hours ago #

https://news.ycombinator.com/item?id=43421902

  • 数据主权是未来十年的真正趋势,而不是量子计算或人工智能
  • 全球化导致产品质量下降和当地小企业的衰落
  • 全球化使得贫穷国家的人民摆脱了贫困,但也导致了西方国家的中产阶级缩小
  • 依赖外国技术和资源会使一个国家容易受到他国的影响和控制
  • 俄罗斯的侵略行为是由于其自身的扩张主义政策,而不是由于经济因素
  • 更加紧密的贸易关系可以降低冲突的可能性,但不能完全消除冲突
  • 依赖单一的外国伙伴会导致经济和安全风险
  • 西方国家应该通过多元化进口和发展本土产业来减少对外国的依赖
  • 全球化带来的环境成本和资源浪费是巨大的
  • 应该对富人进行更加公平的税收,以减少贫富差距

Bolt3D: Generating 3D Scenes in Seconds #

https://szymanowiczs.github.io/bolt3d

Bolt3D 是一种可以在几秒钟内生成 3D 场景的算法。它可以接受一个或多个输入图像,并生成多视图的 Splatter 图像。然后,使用高斯头来回归 Splatter 图像,并将多个 Splatter 图像中的 3D 高斯函数结合起来形成 3D 场景。

Bolt3D 的工作原理是首先使用多视图扩散模型生成场景的外观和几何形状。然后,使用高斯头来回归 Splatter 图像。Splatter 图像是通过将场景的外观和几何形状结合起来生成的。最后,使用多个 Splatter 图像中的 3D 高斯函数来形成 3D 场景。

Bolt3D 的优点是可以在单个 GPU 上以 6.25 秒的速度生成 3D 场景。它还可以接受可变数量的输入图像,并且可以生成未观察到的场景区域,而无需任何重投影或修复机制。

Bolt3D 的关键组成部分是 Geometry VAE,它可以压缩点图以高精度。Geometry VAE 使用变换器解码器来自动编码点图,这比使用卷积解码器或预训练的图像 VAE 更有效。

Bolt3D 的结果可以在网页上实时渲染和查看。它可以生成高质量的 3D 场景,并且可以与其他方法进行比较。Bolt3D 的作者还感谢了许多人对他们的工作的贡献和建议。

Bolt3D 的论文已发表在 arXiv 上,标题为"Bolt3D: Generating 3D Scenes in Seconds"。论文的作者包括 Stanislaw Szymanowicz、Jason Y. Zhang、Pratul Srinivasan 等。


HN 热度 271 points | 评论 48 comments | 作者:jasondavies | 1 day ago #

https://news.ycombinator.com/item?id=43417932

  • 人工智能生成 3D 场景的技术还不够成熟,存在许多问题,如精度不高、计算资源消耗大等。
  • 学术界应该被允许尝试新的技术和方法,即使它们没有立即的商业价值。
  • 生成的 3D 场景在某些角度下可能看起来很好,但在其他角度下可能会出现问题,如缺乏细节、形状变形等。
  • 这种技术可能对某些特定领域有用,如游戏资产创建、建筑设计等,但需要进一步改进和完善。
  • 生成的 3D 场景可能不适合用于需要高精度和交互性的应用,如游戏、模拟等。
  • 点云技术在某些领域,如 GIS、模拟等,可能比传统的网格技术更有用。
  • 3D 技术的应用范围不仅限于游戏和娱乐,還包括许多其他领域,如设计、分析等。

CVE-2024-54471: Leaking Passwords (and More!) on macOS #

https://wts.dev/posts/password-leak/

本文讨论了一个名为 CVE-2024-54471 的漏洞,该漏洞已在 Apple 的安全更新中被修复,包括 macOS Sequoia 15.1、macOS Sonoma 14.7.1 和 macOS Ventura 13.7.1。文章首先介绍了操作系统中的内核概念,特别是 macOS 使用的 XNU 内核。XNU 是一个混合内核,包含 BSD 内核和 Mach 内核的部分。

文章接着介绍了 Mach 内核的历史,Mach 内核起源于 20 世纪 80 年代的卡内基梅隆大学的一个操作系统研究项目。后来,Mach 内核被 Open Software Foundation 采用,并被用于 NeXTSTEP 操作系统中。NeXTSTEP 操作系统是由 Steve Jobs 创立的 NeXT 公司开发的,后来被 Apple 收购。Mach 内核的特点是它提供了四个基本抽象:任务、线程、端口和消息。

这些抽象使得 Mach 内核能够提供一种简单而高效的进程间通信方式。文章还讨论了 Mach 内核在 macOS 中的实现,特别是任务、端口和端口权利的概念。端口权利是指任务对端口的访问权限,每个任务都有一个端口名称空间,包含命名的端口权利。这些端口权利被暴露给用户空间作为整数,但实际上它们是指向端口的引用。

总之,本文提供了对 Mach 内核和其在 macOS 中的实现的详细介绍,包括其历史、基本抽象和进程间通信机制。同时,文章也讨论了 CVE-2024-54471 漏洞的背景和重要性,强调了及时更新系统的必要性。


HN 热度 257 points | 评论 41 comments | 作者:nmgycombinator | 7 hours ago #

https://news.ycombinator.com/item?id=43425605

  • macOS 的安全问题可能是由于其代码年代久远,来自 80 年代的 NeXTSTEP,里面可能包含了很多当今安全标准下不合格的代码。
  • 有些人回忆起了过去类似的安全漏洞,例如 Sun 3/60 的登录绕过漏洞,Linux 的安全漏洞等。
  • macOS 的 NetAuthAgent 代码可能很旧,可能多年没有更新,导致了安全问题的存在。
  • 有人提到了使用其他 FTP 客户端来避免 NetAuthAgent 的安全问题。
  • 某些设备,如 DOCSIS 线缆调制解调器,也存在类似的安全漏洞。
  • 有人指出,开发人员可能没有充分测试代码,导致了安全问题的出现。

LLM Agents Are Simply Graph – Tutorial for Dummies #

https://zacharyhuang.substack.com/p/llm-agent-internal-as-a-graph-tutorial

这篇文章《LLM Agents are simply Graph — Tutorial For Dummies》由 Zachary Huang 撰写,旨在为初学者解释 AI 代理(agent)是如何工作的。文章的核心观点是 AI 代理可以被视为一个简单的图(graph),通过节点和边的结构来实现决策和执行任务的过程。

主要内容概述: #

  1. **AI 代理的基本概念 **:

    • AI 代理,如大型语言模型(LLM)代理,像是智能助手,能够分析情况、选择行动、执行任务并根据结果进行思考。
    • 所有代理的核心构成就是:决策节点、行动节点、结束节点以及它们之间的连接。
  2. ** 代理系统的比喻 **:

    • 将代理系统比作厨房,节点对应不同的工作站(如切菜、烹饪、装盘),流程则类似于菜谱,指示接下来去哪个工作站。
  3. ** 代理的工作流程 **:

    • 在厨房中,每个工作站有三个简单的工作:准备(从共享区域获取所需材料)、执行(完成特定任务)、后处理(将结果放回共享区域并决定下一步)。
    • 代理的运行也遵循类似的步骤:观察问题、决定是否需要搜索、执行搜索并最终给出答案。
  4. ** 创建一个简单的代理 **:

    • 文中提供了一个简单的示例,构建一个可以搜索网络并回答问题的 AI 助手。

    • 代理被分为三个主要节点:

      • DecideAction(决策节点):评估当前问题和已有信息,决定是搜索信息还是直接回答。
      • SearchWeb(搜索节点):执行网络搜索并获取结果。
      • AnswerQuestion(回答节点):根据所有信息提供答案。
  5. ** 每个节点的具体实现 **:

    • 每个节点都包含准备、执行和后处理三个方法。比如,DecideAction 节点会根据输入的信息生成一个提示,通过调用 LLM(大型语言模型)做出决策。
    • SearchWeb 节点则连接到搜索 API(例如 Google),根据搜索查询获取结果并格式化。
    • AnswerQuestion 节点则基于收集到的信息生成最终的答案。
  6. ** 连接节点形成完整流程 **:

    • 将各个节点连接起来,形成一个完整的工作流,确保代理可以根据决策在不同节点之间流动。
    • 工作流的启动由 DecideAction 节点开始,根据返回的行动决定是搜索还是回答。
  7. ** 示例运行 **:

    • 最后,通过一个示例展示代理的运行过程,输入问题后,代理逐步进行决策和搜索,最终给出答案。

总结: #

这篇文章通过简单易懂的比喻和逐步的代码示例,帮助初学者理解 AI 代理的基本工作原理,强调代理的构建并不复杂,核心在于节点和它们之间的关系。通过使用 PocketFlow 这个简化框架,读者能够清楚地看到代理是如何工作的,打破了传统框架所带来的复杂性。


HN 热度 252 points | 评论 77 comments | 作者:zh2408 | 1 day ago #

https://news.ycombinator.com/item?id=43417511

  • 行业中对“agent”的定义存在两种不同的理解,一种是指 LLM 和工具通过预定义的代码路径进行编排,另一种是指 LLM 动态地控制自己的流程和工具使用。
  • Anthropic 的“agent”定义与大多数企业软件公司的理解不同,后者更倾向于将其称为“workflow”。
  • 现实世界中的“agent”例子还比较原始,主要是像 Deep Research 这样的应用。
  • Anthropic 的“workflow”定义不够准确,现代的 workflow 系统可以支持完全动态的逻辑。
  • AI 特定的 workflow 引擎存在一些问题,如不够稳健、容易崩溃、不能恢复、可见性和分布性不佳等。
  • 使用现有的 workflow 解决方案可以解决这些问题,而不是选择专门的 AI workflow 引擎。
  • 一个真正的“agent”应该能够根据任务的自然语言描述来决定自己的行为,而不是依赖于预定义的图。
  • 行业中对“agent”的使用存在一些混淆,部分公司将“workflow”称为“agent”。
  • 实现一个真正的“agent”需要考虑到诸如提示链、并行执行、决策点、循环等复杂的决策过程。
  • Pocketflow 适合具有技术背景的人群,设计图的内部实现非常重要。

How I accepted myself into Canada’s largest AI hackathon #

https://fastcall.dev/posts/genai-genesis-firebase/

这篇文章讲述了作者如何发现并利用一个漏洞,成功地将自己接受到加拿大最大的 AI 黑客马拉松(GenAI Genesis 2025)中。作者最初是在申请黑客马拉松时,发现了一个密码重置链接,引发了他对网站安全性的好奇。通过使用 pyrebase 库和 firebase API,作者尝试了各种方法来测试网站的安全性,包括检查数据库的读取权限和更新应用状态。

在探索过程中,作者发现了一个有趣的设计选择,即网站在更新应用状态时,会将整个应用对象设置为新的状态。利用这一点,作者成功地将自己的应用状态更新为“已接受”,从而实现了自己的目标。作者还发现了一个信息泄露漏洞,允许他读取到自己申请的敏感信息,包括接受状态、评审员的姓名和评论等。

作者将这些漏洞报告给了网站维护者,并在几天内收到了初步和最终的补丁。作者总结了整个过程,并感谢读者阅读他的博客文章。同时,作者还提到了自己是大学新生,正在发布一些有趣的内容,邀请读者关注他的社交媒体账号。


HN 热度 244 points | 评论 78 comments | 作者:fastcall | 18 hours ago #

https://news.ycombinator.com/item?id=43420152

  • 现在的黑客马拉松已经变得过于正式和商业化,失去了最初的趣味和创造力
  • 评审过程中,评委对申请者的热情和兴趣的评价可能并不公正和客观
  • 有些人认为,黑客马拉松已经变成了企业获取廉价劳动力和想法的途径
  • 评委在黑客马拉松中的角色可能被用来作为获取 O-1 签证的依据,但这种做法可能并不符合签证政策的初衷
  • O-1 签证对持有者配偶的工作权利限制较大,可能会对一些人造成困难
  • 现在的黑客马拉松规模过大,已经失去了最初的亲切和自由感
  • 有些人认为,可以自行组织小规模的黑客马拉松,以避免大规模活动的正式和商业化氛围

Minding the gaps: A new way to draw separators in CSS #

https://blogs.windows.com/msedgedev/2025/03/19/minding-the-gaps-a-new-way-to-draw-separators-in-css/

本文讨论了在网页中使用 CSS 绘制分隔线的方法。传统的方法包括使用边框(border)属性或伪元素(::before、::after),但这些方法都有其局限性。例如,使用边框会改变元素的大小,需要特殊处理第一个和最后一个元素,并且难以适应复杂的布局。

另一种方法是使用网格容器的背景颜色和网格项的背景颜色来创建分隔线的幻觉。这种方法通过设置网格容器的背景颜色和网格项的背景颜色相同,利用网格项之间的间隙(gap)来创建分隔线的效果。然而,这种方法也存在一些问题,例如无法控制分隔线的长度,网格项不填充整个单元格时会出现背景颜色,且不适用于页面背景为图像或渐变色的情况。

针对这些问题,作者提出了 CSS 间隙装饰(CSS gap decorations)的新方案。该方案扩展了现有的 column-rule 属性,允许在网格和 flexbox 布局中绘制分隔线。同时,引入了 row-rule 属性,以匹配 column-rule 属性。该方案还扩展了这些属性的语法,允许在容器的不同部分定义不同的间隙装饰。

作者提供了一个示例,展示了如何使用 row-rule 属性和其新的语法来定义多个间隙装饰。这种新方案可以解决传统方法的局限性,提供更灵活和更强大的网页布局能力。作者呼吁读者提供反馈,以帮助完善这一新方案。


HN 热度 234 points | 评论 87 comments | 作者:SigmundurM | 16 hours ago #

https://news.ycombinator.com/item?id=43420683

  • 新的 CSS 伪元素可以用来绘制分隔符,例如 :gap,可以设置背景颜色、内边距等样式。
  • 使用 :gap 伪元素可以实现更灵活的分隔符样式,例如可以设置不同的颜色、背景图案等。
  • column-rulerow-rule 的命名来源于印刷术语,表示页面布局中的分隔线。
  • 使用正确的术语可以避免混淆,尽管有些人可能不熟悉这些术语。
  • 在 CSS 中,术语的选择应该遵循内部的一致性和逻辑性,而不是为了迎合大众的认知。
  • 分隔符的命名可以使用 dividerdivider line,这些术语更容易被理解和搜索。
  • <hr> 元素已经存在于 HTML 中,表示水平分隔线,新的 row-rulecolumn-rule 可以与其类比。