分类: 开发

用语法规则和call/cc重复应用实现正规序直接风格beta求值器

2025-09-17

这篇论文探讨了call/cc在Scheme宏中的不常见应用,特别是将其用于辅助繁琐的lambda计算。作者介绍了一种正规序直接风格beta归约器,它巧妙地结合了语法规则和call/cc的重复应用,并通过CPS变换和一个巧妙的直接风格lambda计算器来证明其正确性。论文还探讨了分界延续的概念,并展示了如何使用简单的宏来实现各种分界延续操作符,例如prompt和control。最终,作者通过一个基于call/cc的阶乘函数实现,以及对分界延续的讨论,突出了该方法的优雅性和实用性。

开发 call/cc

Murex:一款易于安装的命令行工具

2025-09-17
Murex:一款易于安装的命令行工具

Murex 是一款功能强大的命令行工具,其安装简便,支持多种操作系统,例如 macOS、Arch Linux 和 FreeBSD。用户可以通过 Homebrew、MacPorts 或 AUR 等包管理器轻松安装。此外,Murex 提供了语言教程和交互式 Shell 指南,帮助用户快速上手。即使跳过教程,Rosetta Stone 备忘单也能帮助用户快速掌握。

40年老技术:80x25文本控制台在现代Linux系统中的消亡

2025-09-17

作者在现代Linux系统中遭遇了一个令人沮丧的问题:经典的80x25文本控制台消失了。这并非简单的分辨率问题,而是涉及到UEFI引导、非x86平台以及图形化渲染模式等多种因素。旧的解决方法如`vga=`参数在现代系统中失效,而新的尝试如`kmscon`也存在诸多问题。作者无奈之下,只能考虑寻找一台老旧的PC来解决这个问题,这反映出现代系统与传统硬件兼容性下降的困境。

Obsidian 插件悬赏:改进 Notion 导入功能

2025-09-17
Obsidian 插件悬赏:改进 Notion 导入功能

Obsidian 插件 Importer 正在寻求改进其 Notion 导入功能的开发者。目前导入依赖于 HTML 导出,效率低下。此次悬赏 5000 美元,目标是在 30 天内利用 Notion API 实现渐进式文件下载,并支持将 Notion 数据库转换为 Bases。开发者需要熟悉 Importer 代码库和 Notion API,并详细说明其解决方案,尤其要考虑数据库和 Bases 的差异,以及哪些 Notion 数据库元素(视图、列、分组等)可以导入。

开发

Midnight Commander:强大的双面板文件管理器

2025-09-17

Midnight Commander (mc) 是一款功能强大的、基于文本界面的双面板文件管理器,它完全免费开源。你可以用它复制、移动、删除文件和目录,搜索文件,甚至在内置的子shell中执行命令。mc 支持多种文本界面库,可在各种环境下运行,包括普通控制台、X Window 终端和 SSH 连接。安装 mc 最简单的方法是使用系统的包管理器,更多信息请参考官方文档或使用 F1 键调出的在线帮助。

开发

Rust + Z3:用约束求解器解决难题

2025-09-16

本文介绍了如何使用Rust和Z3约束求解器解决各种问题,从简单的方程到复杂的数独游戏和页面布局。作者从自身学习Z3的经验出发,逐步讲解了Z3的基本概念、使用方法以及在Rust中的应用,并通过多个例子演示了如何利用Z3高效地解决实际问题。文章还探讨了Z3的局限性和一些高级特性,例如数组、位向量和集合等,为读者进一步学习提供了方向。

开发

开源世界的悲歌:一位KDE贡献者25年的心路历程

2025-09-16

一位在开源世界耕耘25年的开发者讲述了他与KDE的故事。从最初接触Linux,到参与Ubuntu和Kubuntu的开发,再到参与KDE Neon项目的创建,他见证了开源的辉煌与残酷。然而,最终他因理念不合被排挤出项目,失去了工作、朋友和家庭,令人唏嘘。这篇文章反思了开源社区的商业化、以及劳动者权益的重要性。

开发

iina 播放器:标题显示和暂停最小化

2025-09-16

这段代码为 iina 播放器添加了两个实用功能。首先,它在视频播放时,会在视频顶部以 48px 的大字体显示视频标题。其次,它实现了视频暂停时窗口最小化,恢复窗口时继续播放的功能,提升了用户体验。

开发 iina

微软青睐Anthropic AI模型,GitHub Copilot优先Claude Sonnet 4

2025-09-16
微软青睐Anthropic AI模型,GitHub Copilot优先Claude Sonnet 4

