分类: 开发

Sentry:挑战传统,服务百万级企业客户的新型企业软件公司

2025-02-11

Sentry 是一家颠覆传统的企业软件公司,拥有超过 50,000 个付费客户,远超 New Relic 和 Datadog 等上市公司。文章作者阐述了 Sentry 的成功之道:专注于构建每个客户都想要的产品,以合理的价格销售,并服务于“财富 500,000”的客户群体。这与传统企业软件公司专注于大型客户的模式截然不同。Sentry 采用产品驱动增长模式,注重社区建设、品牌推广和低摩擦的客户体验,而不是依赖大规模销售团队。作者认为,这种模式不仅可行,而且高效可衡量,为企业软件公司提供了一种新的发展路径。

(cra.mr)
开发 社区建设

Canonical发布12年长期支持的Kubernetes LTS版本

2025-02-11
Canonical发布12年长期支持的Kubernetes LTS版本

Canonical宣布推出其Kubernetes 1.32 LTS版本,提供长达12年的安全维护和企业支持,涵盖裸机、公共云、OpenStack、Canonical MicroCloud和VMware等多种环境。此版本易于安装、操作和升级,并集成了一流的开源网络、DNS、网关、指标服务器、本地存储、负载均衡器和入口服务。企业可以选择每四个月升级一次以获取最新功能,或选择12年长期支持版本以保持稳定性,满足不同需求。该版本还支持FedRAMP合规性,并与Ubuntu Pro结合使用,提供更全面的开源堆栈安全保障。

开发 LTS Canonical

为什么“无聊”的技术才是最好的?

2025-02-11
为什么“无聊”的技术才是最好的?

本文作者以NetBSD为例,探讨了在系统管理和架构中,“无聊”的技术为何是最佳选择。作者认为,“无聊”意味着可预测性,减少了意外故障和维护难题。成熟的技术拥有完善的文档、活跃的社区和可靠的记录,而非仅仅是年龄的堆砌。虽然普及度并非衡量“无聊”的标准,但成熟的技术通常更容易理解和维护,从而降低成本并提高可靠性。作者最后总结道,NetBSD之所以“无聊”,恰恰是其最大的优点。

开发

Quarto:超越R Markdown的文学化编程利器

2025-02-11

Quarto 是一款基于 Pandoc 的文学化编程工具,它允许你将程序逻辑与代码片段和宏以人类可读的方式结合起来。它不仅支持 R Markdown 的功能,还扩展了对 Python、Julia 等多种语言的支持,并提供丰富的文档格式输出选项。通过简单的 Markdown 语法,你可以轻松创建包含可执行代码块、图表、表格等元素的文档,并将其渲染成 HTML、PDF 等多种格式。Quarto 还提供了强大的自定义选项,例如代码折叠、执行选项等,方便你根据需要调整文档的呈现效果。

systemd将支持从HTTP直接启动磁盘镜像

2025-02-11

systemd 的主要开发者 Lennart Poettering 正在开发一项新功能,允许 systemd 在 Linux 启动过程中直接从初始 RAM 磁盘 (initrd) 中通过 HTTP 下载磁盘镜像并启动。这项功能基于 systemd 最近添加的其他功能,允许通过 HTTP 下载根磁盘镜像,将其附加到循环设备并使其可挂载。最终,这项工作将允许 UEFI 指向单个 URL,从中加载统一内核镜像 (UKI),并依次加载根文件系统并启动。Poettering 目前的用例是简化物理设备测试,以便能够在系统启动时通过 HTTP 网络快速轻松地启动新的根文件系统镜像。这项正在进行中的 pull request 包含了允许从通过 HTTP 获取的根文件系统启动的初步代码。Lennart 还在考虑未来扩展它以支持 NVMe-over-TCP 和其他功能。

开发

Extend:解放你的键盘,提升你的效率

2025-02-11

Extend 是一种强大的键盘布局增强方案,它将常用的导航和编辑键映射到主键盘区域,从而提高工作效率。通过巧妙的组合键,你可以轻松实现文本编辑、窗口管理、浏览器操作等多种功能,无需频繁使用鼠标。文章详细介绍了 Extend 的使用方法、快捷键组合以及不同平台下的配置方法,并分享了一些高级技巧,例如利用 Tap-Extend 实现单键操作。作者将 Extend 比作一种神奇的魔法,能够彻底改变你的计算体验。

开发

静态单赋值 (SSA) 编译器优化技术:从1980年代到2023年的演进

2025-02-11
静态单赋值 (SSA) 编译器优化技术:从1980年代到2023年的演进

