分类: 开发

VictoriaLogs 数据摄取指南:高效日志处理的秘诀

2025-08-17
VictoriaLogs 数据摄取指南:高效日志处理的秘诀

VictoriaLogs 这篇文章快速讲解了 VictoriaLogs 的核心概念,涵盖了文档中最重要的信息以及在排除许多现实场景中的故障后识别出的常见案例。文章深入探讨了消息、时间和流三个核心概念,并详细解释了如何选择合适的流字段以优化查询效率,避免“胖流”和高基数问题。此外,文章还介绍了 VictoriaLogs 的数据摄取机制、时间戳格式、压缩策略以及嵌套字段的处理方式,帮助用户更好地理解和使用 VictoriaLogs 进行高效的日志处理。

开发 数据摄取

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

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

arXivLabs是一个开放的平台,允许个人和组织与arXiv合作开发和分享新的网站功能。所有参与者都必须遵守arXiv的开放、社区、卓越和用户数据隐私的价值观。如果你有想法能提升arXiv社区的价值,那就来了解一下arXivLabs吧!

开发

Porffor:将JavaScript编译为WebAssembly的超高速运行时

2025-08-17

Porffor是一个将JavaScript提前编译为WebAssembly和原生二进制文件的JS引擎/运行时。它能将JS文件编译成极小的(<1MB)、快速的(毫秒级)二进制文件,在Lambda函数上的冷启动速度比Node.js快12倍,比亚马逊的LLRT快4倍,成本还更低。虽然目前JS支持有限且缺乏I/O和Node兼容性,但其潜力巨大,尤其适用于小型Lambda函数的优化。

开发

构建本地优先、端到端加密的反应式应用:SQLite同步引擎实践

2025-08-17
构建本地优先、端到端加密的反应式应用:SQLite同步引擎实践

作者尝试构建一个本地优先、端到端加密且反应式应用,数据存储在本地SQLite数据库并同步到远程服务器。最初尝试使用Electric和PGlite,但遇到性能和稳定性问题。最终,作者选择了一个更轻量级的方案:使用SQLite结合简单的轮询机制实现数据同步,并利用Broadcast Channel API和触发器实现反应式更新。此方案在单用户场景下表现出色,应用响应迅速,加载时间极短。

低调巨头:开源贡献的幕后英雄

2025-08-17
低调巨头:开源贡献的幕后英雄

开发者大会上,我们总能看到各种炫酷的贴纸,代表着那些新兴的云原生公司和数据库厂商。然而,真正默默贡献大量代码,却鲜为人知的巨头公司,你可能从未在贴纸上见过他们的LOGO。例如,Oracle在Linux 6.1内核版本中贡献了最多的代码行数,他们默默地维护着内存管理结构和块设备驱动程序,这些对我们日常使用至关重要。这篇文章揭示了这些低调巨头的贡献,他们将开源视为业务基础,而非营销手段,其影响力不容小觑。

开发

Lue: 命令行下的多格式电子书阅读器

2025-08-17
Lue: 命令行下的多格式电子书阅读器

Lue是一个强大的命令行电子书阅读器,支持EPUB、PDF、TXT等多种格式。它采用模块化TTS系统,默认使用Edge TTS,也可以使用离线TTS引擎Kokoro TTS。Lue拥有丰富的终端UI,支持自定义颜色主题和鼠标键盘操作,并具备自动保存进度、跨会话续读等功能。它支持macOS、Linux和Windows,并提供100多种语言支持。用户可以通过简单的命令行指令进行阅读和导航,并可自定义语音、语言和过滤器等选项。

开发

GPT时代的小而美:拒绝规模化,拥抱个性化

2025-08-17
GPT时代的小而美:拒绝规模化,拥抱个性化

