分类: 开发

30分钟内用Ruby构建极简装饰器

2025-06-12
30分钟内用Ruby构建极简装饰器

作者在Rails项目中需要为Teacher模型添加视图相关的逻辑,但由于版本兼容性问题,无法使用draper gem。于是,他决定从零开始构建一个极简的装饰器。起初,他添加了许多额外行为,但最终将其抽象化。文章详细介绍了使用Ruby的method_missing方法处理未定义方法调用,以及如何通过继承和SimpleDelegator简化装饰器的实现,最终构建出一个简洁高效的装饰器,并解决了与Rails默认行为的集成问题。

开发 Decorator

CppNorth 2025 大会筹备进展:嘉宾阵容豪华,志愿者招募中

2025-06-12
CppNorth 2025 大会筹备进展:嘉宾阵容豪华,志愿者招募中

CppNorth 2025 C++ 开发者大会正在紧锣密鼓地筹备中!大会公布了最新的日程安排,并邀请到 Sheena Yap Chan 和 Kate Gregory 等重量级嘉宾担任主题演讲人。此外,大会还开放了志愿者招募,并公布了在多伦多 King Edward 酒店举办的住宿信息。主办方收到了近 100 个演讲提案,最终将挑选 20% 的优秀提案进行展示。JetBrains、Autodesk 等公司也提供了赞助支持。

开发 CppNorth

C++26反射:值基模型对比类型基模型

2025-06-12

本文比较了C++26中基于值的反射模型和基于类型的反射模型在解决仅反射才能解决的问题上的差异。作者通过实现一个`is_structural`类型特征来展示两种模型的代码风格和复杂度差异。值基模型的代码更简洁,更接近普通程序的编写方式,而类型基模型则需要更多的模板元编程技巧。文章还讨论了两种模型在处理递归和保护实例化方面的差异,并最终得出结论:值基模型虽然引入了新的语法,但简化了反射编程,使代码更易于理解和维护。

开发

从Source Depot到Git:微软Office的史诗级代码库迁移

2025-06-12
从Source Depot到Git:微软Office的史诗级代码库迁移

本文讲述了微软Office团队历时数年将庞大代码库从过时的Source Depot迁移到Git的传奇故事。迁移过程充满挑战,包括构建“平行宇宙”同步代码库、证明两个系统功能等效、以及与4000多名工程师的沟通协调。作者详细描述了迁移的各个阶段,包括克服Source Depot与Git之间差异、构建虚拟文件系统以优化性能、以及通过培训提高工程师的Git使用技能等。最终,迁移取得成功,极大地提升了开发效率和代码质量,也为大规模技术迁移提供了宝贵的经验教训。

开发

EndBOX:怀旧复古的极简编程电脑

2025-06-12
EndBOX:怀旧复古的极简编程电脑

ReadyRUN发布了EndBOX原型机,一款旨在回归编程本质的微型电脑。它预装了复古风格的EndBASIC环境,启动速度极快,并直接进入命令行界面,没有冗余的系统。EndBOX专注于硬件和编程学习,目标用户是开发者和教育工作者。目前有两个原型:标准版配备7寸触摸屏,微型版则采用128x128 LCD屏。两者均支持Wi-Fi和蓝牙,并基于NetBSD系统。作者寻求社区支持,以决定EndBOX未来的发展方向,包括硬件配置、软件功能等。

开发

第一周就知晓好坏?一位资深工程师的职场感悟

2025-06-12
第一周就知晓好坏?一位资深工程师的职场感悟

一位资深工程师分享了她多年职场经验:在每个新工作的第一周,她就能直觉地判断这份工作是否适合自己。这种直觉并非总是准确,但长期来看,它极具参考价值。她用几个具体的例子说明了这种“第一印象”的可靠性,并指出对于管理者而言,价值观是否匹配尤为重要,因为管理者需要全身心地投入工作,而非仅仅完成任务。文章最后,她用“鸡和猪”的比喻来阐述管理者与工程师的不同:工程师是“参与者”,而管理者是“奉献者”。

开发 职场经验

用眼球控制网页:低成本自制“苹果Vision Pro”体验

2025-06-12
用眼球控制网页:低成本自制“苹果Vision Pro”体验

受苹果Vision Pro启发,作者以不到3500美元的成本,利用WebGazer.js库和巧妙的网页设计,实现了仅用眼球控制网页交互的Eyesite项目。通过九点校准眼球追踪,并隐藏鼠标光标和眼球追踪指示点,增强沉浸感。为弥补眼球追踪精度不足,Eyesite采用超大UI设计和屏幕尺寸限制,提升用户体验。虽然代码并非完美,但该项目展现了创意和技术结合的魅力,源码已开源。

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

