分类: 开发

冷门但酷炫的X11工具合集

2025-03-24

这篇文章介绍了一系列冷门但有趣的X Window System工具。从3D版的Pong游戏到模拟HP计算器的Free42,从可视化文件系统的FSV2到经典游戏XBill的复刻版XLennart,应有尽有。作者还贴心地提供了每个工具的安装方法,有些甚至提供了GitHub链接或编译方法。无论你是怀旧的程序员,还是对X11系统感兴趣的探索者,这篇文章都值得一读。

开发 Unix工具

超越std::deque:Shift-To-Middle数组闪亮登场

2025-03-23
超越std::deque:Shift-To-Middle数组闪亮登场

Shift-To-Middle数组是一种新型动态数组,它在两端插入和删除元素的效率上远超std::deque、std::vector和链表。它巧妙地利用连续内存存储,提升缓存局部性,并支持SIMD和并行优化。基准测试显示,它在各种场景下都表现出色,特别是在多核处理器和支持SIMD指令集的硬件上。该项目开源,并提供完整的API文档和基准测试报告,欢迎开发者试用和贡献代码。

开发 动态数组

AI 编码助手:软件工程师的身份危机?

2025-03-23

随着AI编码助手的兴起,软件工程师的角色正在发生转变。从单纯的代码编写者,逐渐演变成AI系统的协调者和管理者。这引发了软件工程师群体对自身职业身份的焦虑。文章探讨了这种转变带来的挑战与机遇,并指出软件工程师的核心价值在于解决问题和创造价值,而非仅仅是编写代码。未来,软件工程师需要具备更强的沟通能力、系统思维能力和适应能力,才能在AI时代保持竞争力。

开发 身份危机

Pagure代码库中的多个严重漏洞导致远程代码执行

2025-03-23
Pagure代码库中的多个严重漏洞导致远程代码执行

安全研究人员发现了Pagure(Fedora使用的软件forge)中的多个严重漏洞,这些漏洞允许远程代码执行(RCE)。其中一个漏洞是由于PagureRepo.log()函数中的参数注入导致的,攻击者可以利用它写入任意文件,从而执行任意代码。其他漏洞包括路径遍历和符号链接处理不当。这些漏洞可能被用来修改Fedora软件包的规范文件,从而引入恶意代码。攻击者甚至可以通过覆盖`/srv/git/.bashrc`文件来获得对Pagure服务器的完全控制。Fedora已经迁移到Forgejo来解决这个问题,但这些漏洞凸显了开源软件供应链安全的关键问题。

开发

ttyd:命令行终端网页共享工具

2025-03-23
ttyd:命令行终端网页共享工具

ttyd是一个简洁的命令行工具,允许你通过网页共享终端。它支持多种选项,例如端口指定、网络接口绑定、身份验证、用户权限设置、自定义工作目录等等,方便用户灵活配置。此外,ttyd还支持SSL加密、IPv6以及客户端参数传递等高级功能,为远程终端访问提供安全可靠的保障。

开发 终端共享

Go程序:将安全审计JSON转换为Markdown报告

2025-03-23
Go程序:将安全审计JSON转换为Markdown报告

一个简单的Go程序,将`security-audit.json`转换为`security-audit.md`,方便在CI流水线中使用。该程序生成的报告示例已提供,并附带了CI集成的示例`dependency-audit.yml`和`dependency-audit-only-when-detected.yml`,后者仅在检测到漏洞时才创建GitHub issue。程序支持自定义输入输出文件路径,并可选择在未发现漏洞时失败。

开发

Safari浏览器隐私增强配置指南

2025-03-23
Safari浏览器隐私增强配置指南

本文作者分享了其增强Safari浏览器隐私的配置方案,包括使用iCloud私密中继隐藏IP地址和加密DNS查询,以及Wipr、StopTheMadness Pro和Hush三个扩展程序来拦截广告、阻止追踪和弹出窗口。测试结果显示,该配置能有效对抗网页追踪,但指纹识别仍有提升空间。作者对比了Firefox和Brave浏览器下的隐私配置,最终表示对自己的Safari配置方案较为满意。

开发

YC 加持的房产科技初创公司招募 TypeScript 工程师

2025-03-23
YC 加持的房产科技初创公司招募 TypeScript 工程师

一家获得 Y Combinator S24 批次的初创公司正在寻求一位 TypeScript 工程师,加入其旨在颠覆房地产行业的团队。该公司正在开发一个尖端的 AI 平台,自动化房地产经纪人的工作流程,包括信息传递、交易管理和客户互动。该职位年薪 100k-150k 美元,并提供 0.5%-2.5% 的股权。候选人需要具备使用 AI 快速交付代码、交付面向消费者的功能以及对现有 AI 模型的良好理解等经验。

