分类: 开发

Red编程语言:一个强大的、自托管的、跨平台的系统编程语言

2025-08-31
Red编程语言:一个强大的、自托管的、跨平台的系统编程语言

Red 是一款受 Rebol 启发的编程语言,它拥有原生代码编译器,支持从系统编程到高级脚本编写等广泛用途,并提供对并发和多核 CPU 的现代支持。Red 使用 DSL 方法(称为方言)来简化软件构建,内置方言包括 Red/System(C 级系统编程语言)、Parse(强大的 PEG 解析器)、VID(简单的 GUI 布局创建方言)、Draw(矢量 2D 绘图方言)和 Rich-text(富文本描述方言)。Red 拥有完整的跨平台工具链,包括封装器、原生编译器、解释器和链接器,无需任何第三方库(alpha 阶段除外)。Red 的主要特性包括:人性化的语法、同像性、多类型支持、强大的模式匹配宏系统、丰富的内置数据类型、静态和 JIT 编译、跨编译、小型可执行文件、并发和并行支持、低级系统编程能力、强大的 PEG 解析器 DSL、快速的垃圾收集器、内置的解释器、词法分析器和解析器检测工具、跨平台原生 GUI 系统、JVM 桥接、高级脚本编写以及 REPL GUI 和 CLI 控制台。Red 目前仍处于 alpha 阶段,仅支持 32 位系统。

Firefox隐私设置清单:增强隐私保护的实用指南

2025-08-30
Firefox隐私设置清单:增强隐私保护的实用指南

本文提供一份Firefox浏览器隐私设置清单,帮助用户增强隐私保护。作者偏好Firefox而非Brave等基于Chromium的浏览器,因为它由非营利组织Mozilla开发,并坚持开源。清单详细介绍了如何通过设置和扩展程序提升Firefox的隐私性,包括访问设置方法和about:config高级配置的注意事项。文章最后提醒用户谨慎操作高级配置,并欢迎用户提出建议。

开发

V 语言示例:从游戏开发到 JSON 解析

2025-08-30

这段代码展示了 V 语言的多方面能力,从简单的循环问候不同领域的开发者,到处理日志文件、网络请求,再到 JSON 数据的解析和操作,以及数组的去重。它涵盖了 I/O 操作、字符串处理、网络编程、JSON 处理和数组操作等多个方面,并演示了 V 语言简洁优雅的语法和强大的标准库功能。

AWS SQS公平队列:解决多租户系统中的“噪声邻居”问题

2025-08-30
AWS SQS公平队列:解决多租户系统中的“噪声邻居”问题

AWS推出了Amazon SQS公平队列,该功能可缓解多租户系统中的“噪声邻居”问题。 “噪声邻居”是指某些租户过度使用资源,导致其他租户消息延迟。公平队列通过监控消息分布,自动调整消息传递顺序,优先处理非“噪声邻居”租户的消息,从而保证所有租户的服务质量,无需更改现有消息处理逻辑。开发者只需添加租户标识符(MessageGroupId),并利用CloudWatch监控相关指标即可。

开发 公平队列

简化地理多边形的算法改进

2025-08-30

文章探讨了简化地理多边形(特别是其凸包)的算法问题。现有方法结合了Douglas-Peucker算法和多边形偏移技术,先偏移扩大多边形以消除细节,再用Douglas-Peucker算法简化,最后负偏移缩小至接近原始大小。但这方法在处理凸形特征时效果不佳。作者寻求更有效的算法,以在相同大小下获得更高质量的几何图形,或在不影响质量的情况下进一步减小尺寸。

开发 几何简化

认知负荷:软件开发的隐形杀手

2025-08-30
认知负荷:软件开发的隐形杀手

本文探讨了软件开发中认知负荷的重要性。过高的认知负荷会导致开发效率低下和错误增多。文章分析了导致高认知负荷的几种常见原因,例如复杂的代码逻辑、过度继承、过多的浅层模块和微服务、以及不必要的抽象层。作者建议,开发者应该优先考虑减少认知负荷,通过使用有意义的变量名、早期返回、组合而非继承、以及创建更少但更深层的模块等方法来简化代码,从而提高代码可读性和可维护性。同时,作者也批判了过度追求设计模式和架构的弊端,强调简单直接的解决方案往往更有效。

开发

dlclose 失败:Rust 和 C++ 库的诡异交互

2025-08-30