在AI辅助编程的时代,构建小型、个性化应用的成本大幅降低。作者以自身经历为例,讲述了几个小工具的开发故事:一个仅供百人使用的私密Slack工作区,一个只为母亲邮寄明信片的简易应用,以及一个通过电话提醒母亲服药的小程序。这些应用并非追求规模化,而是满足个人或小圈子特定需求,在小而美的理念下,它们更有效率、更安全、也更令人满意。作者认为,如今的奢侈品并非速度或成本,而是能停下来的自由,专注于创造真正属于自己的小而精的产品,无需被规模化的压力所束缚。

开发 小而美

99行C代码实现的Lisp解释器

2025-08-17
99行C代码实现的Lisp解释器

本文介绍了一个仅用99行C代码实现的Lisp解释器——Tinylisp。它巧妙地利用NaN boxing和C语言技巧,实现了21个内置Lisp基本函数、简单的垃圾回收和REPL。文章详细解释了其设计原理、实现方法以及扩展功能的步骤,甚至包括在老式Sharp PC-G850口袋电脑上运行的示例。Tinylisp代码风格简洁,易于理解和扩展,是学习Lisp和C语言的绝佳案例。

开发

用SIMD和多线程将单词计数速度提高494倍

2025-08-17

本文作者通过编写一系列速度逐渐提升的单词计数程序,展示了优化程序性能的技巧。从Python的字节循环(89.6秒)到使用正则表达式(13.7秒),再到C语言的标量循环(1.205秒),最后利用SIMD指令和多线程技术(181毫秒),最终将单词计数速度提升了近494倍。作者详细解释了每个阶段的优化策略,包括利用CPython的C扩展、编写高效的C循环以及充分利用CPU的多核性能。尽管多线程带来的速度提升不如预期显著,但最终版本仍达到了惊人的5.52 GiB/s的处理速度。

开发

解决嵌入式Linux系统中Qt应用非root权限运行的Wayland问题

2025-08-17
解决嵌入式Linux系统中Qt应用非root权限运行的Wayland问题

在Yocto构建的嵌入式Linux系统中,Qt应用通常以root权限运行,存在安全隐患。本文介绍了一种方法,通过修改Weston服务单元和Qt应用服务单元,将Qt应用以非root用户weston运行,并配置环境变量`XDG_RUNTIME_DIR`和`WAYLAND_DISPLAY`,确保Wayland服务器和客户端使用相同的socket文件,从而提升系统安全性,符合欧盟网络韧性法案的要求。主要步骤包括修改weston.service和weston.socket的用户和组,以及在weston-init.bbappend中生成环境文件weston-client,最终实现Qt应用的非root权限运行。

开发

Raft共识算法:简化分布式系统一致性

2025-08-17

Raft是一种易于理解的共识算法,性能与Paxos相当,但其将问题分解成相对独立的子问题,更易于应用于实际系统。共识是容错分布式系统中的基础问题,它让多个服务器就某个值达成一致,一旦达成决策,该决策就最终确定。Raft算法通过让大多数服务器可用,从而保证系统即使部分服务器失效也能继续运行,确保所有服务器状态机处理相同的命令序列,最终达到一致的状态。

开发 共识算法

Node.js v22.18.0 (LTS) 发布:原生支持 TypeScript

2025-08-17
Node.js v22.18.0 (LTS) 发布:原生支持 TypeScript

Node.js v22.18.0 (LTS) 版本发布,带来一项激动人心的特性:原生支持 TypeScript!开发者现在可以直接运行 TypeScript 文件,无需额外配置。这简化了开发流程,提高了效率。虽然目前对 TypeScript 语法支持有一些限制,但该功能仍在持续改进中。本次更新还包含大量其他改进和修复,涵盖了文件系统、模块、加密、以及其他核心功能。

开发

Dyna编程语言:为机器学习研究人员量身打造的声明式编程语言

2025-08-17

Dyna 是一种专为机器学习研究人员设计的编程语言,它基于 Datalog 和 Prolog 等逻辑编程语言,但更进一步地支持灵活的执行顺序和加权规则。这意味着研究人员可以用几行代码高效地表达复杂的程序,而无需担心程序的执行方式,只需关注计算目标。从矩阵乘法到斐波那契数列、CKY 解析,甚至无限神经网络,Dyna 都能以简洁的代码实现。该项目始于 2004 年,旨在缩短数学概念与可执行代码之间的距离,经历了 Dyna 1.0 和 Dyna 2.0 的发展,不断改进并扩展其功能。目前的研究方向包括利用关系代数和术语重写技术构建灵活完整的实现,以及利用强化学习寻找最佳执行策略。

