分类: 开发

GitHub Actions工作流中的PyPI令牌泄露攻击

2025-09-20
GitHub Actions工作流中的PyPI令牌泄露攻击

近期,攻击者利用GitHub Actions工作流窃取PyPI发布令牌。攻击者修改了众多代码库中的工作流,将存储在GitHub密钥中的PyPI令牌发送到外部服务器。虽然一些令牌被成功窃取,但攻击者似乎并未在PyPI上使用它们。所有受影响的令牌已被失效,并已通知受影响的项目维护者。建议使用GitHub Actions的Trusted Publishers来保护项目,以防止此类攻击。

开发

MapSCII:在你的终端中探索世界

2025-09-20
MapSCII:在你的终端中探索世界

MapSCII 是一款基于 Node.js 的矢量瓦片到盲文和 ASCII 渲染器,可在支持 xterm 的终端中运行。它支持鼠标拖动缩放、自定义图层样式(兼容 Mapbox Styles)、连接公共或私有矢量瓦片服务器,甚至离线使用本地矢量瓦片/MBTiles。安装简单,支持多种操作系统和终端,并使用了高效的算法以确保流畅的体验。开源且免费,基于 OpenStreetMap 数据,遵循 ODbL 和 CC BY-SA 许可证。

开发

惊声尖叫密码:Unicode字符的奇特应用

2025-09-20
惊声尖叫密码:Unicode字符的奇特应用

本文介绍了一种有趣的密码算法——“尖叫密码”,它利用Unicode中大量的“A”字符变体来加密文本。通过一个简单的字典映射,将标准字母替换为不同的“A”字符,实现加密和解密。代码示例展示了如何使用Python实现该算法,并成功加密和解密了示例文本“SCREAM CIPHER”。这充分利用了Unicode字符集的丰富性,带来了一种独特的加密方式,虽然简单,却足够令人印象深刻。

开发

AI编程助手:代码审查是关键

2025-09-20

大型语言模型擅长生成代码,但缺乏软件工程师的判断力,容易做出糟糕的设计决策。作者以自身经验为例,说明AI编程助手(如Codex、Claude Code)虽然高效,但需要密切监督,防止其走入设计误区。作者认为,精通代码审查,特别是关注代码结构和潜在的改进空间,是有效利用AI编程助手的关键。盲目依赖或过度干预都会降低效率。最终,作者指出,目前AI编程更像“人机协作”,而非完全替代人类。

开发

XMonad寻求Wayland移植开发者

2025-09-20

XMonad开发团队两年来一直在收集贡献,目标是资助一名开发者完成XMonad到Wayland的移植工作。目前已积累足够的资金,但缺乏合适的开发者。现有移植项目代码腐烂严重,且Wayland程序缺乏用于窗口管理的唯一标识符,给移植带来挑战。团队在Discourse论坛寻求帮助,欢迎开发者提交方案。

开发 XMonad

RMCP:通过自然语言进行统计分析的革命性工具

2025-09-20
RMCP:通过自然语言进行统计分析的革命性工具

RMCP是一个强大的模型上下文协议(MCP)服务器,它提供了40多种统计分析工具,涵盖回归分析、时间序列分析、机器学习等多个领域。用户只需通过自然语言与AI助手交互,即可轻松完成复杂的统计建模和数据科学任务。RMCP支持多种数据格式导入导出,并具有智能错误恢复功能,极大地简化了数据分析流程。其内置的自然语言公式构建器可以将自然语言描述转换成R语言公式,并提供可视化结果。无论是商业分析师、经济学家还是数据科学家,RMCP都能显著提高他们的工作效率。

开发

arXivLabs:与社区协作者共建arXiv新功能

2025-09-20
arXivLabs:与社区协作者共建arXiv新功能

arXivLabs是一个开放平台,允许开发者与arXiv社区合作,直接在arXiv网站上开发和分享新的功能。参与者需遵守arXiv的开放、社区、卓越和用户数据隐私等核心价值观。如果你有提升arXiv社区价值的想法,欢迎加入arXivLabs!

开发

Archy:一个可编程的、类似于THE的文本编辑器

2025-09-20
Archy:一个可编程的、类似于THE的文本编辑器

Archy是一个强大的文本编辑器,其命令并非预先设定,而是用户可自定义的Python脚本。这使得Archy拥有高度的灵活性,用户可以创建自定义命令来执行各种操作,例如网络搜索(GOOGLE命令)或发送邮件(EMAIL命令)。 与THE不同的是,Archy的命令以文档形式存在于工作空间中,可以随时编辑和修改,无需重启编辑器。Archy还具有版本控制功能,可以保存工作空间的各个版本,方便用户回滚更改。文章展示了创建和运行自定义命令的示例,并探讨了Archy的设计理念以及其在现代平台上的应用前景。

