2024 01 14 HackerNews

DevDocs #

https://devdocs.io

DevDocs 是一个快速、离线和免费的开发者文档浏览器。它将多个 API 文档整合在一个快速、有组织且可搜索的界面中。

请注意,DevDocs 是一个英文网站,但它提供了多种编程语言和技术的文档,其中包括一些中文文档。你可以在“Preferences”中选择你需要的中文文档,以便更好地使用该网站。


HN 评论 109 comments | 作者:jakogut | 1 day ago #

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

根据提供的链接,这篇帖子中的评论观点可以归纳如下:

有人表示维护者的工作对他们的职业和生活产生了重大影响,能够在通勤时离线阅读文档非常重要。

有人抱怨 DevDocs 无法保留他们的文档选择,每次访问都需要重新选择所使用的技术栈。

有人建议使用 devdocs-desktop,它可以离线存储文档并具有独立的配置文件夹。

有人提到一些文档生成器的问题,比如生成随机类名和使用 JavaScript 构建文档页面的困难。

有人询问如何评估文档生成器的易用性,特别是在语义提取方面。

有人分享了在技术面试中使用 DevDocs 的经历,但最终没有得到工作。

有人询问 DevDocs 的文档是否是从 HTML 源码中提取的,是否可以从其他源文件(如.tex、.md 等)中提取。

有人询问如何帮助将 Playwright 添加到 DevDocs 中。

有人询问是否有计划为 DevDocs 添加评论功能,类似于旧版 PHP 文档。

有人提到使用 AI 来清理文档的想法,并建议与 OpenAI 的 API 或 CodeLlama 等开源模型集成。

有人指出使用 AI 会带来高昂的成本和修复错误的困难。

有人询问是否有一种类似于 RSS 的技术,可以宣布文档支持离线阅读。

有人推荐使用 Zeal、Dash 等工具来离线阅读文档。

有人提到使用 emacs Info 文档的好处。

有人建议使用 GNU Info 文档作为离线文档的替代方案。

有人讨论了离线文档的重要性,包括在网络连接不稳定或需要专注工作时的优势。

请注意,这些观点是根据提供的链接中的评论总结而来,可能不包含所有的观点。


Stellarium is a free GPL software which renders realistic skies in real time #

https://github.com/Stellarium/stellarium

Stellarium 是一款免费的开源天文软件,用于在计算机上展示逼真的 3D 天空,就像你用肉眼、双筒望远镜或望远镜看到的一样。它使用 OpenGL 实时渲染,可在 Linux/Unix、Windows 和 macOS 操作系统上运行。

如果你是 Stellarium 的新用户,你可以访问官方网站 www.stellarium.org 获取更多的额外信息。官方网站提供了安装指南、快速入门等信息。

如果你想从源代码构建 Stellarium,可以参考 GitHub 页面中的构建指南。

Stellarium 的 GitHub 页面还提供了完整的参考和贡献者列表。你可以在 GitHub 页面上找到贡献者的名单,包括代码贡献者和财务贡献者。

Stellarium 的 Windows 版本使用了由 SignPath.io 提供的免费代码签名,并使用了 SignPath Foundation 提供的免费代码签名证书。


HN 评论 117 comments | 作者:tosh | 7 hours ago #

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

这篇帖子中的评论观点可以总结如下:

有人对 Stellarium 的代码印象非常好,认为它是极高质量的代码,是其他开发者应该追求的标准。

有人认为在项目中引入特定领域语言(DSL)可以简化代码的修改和维护,但更理想的情况是选择合适的编程语言和项目架构,避免需要使用 DSL。

有人认为代码易于理解和修改是衡量代码质量和技术债务的标志,而不是基于个人主观观点的指标,如方法中的代码行数、DRY 原则或编程语言的选择。

有人推荐了 NetBSD 和 OpenSSH 源代码作为代码质量的例子。

有人分享了 Stellarium 可以与硬件进行接口,可以作为天文摄影装置的前端使用。

有人提到 Stellarium 可以编写脚本,例如通过 cronjob 在后台窗口中启动 Stellarium,设置经纬度、显示选项,并将渲染的天空图像保存为文件,然后更新桌面壁纸。

有人感谢了这个想法和代码的分享。

有人讨论了天文学家使用 Stellarium 观测国际空间站(ISS)的经历。

有人提到 Stellarium 在手机上的应用,可以识别卫星,并分享了自己亲眼看到 ISS 的经历。

有人提到 Stellarium 的 Web 版本和 VR 版本。

有人分享了使用 Stellarium 生成游戏中逼真的天空图像的经历。

有人讨论了天文学家使用 Stellarium 进行观测的脚本。

有人提到了其他天文学相关的应用和项目,如 SkySafari 和 Celestia。

这些是根据评论中的观点进行的总结,希望对您有所帮助!


Show HN: Marimo – an open-source reactive notebook for Python #

https://github.com/marimo-team/marimo