2025-06-12
arXivLabs:与社区协作者合作的实验性项目

arXivLabs是一个框架,允许合作者直接在arXiv网站上开发和共享新的arXiv功能。参与arXivLabs的个人和组织都认同并接受了我们开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。 有一个项目的想法可以为arXiv社区增加价值吗?了解更多关于arXivLabs的信息。

开发

苹果开源macOS原生容器工具Container:挑战Docker?

2025-06-11
苹果开源macOS原生容器工具Container:挑战Docker?

苹果在GitHub上开源了一款名为Container的开发者工具,它提供了一种在macOS上直接运行Linux容器的新方法。不同于Docker或Podman,Container深度集成macOS系统框架,为每个容器创建轻量级虚拟机,提升安全性与隐私性。虽然存在一些小问题,例如内存管理和老版本macOS兼容性,但它代表苹果对原生Linux容器开发的认真投入,为macOS开发者提供了更本土化的选择。

开发

Python绘制阻抗图代码详解

2025-06-11

这段Python代码利用matplotlib库绘制了器件阻抗的实部和虚部的幅度图。代码首先定义了两个函数`plot_re_mag`和`plot_im_mag`,分别用于绘制实部和虚部的幅度,并对坐标轴进行了格式化处理,例如将频率单位转换为GHz,幅度单位转换为dB ohm。最后,使用`plt.subplots`创建子图,并调用这两个函数绘制完整的阻抗图。代码简洁高效,适合用于数据分析和可视化。

开发 matplotlib

GitHub诞生十亿代码库:里程碑与“屎”事件

2025-06-11
GitHub诞生十亿代码库:里程碑与“屎”事件

GitHub官方庆祝其平台诞生第10亿个代码库,并公布了该代码库的名称——“shit”(屎)。这一事件引发热议,既象征着GitHub作为全球最大代码托管平台的巨大规模,也引发了对代码库命名规范的讨论。虽然代码库名称略显粗俗,但其背后蕴含着GitHub社区的活力与创造力。

开发

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

2025-06-11
arXivLabs:社区协作的实验性项目

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

开发

Shaped 正在寻找一位资深工程主管

2025-06-11
Shaped 正在寻找一位资深工程主管

Shaped 正在招聘一位工程主管,负责扩展其工程团队并引领产品技术愿景。理想候选人拥有8年以上软件工程经验,计算机科学相关专业学士、硕士或博士学位,并具备优秀的沟通能力和解决问题的能力。职责包括制定技术战略、管理团队、监督产品开发、跨职能协作以及流程优化和基础设施监管。这是一个领导核心团队、塑造产品路线图并确保平台可靠性和可扩展性的机会。

开发 技术领导

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

2025-06-11
arXivLabs:与社区协作者合作的实验项目

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

开发

湾区初创公司招募后端工程师:百万级数据点自动化系统

2025-06-11
湾区初创公司招募后端工程师:百万级数据点自动化系统

一家位于旧金山湾区的初创公司正在招聘一名应届毕业生加入其后端工程团队,负责构建处理每月超过1亿数据点的生产自动化系统。你将参与真实的系统开发,学习经验丰富的工程师的工作方法,并从第一天起就为有意义的项目做出贡献。工作内容包括构建Python服务来自动化数据收集,连接不同的服务,处理错误,确保数据可靠地流经管道,创建内部工具,以及进行生产调试。理想的候选人应具备扎实的编程基础、Python经验、解决问题的能力以及DevOps/系统管理员方面的兴趣。公司提供丰厚的福利,包括午餐、无限休假、401k、公司支付的医疗保险以及10万至12万美元的年薪和股权。

开发

编译器资源管理器成本透明度:每月800万次编译仅需3100美元

2025-06-11

Compiler Explorer项目公开其运营成本:每月约3100美元,用于处理约800万次后端编译。成本主要用于AWS(80%)和运营支出(20%),包括监控工具、办公费用和社区支出。通过各种优化措施,例如使用Spot实例和精心安排构建基础设施,有效降低了成本。尽管编译量有所下降,但基础设施成本相对稳定。该项目每月收入约4475美元,来自Patreon、GitHub Sponsors、PayPal捐款和商业赞助,多余资金用于储备。作者强调了成本透明度和社区支持的重要性。

摆脱Docker:使用Python Wheel文件部署项目到GCP

2025-06-11
摆脱Docker:使用Python Wheel文件部署项目到GCP