本文回顾了静态单赋值 (SSA) 编译器优化技术的几十年发展历程。从最初的Code Motion和Global Value Numbers论文开始,到Cytron论文提出的最小化phi指令方法,再到Brandis和Mössenböck提出的单遍生成方法,以及Click和Paleczny的Sea of Nodes IR,文章梳理了多个重要论文,并探讨了不同方法的优缺点。此外,文章还提到了Appel对函数式编程与SSA的关联研究,以及Aycock和Horspool的迭代删除phi节点方法,以及近年来基于抽象解释的SSA转换方法。文章最后列举了其他相关的论文和资源,为读者深入了解SSA提供了更全面的视角。

Btrfs文件系统分配器提示:提升混合存储性能

2025-02-11
Btrfs文件系统分配器提示:提升混合存储性能

Btrfs文件系统新增分配器提示功能,允许用户指定元数据和数据存储设备,优化混合存储(如SSD和HDD)的性能。通过将元数据分配到速度更快的SSD,数据分配到HDD,提升文件系统响应速度和存储效率。该功能需要打补丁的内核,并通过命令行工具配置。需注意,不当配置可能导致空间不足错误,建议谨慎使用并监控存储空间。

开发 混合存储

Basecamp:拥抱不确定性,让项目管理更人性化

2025-02-11
Basecamp:拥抱不确定性,让项目管理更人性化

Basecamp 摒弃了项目管理中对精确数据的执迷,转而拥抱模糊性和主观性。文章批判了那些追求精确数字却忽略项目实际情况的做法,认为“63%完成”毫无意义,而“预计下周二完成”则更贴近实际。Basecamp 推出的 Hill Charts 和 Move The Needle 等功能,允许用户通过直观的图形标记来表示项目进度,强调主观判断而非机械计算。文章认为,在创意工作中,主观性和生产力并非对立面,反而相辅相成。Basecamp 将持续改进,以更贴近现实的方式来管理项目。

开发团队的趣味彩蛋:让软件开发充满乐趣

2025-02-11
开发团队的趣味彩蛋:让软件开发充满乐趣

一个软件开发团队在发布新产品Tapestry的过程中,为了缓解开发压力,融入许多趣味彩蛋。从最初的BETA标签上的旋转小玩意,到根据用户反馈动态生成的个性化应用图标“迪斯科”,开发团队用各种创意小惊喜与用户互动,并巧妙地将这些彩蛋融入测试和bug修复流程中。文章生动地展现了开发团队的幽默感和创造力,以及如何将乐趣融入软件开发的整个过程中。

开发 趣味彩蛋

用tmux解数独:一个疯狂的Python编译器项目

2025-02-11
用tmux解数独:一个疯狂的Python编译器项目

作者先前曾将Python编译到tmux中运行,这次他更进一步,用tmux编写了一个数独求解器。他没有使用数组或字符串等高级数据结构,而是巧妙地利用tmux的变量和键绑定,将数独的每个格子映射到tmux的选项,通过遍历所有可能性来求解。虽然效率极低,但这个项目展示了tmux的强大功能和作者的创造力,是一个典型的黑客精神的体现。

开发

Dagger Cloud v3:用 Go 和 WebAssembly 重写前端,性能提升显著

2025-02-11
Dagger Cloud v3:用 Go 和 WebAssembly 重写前端,性能提升显著

Dagger 团队将他们的 Dagger Cloud Web 界面从 React 重写为使用 Go 和 WebAssembly 的 v3 版本。此举旨在统一两个 UI 代码库(终端 UI 和 Web UI),提高开发效率并提升性能。尽管 Go 和 WebAssembly 的组合并非主流,但通过使用 Go-app 框架并进行大量的内存优化,他们成功地构建了一个更快速、更流畅且与终端 UI 一致的用户界面。该项目还揭示了使用 Go 和 WebAssembly 的一些挑战和机遇,例如内存限制和缺乏现成的组件库。最终,Dagger Cloud v3 实现了性能提升,并为团队带来了更高的开发效率。

开发

nocc:大幅提升大型C++项目编译速度的分布式编译器

2025-02-11
nocc:大幅提升大型C++项目编译速度的分布式编译器

nocc是一个分布式C++编译器,通过将编译任务分发到远程机器,极大地加快了大型C++项目的编译速度,尤其是在CI/CD和多人协作开发场景下。它利用共享远程缓存,避免重复编译,在VK.com的KPHP项目中取得了2-9倍的性能提升。nocc易于集成到任何构建系统中,并支持预编译头文件,显著减少了编译时间。

Brave浏览器新增自定义脚本功能:掌控你的浏览体验

2025-02-11
Brave浏览器新增自定义脚本功能:掌控你的浏览体验