marimo 是一个用于 Python 的反应式笔记本,可以运行可重复的实验,作为脚本执行,部署为应用程序,并使用 git 进行版本控制。它具有以下特点:

反应式:运行一个单元格后,marimo 会自动更新所有受影响的单元格和输出。

交互式:将滑块、表格、图表等绑定到 Python 上,无需回调函数。

可重复性:没有隐藏状态,确定性执行顺序。

可执行:可以将其作为 Python 脚本执行。

可共享:可以部署为应用程序。

git 友好:以.py 文件的形式存储。

marimo 可以帮助用户快速进行数据和模型实验,以及在笔记本中编写可信的代码,并将笔记本作为流水线或交互式 Web 应用程序进行生产。它还提供了许多功能,如 GitHub Copilot、Black 代码格式化、HTML 导出、快速代码补全等。


HN 评论 100 comments | 作者:akshayka | 1 day ago #

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

有用户表示 Marimo 解决了 Jupyter 缺乏单元格反应性的问题,并称赞 Marimo 的解决方案。

有用户喜欢 Marimo 的文件格式是 Python 文件,可以作为脚本运行,并分享了一个使用 Marimo 的示例文件。

有用户提到 Marimo 可以用于生产 Web 应用程序,并分享了一个使用 Marimo 编写的实例应用程序。

有用户对 Marimo 的开源和 Apache 2 许可证表示赞赏。

有用户询问 Observable 笔记本的典型用例,以及与 Jupyter 的区别。

有用户分享了他在 Observable 笔记本中构建交互式工具的经验,并提到 Observable 笔记本提供了从想法到公共 URL 的最短路径。

有用户提到 Marimo 对于实现 Notebook 代码的易部署性很有帮助,并建议提取用于生成输出的代码作为脚本。

有用户提到 Jupytext 扩展和 Quarto 作为解决 Jupyter 问题的替代方案。

有用户对 Marimo 的依赖列表表示赞赏,并提到 Marimo 不依赖于 Jupyter 生态系统。

有用户提到希望能够在 Marimo 中使用 mermaid.js 进行 Markdown 渲染。

有用户对 Marimo 的交互式小部件功能表示兴趣,并希望能够将自己的小部件移植到 Marimo 平台。

有用户提到在 Notebook 中多次定义同一个变量应该是允许的,因为变量未在后续单元格中使用。

这些是根据评论摘要得出的观点,可能还有其他观点未被包括在内。


OpenAI deletes ban on using ChatGPT for “military and warfare” #

https://theintercept.com/2024/01/12/open-ai-military-ban-chatgpt/

文章标题为《OpenAI 悄然删除了对“军事和战争”使用 ChatGPT 的禁令》。OpenAI 本周悄然删除了其使用政策中明确禁止将其技术用于军事目的的条款,该政策旨在规定像 ChatGPT 这样强大且广受欢迎的工具的使用方式。

在 1 月 10 日之前,OpenAI 的“使用政策”页面包括禁止“具有高风险的身体伤害活动”,具体包括“武器开发”和“军事和战争”。这个明确禁止军事应用的规定似乎排除了国防部或其他国家军队的任何官方和极其有利可图的使用。新的政策保留了不“利用我们的服务伤害自己或他人”的禁令,并举例“开发或使用武器”,但对“军事和战争”使用的全面禁令已经消失。

这个未公开的删除是政策页面的重大改写的一部分,该公司表示这是为了使文件“更清晰”和“更易读”,其中包括许多其他实质性的语言和格式变化。

OpenAI 发言人 Niko Felix 在给 The Intercept 的一封电子邮件中表示:“我们的目标是创建一套易于记忆和应用的普适原则,特别是因为我们的工具现在被全球的日常用户使用,他们现在也可以构建 GPT。像‘不伤害他人’这样的原则既广泛又容易理解,并且在许多情况下都是相关的。此外,我们明确列举了武器和对他人的伤害作为明确的例子。”Felix 拒绝透露更模糊的“伤害”禁令是否包括所有军事用途,他写道:“任何使用我们的技术的行为,包括军队使用我们的技术‘[开发]或[使用]武器,[伤害]他人或[破坏]财产,或[从事]违反任何服务或系统安全的未经授权的活动’,都是不允许的。”

OpenAI 的工程总监、网络安全公司 Trail of Bits 的 Heidy Khlaaf 表示:“OpenAI 非常清楚他们的技术和服务在军事应用中可能带来的风险和危害”,她引用了她与 OpenAI 研究人员合著的一篇 2022 年的论文,该论文明确指出了军事应用的风险。Khlaaf 补充说,新政策似乎强调合法性而不是安全性。“这两个政策之间存在明显的区别,前者明确规定了禁止武器开发、军事和战争,而后者强调灵活性和遵守法律,”她说。“武器开发和与军事和战争相关的活动在各种程度上都是合法的。对于 AI 安全来说,潜在的影响是重大的。鉴于大型语言模型(LLM)内部存在的偏见和幻觉问题以及它们的整体准确性不足,它们在军事战争中的使用只会导致不准确和有偏见的操作,可能加剧伤害和平民伤亡。”