微软正在其Visual Studio Code编辑器中添加自动AI模型选择功能,优先选择性能最佳的模型。对于GitHub Copilot免费用户,将自动在Claude Sonnet 4、GPT-5、GPT-5 mini等模型之间选择;付费用户将主要依赖Claude Sonnet 4。内部文件显示,微软已指示其开发者优先使用Claude Sonnet 4,并正在大力投资自建AI模型集群。此外,微软365 Copilot的部分功能也将采用Anthropic模型。尽管微软与OpenAI仍保持合作关系,并签署了新的协议,但微软明显更倾向于Anthropic的AI模型,这表明其在AI战略上的调整。

开发

Java 25 正式发布:性能提升与新特性

2025-09-16

经过多次测试和改进,Java 25(JDK 25)正式发布!此版本包含18个增强提案(JEP),涵盖了加密对象编码、稳定值、向量API改进、结构化并发等多个方面,旨在提升性能和开发效率。此外,还修复了数千个bug,并对JFR进行了增强。Java 25 现已准备好投入生产环境,开源版本可从官方网站下载。

开发 Java 25

显式与隐式ODE求解器:稳定性、鲁棒性和实际应用

2025-09-16
显式与隐式ODE求解器:稳定性、鲁棒性和实际应用

本文深入探讨了显式和隐式常微分方程(ODE)求解器的优缺点。作者指出,虽然隐式方法通常被认为更稳健,因为它们具有更好的稳定性,但在处理某些问题,特别是需要保留振荡的系统时,显式方法可能更合适。文章通过线性ODE分析、稳定性区域的概念以及实际案例(如冷却模型和振荡系统), 说明了两种方法在不同场景下的表现,并强调了选择合适的求解器需要根据具体问题进行权衡,而非一概而论。

DuckDB 1.4.0 “Andium” 发布:数据库加密、MERGE 语句和 Iceberg 写入等新特性

2025-09-16
DuckDB 1.4.0 “Andium” 发布:数据库加密、MERGE 语句和 Iceberg 写入等新特性

DuckDB 1.4.0 版本“Andium”正式发布!这是一个长期支持 (LTS) 版本,将提供一年的社区支持。此版本带来了众多激动人心的新特性,包括数据库文件加密、MERGE 语句以及对 Iceberg 数据湖的写入支持。数据库加密使用行业标准 AES 加密,并支持使用 mbedtls 或 OpenSSL 库。MERGE 语句提供了一种灵活的更新和插入数据的方式,无需主键即可实现 upsert 功能。Iceberg 写入支持则增强了 DuckDB 与数据湖的集成能力。此外,此版本还包含性能改进、新的窗口函数以及对 macOS 系统的改进等。

开发 LTS版本

少用JS生成HTML,拥抱更简洁高效的Web开发

2025-09-16
少用JS生成HTML,拥抱更简洁高效的Web开发

本文作者指出,许多项目过度依赖JavaScript生成HTML,导致加载速度慢、运行速度慢、易出错且难以理解。作者建议尽量使用HTML直接生成内容,JavaScript仅用于增强交互性。文章以表单提交和API响应为例,对比了使用JS和HTML两种方式的代码,证明了直接使用HTML的简洁性和效率。作者认为这种方法能构建更快、更简单、更可靠的应用,但需要改变前端开发的工作流程,将更多工作转移到后端。

开发

Shopify巨型应用迁移React Native新架构实战

2025-09-16
Shopify巨型应用迁移React Native新架构实战

Shopify成功将Shopify Mobile和Shopify POS两大应用迁移到React Native的新架构,在保持每周发布和服务数百万商家同时进行。迁移过程涉及复杂的代码库、数百个屏幕和原生模块、大量的自定义组件以及与FlashList等Shopify内部库的深度集成。Shopify团队分享了他们的迁移策略、关键决策和经验教训,包括如何保持开发速度、双架构兼容性以及性能和稳定性,并解决迁移过程中遇到的常见问题,例如状态批处理、空白屏幕、影子树操作以及视图扁平化等。最终,迁移成功,应用启动时间缩短,并为React Native社区贡献了宝贵的经验和改进。

开发 应用迁移

重大警报!NPM 生态系统遭受大规模供应链攻击

2025-09-16
重大警报!NPM 生态系统遭受大规模供应链攻击

超过40个npm包,包括热门的@ctrl/tinycolor包(每周下载量超过200万),遭到恶意攻击。攻击者利用自传播机制,感染下游依赖包,造成级联式破坏。攻击载荷是一个Webpack打包的脚本,窃取AWS、GCP、GitHub等云凭据和敏感信息,并通过GitHub Actions建立持久性后门。攻击已造成大范围的凭据泄露,建议立即检查受影响的包并旋转所有凭据。

