分类: 开发

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

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

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

开发

INTERCAL-72编译器源码重现江湖

2025-06-02
INTERCAL-72编译器源码重现江湖

近日,1972年普林斯顿大学学生创作的另类编程语言INTERCAL的原始编译器源码被重新发现并公开。INTERCAL以其反直觉的设计、奇特的语法和对程序员的“恶意”戏弄而闻名,它被认为是“esolang”(深奥编程语言)的鼻祖。此次源码的公开,让开发者可以亲身体验这曾经只存在于传说中的编程语言,并深入了解其对后世esolang的影响。

开发 esolang INTERCAL

形式化方法项目的成本效益分析

2025-06-02

本文作者结合自身经验,探讨了形式化方法(FM)项目在实际应用中遇到的挑战。作者认为,FM项目成功的关键在于成本效益的平衡。许多潜在的FM项目由于成本过高、效益难以量化或短期内无法体现而难以落地。文章指出,成功的FM项目需要尽早交付价值,将复杂的技术结果转化为客户易于理解的语言,并优先考虑低成本的可靠性保障措施,例如测试和代码审查。作者强调,FM并非万能的,应与其他方法相结合,才能更好地提升软件的可靠性和安全性。

开发

Stack Overflow开发者调查:AI时代下的开发者现状

2025-06-01
Stack Overflow开发者调查:AI时代下的开发者现状

Stack Overflow发布了第15届年度开发者调查,探讨了AI时代下开发者的工作满意度、薪资变化以及AI工具的采用情况。调查显示,80%的开发者对工作感到不满意或心安理得,薪资而非远程办公是影响满意度的关键因素。尽管AI工具的采用率上升至76%,但开发者对其的积极评价却有所下降,准确性和误信息成为主要担忧。不同地区、角色和经验的开发者在AI工具的使用和信任度方面也存在差异。调查还关注了开发者的职业变化和社区参与度,旨在全面了解AI对开发者和科技社区的影响。

软件研究的真相:100倍成本谬误与经验主义的缺失

2025-06-01
软件研究的真相:100倍成本谬误与经验主义的缺失

一篇关于软件缺陷修复成本的文章揭示了一个长期存在的谬误:修复软件缺陷的成本随着时间的推移呈指数级增长,这源于一个根本不存在的IBM研究。实际上,现有研究对这一说法缺乏强有力的支持,甚至有些研究表明修复时间并无显著差异。文章呼吁重视软件工程的经验主义研究,强调代码审查、短迭代周期和反馈循环的重要性,并批判了学术界重理论轻实践的现状。

开发

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

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

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

开发

ZenTransfer:为摄影师打造的免费文件传输工具

2025-06-01
ZenTransfer:为摄影师打造的免费文件传输工具

ZenTransfer是一款免费的Mac和Windows文件传输工具,专为专业摄影师设计。它可以清空SD卡并确保3-2-1备份,按日期整理文件到文件夹,上传文件到AWS S3、Azure、Google Cloud Platform等云平台,并通过zentransfer.io中继到多个FTP或云服务。目前该软件处于测试阶段,开发者Chris希望通过收集用户反馈来决定是否继续开发并添加更多功能。

开发 摄影师

Ladybird浏览器项目五月进度报告:性能提升和新特性

2025-06-01
Ladybird浏览器项目五月进度报告:性能提升和新特性

Ladybird浏览器项目五月取得显著进展,合并了261个PR,来自53位贡献者。该项目获得了新的赞助商支持,并正式获得税收豁免资格。本月取得的重大成果包括:新增15961个通过的Web平台测试,WPT运行速度提升显著;实现了新的JavaScript日期解析器,增强了容错能力;完整实现了剪贴板API和可传输流;初步支持共享Worker;用LibTomMath替换了内部BigInt实现,提升了性能;实现了CSS shorthand中的var()和attr();以及针对Speedometer等基准测试进行了性能优化,整体速度提升10%。

Cloudflare 持久对象:构建全球状态化无服务器应用的利器

2025-06-01
Cloudflare 持久对象:构建全球状态化无服务器应用的利器