开发

是时候再次提升TCP初始拥塞窗口了

2025-08-17

本文探讨了提升TCP初始拥塞窗口的必要性。文章指出,随着互联网的发展,网页和API调用规模增大,传统的TCP初始拥塞窗口设置已无法满足现代互联网的需求,导致网页加载速度缓慢。Google曾在2011年将初始拥塞窗口从1提升到10,但如今,这一数值已不足以应对日益增长的网络流量。作者建议将初始拥塞窗口提升到20-40之间,并同时采用BBR拥塞控制算法,以解决缓冲区膨胀问题,提高网络性能。虽然QUIC协议已成为主流,但由于企业和旧设备对TCP的依赖,优化TCP仍然具有重要意义。

开发

随机算法:解决难题的意外之选

2025-08-16
随机算法:解决难题的意外之选

从模拟核过程到质数测试,随机算法在计算机科学中扮演着越来越重要的角色。尽管看似矛盾,纯粹的随机性却能帮助我们找到解决问题的结构。例如,在质数测试中,费马小定理结合随机数,能高效判断一个大数是否为质数。虽然理论上存在等效的确定性算法,但实践中随机算法效率更高,且在一些问题上,如寻找带负权边的图的最短路径,随机算法是目前唯一已知的有效方法。随机性,成为了解决复杂问题的一种巧妙策略。

开发 质数测试

开放式办公室正在让你患上“二手多动症”

2025-08-16
开放式办公室正在让你患上“二手多动症”

一位开发者通过一个月的数据追踪发现,在家工作的创造力是办公室的3倍。在办公室,各种干扰导致他大部分时间都在“探索”(反复阅读相同的代码),而在家则能专注地进行编码。这并非简单的效率问题,而是环境改变了开发者的工作状态。研究表明,被打扰后需要23分钟才能重新集中注意力,但在开放式办公室,这几乎不可能。最终,他通过数据说服了经理,调整了工作模式,在家进行复杂功能的开发,在办公室进行协作。这篇文章强调了办公环境对个人工作效率的影响,以及通过数据量化分析来优化工作模式的重要性。

开发 办公环境

Windows 11:十个我们真正想要的改进

2025-08-16
Windows 11:十个我们真正想要的改进

Windows 11充斥着无用功能和恼人的弹窗广告,却忽略了用户真正所需。文章列举了十项亟待改进之处,例如:多剪贴板、任务栏上显示多个时钟、添加第四个修饰键、重新映射所有快捷键、恢复可移动可调整大小的任务栏、音频防火墙、将应用程序固定到特定屏幕、程序组一次启动多个相关应用程序、简化音频设备切换以及减少微软强推的干扰性功能。这些改进将显著提升用户生产力,而非一味追求华而不实的功能。

开发者陷阱大揭秘:潜伏在代码中的隐形bug

2025-08-16
开发者陷阱大揭秘:潜伏在代码中的隐形bug

本文总结了开发者在HTML、CSS、JavaScript、Go、Java、C/C++、Python、SQL数据库、并发编程、Git、网络编程等领域容易掉入的陷阱。这些陷阱通常隐蔽而难以察觉,例如CSS中的`min-width`属性优先级、浮动元素的布局特性、BFC和堆叠上下文、Unicode字符处理、浮点数精度问题、时间处理中的闰秒和时区问题,以及各种语言和库的特性等等。文章详细解释了这些陷阱的成因和解决方法,旨在帮助开发者编写更健壮、更可靠的代码。

开发 开发陷阱

在 Linux 上复制 OpenBSD 的 pflog 功能:使用 nftables 和 ulogd2

2025-08-16