这个政策的现实后果尚不清楚。去年,《The Intercept》报道称,OpenAI 不愿透露在面对五角大楼和美国情报界越来越浓厚的兴趣时,是否会执行自己明确的“军事和战争”禁令。

AI Now Institute 的董事总经理、前联邦贸易委员会 AI 政策分析师 Sarah Myers West 表示:“考虑到 AI 系统在加沙平民定点打击中的使用,OpenAI 决定从其可允许使用政策中删除‘军事和战争’一词是一个值得注意的时刻。政策中的措辞仍然模糊,并引发了关于 OpenAI 打算如何执行的问题。”

虽然 OpenAI 目前提供的任何东西都不可能直接用于军事或其他方面的杀人行为,比如 ChatGPT 无法操纵无人机或发射导弹,但任何军队都是以杀戮为业,或者至少保持杀戮能力。像 ChatGPT 这样的 LLM 可能会增强许多与杀人相关的任务,比如编写代码或处理采购订单。对 OpenAI 提供的定制 ChatGPT 驱动的机器人的审查表明,美国军事人员已经在使用这项技术来加快文书工作。直接支持美国作战行动的国家地理空间情报局公开猜测使用 ChatGPT 来帮助其人类分析师。即使 OpenAI 的工具被军队的某些部分部署用于与直接暴力无关的目的,它们仍然在帮助一个主要目的是杀戮的机构。

根据 The Intercept 的请求,专家审查了政策变化,他们表示 OpenAI 似乎在悄然削弱与军方的业务往来。“我可以想象,从‘军事和战争’转向‘武器’为 OpenAI 提供了支持运营基础设施的空间,只要应用不直接涉及狭义定义的武器开发,”兰卡斯特大学科学与技术人类学名誉教授 Lucy Suchman 说。“当然,我认为在声称不参与武器开发或使用的情况下,你可以为战争平台做出贡献的想法是虚伪的,将武器从它所属的社会技术系统中去除,包括指挥和控制基础设施。”Suchman 是 20 世纪 70 年代以来的人工智能学者,也是国际机器人武器控制委员会的成员,她补充说:“新的政策文件似乎回避了军事合同和战争行动的问题,而是专注于武器。”

Suchman 和 Myers West 都指出了 OpenAI 与微软的密切合作伙伴关系,微软是一家主要的国防承包商,迄今已经向这家 LLM 制造商投资了 130 亿美元,并重新销售该公司的软件工具。

这些变化发生在世界各国军队急于将机器学习技术纳入战斗中的背景下;五角大楼仍在试探性地探索如何使用 ChatGPT 或其他大型语言模型,这是一种可以快速、灵活地生成复杂文本输出的软件工具。LLM 是通过对大量书籍、文章和其他网络数据进行训练,以近似人类对用户提示的回应。尽管像 ChatGPT 这样的 LLM 的输出通常非常令人信服,但它们优化的是连贯性而不是对现实的牢固把握,并且经常出现所谓的幻觉,导致准确性和事实性成为问题。然而,LLM 快速吸收文本并迅速输出分析(或至少是分析的模拟)的能力使其非常适合数据密集的国防部门。

尽管美国军方领导层中的一些人对 LLM 插入明显的事实错误或其他扭曲以及使用 ChatGPT 分析机密或其他敏感数据可能带来的安全风险表示担忧,但五角大楼仍然急于采用人工智能工具。在去年的一次讲话中,国防部副部长凯瑟琳·希克斯表示,人工智能是“我们从第一天开始推动的以战士为中心的创新综合方法的关键部分”,尽管她警告称,大多数当前的产品“在技术上还不成熟到足以符合我们的道德 AI 原则”。

去年,五角大楼的可信 AI 和自主性主任 Kimberly Sablon 在夏威夷的一次会议上表示:“在我们可以利用像[ChatGPT]这样的大型语言模型的方面,有很多好处,可以在整个部门中破坏关键功能。”


HN 评论 242 comments | 作者:cdme | 1 day ago #

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

这篇帖子中的评论观点可以归纳如下:

OpenAI 迅速放弃创始原则,类似于 Google 在 17 年后删除了“不作恶”的口号。

OpenAI 可能会成为取代 Google 的公司(或技术),讽刺的是 Google 曾取代了微软,现在看起来它们将重新夺回王座。

OpenAI 可能在加速发展,因为它知道自己的日子不多了。

如果 OpenAI 的技术真的优秀,苹果、谷歌和 Meta 应该会争相购买许可,但他们并没有这样做,而是选择自己开发类似的技术。

Microsoft 花费了 100 亿美元来获得 OpenAI 的技术独家使用权,这与苹果、谷歌和 Meta 应该做的相同。

ChatGPT 一直处于领先地位,没有其他公司在去年 3 月 OpenAI 发布的版本之后取得更好的成绩。

OpenAI 删除了对“军事和战争”使用的限制,这与其使命不太一致。