本文深入探讨了 Cloudflare 持久对象(Durable Objects)这一强大的无服务器技术。持久对象允许开发者在全球范围内创建近乎无限数量的迷你服务器,并具备内置持久化存储和休眠功能。它们能够轻松应对多玩家场景、内置 WebSocket 功能,并支持通过报警机制在 HTTP 请求之外唤醒。持久对象简化了状态化无服务器应用的构建,并通过 SQLite 支持提供高效的数据存储。文章还涵盖了持久对象的架构、API、成本以及实际应用案例,是理解和使用这一革命性技术的全面指南。

开发 持久对象

Amiga OS 的精妙架构:一个值得学习的遗产

2025-06-01

本文探讨了Amiga OS的API和ABI,特别是其独特的直接调用共享库的方式,无需运行时链接。这通过调用库中已知位置的分支指令表来实现。Exec.library始终位于同一地址,它包含获取其他库地址表的功能。这种ABI具有跨语言兼容性,并且即使在现代内存保护机制下也能使用。Amiga OS还以其高效的内核、消息传递机制和Intuition窗口系统而著称,后者允许异步事件处理,避免了现代系统中常见的程序僵死问题。Amiga OS 的设计理念,即使在今天也依然值得借鉴。

开发

Tailscale发布下一代访问控制:Grants

2025-06-01
Tailscale发布下一代访问控制:Grants

Tailscale发布了下一代访问控制系统Grants,它将网络和应用程序权限整合到单一语法中,简化了原有的ACL语法。Grants不仅易于编写和阅读,还增加了新的功能,例如通过tsnet库将Tailscale直接嵌入应用程序,实现基于身份的授权,并支持自定义应用程序权限。此外,Grants新增了via字段,允许用户定义流量出口节点,实现更精细的网络控制。重要的是,Tailscale将永久支持旧的ACL语法,用户无需强制迁移。

开发

Svelte 的状态管理完胜 React:告别 Prop Drilling

2025-06-01
Svelte 的状态管理完胜 React:告别 Prop Drilling

在构建复杂应用时,React 的状态管理常常让人头疼。默认情况下,React 缺乏内置的全局状态管理机制,开发者不得不借助诸如 Zustand 或 Jotai 等第三方库来解决 prop drilling 的问题,这导致项目变得复杂且难以维护。相比之下,Svelte 内置了简洁易用的状态管理方案——Svelte stores。它无需额外依赖,使用直观的语法,极大地简化了状态管理,让开发者可以专注于业务逻辑,而不是纠结于状态传递。这篇文章通过代码示例对比了 React 和 Svelte 在状态管理方面的差异,并阐述了 Svelte stores 的优势。

开发

JavaScript中的“引用”:从Lisp启发的模块化前端开发

2025-06-01
JavaScript中的“引用”:从Lisp启发的模块化前端开发

本文探讨了如何借鉴Lisp语言中“代码即数据”的理念,改进JavaScript在Web应用开发中的模块化能力。作者指出,JavaScript缺乏Lisp的“引用”机制,无法直接将代码片段作为数据处理。然而,通过类似“引用”的机制,例如将客户端模块标识符而不是实际代码发送给客户端,可以实现代码的延迟执行和模块化组合。这使得后端程序能够组合服务器端和客户端行为,保证所有服务器端逻辑在单个请求/响应周期内完成,并支持渐进式流传输,从而提高Web应用的效率和可维护性。

开发

AI“氛围编程”:程序员的末日将至?

2025-06-01
AI“氛围编程”:程序员的末日将至?

借助AI聊天机器人进行“氛围编程”(vibe coding)已成为现实。初创公司BOND仅用一天时间就开发出一个在线生产力管理工具,其创始人Chloe Samaha和合伙人通过AI快速编写软件,展现了AI技术带来的效率提升。这种新方法引发了人们对程序员未来工作的担忧。一些人认为AI将取代程序员,而另一些人则认为AI将改变程序员的工作方式,使他们更专注于复杂任务和创意工作。AI编程工具降低了软件开发的门槛,但也需要经验丰富的程序员进行代码的优化和完善。

开发

大型语言模型引发的垃圾信息泛滥:一场与时间的赛跑

2025-06-01

资深内容审核员在长达二十年的职业生涯中见证了垃圾信息的进化。从简单的垃圾邮件到如今由大型语言模型 (LLM) 生成的伪造评论和摘要,垃圾信息制造者利用AI技术降低了成本,提高了效率。LLM生成的垃圾信息更具迷惑性,难以识别,给内容审核员带来了巨大的挑战,甚至包括语音信息诈骗的出现,这让人担忧未来LLM技术会被滥用于更复杂的诈骗中。文章作者呼吁关注这一日益严峻的问题,并探索应对策略,否则,内容审核将陷入一场与不断进步的AI技术的持久战。