本文介绍了如何在 Linux 系统上使用 nftables 和 ulogd2 来模拟 OpenBSD 和 FreeBSD 的 pflog 功能,实现对网络封包的日志记录和分析。通过在 nftables 规则中添加 'log group' 语句,并将日志信息转发到不同的 netlink socket,可以分别使用 tcpdump 实时监控和 ulogd2 将封包记录到磁盘。文章详细讲解了配置 ulogd2,以及使用 pcap 格式存储日志文件的步骤,并指出了 ulogd2 的一些限制和替代方案。

开发 nftables ulogd2

重新发现`document.write()`:静态网站的HTML模板引擎

2025-08-16

本文探讨了JavaScript函数`document.write()`的巧妙用法,将其作为一种简单的HTML模板引擎,用于构建静态网站。作者介绍了如何安全地使用`document.write()`来复用HTML片段,避免页面重绘,从而构建快速、高效的静态网站,并分享了使用方法和注意事项,以及与其他方法的比较。虽然`document.write()`已被标记为过时,但作者认为其在特定场景下仍具有优势,并提出了两条安全规则来规避其潜在风险。

开发 HTML模板

AI 或将取代程序员?Anthropic CEO 预测一年内 AI 将编写所有代码

2025-08-16
AI 或将取代程序员?Anthropic CEO 预测一年内 AI 将编写所有代码

Anthropic CEO 达里奥·阿莫迪预测,在未来一年内,人工智能将取代软件开发者,负责编写所有软件代码。他认为,在三到六个月内,AI 将编写 90% 的代码,一年内则将编写所有代码。虽然短期内人类开发者仍需负责设计和设定条件,但阿莫迪相信,AI 最终将能够胜任所有人类程序员的工作,并影响所有行业。这一预测并非空穴来风,Y Combinator 总裁加里·坦也表示,其 2025 年冬季批次的 25% 的创业公司依靠 AI 编写了 95% 的代码。国际货币基金组织总裁也指出,AI 将影响全球约 40% 的工作岗位。

开发

告别昂贵云服务:用CoreOS和Dokploy构建你的专属Heroku

2025-08-16
告别昂贵云服务:用CoreOS和Dokploy构建你的专属Heroku

本文探讨了云服务成本和维护的痛点,从昂贵的VPS到便捷的Serverless,分析了各自优劣。作者提出了一种折中方案:结合CoreOS(稳定、安全、免维护的容器化操作系统)和Dokploy(开源的CI/CD工具,类似Heroku),将VPS打造成一个低成本、易维护的平台。Dokploy简化了容器编排、部署和日志管理,提供类似PaaS的体验,同时保留了VPS的成本优势和独立性。这种方案适合有一定技术基础,希望兼顾成本和便捷性的开发者。

开发

优秀系统设计:并非炫技,而是务实

2025-08-16

本文作者批判了那些为了炫技而设计的系统,认为优秀系统设计并非依赖于复杂的分布式共识机制或CQRS等技巧,而是应该注重简洁和可靠性。文章重点阐述了状态管理的重要性,建议尽量减少有状态组件,并详细讲解了数据库设计、索引、缓存、后台任务、事件驱动等关键方面,强调在数据库查询中充分利用数据库本身的能力,避免不必要的内存处理。作者还强调了热路径的重要性以及日志记录和监控的重要性,并讨论了熔断器、重试机制和优雅降级等容错策略。总而言之,作者认为优秀系统设计是低调而有效的,是建立在成熟组件基础上的合理运用,而非追求花哨技巧的体现。

开发

GitHub代码建议应用限制

2025-08-16
GitHub代码建议应用限制

GitHub代码审查中,应用代码建议功能存在诸多限制,例如:仅能应用单行建议、不能应用于已删除行、不能应用于已关闭的Pull Request、不能应用于部分代码变更视图、以及其他一些暂时无法应用的情况。这些限制提示了GitHub代码审查机制的复杂性和细致性,确保代码变更的准确性和安全性。

开发

Solidity编译器崩溃:一场由古老Bug引发的完美风暴

