分类: 开发

Lisp中基于适应度的函数测试

2025-04-07

这段代码定义了一个名为`fitness`的Lisp函数,用于评估生成的函数的适应度。它通过将生成的函数(`form`)与目标函数(`fitness-fn`)的输出进行比较,计算一个0到1之间的适应度值,值越大表示适应度越高。函数还包含错误处理,如果生成的函数执行非法代码,则返回`NIL`。`fitness`函数使用测试输入列表(`test-input`)进行迭代测试,最终返回所有测试结果的乘积作为总适应度。示例中展示了该函数如何应用于不同生成的函数,并计算它们的适应度值。

可塑性开发:通过上下文工具重塑编程

2025-04-07
可塑性开发:通过上下文工具重塑编程

可塑性开发是一种通过为每个问题构建的上下文工具进行编程的方法。其核心思想是没有单一正确的系统视角,不同的系统部分需要不同的展现方式。这些“形状”从特定角度总结系统,从而实现高效沟通和新的反馈循环。Glamorous Toolkit 是一个案例研究,展示了上下文工具如何增强编程能力,它自带数千个扩展和示例,涵盖整个系统,目标是使系统内部易于理解。

Rive:颠覆传统,用向量羽化技术实现极致性能

2025-04-06
Rive:颠覆传统,用向量羽化技术实现极致性能

Rive团队彻底革新了矢量图形渲染,摒弃了传统的基于高斯模糊的羽化方法,创造了一种全新的基于矢量的羽化系统。该系统直接在矢量曲线的基础上计算软边,避免了昂贵的栅格化和卷积滤波过程,实现了无限缩放和实时调整。这不仅提升了性能,更重要的是,它保留了矢量图形的本质,保证了图像质量不受缩放影响。这项技术突破了传统矢量图形规范的限制,为矢量图形渲染开启了新的篇章。

开发

C语言字符串字面量const限定符提案:潜在影响调研

2025-04-06
C语言字符串字面量const限定符提案:潜在影响调研

Martin Uecker发起一项倡议,建议将C语言字符串字面量的类型更改为const限定的基类型,类似于C++中的做法。此举旨在提高代码安全性,但可能对现有代码造成影响。为了评估此更改的影响,Uecker呼吁开发者分享其项目中使用编译器const限定选项(如gcc的-Wwrite-strings)的经验,包括修改的难易程度、是否暴露代码中的限定符错误等,以便收集事实数据,而非主观意见,从而更好地决策。

使用OpenAI库和Gemini API的容错型AI调用

2025-04-06

本文介绍了一种利用OpenAI TS/JS库构建容错型AI调用方法,该方法能够在Gemini API达到速率限制时自动切换到OpenAI的其它模型。通过自定义函数,开发者可以指定多个AI模型作为备选,并根据实际情况进行切换,从而确保应用的稳定性和可靠性。文中还提供了类型安全的结构化输出函数,方便开发者处理AI模型的返回结果。

macOS Sequoia 弃用 rsync,转向 openrsync

2025-04-06
macOS Sequoia 弃用 rsync,转向 openrsync

macOS Sequoia 版本中,苹果将使用了近二十年的 rsync 2.6.9 替换为 openrsync。这一变化源于 rsync 3.x 使用的 GPLv3 许可证与苹果的合规性问题。openrsync 使用更宽松的 ISC 许可证,允许苹果更灵活地更新和维护。虽然 openrsync 与 rsync 兼容,但它仅支持 rsync 的一部分命令行参数,因此部分旧功能可能失效。用户需参考官方文档以了解支持的功能。

开发 openrsync

MonkeysPaw:基于LLM的意图驱动型Web框架

2025-04-06
MonkeysPaw:基于LLM的意图驱动型Web框架

MonkeysPaw是一个革命性的Ruby Web框架,它颠覆了传统的Web开发模式。开发者不再需要编写HTML、CSS和JavaScript,而是用自然语言描述页面内容,框架会根据LLM理解的意图自动生成完整的网页。这使得开发更加便捷高效,但同时也面临一些挑战,例如性能和准确性问题。MonkeysPaw代表着AI优先时代的一种新型开发方式,其核心在于内容优先和自然语言作为代码,降低了思想与实现之间的门槛。

开发

Rust 的安全陷阱:即使是安全的 Rust 代码也并非完美无缺

2025-04-06
Rust 的安全陷阱:即使是安全的 Rust 代码也并非完美无缺

本文揭示了即使在安全的 Rust 代码中,也可能存在编译器无法检测到的常见错误。文章涵盖了整数溢出、类型转换错误、数组越界、无效状态、敏感数据泄露等多种问题,并提供了相应的避免方法,例如使用checked算术运算、TryFrom、get方法、自定义类型等。作者强调,即使 Rust 提供了内存安全保证,开发人员仍需保持严谨,结合测试、linting 和 fuzzing 等手段,才能编写出健壮可靠的应用程序。