开发

编译优化对内存密集型代码的影响:O3优化并非总是王者

2025-06-01
编译优化对内存密集型代码的影响:O3优化并非总是王者

Johnny's Software Lab的研究表明,在内存密集型代码中,编译优化(例如GCC的-O3)的收益并非总是显著的。他们测试了两种内核:一种具有高指令级并行性(ILP),另一种具有低ILP。结果显示,对于高ILP内核,-O3优化能带来3倍的加速;但对于低ILP内核,优化效果微乎其微,因为内存访问成为瓶颈。这说明,在高度内存绑定的场景下,即使代码指令数量减少,但由于ILP限制,性能提升有限,优化策略需要根据代码特性调整。

浏览器扩展:自定义URL重定向规则

2025-06-01
浏览器扩展:自定义URL重定向规则

这款浏览器扩展程序允许用户基于正则表达式或通配符模式自定义URL重定向规则。它可以用来屏蔽广告、跳转到网站的桌面版本、简化DuckDuckGo搜索等。例如,它可以将YouTube Shorts链接重定向到常规YouTube页面,或者将包含特定关键词的Google搜索重定向到DuckDuckGo。该扩展程序还包含一些预设的规则,方便用户快速上手。

开发 URL重定向

Figma Slides:一场技术演示的滑铁卢

2025-06-01
Figma Slides:一场技术演示的滑铁卢

作者尝试使用Figma Slides制作演示文稿,初体验惊艳:强大的网格视图、自动布局和组件功能让制作过程高效便捷。然而,实际演示却遭遇滑铁卢:离线模式下无法正常播放,动画效果异常,甚至需要反复点击才能推进幻灯片。与之形成鲜明对比的是,作者多年来一直使用的Keynote,尽管功能相对简单,却始终稳定可靠。最终,作者以亲身经历证明了“可靠的旧技术”的价值。

Rust应用中结构化错误的利弊权衡

2025-06-01

本文探讨了在Rust应用中使用结构化错误(例如使用`thiserror`)而非`anyhow`的利弊。作者在维护一个大型Rust Web服务器的经验中发现,自定义错误类型虽然增加了代码量和维护成本,但带来了诸多好处:清晰地展现函数所有可能的错误模式,使代码更易于理解和审查;接口更具描述性;避免代码中重复的错误信息;强制添加错误上下文;允许添加额外数据和功能。然而,自定义错误类型也存在一些缺点,例如需要额外代码、命名困难、维护开销以及潜在的性能问题。作者建议根据实际情况权衡利弊,在大型应用中,结构化错误的优势可能大于其成本。

开发 thiserror

使用 nixos-anywhere 网络安装 NixOS:声明式配置的魅力

2025-06-01
使用 nixos-anywhere 网络安装 NixOS:声明式配置的魅力

作者在十年后重拾NixOS,并分享了其通过nixos-anywhere进行网络安装的经验。与传统的图形化或手动安装方式相比,nixos-anywhere 允许用户在远程机器上声明式地配置和安装NixOS,并通过版本控制管理配置文件,确保系统配置的完整性和可重复性。文章详细介绍了构建自定义安装镜像和使用nixos-anywhere进行远程安装的步骤,并强调了NixOS声明式配置和版本控制带来的便利性。

tldx: 快速生成可用域名

2025-06-01
tldx: 快速生成可用域名

tldx是一个命令行工具,可以快速生成并检查域名的可用性。它支持自定义前缀、后缀和顶级域名(TLD),并能并行检查多个域名。用户只需输入关键词,tldx就能快速返回可用的域名组合,极大地方便了创业者和开发者寻找合适的域名。tldx支持macOS、Linux和Windows系统,安装方式简单,通过brew或手动下载安装包即可使用。

Go语言结构化错误处理:优雅地管理错误和日志

2025-06-01
Go语言结构化错误处理:优雅地管理错误和日志