编写CPU友好的代码:硬件感知编程指南

2025-03-23
编写CPU友好的代码:硬件感知编程指南

本文以快餐店的点餐流程为类比,解释了指令流水线、内存缓存和预测执行三个关键的CPU架构概念。作者指出,理解这些机制并编写与之协同工作的代码(硬件感知编程)能显著提升软件性能。文章深入探讨了如何通过代码调整优化程序,例如循环展开以利用超标量执行,以及优化数据结构布局和访问模式以充分利用缓存,从而提升程序效率。最终,作者强调了编写高效代码的关键在于:先编写清晰可维护的代码,再通过分析确定性能瓶颈,最后运用硬件感知的编程原则针对瓶颈进行优化。

Next.js 中危急的中间件漏洞:CVE-2025-29927

2025-03-23

安全研究人员发现 Next.js(一个流行的 React 框架)的中间件中存在一个严重漏洞(CVE-2025-29927),影响从 11.1.4 到最新版本的几乎所有版本。该漏洞允许攻击者通过操纵 `x-middleware-subrequest` 头部来绕过中间件,从而绕过身份验证、授权和其他安全措施。攻击者甚至可以利用该漏洞进行缓存投毒拒绝服务攻击。Vercel 团队已发布补丁,建议所有 Next.js 用户尽快升级到安全版本。

开发

Ruby 中优雅的 Value Object:Data 类详解

2025-03-23
Ruby 中优雅的 Value Object:Data 类详解

本文深入探讨了如何在 Ruby 中创建 Value Object,并推荐使用现代的 Data 类。Data 类提供了创建不可变、值相等的对象的便捷方法,并支持多种初始化方式,包括关键字参数、位置参数和哈希形式。Data 对象天生不可变,支持按值和类型比较,并允许定义自定义方法,提升代码可读性和可维护性。文章还比较了 Data 类和 Struct,并指出了 Data 类在不可变性方面的优势,以及如何处理嵌套对象的可变性问题。

开发 Data类

强大的GNU命令行参数解析器:argp

2025-03-23
强大的GNU命令行参数解析器:argp

argp是一个遵循GNU标准的Go语言命令行参数解析器,它支持丰富的功能,例如内置帮助信息、结构体字段扫描、复合类型支持(数组、切片、结构体)、嵌套子命令等。argp遵循GNU命令行参数规则,支持短选项、长选项、选项值、多个值、选项组合等。它还提供配置加载、计数、追加等功能,并支持自定义数据源,例如MySQL数据库。开发者可以使用argp轻松构建功能强大的命令行工具,提高开发效率。

零绩效程序员?他才是团队的MVP!

2025-03-23

一家软件咨询公司引入个人绩效指标后,一位名为Tim的程序员的绩效始终为零。经理想要辞退他,但团队负责人却极力挽留。原因是Tim虽然没有交付任何个人代码,但他一直与团队成员结对编程,帮助他们提升技能,提高代码质量,最终提升了整个团队的效率和产出。这故事强调了在复杂系统中单纯衡量个体贡献的局限性,团队协作和整体效益才是关键。

开发 绩效评估

致命Bug追踪:一个RtlRunOnceExecuteOnce的陷阱

2025-03-23
致命Bug追踪:一个RtlRunOnceExecuteOnce的陷阱

一位同事在每周的调试例会上遇到一个棘手的并发问题:关键代码段未能阻止两个线程同时进入,导致TraceLoggingRegister重复注册失败。深入调试发现,问题源于`RtlRunOnceExecuteOnce`的初始化函数`InitializeCriticalSectionOnce`错误地返回了`STATUS_SUCCESS` (0),导致`RtlRunOnceExecuteOnce`认为初始化失败,每次调用都重新初始化临界区,从而引发并发问题。最终解决方案是将返回值改为`TRUE`,或者更简洁地用`SRWLOCK`代替`CRITICAL_SECTION`。这个案例警示了细微的返回值错误可能导致严重后果,并强调了选择合适的同步原语的重要性。

arXivLabs:与社区协作的实验项目

2025-03-23
arXivLabs:与社区协作的实验项目

arXivLabs是一个允许协作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与坚持这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!

开发

LunaJoy招聘高级手动QA测试员

2025-03-23
LunaJoy招聘高级手动QA测试员

LunaJoy,一家专注于女性终身心理健康的远程医疗平台,正在招聘一名高级手动QA测试员。该平台提供心理治疗、药物评估、营养精神病学和身心干预等服务,并积极与妇产科诊所和医疗系统合作。理想候选人应具备软件开发生命周期(SDLC)、测试用例开发、缺陷跟踪工具(如JIRA)和各种测试类型(功能性、回归性、可用性等)的知识。此外,数据库基础知识和API测试经验将成为加分项。LunaJoy提供远程办公、有竞争力的薪酬和福利以及包容的工作环境。