有人认为允许技术用于各种不同的领域比任意限制更“开放”,因为“军事和战争”这些术语可能包括一些无害的项目。

有人认为允许技术用于军事目的是有积极意义的,因为军事力量也可以用于防御和研究等方面。

一些人担心开放 AI 技术可能被恶意使用,对国家安全造成威胁。

有人认为 OpenAI 的决策是为了适应现实世界,而不是出于理论上的和平主义。

一些人对 OpenAI 删除限制的决定感到惊讶,认为这与其使命不一致。

有人认为 OpenAI 的决策是为了迎合军事工业复合体的需求。

有人认为 OpenAI 的决策是为了追求更多的商业机会,因为五代战争可能需要类似的技术。

有人认为 OpenAI 的决策是为了适应现实世界,因为军事技术的发展是不可避免的。

有人认为 OpenAI 的决策是为了使其技术能够更广泛地应用于军事数据库和研究工作等方面。

请注意,这些观点是根据评论中的内容进行总结的,可能代表不同个人的意见,不一定代表事实或真实情况。


A decade-old Steam bug #

https://blog.freudenjmp.com/posts/no-user-logon/

这篇文章是关于一个长达十年的问题的故事,即 Counter-Strike 中的“无用户登录”问题。

作者指出,虽然有很多提议的解决方案,但它们实际上并没有修复问题的根本原因。文章还提到了作者在 Esportal 上遇到的类似问题,并对问题进行了调查和分析。

作者发现,这个问题与 Steam 验证有关,当 CS2.exe 与 Steam3 服务器进行验证时,可能会出现问题。文章还提到了一些技术细节和日志分析,以支持作者的观点。


HN 评论 33 comments | 作者:freudenjmp | 19 hours ago #

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

这是一篇关于 Steam 游戏平台上的一个 bug 的帖子。以下是评论中的观点的中文摘要:

有人认为这个 bug 是由于游戏客户端在等待来自 Steam 服务器的响应时被中断,导致游戏在没有创建会话凭证的情况下加入游戏服务器。

有人指出,这个 bug 可能与游戏启动时的 Steam ID 验证流程有关,当 CS2 客户端未完全加载/初始化时,Steam3 验证永远不会被启动。

有人认为真正的 bug 是在开始(非局域网)多人游戏时,完成身份验证并不是硬性要求。

有人建议改进会话凭证验证流程,例如使用由 Valve 签名的令牌,并在连接到游戏服务器时本地验证令牌。

有人指出,使用令牌验证的方法可能存在安全问题,恶意服务器可以重放令牌来冒充其他服务器上的玩家。

有人提到过去有类似的问题,某人发布了一个工具,可以使用记录的凭证欺骗 SteamID,对 Garry’s Mod 社区造成了混乱。

有人提出了关于游戏客户端意外崩溃的问题,以及在运行时执行的可执行文件完整性检查是否会导致不同的断开连接消息。

有人建议在文章中更早地提到解决方法,以及在摘要中包含解决方法。

有人提到对 Steam 应用在 macOS 上的改进希望,认为它运行得像一个优化不良的 Electron 应用程序。

有人评论了 CS2 中武器的绘制速度变慢的问题,以及对自定义喷漆的思念。

有人提到了其他游戏中更准确模拟弹夹和弹药的系统。

有人提问关于 levelloadloop 只在游戏启动时执行,而不是加入服务器和加载地图时执行的问题。

有人建议在解决方案中加入具体的等待时间,以便修复“无用户登录”错误。

有人对文章的详细性表示赞赏,并表示会关注作者的未来发展。

请注意,这只是评论中的一些观点摘要,可能不包含所有评论。


A site that tracks the price of a Big Mac in every US McDonald’s #

https://pantryandlarder.com/mccheapest

根据访问的链接,网页内容显示了关于 Big Mac 价格的信息。

最便宜的 Big Mac 价格是 $3.49,位于 Stigler, OK 的 1310 E Main St。

最昂贵的 Big Mac 价格是 $8.09,位于 Lee, MA 的 240 West Road。

请注意,这些价格和位置可能会有所变化,因此建议在访问该链接时确认最新信息。


HN 评论 236 comments | 作者:Ajay-p | 7 hours ago #

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

根据该帖子中的评论观点,可以将它们总结如下:

一些评论者认为在美国,麦当劳的价格相对较高,尤其是考虑到食物只是被保温或加热预制食品。他们认为麦当劳的价格已经超过了通货膨胀水平,并且不再像过去那样便宜了。

一些评论者指出,美国的麦当劳实际上存在极端的价格歧视,类似于一些杂货店会员制度,几乎没有人需要支付“常规”价格,因为每个人都可以免费获得会员资格,只需提供电话号码。如果下载他们的应用程序,可以获得许多优惠券,降低(几乎)整个菜单的价格。