Brave浏览器1.75版本为桌面用户引入了“自定义脚本”功能,允许高级用户向网站注入JavaScript代码,从而深度定制浏览体验。这项功能类似于Tampermonkey和Greasemonkey扩展,用户可以创建修改特定网站功能的用户脚本。Brave最初开发此功能是为了调试其广告拦截功能,但其价值使其决定与用户共享。用户可利用自定义脚本改进隐私、安全性和可用性,例如阻止追踪器、自定义外观、增强辅助功能等。但需注意,运行不受信任的脚本可能存在风险,该功能位于“brave://settings/shields/filters”中,需要启用“开发者模式”。

Xvesa起死回生:精简X服务器的复活

2025-02-11
Xvesa起死回生:精简X服务器的复活

一个名为Xvesa的精简X服务器从git历史的深处被复活了!由于TinyX服务器在体积上远小于Xorg,开发团队选择维护Xvesa并与Xfbdev结合,修复bug,增强安全性,并酌情添加新功能。他们选择了1.2.0版本而非1.3.0,因为后者破坏了输入功能。Xvesa的设计目标是最小化且功能齐全,因此去除了xkb、xinput、xinerama和gl等功能,默认禁用TCP监听,启用影子帧缓冲区。许可证为GPLv3。

C++26反射特性:实现顺序无关的关键字参数

2025-02-11

本文探讨了如何利用C++26提出的反射特性实现顺序无关的关键字参数。作者在实验反射特性的过程中发现了这个技巧,并认为它很好地展示了反射特性的强大功能。文章首先介绍了以往几种关键字参数的提案,然后比较了几种无需反射即可实现类似功能的方法,例如指定初始化器和辅助对象。最后,文章重点介绍了如何利用反射特性实现顺序无关且可选的关键字参数,并提供了完整的代码示例和详细的解释,包括对lambda表达式捕获的处理和对fmt库的扩展。

流畅丝滑的滚动动画:告别卡顿,拥抱新API

2025-02-10
流畅丝滑的滚动动画:告别卡顿,拥抱新API

厌倦了滚动时动画卡顿?全新的滚动驱动动画规范(Scroll-driven Animations)闪亮登场!它整合了Web Animations API和CSS Animations API,让你的滚动动画流畅如丝,运行于主线程之外,只需少量代码即可实现各种炫酷效果,例如视差背景、阅读进度条、图片渐显等等。文中提供了多个演示案例和教程视频,帮助你快速上手,轻松创建令人惊艳的滚动动画体验。

实时应用架构:Poke/Pull、Push State、Push Ops 和 Event Sourcing 的比较

2025-02-10

本文探讨了构建实时应用的四种主要模式:Poke/Pull、Push State、Push Ops 和 Event Sourcing。Poke/Pull 简单易集成,但存在扇出问题;Push State 直接推送状态,但难以处理大规模状态更新;Push Ops 推送操作而非完整状态,更有效率;Event Sourcing 推送事件,需要客户端处理逻辑。文章还比较了不同传输方式(WebSockets、SSE 等)及其在水平扩展系统中的挑战,并指出了 Pub/Sub 的作用。

开发 状态同步

伪装VS Code扩展程序的恶意软件攻击

2025-02-10
伪装VS Code扩展程序的恶意软件攻击

研究人员发现了一个名为`truffelvscode`的恶意VS Code扩展程序,它模仿了流行的`truffle`扩展程序。该恶意程序是一个多阶段恶意软件的“特洛伊木马”,通过下载和执行多个阶段的恶意代码,最终安装并配置ScreenConnect远程访问工具,从而使攻击者能够远程控制受感染的系统。攻击者使用了代码混淆技术来隐藏恶意代码,但研究人员通过反混淆技术和沙箱分析揭露了整个攻击链。此事件强调了在安装VS Code扩展程序时谨慎的重要性,并突出了软件供应链攻击日益增长的威胁。

开发

颠覆40年猜想:新型哈希表速度远超预期

2025-02-10
颠覆40年猜想:新型哈希表速度远超预期

剑桥大学的研究生Krapivin与纽约大学的Farach-Colton和Kuszmaul合作,推翻了计算机科学界长期以来被奉为圭臬的Yao猜想。他们设计了一种新型哈希表,其在最坏情况下查找元素的时间复杂度为(log x)²,远低于之前认为的最佳复杂度x。这项突破性研究成果,不仅解决了哈希表领域一个经典难题,也为数据存储效率带来了显著提升,引发了学术界的高度关注。

开发

arXivLabs:与社区协作者一起进行实验性项目

2025-02-10
arXivLabs:与社区协作者一起进行实验性项目

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

开发

AI 编码助手的新挑战:上下文理解

2025-02-10
AI 编码助手的新挑战:上下文理解