本文探讨了在中等规模Go程序(特别是HTTP API)中改进错误管理的方法。作者指出,简单的错误字符串限制了日志的结构化能力,难以进行有效筛选。文章介绍了一种基于上下文(context)的结构化错误处理方案,通过在错误中嵌入元数据,实现与结构化日志的无缝集成。该方案利用自定义错误类型和上下文机制,在不增加过多代码负担的情况下,提升了错误信息的丰富度和可读性,方便了问题排查和调试。最后,作者推荐了其开发的开源库`fault`,用于简化这一过程。

Nature编程语言:Go语言的进化?

2025-06-01
Nature编程语言:Go语言的进化?

Nature 是一款开源的通用编程语言,旨在提供优雅简洁的开发体验,让开发者轻松高效地构建安全可靠的跨平台软件。它借鉴了 Go 语言的优点,例如高性能的运行时和垃圾回收机制,同时改进了一些 Go 的不足,例如更强大的类型系统和更便捷的错误处理。Nature 已经达到早期可用版本,支持 Linux 和 macOS 平台,并提供丰富的标准库和示例项目。它适合游戏开发、科学计算、AI、操作系统和 Web 开发等领域。

开发

复活已死的Project Astoria:在不支持的Windows版本上运行Android应用

2025-06-01
复活已死的Project Astoria:在不支持的Windows版本上运行Android应用

本文介绍了如何在从Windows桌面到周年更新及更高版本的各种不支持的Windows版本上运行Project Astoria,该项目是微软已取消的Android应用桥接方案。通过巧妙地利用旧版Windows 10 Mobile构建中的文件和注册表项,并解决时间炸弹问题(过期构建),作者成功地让Android应用在这些系统上运行。这篇文章详细介绍了各个步骤,包括复制文件、导入注册表项、配置服务以及使用修改后的WConnectAgent工具部署APK。最终,作者成功地在Windows 10上运行了Android CPU-Z。

十美元月费的Serverless Lakehouse:DuckLake的实践

2025-06-01
十美元月费的Serverless Lakehouse:DuckLake的实践

本文介绍了如何构建一个基于DuckLake和DuckDB的Serverless Lakehouse,其月费低于10美元。作者通过巧妙地结合Cloudflare R2存储、Cloudflare Containers计算和Neon数据库作为元数据存储,实现了灵活、可扩展且经济高效的Lakehouse架构。文章还详细介绍了部署过程,包括依赖安装、镜像构建、秘密设置和查询运行,并提供了完整的GitHub代码仓库链接。这个案例证明,无需依赖大型云提供商的复杂且昂贵的方案,也能构建满足小型项目或团队需求的灵活Lakehouse。

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

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

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

开发

程序员的探索与利用困境:何时该放弃?

2025-06-01

作者在使用Claude Code将C代码移植到Rust的过程中,过于专注于解决眼前问题,忽略了最初的目标。这让他意识到了一种常见的程序员困境:在“探索”(尝试新方法)和“利用”(解决当前问题)之间难以平衡。作者反思了这种困境,并分享了他通过设置不同时间尺度的反思仪式来解决问题的方法,例如每天花一分钟记录工作内容,每周反思工作方向,每年进行一次更全面的职业规划回顾。这是一种有效管理时间和精力,避免陷入死胡同的策略。

(rjp.io)
开发

ovld: Python 的超高速多重分发库

2025-06-01
ovld: Python 的超高速多重分发库

ovld 是一个为 Python 打造的超高速多重分发库,它使用注解而不是笨拙的 `isinstance` 语句来为每个类型签名编写相同函数的不同版本。与 Python 的 `singledispatch` 不同,它支持多个参数。ovld 速度极快,支持函数、方法、位置参数和关键字参数的分发,甚至还支持依赖类型和代码生成。它尤其擅长递归定义,例如树映射或序列化,并允许创建函数变体和混合体,以实现更灵活的功能扩展。

开发 多重分发

AI 革命:软件开发的下一个时代

2025-06-01
AI 革命:软件开发的下一个时代

本文回顾了软件开发的 30 年变迁,从底层编程到如今 AI 辅助编程的时代。作者亲历了这一过程,见证了面向对象编程、框架库的兴起、云计算和 API 经济的冲击,以及 AI 革命的到来。如今,开发者更像指挥家,引导 AI 生成代码,专注于系统设计、安全、性能优化和业务逻辑。未来,软件开发将更加民主化,但专业开发者的角色将更加重要,他们将专注于更高层次的技能,例如架构设计、安全合规和伦理考量。

开发
1 2 70 71 72 74 76 77 78 213 214