一些评论者表示,他们通过使用麦当劳的应用程序,几乎每次都能以更低的价格购买餐点,例如免费中型薯条、买一送一的大麦克或 QPC,或者积累的积分(长期来说可以给你所有东西打 9 折)。他们认为使用应用程序点餐还可以避免排队,提前几分钟使用应用程序下单,到达时食物已经等待着他们。

还有一些评论者提到,麦当劳的价格在不同地区可能有所不同,优惠活动也可能因地区而异。


On Sleeper Agent LLMs #

https://twitter.com/karpathy/status/1745921205020799433

根据提供的链接,这是一条推特帖子,发表于 2024 年 1 月 12 日,作者是 Andrej Karpathy。他在推文中提到了关于 LLMs(大型语言模型)的潜在安全挑战,特别是关于“沉睡特工 LLMs”的概念。

根据 Andrej Karpathy 的描述,他担心攻击者可能会通过在互联网上发布特殊的文本(例如带有触发词组),并在后续的训练中对其进行训练,以在特定的、狭窄的环境中(例如当它看到触发词组时)对基础模型进行污染,以执行某种可控的行动(例如越狱或数据泄露)。这种攻击甚至可能看起来不像可读文本 - 它可以通过奇怪的 UTF-8 字符、Base64 编码或精心扰动的图像进行混淆,使其很难通过简单检查数据来检测。可以想象计算机安全领域类似于零日漏洞市场的存在,出售这些触发词组。

Andrej Karpathy 提到,目前尚未有令人信服的证据表明上述攻击已经成功实施。然而,有一篇论文研究了类似(稍微较弱?)的情况,表明在给定某个(可能被污染的)模型的情况下,仅通过应用当前/标准的安全微调并不能使其变得安全。模型并不会全面学习如何变得安全,并且可能在只有攻击者知道如何利用的狭窄方式中继续表现出不当行为。在这种情况下,攻击隐藏在模型权重中,而不是隐藏在某些数据中,因此更直接的攻击方式是发布一个(秘密被污染的)开放权重模型,其他人接收、微调和部署,最终成为秘密的漏洞。

Andrej Karpathy 的推文引用了 AnthropicAI 发布的一篇论文,该论文探讨了 LLM 安全性的类似方向,并预计将有更多相关研究出现。

请注意,以上摘要是基于提供的链接和推文内容进行的翻译和总结。


HN 评论 101 comments | 作者:admp | 1 day ago #

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

根据提供的链接,这篇帖子中的评论观点可以归纳如下:

有人认为通过在训练集中过度表达某种观点,可以使该观点在模型中得到放大,从而影响模型的输出。

也有人认为语言模型(LLMs)无法理解其训练集中观点的普遍性,而只是根据训练数据中的文本内容来生成回答。

有人指出,尽管 LLMs 无法理解观点的普遍性,但它们对人类的熟悉度和表达方式有所反应,因此仍然容易受到观点的影响。

还有人讨论了观点的数量对于引发辩论和接受程度的影响,认为大量人持有某种观点会使其变得更有影响力。

有人提到,人们总是会寻找满足需求的方式,无论是通过 LLMs、骗子还是政客,只要有需求存在,就会有相应的方式满足需求。

还有人讨论了 LLMs 的自我认知能力,认为它们只是根据数据生成回答,而不具备真正的自我认知能力。

有人提到了过度表达某种观点的困难性,指出训练数据规模巨大,要在其中过度表达某种观点并不容易。

还有人讨论了如何通过加权来影响 LLMs 的输出,以及如何利用不同的优化方法来调整 LLMs 的偏好。

有人讨论了通过修改 LLMs 的源代码或进行微调来实现特定目标的可能性。

还有人讨论了社交媒体上的信息过滤问题,指出 LLMs 可能会对信息进行扭曲,使人们难以找到真实的信息。

有人将 LLMs 与其他媒体进行比较,指出人们经常受到媒体的影响,而不仅仅是 LLMs。

还有人讨论了如何在训练数据中重复特定组合的观点,以期望这些观点最终被纳入模型的训练中。

有人提到了 Elon Musk 对于 Grok(LLM 的前身)的困扰,以及类似 Groks 的模型在任务中的失败。

还有人讨论了如何通过加权和优化方法来影响 LLMs 的输出,以及如何在训练过程中引入偏好。

有人讨论了社交媒体上的信息过滤问题,指出人们经常受到媒体的影响,而不仅仅是 LLMs。

最后,有人讨论了如何通过构建特定的文本语料库来影响 LLMs 的输出,但指出这种方法可能不会产生有用的聊天机器人。

请注意,这些总结是根据提供的链接中的评论内容进行的,可能不包含所有观点。


Exploring Podman: A More Secure Docker Alternative #

https://betterstack.com/community/guides/scaling-docker/podman-vs-docker/

Podman vs Docker: 一个更安全的 Docker 替代品

该文章探讨了 Podman 的特点和优势,将其与 Docker 进行了比较,并描述了一份逐步迁移指南。

引言