开发

Rust中寻找最小浮点数索引的四种方法及性能比较

2025-09-20

本文探讨了在Rust中快速查找大型浮点数数组中最小值索引的四种方法。第一种方法使用`min_by`和`total_cmp`,耗时511微秒;第二种方法使用`reduce`,耗时489微秒;第三种方法使用`partial_cmp`,耗时470微秒;第四种方法利用正浮点数的位表示特性,将浮点数转换为`u32`进行比较,耗时仅370微秒,速度提升了30%。 第四种方法在处理仅包含正数的浮点数数组时效率最高,充分利用了浮点数的内部表示,避免了复杂的比较操作。

开发

编译器与续延:一次充满挑战的阅读体验

2025-09-20

本文回顾了Appel 1992年出版的《Compiling with Continuations》一书。作者详细解读了书中关于使用续延进行编译的各种技术细节,包括MiniML语言、词法分析、语法分析、CPS语言、闭包转换、寄存器溢出以及虚拟机等方面。尽管书中缺乏习题,且部分内容在如今看来略显过时,但其对Standard ML和续延的深入探讨仍具有参考价值,特别是对于编译器设计和函数式编程的学习者而言。然而,书中某些部分的实现细节较为模糊,且缺乏对现代编译器技术的讨论,这使得阅读体验较为挑战。

开发 续延

高性能对象存储读取缓存C0:一个兼具内存和磁盘缓存的HTTP API

2025-09-20
高性能对象存储读取缓存C0:一个兼具内存和磁盘缓存的HTTP API

C0是一个高性能的HTTP API,用于缓存对象存储中的不可变blob。它结合了内存和磁盘缓存(基于foyer),支持任何与S3兼容的后端,但自身使用/fetch API,要求精确的Range参数。C0以16MiB的固定页面大小工作,将请求的字节范围映射到页面对齐的查找,合并对同一页面的并发请求,并进行对冲请求以管理对象存储的尾部延迟。它甚至可以尝试冗余存储桶。C0提供丰富的配置选项,包括超时设置、重试机制和存储桶优先级,并通过/stats和/metrics端点提供性能监控数据。Docker镜像也已提供。

开发

R语言包管理器CRAN的逆向依赖检查:一种独特的软件维护方式

2025-09-20
R语言包管理器CRAN的逆向依赖检查:一种独特的软件维护方式

作者作为一名资深软件工程师,起初对R语言及其包管理器CRAN的逆向依赖检查机制感到困惑。CRAN在发布前会检查所有依赖于待发布包的包,这与npm或PyPI等其他包管理器截然不同。作者以自身经验为例,讲述了CRAN的逆向依赖检查如何影响软件维护,以及这种机制如何促进R生态系统的稳定性,并最终改变了作者对软件维护的看法,使其理解了“单体仓库思维模式”的优势,即开发者对所有依赖其代码的项目负责。

开发

Obsidian 的供应链安全策略:谨慎为先

2025-09-20
Obsidian 的供应链安全策略:谨慎为先

Obsidian 是一款笔记软件,为了避免供应链攻击,它采取了一系列严谨的安全措施。这些措施包括:尽量减少依赖的第三方代码数量;对于必要的依赖,采用版本锁定和严格的升级流程,逐行检查变更日志,并进行全面测试;避免运行 postinstall 脚本;以及在升级依赖项时设置较长的延迟,以便社区和安全研究人员发现潜在的恶意版本。通过这些措施,Obsidian 降低了遭遇供应链攻击的风险,确保用户数据的安全和隐私。

开发

Zig语言实现的Redis兼容内存数据库:Zedis

2025-09-19
Zig语言实现的Redis兼容内存数据库:Zedis

Zedis是一个用Zig语言编写的Redis兼容内存数据存储,旨在用于学习和实验。它实现了Redis协议核心和数据结构,专注于简单性、性能和线程安全。支持核心Redis命令(GET、SET、INCR等)、多种数据类型和磁盘持久化(RDB),最新版本还加入了发布/订阅功能。Zedis易于构建和使用,其代码遵循Zig约定,具有类型安全操作、显式错误处理和全面的日志记录。

GameMaker着色器中的HDR和色调映射

2025-09-19
GameMaker着色器中的HDR和色调映射

本文探讨了在GameMaker中使用着色器处理高动态范围(HDR)颜色问题。由于GameMaker默认使用8位无符号归一化颜色,在处理高亮度场景时,例如太阳着色器,容易出现颜色溢出和色彩失真。作者通过对比6位和浮点颜色,以及几种常见的色调映射函数(ACES、Uncharted2、Unreal和tanh),展示了如何避免颜色钳制导致的视觉瑕疵。文章还以MandelBots项目为例,说明了在复杂光照系统中使用HDR表面(surface_rgba16float)的必要性,以提高颜色精度和混合效果。