本文讲述了一个令人费解的调试故事:在使用 `dlclose`卸载动态链接库时,库 libA 成功卸载,但其依赖库 libB 却意外地残留在内存中。深入调查发现,问题根源在于 libB 中注册的线程局部存储 (TLS) 析构函数。由于线程未退出,这些析构函数未执行,导致 libB 无法卸载。启用日志记录后,问题消失,因为日志库也使用了 TLS,导致 libA 也无法卸载,从而维持了 libA 和 libB 的共享状态一致性。这个案例强调了理解 `dlclose` 行为以及 TLS 析构函数的影响的重要性,并建议使用 `LD_DEBUG` 环境变量进行动态链接库调试。

F-Stack:基于DPDK的超高性能开源网络框架

2025-08-30

随着网络接口卡(NIC)的快速发展,Linux内核处理数据包的性能瓶颈日益突出。为了满足互联网对高性能网络处理的需求,内核绕过技术(如DPDK、NETMAP和PF_RING)备受关注。F-Stack是一个基于DPDK的高性能开源网络框架,它将Linux内核仅用于控制流处理,所有数据流都在用户空间处理,从而避免内核数据包复制、线程调度、系统调用和中断带来的性能瓶颈。F-Stack包含用户空间TCP/IP协议栈(基于FreeBSD 11.0稳定版)、POSIX API(Socket、Epoll、Kqueue)、编程SDK(协程)以及一些应用(Nginx、Redis)接口,旨在实现更高的网络处理性能。

使用n8n和Discord Bot自动化Bug Bounty中的子域名枚举

2025-08-30
使用n8n和Discord Bot自动化Bug Bounty中的子域名枚举

本文介绍了如何使用开源自动化平台n8n和Discord Bot自动化Bug Bounty中的子域名枚举、目录枚举和截图抓取三个步骤。作者搭建了n8n服务器和工作服务器,创建了n8n工作流程,编写了Bash脚本,并设置了Discord Bot。整个流程通过Discord Bot触发,结果输出到指定的Discord频道,实现了自动化和协作。

开发

学术论文写作指南:避免常见的定义和表达错误

2025-08-30

本文档提供了关于学术论文写作的实用指南,重点关注如何避免在定义和表达方面常见的错误。文章强调了清晰简洁的写作风格的重要性,并提供了多种改进建议,例如避免在定义中使用多余的逗号,避免双重定义,以及将表达式视为单一单元,以提高论文的可读性和准确性。这对于希望提升学术写作水平的研究者具有重要的参考价值。

开发 数学写作

Laravel 之父 Taylor Otwell:14 年构建传奇框架的经验与教训

2025-08-30

Laravel 框架的创建者 Taylor Otwell 在访谈中回顾了其 14 年的开发历程。从 PHP 5.3 版本起步,到如今拥有 70 人团队的全职公司,他分享了关于代码可维护性、开发者体验以及如何在不过度复杂化的前提下进行演进的经验。他强调了软件设计中简洁性的重要性,以及遵循框架约定带来的长期益处。访谈还涵盖了 Laravel 的发展历程、融资新篇章以及团队协作等方面,为开发者提供了宝贵的经验借鉴。

开发

大道至简:软件设计中的极简主义

2025-08-30

本文探讨了软件设计中“做最简单能运行的事”的理念。作者认为,与其追求理想化的、过度设计的系统,不如深入理解现有系统,然后选择最简单的方案。这种方法看似简陋,却能带来意想不到的效果,例如Unix和Rails等优秀系统的设计精髓便是如此。虽然这种方法面临着系统僵化和难以定义“简单”的挑战,但作者认为,与其为了遥远的未来需求而过度设计,不如专注于解决当前问题,并逐步迭代改进。最终,一个简洁稳定的系统往往比一个过度设计的、难以维护的系统更优秀。

开发

XSLT 3.0:XML 变换的重大升级

2025-08-30

XSLT 3.0 并非简单的升级,而是将 XSLT 从 XML 变换工具提升为处理 JSON、XML 等多种数据格式的通用转换语言。它引入了 JSON 支持,通过 `json-to-xml()` 和 `xml-to-json()` 函数实现 JSON 和 XML 之间的无缝转换。此外,XSLT 3.0 简化了语法,引入了文本值模板(TVT),并增强了 XPath 表达式动态评估能力。它还支持函数、类型化变量、函数包以及异常处理,显著提升了代码可读性和可维护性。XSLT 3.0 还支持流处理,优化了性能,使其成为处理大规模数据流的理想选择。

开发

SQLite 的耐久性:文档与实际的冲突

2025-08-30