开发 QA测试

紧急!Next.js 15.2.3 安全更新修复重大漏洞

2025-03-22
紧急!Next.js 15.2.3 安全更新修复重大漏洞

Next.js 团队紧急发布了 15.2.3 版本,修复了一个严重的安全性漏洞 (CVE-2025-29927),该漏洞可能导致未经授权访问。漏洞存在于中间件的 `x-middleware-subrequest` 头部处理中,攻击者可能绕过身份验证等关键安全检查。建议所有使用 `next start` 和 `output: 'standalone'` 的自托管 Next.js 应用立即更新到最新版本。官方还发布了 14.x 和 13.x 的补丁版本。

开发

「氛围编程」:炒作还是现实?

2025-03-22
「氛围编程」:炒作还是现实?

最近,「氛围编程」(Vibe Coding)在社交媒体上流行,其理念是依赖大型语言模型(LLM)自动生成代码。文章作者对此持批判态度,认为虽然LLM代理(如Cursor)可以快速生成代码原型,但这只是「氛围编程」的表象。实际上,LLM在处理复杂项目时容易出错,缺乏对细节的关注,难以胜任生产环境下的软件开发。作者以自身经验和多个案例说明LLM代理的局限性,例如容易犯低级错误、无法处理多上下文信息、缺乏长期记忆等。虽然LLM代理可以提高开发效率,但目前还无法完全取代人工,尤其是在需要高可靠性和安全性的场景下。作者总结道,「氛围编程」或许能快速构建原型,但要开发可靠的软件,仍然需要经验丰富的程序员的参与。

开发

安全地执行shell命令:一种新的字符串插值方法

2025-03-22

本文探讨了在使用用户输入执行shell命令时避免命令注入漏洞的安全方法。作者首先展示了一个存在漏洞的例子,然后介绍了三种改进方案:使用`execFile`替代`exec`、使用环境变量传递参数以及使用JavaScript的模板字面量进行安全插值。文章还比较了Python和Swift等其他语言中的类似方法,并提出了一种在Python中使用装饰器和正则表达式实现安全插值的奇技淫巧(不推荐用于生产环境)。

开发 命令注入

矩阵对数与变换插值:用速度场理解变换

2025-03-22

本文探讨了如何平滑地插值变换矩阵T,使其将点x从初始位置移动到T变换后的位置。关键在于利用矩阵指数和对数。通过将T提升到t次方 (T^t = e^(log(T)*t)),我们可以得到时间t时的变换T(t)。更有趣的是,log(T)代表变换的速度场,其与点x的乘积给出该点的速度向量。文章详细解释了这一数学原理,并提供了一个交互式示例和代码链接,展示了如何使用该方法进行变换插值以及如何将矩阵可视化为速度场。

Claude Code 集成 Node.js 调试器:远程实时调试 MongoDB 连接错误

2025-03-22
Claude Code 集成 Node.js 调试器:远程实时调试 MongoDB 连接错误

一个名为`@hyperdrive-eng/mcp-nodejs-debugger`的MCP服务器插件允许Claude Code实时调试运行中的Node.js代码。文章演示了如何使用该插件调试一个连接到MongoDB Atlas数据库的Node.js应用发生的连接错误。通过在Claude Code中设置断点并执行自定义JavaScript代码,开发者可以检查MongoDB配置变量,从而快速定位问题根源,例如错误的凭据或未授权的IP地址。最终解决方案是使用本地MongoDB实例或正确配置MongoDB Atlas的网络访问和凭据。

AmigaDOS脚本中的字符串插值:超越{}的可能性

2025-03-22

这篇博文探讨了AmigaDOS脚本中字符串插值的灵活性和局限性。AmigaDOS允许用户自定义字符串插值符号,默认使用`<`和`>`,但也可以通过`.BRA`和`.KET`指令自定义。文章通过实验验证了多种字符组合,包括可打印字符和不可打印字符(如BEL和NAK),均能成功实现字符串插值。这展示了AmigaDOS脚本解析器的强大能力,以及其在处理非标准字符方面的韧性。

Mozilla.ai开源项目:用AI加速OpenStreetMap地图绘制

2025-03-22
Mozilla.ai开源项目:用AI加速OpenStreetMap地图绘制

Mozilla.ai发布了一个名为OpenStreetMap AI Helper Blueprint的开源项目,旨在利用AI加速OpenStreetMap地图的绘制过程。该项目巧妙地结合了YOLOv11目标检测模型和SAM2分割模型,通过自动识别和勾勒地图要素(例如游泳池)来提高效率。用户只需在项目提供的Colab环境中训练模型,然后进行人工验证,即可显著提升地图绘制速度,同时保持了人工审核的质量控制。这是一个成功的案例,展示了如何利用轻量级、本地友好的AI模型来增强社区驱动项目的效率,避免了对大型语言模型的过度依赖。