开发

优雅地隐藏依赖JavaScript的网页元素

2025-04-06
优雅地隐藏依赖JavaScript的网页元素

本文介绍了三种优雅地隐藏依赖JavaScript的网页元素的方法。第一种方法使用JavaScript动态添加类名,但不够简洁;第二种方法利用``标签和``标签,直接在CSS中隐藏元素,但维护成本较高;第三种方法推荐使用一个通用的类名`d-js-required`,配合`<noscript>`标签和`<style>`标签,只需修改一个CSS规则即可隐藏所有依赖JavaScript的元素,简洁高效。

开发

从捣鼓电脑到成为软件工程师:我的30岁自省

2025-04-06
从捣鼓电脑到成为软件工程师:我的30岁自省

作者在30岁生日之际,回顾了12年来从对电脑充满好奇到成为软件工程师的历程。这篇文章是系列文章的第一部分,讲述了他如何通过不断尝试和探索,从拆解电脑、学习命令行、在论坛学习编程,到搭建Linux系统(过程中不断“搞砸”系统并从中学习),最后到用HTML和CSS制作Neopets商店的经历。作者强调了好奇心和探索精神,以及社区和论坛在学习过程中的重要作用,以及游戏化学习的有效性。

开发

mem-isolate:安全运行不安全代码的利器

2025-04-06
mem-isolate:安全运行不安全代码的利器

mem-isolate 利用fork()机制在隔离进程中运行函数,返回结果到父进程,从而避免不安全代码影响父进程内存。它能处理内存泄漏、堆碎片等问题,即使函数本身不纯净,也能保证其内存纯净性。该库目前仅支持类Unix系统,在性能方面,相比直接调用函数,额外开销约为1ms,对于内存安全至关重要的场景,这是一个可以接受的权衡。

LocalScore:轻松评估本地大语言模型

2025-04-06
LocalScore:轻松评估本地大语言模型

LocalScore是一个用于评估本地大语言模型性能的工具。它提供两种运行方式:下载官方模型或使用你自己的.gguf模型。根据你的操作系统(macOS/Linux或Windows)和硬件资源(内存),可以选择不同大小的基准模型(Tiny、Small、Medium)。该工具通过简单的命令行指令运行,并提供故障排除指南和详细文档。

开发

浏览器端 WASM 高性能数据分析:DuckDB、Apache Arrow 和 Web Workers 的实践

2025-04-06
浏览器端 WASM 高性能数据分析:DuckDB、Apache Arrow 和 Web Workers 的实践

Motif Analytics 使用 DuckDB WASM、Apache Arrow 和 Web Workers 构建了一个高交互性的浏览器内数据分析工具。这使得用户无需承诺即可实验性地使用该工具。文章详细介绍了使用这些技术的优缺点,包括 DuckDB WASM 的性能表现(与原生版本相比速度较慢,但通过优化可以缩小差距),以及使用 Web Workers 进行并行处理时遇到的架构一致性问题(例如,由于 schema 不一致导致数据插入失败)。作者还分享了在使用过程中遇到的 bug 和局限性,并指出 DuckDB WASM 仍在快速发展中,未来有望解决这些问题。

开发

React 服务端渲染中的 Hydration 错误:原因与解决方法

2025-04-06
React 服务端渲染中的 Hydration 错误:原因与解决方法

本文深入探讨了 React 服务端渲染 (SSR) 中常见的 Hydration 错误。作者通过一个简单的 React/Express 应用示例,演示了 Hydration 错误是如何发生的:当服务器渲染的 HTML 与客户端 React 组件结构不匹配时,就会出现 Hydration 错误。文章详细解释了 `hydrateRoot` 和 `createRoot` 的区别,并提供了多种解决方法,包括检查服务器和客户端渲染结果的一致性,处理浏览器特定 API,以及使用 `useEffect` 避免在 hydration 完成前渲染组件。文章还强调了避免无效 HTML 和处理 localStorage 等浏览器环境特性的重要性,最终目标是确保服务器和客户端渲染结果一致,从而避免 Hydration 错误,提升用户体验。

开发 Hydration

JSON 的逗号之殇:一场关于语法简洁性的思考

2025-04-06

本文探讨了 JSON 格式中逗号的必要性。作者认为,JSON 中的逗号并非设计巧妙,反而增加了语法错误的可能性,并降低了可读性。作者建议移除逗号,利用空格和冒号区分键值对,并以 JSON5 为例说明了改进方向,尽管 JSON5 只是部分解决了问题。文章最后提及了 AI 系统在文本生成中的有趣现象。