开发 GameMaker

软件开发中容错处理代码占比之谜

2025-09-19

一位软件工程师发现难以找到关于开发人员在容错处理代码上花费时间的研究数据。虽然普遍认为这部分代码占比很高,甚至可能超过生产系统代码的三分之二,但缺乏可靠的统计数据。这与当前AI研究中对各种指标的精确量化形成对比,突显了软件工程领域一些基本问题的缺失。

Linux内核:多内核架构支持RFC补丁

2025-09-19

Cong Wang提交了一系列RFC补丁,为Linux内核引入了多内核架构支持。该架构允许在单个物理机上同时运行多个独立的内核实例,每个实例运行在专用CPU核心上,共享底层硬件资源。这将提升故障隔离、安全性,并优化资源利用率,甚至实现零停机内核更新。该实现利用kexec基础设施加载和管理多个内核镜像,并通过IPI框架实现内核间通信。目前该补丁系列仅包含基础框架,主要目标是征求社区对高层设计和整体方法的反馈。

开发 多内核 kexec

700+ RSS订阅故障分析:从SSL证书到服务器宕机

2025-09-19

作者维护着700多个RSS/Atom订阅,长期以来不断遭遇各种订阅失效问题。文章总结了常见故障:过期SSL证书、服务器超时、防火墙误拦截、服务器宕机、Feed URL更改、Feed解析失败、Feed删除以及网站删除。作者建议设置SSL证书自动续期提醒、优化服务器性能、调整防火墙规则、设置网站监控、妥善处理URL更改,并定期验证Feed的有效性。文章呼吁博主们不要轻易放弃RSS订阅,因为它并非已死。

开发 Atom Feed

开发者文化正在消亡?好奇心的丧失

2025-09-19
开发者文化正在消亡?好奇心的丧失

本文探讨了软件开发领域文化正在发生的转变。过去,开发者们出于好奇心和对学习的热情,创造了许多如今仍在使用的优秀工具,例如Linux和Git。然而,如今的开发文化更注重指标、营收和规模化,开发者们往往被迫使用自己并不热衷的技术,构建自己并不关心的产品。作者认为这种转变导致了创新和创造力的下降,并呼吁开发者们重新找回好奇心和对创造的热情,即使只是为了解决自身的问题,也要继续创造。

开发

欧盟数据法案终结SaaS的年经常性收入 (ARR)

2025-09-19
欧盟数据法案终结SaaS的年经常性收入 (ARR)

欧盟数据法案(2025年9月生效)将彻底改变SaaS企业在欧洲的运营模式。该法案规定,所有与欧盟客户签订的SaaS合同都将成为“随时取消”的订阅,客户只需提前两个月通知即可取消,这使得传统的年经常性收入(ARR)模式不再可靠。 这意味着SaaS公司需要重新思考定价模式、客户留存策略以及风险管理,例如应对因客户疏忽而导致的非自愿性流失。未来,SaaS企业的成功将更多地依赖于强大的客户关系管理和健壮的运营能力,而非合同条款。

谷歌加强Android开发者验证:离线侧载或受限

2025-09-19
谷歌加强Android开发者验证:离线侧载或受限

谷歌正在加强Android开发者验证机制,未来开发者需要注册身份,未经验证的应用将无法安装。虽然可以通过ADB等方式绕过,但最新Android SDK代码暗示,即使是已验证的应用,在无网络连接的情况下也可能无法侧载。这意味着即使是安全的应用,在离线情况下也可能无法安装,这对于部分用户来说可能造成不便。这项政策将于一年后正式实施,目前尚有时间完善细节并寻找解决方案。

开发

Dynamo AI 诚聘资深 Kubernetes 工程师,助力企业级 AI 部署

2025-09-19
Dynamo AI 诚聘资深 Kubernetes 工程师,助力企业级 AI 部署

Dynamo AI 正在招聘一位资深 Kubernetes 工程师,负责引导企业客户完成从首次接洽到成功生产部署的整个过程。该职位需要深入参与客户互动,利用 Kubernetes、Helm 和云原生工具部署安全可扩展的 AI 系统,并与工程、产品和领导团队合作,将客户反馈直接融入路线图。 候选人需要具备丰富的 Kubernetes 和云平台经验,以及出色的沟通能力,并且需要具有美国政府安全许可或美国国籍,每周需要在旧金山或纽约办公室上班2-3天。

开发 AI 部署