容器化已成为开发人员和系统运维人员在各种系统和平台上高效打包和部署应用程序的重要工具。今天存在许多容器化解决方案,但毫无疑问,Docker 已成为事实上的标准。这主要归功于其出色的工具链、强大的社区和庞大的预构建镜像生态系统,这些镜像可以在不同环境中轻松共享和使用。

多年来,Docker 一直占据着这个位置,并真正改变了应用程序的交付方式。与此同时,它的广泛采用激发了许多其他容器化解决方案的发展,这些解决方案提供了更多的功能和能力。其中一个解决方案就是 Podman。

Podman 是一个开源的容器引擎,旨在提供一个更安全和轻量级的 Docker 替代品。它允许用户在不需要守护程序的情况下运行容器,从而更容易地管理和部署各种系统上的容器。此外,Podman 通过诸如无根容器(即通过非根用户运行容器)、用户命名空间和更谨慎地利用内核功能等功能,提供了更好的安全性默认设置,这些功能可以保护主机系统免受潜在的漏洞和安全威胁。

凭借其不断增长的社区和与 Docker 镜像和命令的紧密兼容性,Podman 在寻找替代容器化解决方案的开发人员和系统管理员中获得了显著的关注。

在本文中,我们将探讨使用 Podman 作为容器化工具的一些关键特点和优势。我们还将讨论它与 Docker 的比较,并了解为什么它已成为行业中受欢迎的替代选择。

架构差异

Podman 和 Docker 之间的主要差异之一在于它们的架构。Docker 依赖于客户端-服务器模型,而 Podman 采用了无守护程序的架构。通过 Podman 的方法,用户可以直接管理容器,无需在后台运行连续的守护程序进程。这种直接管理通常使得 Podman 容器的启动速度比 Docker 快得多,取决于使用的镜像,有时甚至快 50%。

这种架构还增强了安全性。在 Docker 中,启动容器意味着通过 Docker 客户端向 Docker 守护程序发送请求,然后守护程序启动容器,这意味着容器进程是守护程序的子进程,而不是用户会话的子进程。因此,由 Linux 审计系统(auditd)捕获的来自容器进程的任何重要事件都将其审计用户 ID 设置为未设置,而不是实际启动相应容器的用户的 ID。这使得很难将恶意活动与特定用户关联起来,并破坏了系统的安全性。

使用 Podman,由于每个容器直接通过用户登录会话实例化,容器进程数据保留了这些信息,auditd 可以准确地检测和列出启动特定容器进程的每个用户的 ID,从而保持了清晰的审计跟踪。

容器生命周期管理

Podman 中没有守护程序导致了与 Docker 相比在容器生命周期管理方面的不同方法。在 Linux 上,Podman 在这方面广泛依赖于 Systemd。例如,为了正确执行使用–restart always 标志的容器的重启策略,Podman 依赖于一个名为 podman-restart 的 systemd 服务。该服务在每次系统重启后自动重新启动所有指定的容器。

此外,Podman 还提供了一个方便的命令,用于从正在运行的容器生成 Systemd 服务文件。这使您可以将容器纳入 systemd 管理,以更轻松地启动、停止和检查其中运行的各种服务。相比之下,Docker 通过守护程序自身内部处理所有这些任务。

容器编排

在本地开发时,Docker 用户通常会使用 Docker Compose 更轻松地定义和管理多容器应用程序。虽然 Podman 默认不支持 Compose 文件,但它提供了一个兼容的替代方案,称为 Podman Compose,它通常与现有的 docker-compose.yml 文件无缝配合使用。为了获得本地体验,您还可以使用 Podman 从 Kubernetes 借用的 pods 概念,它允许用户将一组容器作为一个统一的单元进行管理。

在生产部署方面,Podman 缺乏像 Docker Swarm 这样的工具来编排多容器应用程序工作负载。在这种情况下,最好的替代方案是使用外部编排系统,如 Kubernetes,它提供了类似的功能并与 Podman 很好地集成,尽管可能需要一些额外的配置和设置来确保一切正常工作。

安全考虑

容器旨在安全地隔离应用程序,减少兼容性问题并增强安全性。主要的安全问题是容器逃逸的风险,即攻击者可能破坏主机系统。为了减轻这些风险,以最小特权运行容器至关重要。

Podman 旨在通过提供与 Docker 相比更强的默认安全设置来帮助解决这个问题。像无根容器、用户命名空间和 seccomp 配置文件这样的功能在 Docker 中也是可用的,但默认情况下未启用,通常需要额外的设置。

Podman 的默认设置包括在隔离的用户命名空间中运行无根容器,限制了任何潜在逃逸的影响。相比之下,Docker 的默认设置将容器进程以 root 身份运行,在逃逸的情况下存在更高的风险。

此外,与 Docker 不同,Podman 容器与用户会话绑定,允许审计系统将恶意活动追溯到特定用户,而在 Docker 中,由于系统范围的守护程序,追溯到用户是具有挑战性的。

Podman 和 Docker 使用 Linux 内核功能和 seccomp 配置文件来控制进程权限。默认情况下,Podman 使用更窄的 11 个功能集来启动容器,而 Docker 使用更宽松的默认设置,具有 14 个功能集。