SQLite 数据库的耐久性设置令人困惑。其文档和创建者 Richard Hipp 的说法互相矛盾,一个声称默认情况下是持久的,另一个则指出默认设置下不保证持久性。这主要源于 `journal_mode` 和 `synchronous` 两个配置选项的交互复杂,以及不同模式下所需设置的差异。文章分析了两种模式(DELETE 和 WAL)下的耐久性要求,并指出为了确保数据持久性,最好明确设置 `synchronous` 选项,避免默认设置的歧义和未来可能的变化。同时,文章还提醒读者注意第三方库和 macOS 系统可能带来的额外问题。

开发

Rust错误处理:Snafu的混合方法

2025-08-30
Rust错误处理:Snafu的混合方法

Rust的错误处理一直存在争议。`anyhow`提供通用错误类型,方便调试;`thiserror`提供精确的枚举类型,利于API设计。本文介绍了Iroh团队采用的混合方法:Snafu。Snafu结合了`thiserror`的精确性和`anyhow`的易用性,并解决了Rust中错误回溯的难题。它通过巧妙的技巧,在保持错误链完整性的同时,提供了详细的上下文信息和回溯。此外,n0-snafu库进一步简化了Snafu的使用,特别是在测试中。最终,Iroh团队选择Snafu,平衡了精确性和易用性,实现了高效的错误处理。

开发 Snafu

Nginx-CGI:为Nginx和Angie Web服务器带来CGI支持

2025-08-30
Nginx-CGI:为Nginx和Angie Web服务器带来CGI支持

Nginx-CGI插件为Nginx和Angie web服务器增加了CGI支持,方便开发者构建低频应用、资源受限系统和原型。该插件支持多种操作系统,包括Linux、macOS和BSD。文章详细介绍了插件的安装、配置和使用方法,并提供了多种运行CGI脚本的方式,包括使用chroot、Docker和FreeBSD jails。此外,文章还阐述了CGI脚本的编写规范,以及如何处理HTTP请求和响应。

开发

加速Python代码测试的妙招:importlib与pickle的组合拳

2025-08-30
加速Python代码测试的妙招:importlib与pickle的组合拳

本文介绍了两种提升Python代码测试效率的技巧。第一种技巧利用`importlib`库重新加载函数,方便快速迭代测试。第二种技巧则结合`pickle`库保存和加载类对象,从而避免冗长的重新运行时间,特别适用于运行时间较长的代码。这两种方法极大地缩短了调试时间,提升了开发效率。

开发

Baba Yaga:一个极简函数式编程语言

2025-08-30
Baba Yaga:一个极简函数式编程语言

作者基于对编程语言美学的追求,开发了一个名为Baba Yaga的函数式编程语言。该语言以极简语法、不可变性、函数优先等特性为核心,并通过模式匹配实现流程控制。它融合了多种函数式编程概念,力求简洁易用,同时具备一些内置工具和与JavaScript的互操作性,旨在用于游戏、草图和实时编码等场景。

(eli.li)
开发 Baba Yaga

Rust写的aarch64 JIT模拟器:Hello, World!

2025-08-30

作者使用Rust和Cranelift JIT编译器编写了一个aarch64指令集架构的模拟器。文章详细介绍了从虚拟机指令到原生代码执行的过程,包括指令解码、JIT翻译、内存管理和设备模拟等方面。作者还实现了PL011 UART模拟,并使用gdbstub进行调试。目前模拟器已能运行简单的裸机程序,未来目标是支持Linux启动,后续工作包括异常处理、定时器支持、MMU和中断控制器等。

开发 aarch64

是时候删掉一些测试了

2025-08-30

几十年来,测试的重要性一直被强调,但开发者们却形成了一种“删除测试是亵渎”的错误观念。本文指出,测试的目的是提升信心,但失效、冗余、耗时或测试错误内容的测试反而会降低信心。例如,易出错的测试会浪费大量时间,冗余的测试则会降低效率。作者建议,为了提高效率和信心,应该删除那些降低信心而非提升信心的测试,并针对新的需求编写新的测试。

开发

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

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

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

开发

Marco邮箱应用的离线优先架构演进

2025-08-29
Marco邮箱应用的离线优先架构演进

Marco邮箱应用团队在构建支持IMAP、跨平台且离线优先的应用过程中,经历了漫长的技术选型之路。他们尝试了WatermelonDB、Triplit和InstantDB等多种方案,但都因性能瓶颈或功能限制而放弃。最终,他们选择了Replicache,因为它提供了出色的性能和灵活性,并结合Orama实现了强大的索引和搜索功能。这个故事展示了构建高性能离线优先应用的挑战与机遇,也预示着数据同步技术的未来发展趋势:从共享端点到共享数据库。