为了直接访问机器硬件和GPU驱动,作者放弃了Docker,选择构建可运行的Python Wheel文件并部署到GCP。文章详细介绍了使用Poetry构建Wheel文件、创建GCP Artifact Registry存储库、配置Poetry发布到注册表以及在VM实例中下载并运行Wheel文件的步骤,并解决了版本控制和依赖管理等问题。这提供了一种无需Docker的Python项目部署方案,尤其适用于需要直接访问硬件资源的场景。

开发 GCP

Markdown Ninja:一命令发布网站和邮件简报

2025-06-11
Markdown Ninja:一命令发布网站和邮件简报

Markdown Ninja 是一款轻量级的 Markdown 内容管理系统 (CMS),旨在简化博客、网站和邮件简报的发布流程。告别复杂的静态网站生成器、主题定制和 CI/CD 流程,只需一个 Docker 命令即可完成发布。它支持快速上手,2 分钟内即可开始使用。该项目注重安全,并提供详细的文档和多种许可证选项。

开发

基于Mapbox API的Node.js地理空间智能服务器

2025-06-11
基于Mapbox API的Node.js地理空间智能服务器

这个Node.js服务器利用Mapbox的Model Context Protocol (MCP),为AI应用提供强大的地理空间情报。它允许AI访问Mapbox的全球地理编码、兴趣点搜索、多模式路线规划、出行时间矩阵、等时线生成和静态地图图像等功能。无论是构建AI旅行助手、物流优化器还是位置推荐系统,这个服务器都能提供必要的空间智能支持,并兼容Claude Desktop和VS Code等流行客户端。需要Mapbox访问令牌才能使用。

开发

s5cmd: 闪电般快速的 S3 对象存储工具

2025-06-11
s5cmd: 闪电般快速的 S3 对象存储工具

s5cmd 是一款速度惊人的 S3 和本地文件系统操作工具,它支持多种操作,包括文件制表符补全和通配符支持,非常适合处理大量文件。与其他 S3 工具相比,s5cmd 的速度优势显著,上传速度比 s3cmd 快 32 倍,比 aws-cli 快 12 倍;下载速度可以达到 40Gbps 网络的饱和状态。它支持各种对象管理任务,包括列出存储桶和对象、上传、下载或删除对象、设置服务器端加密、设置访问控制列表、打印对象内容、使用 SQL 表达式选择 JSON 记录等等。s5cmd 支持多种安装方式,包括预构建二进制文件、Homebrew、MacPorts、Conda 和从源代码构建。它还支持 Google Cloud Storage 和其他兼容 S3 API 的服务。

开发

GitHub Actions策略绕过漏洞:看似安全的策略,实则不堪一击

2025-06-11

GitHub Actions的策略机制旨在限制可用于仓库、组织或整个企业的Actions和可重用工作流的类型,但该机制很容易被绕过。作者发现,通过在运行器文件系统中克隆Actions仓库,然后使用本地路径引用来运行相同的Action,可以轻松绕过策略限制。这使得看似安全的策略形同虚设,作者呼吁GitHub修复此漏洞,以避免开发者误以为策略提供了实际不存在的安全边界。

开发 策略绕过

用智能体编程:超越LLM的代码生成

2025-06-11

本文探讨了利用智能体进行编程的革命性方法。作者将智能体定义为包含LLM调用的for循环,赋予LLM访问编译器、文件系统和测试套件的能力。这与仅使用LLM进行编程(类似于在白板上编程)形成对比,智能体通过环境反馈极大地提高了代码生成的效率和准确性。作者分享了使用智能体进行GitHub App身份验证和处理SQL中JSON的案例,展示了其在提高生产力和处理复杂任务方面的优势。尽管智能体需要更多时间和计算资源,但其效率提升和降低人为错误的潜力使其成为未来编程的强大工具。

开发

Mozilla Firefox OS的兴衰:一场雄心勃勃的移动操作系统冒险

2025-06-11
Mozilla Firefox OS的兴衰:一场雄心勃勃的移动操作系统冒险

本文讲述了Mozilla开发Firefox OS(最初名为Boot to Gecko)的历程。面对苹果和谷歌的移动操作系统霸权,Mozilla试图通过一个基于Android的开放源代码操作系统挑战市场,但最终以失败告终。文章回顾了项目从最初的雄心壮志到后来的资源倾斜、质量下降以及最终被放弃的全过程,并反思了Mozilla在战略、开发和市场策略上的失误。尽管项目失败,作者认为拥有完整技术栈的想法本身是正确的,但过快的开发节奏和对现有产品的忽视最终导致了Firefox OS的失败。

开发 Firefox OS

s3mini: 超轻量级 S3 客户端,速度飞快