总的来说,尽管 Podman 和 Docker 都可以配置为具有强大的安全性,但通常情况下,Podman 需要更少的工作来达到安全配置。

总结

综上所述,Docker 和 Podman 都是功能强大的工具,了解两者之间的主要区别可以帮助您选择适合您特定需求的工具。请参考下表,了解两者之间的一些主要区别,并可以假设大多数其他功能具有完全的相等性。

| 特点 | Podman | Docker |

|———————-|———|———|

| 无守护程序架构 | ✔ | ✘ |

| Systemd 集成 | ✔ | ✘ |

| 将容器分组为 pods | ✔ | ✘ |

| 支持 Docker Swarm | ✘ | ✔ |

| 支持 Kubernetes YAML | ✔ | ✘ |

以上是对 Podman vs Docker 文章的中文摘要。该文章详细介绍了 Podman 作为一个更安全的 Docker 替代品的特点和优势,并与 Docker 进行了比较。如果您需要更多详细信息,请访问原文链接:Exploring Podman: A More Secure Docker Alternative。


HN 评论 87 comments | 作者:sacrosanct | 6 hours ago #

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

根据您提供的链接,这篇帖子中的评论观点可以归纳如下:

有人认为 Podman 在支持 systemd unit 文件时很好用,但在最新版本中移除了该功能,转而使用 Quadlet 或 Kubernetes 集群定义,这导致了一些困扰。

也有人指出,podman-compose 有一个功能可以生成 systemd unit 文件,使用起来比 Podman 的功能更顺畅。

有人提到了 Podman 与 SELinux 定义的兼容性问题,容器无法访问映射的目录,但也提供了一些解决方法。

有人认为 Podman 在网络配置方面比 Docker 更友好,特别是在同时运行 Docker 和 KVM 虚拟机时。

有人提到了 Podman 的优点,如不需要 root 权限、更好的安全性等。

还有人讨论了 Podman 与 Docker 的比较,以及使用 Podman 作为 Docker 的后端。

这些是根据评论中的观点进行的归纳总结,希望对您有所帮助。


How to Be More Agentic #

https://usefulfictions.substack.com/p/how-to-be-more-agentic

《如何更具主动性》是一篇由 Cate Hall 撰写的文章。作者认为主动性并非与生俱来的特质,而是一种通过决心和努力使事情发生的能力。作者通过增强自己的主动性,在不同领域做了许多令人惊叹的事情,如成为最顶尖的女性扑克选手、创办艺术和香水公司,以及在创办的疫情药物公司 Alvea 中领导临床试验的最快速度记录。文章中提到了一些增强主动性的方法和技巧,包括勇于要求、寻求真实反馈、广泛交流、相信可学习性和避免过度劳累。作者认为主动性是一种可以学习的技能,任何人都可以在任何时候学习并提升自己的主动性。

文章中的一些关键观点和方法包括:

勇于要求:勇于要求那些看似不合理的事情,以确保自己对合理性的直觉准确无误。在求职过程中,应该争取被拒绝,以学会接受拒绝并将其与惊讶和沮丧分离开来。

寻求真实反馈:从了解自己的人那里获得真实的反馈是自我提升的最低成本方法之一。为了获得真实的反馈,可以提供匿名的反馈渠道,以减少社交动态的干扰。

广泛交流:与从事相关工作的人见面,即使在表面上看没有明显的好处。通过广泛交流,可以发现意想不到的有益合作机会。

相信可学习性:许多人认为某些特质是固定的,但实际上,大多数特质都是可以改变的。相信自己可以学习和改变,然后制定学习计划。

避免过度劳累:过度劳累会破坏创造力和宏观思维。设定适当的工作边界,避免过度劳累和疲劳,以保持主动性和创造力。

总之,主动性是一种可以学习和提升的技能,通过勇于要求、寻求真实反馈、广泛交流、相信可学习性和避免过度劳累,可以增强自己的主动性,实现更多的成就和目标。

原文链接:How to be More Agentic


HN 评论 159 comments | 作者:danboarder | 17 hours ago #

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

根据提供的链接,这篇帖子中的评论观点可以归纳如下:

有人认为一切皆可学习,引用了一位晚期祖母的话:“c’est faite par du mondes”,意思是“这是由人做/学/发现的,所以没有理由我自己不能做到”。这种观点认为个人的努力和毅力是非常重要的。

有人分享了自己与一个非技术背景但能够编写代码的人一起工作的经历。这个人喜欢与各个领域的专家交流,并从最基础的问题开始探讨。这种方法让他意识到专业知识的狭隘性和表面性,从而降低了自己的焦虑感。

有人表示对于那些自以为是的专家感到恼火,认为他们的专业知识很有限,甚至无法想象超出自己领域的空间。但他们也意识到自己过于消极和不够积极。

有人认为自己对于学习的渴望不足,想要学习某件事情并不困难,但坚持下去却很难。