开发

PostGIS矢量瓦片服务器性能大比拼

2025-04-06
PostGIS矢量瓦片服务器性能大比拼

Fabian Rechsteiner 的硕士论文对六款开源 PostGIS 矢量瓦片服务器 (BBOX, ldproxy, Martin, pg_tileserv, Tegola, TiPg) 进行了速度对比测试。测试结果以交互式地图和GitHub仓库的形式呈现,方便用户直观感受不同服务器的性能差异,并提供了可复现测试的代码。虽然速度并非唯一考量因素,但这项基准测试为选择合适的矢量瓦片服务器提供了宝贵参考。

开发 PostGIS

Ubuntu 24.04 SSH 密码禁用失效的诡异Bug

2025-04-06

在Ubuntu 24.04服务器上禁用互联网SSH密码访问,同时允许局域网密码访问,看似简单的sshd_config配置却出现问题。作者尝试在/etc/ssh/sshd_config.d/目录下添加配置文件,但重启SSH服务后失效。原因在于sshd_config的“先到先得”配置规则,以及系统自动生成的50-cloud-init.conf文件中的PasswordAuthentication yes配置项,该文件优先加载,覆盖了作者的配置。将自定义配置文件命名为10-no-passwords.conf,使其优先加载后,问题解决。

Owl:基于间隔重复的记忆学习神器

2025-04-06

Owl 是一款利用间隔重复学习法的记忆应用,帮助你更好地记住知识,提升创造力。你可以创建自己的闪卡,也可以使用不断扩充的公共闪卡库。随时随地学习任何知识,免费上手!Owl 已被各行各业的人们用于增强记忆、加速学习和激发创意。它最初是为了满足自身需求而开发的,现在我们与你分享。快乐学习!

ADHD体双:对抗注意力分散的神奇技巧

2025-04-06
ADHD体双:对抗注意力分散的神奇技巧

本文介绍了一种名为“ADHD体双”的提高生产力的方法,它通过让另一个人陪伴在ADHD患者身边来帮助他们集中注意力,完成任务。一位退休高管David因难以完成日常任务而寻求帮助,意外发现妻子陪伴在侧就能显著提高效率。这种方法的核心在于陪伴者的存在,而非指导或建议,它可以作为一种锚点,帮助ADHD患者克服分心,提高专注力。虽然其背后的科学机制尚不明确,但本文提出了几种可能的解释,包括社会压力、镜像神经元效应以及能量平衡等,并总结了体双法的益处及寻找合适陪伴者的建议。

开发

Windows自动锁屏失效的诡异Bug追踪

2025-04-06
Windows自动锁屏失效的诡异Bug追踪

一款软件的新功能导致Windows电脑无法自动锁屏,甚至无法休眠。开发者通过设置断点,发现问题出在`PowerCreateRequest`和`PowerSetRequest`函数上,一个“欢迎使用”弹窗程序阻止了屏幕关闭。但即使关闭弹窗,问题依然存在。最终发现,程序只是隐藏了弹窗,并未真正关闭,导致系统一直收到保持屏幕开启的请求。使用Spy++工具确认了这一点,问题随后被修复。文章还介绍了其他诊断此类问题的工具,例如`powercfg`和`pwrtest`,以及更强大的ETW追踪方法。

开发 Bug追踪

逆向工程:儿童学习机的逆向之旅

2025-04-06
逆向工程:儿童学习机的逆向之旅

作者记录了他第一次逆向工程项目的尝试:对一款儿童学习机(LeapFrog LeapStart/VTech MagiBook)进行逆向分析。他从获取固件开始,通过分析VTech软件的缓存文件,找到了包含固件的几个重要文件:'System'、'FileSys'等。'FileSys'是一个FAT32文件系统镜像,包含应用程序、音频和书籍数据等;'System'文件则疑似ARM二进制文件,其中包含一些C++信息、日志和内核信息(uC/OS-II)。作者下一步计划深入分析这两个文件,目标是理解点识别代码和音频播放代码,并尝试添加自定义音频。

开发

XNU内核:苹果生态系统的坚实基石

2025-04-06
XNU内核:苹果生态系统的坚实基石

本文深入探讨了苹果操作系统(macOS、iOS等)的核心——XNU内核的架构和发展历程。XNU是一个独特的混合内核,它结合了Mach微内核和BSD Unix的优点,兼顾了模块化和性能。文章从Mach微内核的起源开始,追溯了XNU的演变,涵盖了从PowerPC到Intel再到Apple Silicon的架构转型,以及对多核、64位支持、安全机制(SIP、Secure Enclave、Exclaves)的改进。XNU的成功之处在于其灵活性和可扩展性,使其能够适应从iPhone到Mac Pro等各种设备,并持续为苹果生态系统提供强大的支持。