开发

Egglog 教程:基于等式饱和的线性代数优化器

2025-09-16

本教程介绍了如何使用 Egglog 构建线性代数子集的优化器。通过定义简单的算术表达式(常数、变量、加法、乘法),并运用等式饱和技术,逐步构建优化规则(交换律、结合律、常量折叠等)。教程详细解释了如何定义转换器、编写重写规则,以及使用 `egraph.run()` 执行优化,最终验证了表达式等价性,例如 2 * (x * 3) 与 6 * x 的等价性。

自动化CI矩阵更新:告别Linux发行版版本维护的繁琐

2025-09-16
自动化CI矩阵更新:告别Linux发行版版本维护的繁琐

过去,每月检查Linux发行版更新和EOL版本是一个令人头疼的任务。现在,我们利用endoflife.date API、GitHub Actions和create-pull-request等工具实现了自动化。GitHub Actions每周查询API,更新CI矩阵,并创建PR进行版本变更,Dead Man's Snitch则监控Actions运行状态,确保自动化流程可靠运行。这解放了工程师的宝贵时间,避免了因版本滞后带来的问题。

开发

让软件开发像好莱坞大片一样精彩

2025-09-16

厌倦了枯燥的软件开发?本文指出,许多日常开发问题其实充满挑战,就像电影里的紧张情节一样引人入胜。例如,CI/CD速度过慢、数据库连接过多、内存泄漏、代码可读性差、高延迟以及数据库批量导入缓慢等问题,都等待着我们去解决。作者鼓励开发者积极面对这些“反派”,将它们视为需要克服的挑战,让日常工作充满乐趣和成就感。即使在工作中无法解决所有问题,也可以在个人项目中实践,创造属于自己的“精彩故事”。

开发

我的家,我的服务器:重拾网络的物理连接

2025-09-16
我的家,我的服务器:重拾网络的物理连接

作者回忆起大学时代用寝室里的Linux电脑搭建语音合成网站的经历,体会到有人远程访问服务器的奇妙感受。如今,作者希望重现这种物理连接的体验,并探讨在家搭建可靠且安全的个人网站的可能性,最终目标是将虚拟世界与物理世界巧妙结合,创造更具互动性和个性化的网络体验。文章引发了对网络本质、用户掌控感以及未来网络发展方向的思考。

开发

告别Java的Hello World:一个程序员的吐槽与狂欢

2025-09-16

程序员Ethan McCue在2025年9月16日发文,痛斥了经典Java入门程序“Hello World”的冗余和繁琐。他将旧版本与简洁的新版本代码进行对比,表达了对冗长代码的厌恶之情。文章充满情绪化的表达,鼓励程序员们一起吐槽并庆祝这一“古老仪式”的终结,并分享了与旧代码相关的趣事,引发了程序员的共鸣。

开发 Hello World

软件开发中的复杂性陷阱:我们为何沉迷于构建“代码金字塔”?

2025-09-16
软件开发中的复杂性陷阱:我们为何沉迷于构建“代码金字塔”?

本文探讨了软件开发中普遍存在的复杂性问题。作者以金字塔为喻,将复杂的软件系统比作徒有其表的庞然大物,内部可能空无一物,维护成本极高。从营销角度看,复杂性被包装成高阶象征,但实际上,简洁高效才是王道。文章分析了导致复杂性的多种因素,例如创造的诱惑、遗留系统、团队协作和创新压力,并呼吁开发者在追求简洁性与实用性之间取得平衡,避免过度工程化,构建真正有价值的软件。

开发

Go语言调用Python函数:无需CGO或微服务

2025-09-16
Go语言调用Python函数:无需CGO或微服务

pyproc是一个Go语言库,允许开发者像调用本地函数一样调用Python函数,无需CGO或微服务。它利用Unix域套接字进行进程间通信,实现零网络开销和进程隔离,并支持并发处理,有效绕过Python的GIL。pyproc适用于集成现有的Python机器学习模型、处理数据和逐步迁移Python微服务到Go服务等场景。其高性能表现使其能够处理每秒数千个请求。

开发

macOS 系统更新:无障碍、家庭、游戏等多方面提升

2025-09-16
macOS 系统更新:无障碍、家庭、游戏等多方面提升

苹果公司发布了最新的macOS系统更新,涵盖了无障碍、家庭、游戏等多个方面。更新包括:增强型放大镜和阅读器,盲文显示支持,减少晕动症的功能;加强的家长控制功能;全新的“备忘录”应用,方便记录生活点滴;照片应用的改进,包括自定义集合大小和固定集合;FaceTime的全新设计;更智能的提醒事项;集成的游戏中心和Metal 4图形技术;信息应用的改进,包括投票、背景和筛选工具;密码管理的增强;笔记应用新增音频转录和Markdown导出功能。此次更新旨在提升用户体验,提供更便捷、更安全、更个性化的使用体验。