开发

SeedBox Lite:无需下载即可秒播BT种子

2025-08-29
SeedBox Lite:无需下载即可秒播BT种子

SeedBox Lite是一款革命性的BT种子流媒体平台,它允许你即时观看电影和电视节目,无需等待完整下载。基于现代网络技术构建,它提供类似Netflix的体验,并具有强大的BT功能。SeedBox Lite支持多种格式,具有智能缓存、字幕支持和响应式设计等特性,兼容Windows、macOS和Linux系统。无论是Docker还是PM2部署,几分钟即可完成安装。

开发 SeedBox Lite

AI编码:距离全自动编程还有多远?

2025-08-29
AI编码:距离全自动编程还有多远?

尽管AI编码工具在代码补全、错误修正等方面展现出强大的能力,但一项新的研究表明,AI距离成为真正的程序员还有很长的路要走。研究指出,AI在处理大型代码库、复杂逻辑和长期规划方面仍然面临挑战,容易出现幻觉和错误。未来,提升AI与人类的协作效率,例如改进交互界面、让AI更好地理解和表达不确定性,将是关键。最终,AI在编码领域的应用将更多地体现在提升开发效率和改变抽象层次上,而非完全取代人类程序员。

开发

告别手机小键盘:电脑键盘发送短信和iMessage

2025-08-29
告别手机小键盘:电脑键盘发送短信和iMessage

厌倦了在手机小键盘上打长短信?这款网页工具让你用电脑键盘轻松发送短信和iMessage!只需在浏览器窗口输入信息,它就会生成一个二维码,用手机扫描即可发送。支持多个收件人(用逗号分隔),建议使用国际区号。即使不输入收件人号码,也能先扫描二维码,再在手机上用通讯录自动完成。所有数据都在浏览器内处理,不会上传到服务器。快试试吧!

开发

苹果开发者文档Markdown转换器:一个非官方的辅助工具

2025-08-29

这是一个非官方的工具,可以根据用户的请求将单个苹果开发者网页转换为Markdown格式。它不会抓取或批量下载网页,也不会绕过身份验证或安全措施,并实施速率限制以避免造成不合理的负载。内容会短暂缓存以提高性能,但不会永久存档,所有版权均归苹果公司所有。每个转换后的页面都链接回原始来源,使用需遵守苹果的使用条款和适用法律。

开发

Midday:一款基于向量嵌入的智能财务对账引擎

2025-08-29
Midday:一款基于向量嵌入的智能财务对账引擎

Midday 推出了一款自动财务对账引擎,通过多维度匹配算法,显著提高了对账效率和准确性。该引擎利用预处理管道清洗和丰富数据,并采用 768 维向量嵌入来理解交易和收据的语义含义,从而实现更精准的匹配。此外,系统还具备自适应阈值和自动学习功能,根据用户的行为不断调整匹配阈值,提高准确率。最终,Midday 帮助企业节省了大量时间,并为更高级的财务分析奠定了基础。

开发

C# 中可空类型与可空引用类型的陷阱

2025-08-29

C# 中 `T?` 语法同时用于表示值类型和引用类型的可空类型,造成了混淆。对于值类型,`T?` 是 `Nullable` 的语法糖,两者是不同类型;而对于引用类型,`T?` 只是表达意图,编译后 `T?` 和 `T` 是同一类型。这种差异导致在编写泛型方法时,例如模拟 F# 的 `List.choose` 功能,会出现编译错误。文章通过一个 `SelectNotNull` 方法的例子,展示了如何通过重载方法并添加类型约束 `where TR : class` 和 `where TR : struct` 来解决这个问题,避免编译器在值类型和引用类型之间产生歧义。尽管问题得以解决,但这种设计依然显得不够优雅。

开发 可空类型

Jane Street暑期实习项目总结:高效的JSQL评估器、改进的Torch绑定和跨进程内存管理库

2025-08-29
Jane Street暑期实习项目总结:高效的JSQL评估器、改进的Torch绑定和跨进程内存管理库

Jane Street分享了今年暑期实习项目的成果,三个项目尤为突出:Leo Gagnon开发的JSQL评估器,通过索引机制将查询速度提升了数百倍;Aryan Khatri改进的OCaml Torch绑定,利用OxCaml的新特性安全高效地管理GPU内存;Anthony Li开发的跨进程内存管理库,使用引用计数避免了数据序列化带来的性能损耗。这些项目不仅提升了Jane Street内部工具的效率,也为开源社区贡献了有价值的代码。

开发
1 2 14 15 16 18 20 21 22 213 214