用 SLJIT 为栈式虚拟机实现 JIT 编译器

2025-09-19

作者尝试使用 SLJIT 为其基于栈的 uxn 虚拟机实现 JIT 编译器。起初效果不佳,因为 uxn 的动态跳转频繁导致生成的代码频繁返回到 trampoline,降低了效率。通过一系列优化,包括改进调用约定、栈缓存和寄存器分配策略等,最终实现了 30-46% 的性能提升。文章详细阐述了优化过程和遇到的挑战,以及相应的调试技巧,对于学习 JIT 编译和优化栈式虚拟机具有参考价值。

Deno 发起众筹对抗 Oracle 的 JavaScript 商标

2025-09-19
Deno 发起众筹对抗 Oracle 的 JavaScript 商标

Deno 团队因 Oracle 对“JavaScript”商标的垄断,发起了一场法律战。他们已提交撤销申请,目前正处于关键的证据收集阶段。为了筹集诉讼费用,Deno 启动了 GoFundMe 众筹活动,希望通过专业调查、专家证词等方式证明“JavaScript”是通用术语,而非 Oracle 的品牌。此案不仅关乎 JavaScript 的未来,更关乎商标法的公平性,关系到大型企业是否可以滥用商标权。

开发

iTerm2内置浏览器:终端与浏览器的完美融合

2025-09-19

iTerm2最新版本加入了内置网页浏览器功能,将网页浏览无缝融入其窗口、标签页和分割窗格的现有架构中。用户可以在同一界面内同时进行终端操作和网页浏览。该浏览器支持多种快捷键操作,例如Cmd+点击在新标签页打开链接,Cmd+Shift+点击在新垂直分割窗格打开链接等。此外,它还集成了AI聊天功能,方便用户对当前网页进行总结、分析或提问,并拥有隐私保护模式、弹出窗口拦截和广告拦截等功能。虽然并非旨在取代主浏览器,但它为需要集成终端和网页工作流程的用户提供了极大的便利。

区分时间分配与产能分配:提升团队效率的关键

2025-09-19
区分时间分配与产能分配:提升团队效率的关键

本文探讨了团队产能分配的误区。许多公司将时间分配等同于产能分配,忽略了团队能力的系统性因素。作者指出,产能不仅是时间的累加,还包括团队技能、工具、流程等多方面因素。单纯关注时间分配,忽视了系统优化,导致效率低下。作者建议区分“时间分配”(团队花费时间的地方)和“产能分配”(团队真正交付成果的能力),并考虑各种干扰因素,才能更有效地提升团队效率。

开发 产能分配

LLaMA-Factory:高效微调100+大型语言模型的统一框架

2025-09-19
LLaMA-Factory:高效微调100+大型语言模型的统一框架

LLaMA-Factory是一个开源框架,支持高效微调100多种大型语言模型,包括LLaMA、LLaVA、Mistral等。它集成了多种微调方法(例如LoRA、QLoRA、OFT),并提供可扩展的资源和高级算法,涵盖多轮对话、图像理解等广泛任务。LLaMA-Factory还支持多种推理加速技术,并提供友好的用户界面和API。该项目持续更新,不断支持最新的模型和技术,致力于为开发者提供便捷高效的大型语言模型微调工具。

开发

Rust内核安全增强:Untrusted类型防范用户空间数据攻击

2025-09-19

Linux内核面临来自用户空间、网络和存储设备等多个不受信任数据源的威胁。为了增强安全性,Benno Lossin提出了一种新的Rust API,引入了`Untrusted`类型来标记来自不受信任来源的数据。该类型利用Rust类型系统,阻止意外地基于未经验证的用户空间数据做出决策,从而有效防止潜在的攻击。该API目前已迭代到第四版,并包含用于处理`Untrusted`数据的实用函数和对常用数据结构的支持,例如切片和向量。未来,该API有望在驱动程序的`ioctl()`函数中得到应用,进一步增强内核的安全性,并有望在即将召开的Kangrejos会议上得到进一步讨论。

macOS FileVault 与远程 SSH 解锁

2025-09-19

macOS 的 FileVault 功能启用后,在启动期间及之后,数据卷会被锁定,直到用户密码验证。由于 OpenSSH 配置文件存储在数据卷中,因此此时通常的 SSH 认证方式不可用。但如果启用了远程登录,即使在 FileVault 锁定状态下,仍然可以通过 SSH 密码认证远程解锁数据卷。解锁后,系统会短暂断开 SSH 连接以完成数据卷挂载和相关服务的启动,之后 SSH 服务将恢复正常。此功能自 macOS 26 Tahoe 版本起可用。

开发 FileVault
1 2 3 5 7 8 9 213 214