开发 macOS更新

从零开始用汇编语言编写GUI程序

2025-09-16

本文讲述了作者如何通过编写一个简单的GUI程序来学习x86-64汇编语言。作者从一个简单的退出程序开始,逐步讲解了系统调用、栈操作、X11协议等知识,最终实现了在不到1KB的二进制文件中创建一个显示“Hello, world!”的窗口。文章深入浅出,适合有一定编程基础的读者学习。

开发

React的默认霸权扼杀了前端创新

2025-09-15
React的默认霸权扼杀了前端创新

React凭借默认优势而非技术优势主导前端领域,这正在扼杀创新。团队选择前端框架时,往往默认选择React,而非根据项目需求选择最合适的工具。这导致Svelte、Solid和Qwik等具有技术优势的框架难以获得应有的关注。这些框架在编译优化、细粒度响应式和可恢复性方面超越React,但由于React的默认地位,它们很少得到公平评估。作者呼吁打破React的默认霸权,鼓励根据项目需求选择合适的框架,从而促进前端生态系统的多元化和创新。

开发

Mac App Store 上的 AI 聊天应用山寨潮

2025-09-15
Mac App Store 上的 AI 聊天应用山寨潮

在 Mac App Store 搜索“AI 聊天”会发现大量模仿 ChatGPT 的应用图标,令人啼笑皆非。这些应用图标几乎一模一样,只有细微差别,甚至名称也千奇百怪,例如“Al Chatbot”。更有趣的是,真正的 ChatGPT 桌面应用并没有上架 Mac App Store,只能从 OpenAI 官网下载。这反映了 App Store 在审核和管理方面的不足,以及开发者利用热门应用趋势牟利的现象。

告别冗长的 systemctl 命令:基于 fzf 的 shell 别名和函数

2025-09-15
告别冗长的 systemctl 命令:基于 fzf 的 shell 别名和函数

厌倦了敲击冗长的 systemctl 命令?本文介绍了一套基于 fzf 的 shell 别名和函数,能高效管理 systemd 服务。它巧妙地结合了 fzf 的模糊查找功能,将 systemctl 和 journalctl 命令简化成易于记忆和使用的短命令,并自动处理错误和日志,极大提升了效率,尤其在资源受限的设备上表现出色。

开发

纯Rust构建的LLM:RustGPT-demo-zoon

2025-09-15
纯Rust构建的LLM:RustGPT-demo-zoon

RustGPT-demo-zoon项目展示了如何仅使用Rust和ndarray库,从零开始构建一个基于Transformer的语言模型。该项目包含预训练和指令微调两个阶段,分别学习事实知识和对话模式。最终,模型能够进行交互式对话,回答问题例如“山是如何形成的?”。该项目代码模块化,并包含全面的测试,非常适合学习现代LLM的工作原理。

开发

在AMD Turin处理器上运行Coreboot:一场与固件的较量

2025-09-15

作者在AMD最新的Turin服务器处理器Gigabyte MZ33-AR1主板上运行Coreboot时遇到难题:AMD提供的固件不足以让CPU从PSP重置中恢复。他们通过将Coreboot注入厂商固件并刷回的方式解决了问题,但这远非理想。文章深入分析了AMD PSP固件结构,包括EFS、PSP和BIOS目录,并详细解释了他们如何通过比较厂商固件和Coreboot固件的差异,修复SPI速度、eSPI配置和Multi Gen EFS值等问题,最终成功引导。然而,使用公开的PSP固件仍然失败,因为其使用了不同的根密钥。作者发现AMD发布的固件存在问题,并已提交修复请求。最终,使用来自Turin PI包的官方固件成功引导。

开发

Gentoo禁止使用AI生成内容贡献代码

2025-09-15

Gentoo社区在4月14日投票通过一项新政策,禁止使用自然语言处理(NLP)人工智能工具生成的任何内容贡献给Gentoo项目。这一决定基于版权、质量和伦理方面的担忧。虽然允许添加与AI相关的软件包,但直接使用AI生成代码则被禁止,因为AI生成的代码可能存在版权问题、质量问题(例如生成看似合理但毫无意义的内容)以及伦理问题(例如AI模型训练中存在的版权侵犯、高能耗等)。该政策旨在维护Gentoo项目的质量和完整性。

开发
1 2 3 4 5 7 9 10 11 213 214