有人认为骄傲是成长的最大障碍,它阻止了人们表达自己的需求,因为这意味着承认自己的不足。这种观点认为谦卑和诚实是发展的关键。

有人认为自己是一个冒牌者,对于那些自信的人感到羡慕,但也担心自己的行为可能被误解为投机取巧。

有人认为决心最终会战胜天赋,意味着只要你足够想要某件事情,你就会去做。

有人认为一切都是可以学习的,但并不是所有的东西都值得学习。

有人分享了自己在环保事业中的经历,认为自己能够学习并掌握新领域的知识,但也指出并不是每个人都能像他一样学习得快。

有人认为学习本身也是一项需要掌握的技能。

需要注意的是,这些观点是从评论中摘录的,可能不代表所有人的观点。


Updates on Grounding of Boeing 737 MAX 9 Aircraft #

https://www.faa.gov/newsroom/updates-grounding-boeing-737-max-9-aircraft

根据访问的链接,这是美国联邦航空局(FAA)关于停飞波音 737 MAX 9 飞机的更新内容。以下是摘要:

2024 年 1 月 6 日,FAA 发布紧急航空适航指令(EAD),要求对美国航空公司运营的或在美国领土上的特定波音 737 MAX 9 飞机进行检查,然后才能继续飞行。这项指令将影响全球约 171 架飞机。

2024 年 1 月 7 日,FAA 表示其首要任务是确保乘客的安全,因此已经停飞受影响的飞机,并将在满意其安全性后才会解除停飞。

2024 年 1 月 8 日,FAA 批准了一种符合 FAA 波音 737 MAX 9 紧急适航指令的方法,并已提供给受影响的运营商。在运营商完成增强检查(包括左右舱门出口插头、舱门组件和紧固件)并根据检查结果采取纠正措施之前,运营商必须将任何飞机重新投入服务。

2024 年 1 月 9 日,所有带有插头式舱门的波音 737 MAX 9 飞机将继续停飞,直到 FAA 确认每架飞机都可以安全运行为止。为了开始这个过程,波音必须向运营商提供检查和维护的指示。波音昨天提供了初始版本的指示,但由于收到的反馈意见,他们正在进行修订。在收到波音修订版指示后,FAA 将进行彻底审核。

2024 年 1 月 11 日,FAA 正式通知波音,正在进行调查,以确定波音是否未能确保完成的产品符合其批准的设计,并且在符合 FAA 法规的安全操作条件下。此次调查是因为一架波音 737-9 MAX 型号飞机发生了失去“插头”式客舱门和其他差异的事件。波音的制造实践需要符合他们法律责任要求的高安全标准。

需要注意的是,这些信息是初步的,可能会有变化。FAA 强调,飞行公众的安全将决定波音 737-9 Max 飞机恢复运营的时间表。

来源:FAA Newsroom


HN 评论 268 comments | 作者:hef19898 | 12 hours ago #

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

根据您提供的链接,这篇帖子中的评论观点可以总结如下:

评论者指出,近 23 年前,一位波音航空工程师在一次内部技术研讨会上发表了一篇有争议的白皮书,警告同事们关于分包策略的风险,特别是如果波音将过多的工作外包,并且没有为供应商提供足够的现场质量和技术支持。评论者引用了这段话:“总制造商的性能永远不能超过最不熟练的供应商的能力。这些成本并不会因为工作本身是看不见的而消失。”(来源:The Wall Street Journal)

另一位评论者提到了 SLA 反转现象,即主要制造商的性能永远不能超过最不可靠的组件。他指出,为了解决这个问题,需要采取多个冗余但独立的路径来实现成功的结果。然而,对于飞机的结构组件来说,这是困难的,因为每个冗余机制都会增加重量,降低性能和燃油经济性。评论者对于像门插销上的一个松动螺栓这样关键(且潜在容易出错)的部件没有冗余的故障保护感到震惊。他还提到,可能会在最终的联邦航空管理局报告中看到复合错误,这将是非常有趣的阅读。(来源:Sookocheff 的博客)

另一位评论者回应了上述观点,指出飞机的所有结构(以及其他关键的飞行部件)都是冗余的。他还提到,门也是冗余的,并表示在找到确切原因之前,我们必须等待,并找到解决方案。他还提到了一些航空事故的例子,指出每起事故都有多个原因和多个修复措施。(来源:个人经验)

另一位评论者提到了“瑞士奶酪”模型,即每个层次都有漏洞,因此需要多个安全层来减少漏洞对齐的机会,从而避免事故发生。(来源:PMC)

还有评论者提到,虽然没有针对门插销上松动螺栓的冗余故障保护,但有警告灯亮起,表明可能会发生失压,但这些警告被广泛忽视。(来源:KPTV)

综上所述,这些评论观点涉及到供应链管理、冗余设计、安全模型以及对波音 737 MAX 9 飞机事故的讨论。请注意,这些观点来自 Hacker News 上的评论者,可能是个人观点,并不代表官方立场。