传统的AI编码助手在理解代码时常常缺乏系统环境的上下文信息,导致开发者需要花费更多时间帮助AI理解完整情况。本文介绍了几个实验,探索如何将操作上下文(如调用图、监控指标、异常报告等)提供给AI编码助手,以提高其调试准确性。实验结果表明,结构化的性能数据和错误报告能有效提升AI的分析能力,但同时也面临着如何有效表示和处理大量上下文信息的挑战。未来,构建一个包含生产行为、系统性能指标等信息的知识图谱,将是提升AI编码助手能力的关键。

重构ProseMirror渲染器:React赋能富文本编辑器

2025-02-10

作者在纽约时报工作期间,参与了富文本编辑器Oak的开发,它基于React和ProseMirror构建。然而,两者整合存在诸多问题,导致难以捉摸的bug。经过四年努力,团队深入研究了React和ProseMirror,最终决定用React重写ProseMirror的渲染器,解决了状态撕裂等问题,并开发了新的库@handlewithcare/react-prosemirror,提升了性能和兼容性。

用LLM解释线性规划:从个人项目到微软研究

2025-02-10

2020年,作者在谷歌供应链部门工作期间,开发了一个辅助理解线性规划(LP)的项目。LP模型复杂时,理解其结果对专家来说都具有挑战性。作者通过交互式修改模型并对比结果来解释模型行为,并认为添加语义元数据可以简化这一过程。最近,微软的研究人员发表了一篇论文,使用大型语言模型(LLM)将自然语言查询转换为结构化查询,从而实现了类似的功能。作者认为,LLM非常适合将人类的模糊疑问转化为结构化查询,再由传统的优化系统处理并生成结果,最后再由LLM总结成易于理解的语言。虽然作者的早期工作未发表,但他认为理解简单系统的解释对于解释更复杂的AI系统至关重要。

PDFSyntax:一个无需依赖的Python PDF 可视化工具

2025-02-10
PDFSyntax:一个无需依赖的Python PDF 可视化工具

PDFSyntax是一个独立的Python库,无需任何依赖,能够以交互式HTML形式可视化PDF文件的内部结构。它通过对PDF数据进行解析、解压和美化打印,并添加超链接和索引等信息,实现对PDF文件的逻辑导航,包括对象间的跳转和版本修订的跟踪。用户只需简单的命令行操作,即可生成可直接在浏览器中查看的静态HTML文件,无需启用JavaScript。目前该工具支持多种功能,例如反向索引、页面索引、缩略图、对象流提取、流解压以及语法高亮等,但尚不支持加密文件。

开发

Python 3.14 重大更新:延迟注解评估与全新解释器

2025-02-10
Python 3.14 重大更新:延迟注解评估与全新解释器

Python 3.14带来了激动人心的变化!首先,PEP 649和PEP 749引入了延迟注解评估,显著提升了性能并简化了注解编写。其次,全新的基于尾调用的解释器在特定编译器和架构下,可将代码运行速度提升9-15%。最后,PEP 741改进了Python配置C API,为未来改进奠定了基础。这些更新共同推动Python更快、更强大!

K 语言:一个简洁快速的向量化编程语言

2025-02-10

K 语言家族是一系列由 Arthur Whitney 设计的简洁、快速的向量化编程语言。它并非单一版本,而是不断迭代演进的系列,每个版本间略有差异,甚至不兼容。本文主要介绍开源 K 语言及其社区,包括 ngn/k (k6) 和 oK (k5/6) 等实现,并探讨了 K 语言的特点、学习曲线以及与 APL 和 J 语言的关系。虽然 K 语言以其简洁性和速度而闻名,但其学习曲线较为陡峭,需要一定的实践才能掌握。

Rust追赶Ada:安全关键领域编程语言之争

2025-02-10
Rust追赶Ada:安全关键领域编程语言之争

Ada在安全关键领域屹立40余年,而Rust在过去十年中试图进入这一领域,并取得了不同程度的成功。演讲者将探讨Ada在确保代码无bug方面的一些强大特性,例如强大的子类型声明和便捷的使用方式,并比较Rust在这方面的不足之处,分析Rust追赶Ada的现状和差距。

巧用全局变量:C++ 实践指南

2025-02-10

本文探讨了在 C++ 中有效使用全局变量的技巧。作者认为,全局变量并非一无是处,关键在于合理运用。文中列举了全局变量的优缺点,并提出了四条使用规则:1. 确保难以错误使用;2. 更改可观察状态后,恢复其原始值;3. 不要返回内部状态的引用或指针;4. 不要使代码难以测试。作者通过具体的代码示例,展示了全局变量的正确使用方法和潜在的陷阱,并建议使用线程局部变量来避免多线程环境下的问题。

开发
1 2 163 164 165 167 169 170 171 213 214