测试并非沉没成本:它如何加速你的团队

2025-04-05
测试并非沉没成本:它如何加速你的团队

本文探讨了软件工程师普遍抵制编写测试的原因,以及测试对于提高代码质量和团队效率的重要性。作者以自身经历为例,指出即使在压力巨大的创业环境下,放弃测试也是一个错误。文章强调测试并非仅仅是单元测试、集成测试等类型的区分,而是验证代码核心功能的代码块,它能够按需运行、快速重复、在其他地方复制和自动化。作者还指出,编写测试会促使开发者编写更易于测试的代码,从而提高代码质量和模块化程度,并最终提升团队效率。最终,作者呼吁工程师们重视测试,将其视为提高生产力和减少bug的关键,并利用AI辅助测试,但不能完全依赖AI。

开发

用Shell脚本自动化QEMU输出和控制

2025-04-05
用Shell脚本自动化QEMU输出和控制

本文介绍了如何配置QEMU虚拟机的控制台输出,并使用shell脚本实现自动化控制。文章涵盖了多种方法,包括将串口输出重定向到主机终端,通过命名管道进行输入输出,以及使用expect和ssh工具进行自动化操作。文中详细讲解了每种方法的步骤和注意事项,并提供了相应的代码示例和下载链接,方便读者进行实践。无论是初学者还是经验丰富的用户,都能从本文中获益良多,从而高效地管理和控制QEMU虚拟机。

Landrun:轻量级Linux沙箱,内核级安全

2025-04-05
Landrun:轻量级Linux沙箱,内核级安全

Landrun 是一款轻量级、安全的 Linux 沙箱工具,利用 Landlock 内核模块提供内核级安全性,开销极低。它允许非特权进程自行沙盒化,对文件系统和网络访问进行细粒度控制,无需 root 权限、容器或 SELinux/AppArmor 配置。Landrun 支持文件读写、执行权限、TCP 网络访问控制等功能,并提供多种选项以灵活配置沙盒策略。它兼容 Linux 5.13 及更高版本内核(网络限制需 6.7 以上),并提供了详细的使用示例和系统服务集成方法,方便用户安全地运行各种命令和服务。

开发 Landlock

数据库协议的改进:重拾开发体验

2025-04-05

本文探讨了SQL数据库客户端协议的不足,特别是MySQL和PostgreSQL。作者指出,这些协议在连接管理、错误恢复和预处理语句方面存在问题,导致开发复杂度增加。例如,可变连接状态使得错误恢复困难,而预处理语句的会话作用域限制了其在连接池中的使用。作者建议借鉴Redis协议的优点,引入显式配置阶段、幂等性键以及全局预处理语句标识符等机制,以简化开发流程并提高数据库客户端的可靠性。这将改善开发体验,并提升数据库的易用性。

开发

富文本,穷文本:字符编码的隐痛

2025-04-05

本文探讨了富文本编辑中字体样式(粗体、斜体等)的存储方式问题。作者认为,这些样式并非简单的“修饰”,而是语言表达的一部分,类似于标点符号。然而,早期的字符编码标准(如ASCII)并未包含这些样式信息,导致需要使用嵌入式标记来表示,这使得文本数据“污染”,并影响了文本处理的效率和一致性。作者建议采用更宽字符编码方案,将样式信息直接编码到字符中,以解决这一问题。

开发 富文本

Go语言解释器:追赶C++的速度

2025-04-05
Go语言解释器:追赶C++的速度

PlanetScale使用的开源数据库Vitess的SQL引擎最初是一个直接操作SQL AST的解释器。一年来,它逐渐被一个Go语言编写的虚拟机取代,性能与MySQL原生的C++代码相当,且维护性更好。该虚拟机通过静态类型检查和巧妙的指令调度设计,实现了显著的性能提升,在某些情况下甚至比C++快20倍。这篇文章详细介绍了其设计和实现,包括如何利用Go的闭包特性简化虚拟机实现,以及如何处理SQL中动态类型的情况。

开发

Haskell中的Functor:优雅地处理上下文中的值

2025-04-05

在Haskell中,Functor是一个强大的抽象概念,用于处理包含在上下文中的值,例如Maybe类型或列表。它通过`fmap`函数优雅地将函数应用于这些值,避免了直接应用函数可能导致的类型错误。文章详细解释了Functor的定义、`fmap`函数的作用以及Functor必须遵守的恒等律和组合律,并以Maybe类型和列表为例进行了说明,最终总结了Functor在提高代码简洁性和可读性方面的优势。

开发 Functor
1 2 119 120 121 123 125 126 127 213 214