2025-06-11
s3mini: 超轻量级 S3 客户端,速度飞快

s3mini 是一个超轻量级的 TypeScript S3 兼容对象存储客户端,大小仅约 14KB,速度比其他客户端快约 15%。它支持 Node.js、Bun、Cloudflare Workers 等边缘计算平台,并已在 Cloudflare R2、Backblaze B2、DigitalOcean Spaces 和 MinIO 等平台上进行了测试。s3mini 提供了常用的 S3 API,例如创建、获取、删除对象等,并支持分块上传。它不依赖任何第三方库,并使用 AWS SigV4 签名,无需预签名请求。虽然不支持浏览器环境,但对于需要在资源受限的环境中快速访问 S3 兼容存储的开发者来说,s3mini 是一个理想的选择。

开发

证明国际象棋魔法位板的哈希表打包问题是NP完全的

2025-06-11

本文证明了国际象棋魔法位板优化中的哈希表打包问题是强NP完全问题。作者通过将3-划分问题规约到哈希表打包问题,证明了寻找最小空间的哈希表打包方案是计算上难以解决的。这意味着在实践中,只能使用启发式算法而非寻找最优解。这对于国际象棋引擎的性能优化具有重要意义,因为魔法位板是高效生成棋步的关键技术。

开发

left-pad 事件八周年:一次源于原则的反抗

2025-06-11

八年前的 left-pad 事件至今仍为人津津乐道。作者回顾了事件始末:并非一时冲动,而是源于 NPM 违反自身规则,为迎合 Kik Messenger 的压力而移除其 npm 包的抗议。作者认为,NPM 的行为漠视开源社区精神,其处理方式粗暴且缺乏沟通。事件后,作者离开美国,在世界各地旅行,并从开源转向商业领域,人生经历了“死亡”与“重生”。

开发 left-pad

GNOME 对 systemd 依赖性增强:非 systemd 环境的挑战

2025-06-11

GNOME 桌面环境正逐步增强对 systemd 的依赖,这将给非 systemd 环境(如 BSD 系统)带来挑战。GNOME 49 将移除 gnome-session 内置的服务管理器,并依赖 systemd 的 userdb 进行用户管理。这要求非 systemd 发行版实现 systemd 的替代方案,例如 elogind 和 eudev,并为 userdb API 提供必要的支持,否则 GNOME 将无法正常运行。文章详细介绍了需要替换的 systemd 组件以及相应的应对策略,并建议使用 systemd 或回退到 GNOME 48 版本。

开发

深入浅出调试器:揭秘软件开发的幕后英雄

2025-06-11
深入浅出调试器:揭秘软件开发的幕后英雄

本文是关于调试器架构的系列文章的第一部分,作者从自身多年的调试器开发经验出发,深入探讨了调试器的核心原理和重要性。作者认为,调试器不仅仅是程序出错时才用到的工具,更是理解程序运行、验证代码正确性的强大武器。文章详细介绍了调试器的工作机制,包括与内核的交互、CPU调试特性、断点设置、代码单步执行等,并展望了未来调试器的发展方向。

开发 程序运行

FreeBSD 14.3稳定版发布:ZFS升级,WiFi驱动改进

2025-06-11

FreeBSD 14.3稳定版已发布,作为FreeBSD 15发布前的过渡版本,它包含了许多来自FreeBSD 15的改进。主要更新包括:升级ZFS至OpenZFS 2.2.7;基于Linux 6.14内核代码合并Realtek RTW88和RTW89 WiFi驱动;改进LinuxKPI代码,支持加密卸载以及802.11n和802.11ac标准;Intel IX以太网驱动程序新增对x550 1000BAS-BX SFP模块的支持;更新了XZ、OpenSSH、OpenSSL等众多软件包。此外,旧的系统控制台驱动程序Syscons已被弃用。

开发

Sophie Germain 素数项目:一个用于收集和分发特殊素数的数据库

2025-06-11

Sophie Germain 素数项目是一个致力于收集、分析和分发 Sophie Germain 素数的数据库项目。这类素数 p 满足 2p + 1 也是素数(称为安全素数)的条件。该项目还对安全素数((p-1)/2 也是素数)和 Blum 素数 (p ≡ 3 (mod 4)) 进行分类。Sophie Germain 素数广泛应用于公钥密码学和素数测试。项目维护者 Kamila Szewczyk 利用该项目研究 Blum-Blum-Shub 随机数生成器等算法。项目提供 API 接口,允许用户提交和查询素数,但需要注意 API 的速率限制。

开发
1 2 3 4 5 7 9 10 11 154 155