2025-08-16
Solidity编译器崩溃:一场由古老Bug引发的完美风暴

Solidity编译器最近出现了一个令人费解的崩溃问题:即使编译完全有效的代码,也会导致段错误。经过追踪,发现问题源于G++ 11.4以下版本在C++20下处理Boost库中的boost::rational类型时,一个长达12年的重载解析bug与C++20的隐式比较重写规则共同作用,导致无限递归,最终引发堆栈溢出。此问题并非Solidity代码本身错误,而是多个组件(G++、Boost、C++20)的组合导致的意外结果。解决方案是升级Boost库至1.75或以上版本,或将G++升级至14或以上版本。

开发 Solidity C++ Bug

Recto:一种真正的二维编程语言

2025-08-16
Recto:一种真正的二维编程语言

Recto 是一种开创性的二维编程语言,它使用嵌套矩形作为核心语法,直接在空间中而非线性文本流中编码结构和递归。该语言挑战了传统编程语言的一维性,探索了利用空间进行代码编写、解析和推理的新方法,甚至拓展到自然语言处理。Recto 通过矩形表示数据结构,直观地展现多维数据,并支持函数定义、控制流等功能,为线性代数、计算机图形学和机器学习等领域提供了一种更直观高效的编程方式。虽然目前仍处于原型阶段,但Recto 已经展示了其在提升代码可读性和协同开发方面的潜力。

Metaflow:简化机器学习应用开发的利器

2025-08-16
Metaflow:简化机器学习应用开发的利器

Metaflow是Netflix开发的用于构建机器学习和数据科学应用的平台,它解决了数据科学家和机器学习工程师在数据处理、计算资源、工作流编排、版本控制和部署等方面面临的诸多挑战。Metaflow提供了一个友好的基础架构,允许用户利用Python快速迭代想法并自信地部署应用,同时处理底层基础设施,包括数据、计算、编排和版本控制。目前,Metaflow已广泛应用于Netflix、CNN等众多公司,并得到Outerbounds的商业支持。

开发

TextKit 2:四年后,它并非银弹

2025-08-16
TextKit 2:四年后,它并非银弹

WWDC21发布的TextKit 2,四年过去了,其易用性却不如预期。虽然架构合理,但实现存在诸多问题。NSTextContentStorage是唯一可用的存储实现,对其他自定义实现的支持不足。此外,Viewport机制虽旨在优化性能,却导致滚动时滚动条位置不稳定,出现抖动现象。作者在实际应用中遇到诸多bug,且部分bug长期未修复,严重影响用户体验。总而言之,TextKit 2并非完美的文本布局解决方案,尤其在文本编辑UI方面。

Coreboot项目:在Gigabyte MZ33-AR1主板上启用AMD Turin支持

2025-08-16

这篇博文描述了在coreboot中启用AMD Turin支持以及移植到Gigabyte MZ33-AR1主板的第一阶段进展。该项目由NLnet基金会资助,旨在将开源固件引入AMD最新的CPU。项目团队完成了Turin SoC框架构建,提取并整合了必要的PSP固件包,并创建了MZ33-AR1主板支持。尽管在整合公共Turin PSP blob时遇到了一些挑战,但该团队通过一些变通方案成功引导了系统,为后续的改进奠定了基础。

开发 AMD Turin

构建高效AI代理系统:UserJot的实践经验

2025-08-16
构建高效AI代理系统:UserJot的实践经验

UserJot平台尝试构建一个多代理AI系统,用于大规模分析客户反馈并自动生成更新日志。文章总结了作者在构建过程中学习到的经验,核心是采用两层架构:主代理负责任务分解和上下文管理,子代理专注于单一任务并保持无状态。通过任务分解(垂直和水平)、结构化通信协议、代理专业化以及MapReduce等编排模式,系统实现了高效的并行处理和可预测性。文章还强调了无状态的重要性、上下文管理策略以及错误处理机制,并分享了性能优化技巧和监控指标。

开发
1 2 23 24 25 27 29 30 31 213 214