开发

Landrun:轻量级Linux沙箱,内核级安全

2025-03-22
Landrun:轻量级Linux沙箱,内核级安全

Landrun 是一款基于 Landlock LSM 的轻量级 Linux 沙箱,以其内核级安全性和低开销而著称。它允许对目录进行细粒度的访问控制,支持读写路径,并可选地允许对允许的路径执行操作。此外,它还提供 TCP 网络访问控制(绑定和连接)。Landrun 支持 Linux 内核 5.13 或更高版本(启用 Landlock LSM),Linux 内核 6.8 或更高版本才能使用网络限制功能。开发者可以轻松地通过命令行工具配置沙箱的权限,例如只读、读写和执行权限,以及指定允许绑定的 TCP 端口和允许连接的 TCP 端口。Landrun 还提供最佳努力模式,以便在不支持所有请求限制的旧内核上优雅地降级。

开发 Landlock LSM

两份报告揭示开源软件CRA合规的知识差距和最佳实践

2025-03-22
两份报告揭示开源软件CRA合规的知识差距和最佳实践

Linux基金会发布两份重磅研究报告,探讨开源社区应对欧盟网络韧性法案(CRA)的策略。第一份报告分析了三个Linux基金会项目如何满足CRA最低合规要求,并分享了最佳实践。第二份报告则揭示了开源生态系统中对CRA的认知差距,许多受访者对CRA不熟悉,缺乏合规准备。报告建议制造商更积极参与开源安全,并呼吁更多资金和法律支持来促进安全实践。

FizzBee:一个基于Starlark的正式规范语言实践

2025-03-22
FizzBee:一个基于Starlark的正式规范语言实践

作者使用FizzBee,一种新颖的基于Starlark的正式规范语言,对互斥锁算法进行了建模,探索了Redlock算法中存在的问题。文章通过对关键代码段、锁机制、租赁机制和栅栏令牌的建模,逐步揭示了Redlock算法的局限性,并最终发现栅栏令牌并不能完全解决互斥问题。作者总结了FizzBee的易用性和一些不足,并强调了形式化规范在算法设计中的重要性。

开发

深入PyTorch内部:Tensor、Autograd和内核编写指南

2025-03-22

这篇博文详细解读了PyTorch的内部机制,涵盖了Tensor数据结构、自动微分(Autograd)以及内核编写。文章首先解释了Tensor的底层实现,包括stride的概念以及如何利用它创建Tensor视图。接着,它深入探讨了Autograd的工作原理,展示了如何通过反向传播计算梯度。最后,文章提供了编写PyTorch内核的实用指南,包括如何利用PyTorch提供的工具进行错误检查、数据类型分发和并行化处理。这是一篇面向有一定PyTorch使用经验,并希望深入了解其内部机制或贡献代码的开发者的优秀教程。

开发

Linux系统`/lib`目录意外删除后的恢复方法

2025-03-22

作者讲述了因意外删除Linux系统关键目录`/lib`后,如何利用系统自带工具或静态编译的小程序,通过网络传输替换关键文件恢复系统的方法。文章详细介绍了使用busybox、bash内置函数、以及利用C语言编写并静态编译极小巧的程序从另一台机器传输文件进行恢复的步骤和技巧,避免了重装系统的麻烦。

开发

FastOpenAPI:Pydantic驱动的OpenAPI神器

2025-03-22
FastOpenAPI:Pydantic驱动的OpenAPI神器

FastOpenAPI是一个基于Pydantic和多种框架的OpenAPI Schema生成与集成库,旨在提供类似FastAPI的开发体验。它支持Falcon、Flask、Quart、Sanic、Starlette和Tornado等框架,并通过代理路由实现FastAPI风格的路由。只需简单的pip安装,即可快速上手,并通过Swagger UI和ReDoc UI方便地查看生成的文档。项目还提供丰富的示例和基准测试,方便开发者快速上手和评估性能。

开发 框架集成

告别复杂:应用架构的演进与轻量级编排库的崛起

2025-03-22
告别复杂:应用架构的演进与轻量级编排库的崛起

从90年代的三层架构到如今微服务盛行,应用架构经历了翻天覆地的变化。为了协调分布式后端操作,编排层应运而生,但现有的DIY方案复杂难维护,而专用编排系统又引入了新的复杂性。本文介绍了一种新方法:将编排功能集成到轻量级库中,并利用数据库持久化执行状态,从而消除单独的编排层,简化开发、测试和调试流程,最终实现更可靠、更高效的应用架构。

开发 应用架构
1 2 131 132 133 135 137 138 139 213 214