分类: 开发

WebAssembly 指令集全览:一图胜千言

2025-05-09

这份详尽的WebAssembly指令集列表,涵盖了从基本算术运算到高级向量操作的所有指令。每个指令都包含操作码、输入/输出类型、验证和执行阶段的说明,方便开发者快速查找和理解。列表结构清晰,适合作为WebAssembly开发的便捷参考。

开发

摆脱React困境:速成秘诀之“一次性代码”

2025-05-09

一位程序员在React项目中挣扎,调试时间远超开发时间。他用韩语谚语“배보다 배꼽이 더크다”(重心错位)形容了困境。阅读《Pure React》后,他开始大量编写“一次性代码”练习React,快速掌握技能。最终,他用30分钟做出原型,惊艳朋友。结论:多用“一次性代码”练习,快速提升技能,摆脱困境。

开发 速成

eBPF, .NET 5,以及IPv4伪装成IPv6的惊魂之旅

2025-05-09

作者使用eBPF程序重定向端口53上的DNS请求,却遇到.NET 5的DualMode Socket导致的IPv4通过IPv4-mapped IPv6地址发送的意外情况。.NET 5的SocketsHttpHandler使用了DualMode Socket,即使是IPv4流量,也使用IPv6 Socket并设置IPv4-mapped IPv6地址。这导致eBPF程序误判为IPv6流量而拦截,最终作者通过检查skb->protocol而不是skb->family来区分IPv6和IPv4-mapped IPv6地址,解决了问题。

开发

Cogent Core:一套编写一次,随处运行的跨平台框架

2025-05-09
Cogent Core:一套编写一次,随处运行的跨平台框架

Cogent Core是一个免费开源的框架,用于构建运行在macOS、Windows、Linux、iOS、Android和Web上的强大、快速、优雅的2D和3D应用程序。它使用Go语言编写,实现了“编写一次,随处运行”的目标。官方网站提供详尽的文档和可直接编辑运行的交互式示例,网站本身就是一个使用wasm在Web上运行的Cogent Core应用程序。在系统上使用Cogent Core进行开发之前,必须完成网站上的安装说明。

开发

Chromium内存泄漏:一个来自建筑机器人的Bug报告

2025-05-09

一家名为Monumental的机器人建筑公司在使用Chromium的Electron应用时发现了一个内存泄漏bug。该应用使用Rust WASM代码,通过wasm-bindgen管理内存。问题在于,JS引擎有时会停止调用FinalizationRegistry中的终结器,导致WASM内存持续增长。作者创建了一个最小可复现的例子,并提交了bug报告。该bug表现为在多次刷新后,内存泄漏持续存在,需要关闭窗口才能解决。

(bou.ke)
开发

Android 15将支持16KB内存页大小,提升应用性能

2025-05-09
Android 15将支持16KB内存页大小,提升应用性能

谷歌宣布Android 15将支持16KB内存页大小,以提升应用性能。从2025年11月1日起,所有面向Android 15及以上设备的新应用和更新都必须支持16KB页大小。此举可加快应用启动速度、改善电池续航、提升相机启动速度和系统启动速度。许多常用SDK和游戏引擎已支持16KB页大小,开发者可通过Play Console的应用包资源管理器检查应用兼容性并进行必要的更新。

告别端口冲突:Podman 无端口转发方案及命令行开发环境容器化

2025-05-08

作者因端口冲突问题,放弃了容器端口转发,转而使用Podman和一个名为Podfox的Rust编写的SOCKS代理,实现浏览器直接与Podman网络通信。Podfox无需主机DNS配置,解析容器主机名,并通过Podman网络信息找到网关地址进行DNS查询和代理。同时,作者还分享了使用Homebrew和Podchamp脚本简化命令行开发环境容器化的经验,通过挂载Homebrew前缀和环境变量,轻松地在不同容器中使用相同的开发工具,无需重新构建镜像或安装依赖,提高了开发效率。

开发

fui:一个基于帧缓冲区的TTY界面库

2025-05-08
fui:一个基于帧缓冲区的TTY界面库

fui是一个用C语言编写的轻量级帧缓冲区用户界面库,可在TTY环境下直接操作帧缓冲区。它采用分层绘图系统,支持像素绘制、基本图形绘制(线条、矩形、圆形)、位图字体渲染、键盘鼠标事件处理(使用libevdev)以及简单的基于alsa的声效系统(目前支持正弦波和和弦)。该库静态链接,包含示例和测试用例(使用cmocka)。其中,asteroids文件夹包含一个简单的同名游戏示例,展示了库的声效功能。

开发

神器!req-update-check:一键更新你的requirements.txt

2025-05-08
神器!req-update-check:一键更新你的requirements.txt

还在手动更新 `requirements.txt` 文件吗?试试 `req-update-check`!这款 Python 工具可以自动检查你的依赖包是否有更新,并显示更新的严重程度(major/minor/patch),甚至还能显示包的首页和变更日志。支持缓存、注释和多种安装方式,极大地简化了依赖管理流程。快来提升你的开发效率吧!

开发

Cursor 如何获得市场上最佳的代码补全模型

2025-05-08
Cursor 如何获得市场上最佳的代码补全模型

Cursor 代码编辑器的代码补全功能最初落后于 Supermaven 的 Babble 模型。Babble 凭借其创新的基于编辑序列的训练方法和巨大的上下文窗口,在速度和准确性上都遥遥领先。然而,Cursor 通过收购 Supermaven,获得了 Babble 模型,并利用其庞大的用户数据,巩固了其在代码补全领域的领先地位。这起收购事件反映了 AI 模型训练方法的重要性以及数据规模对模型性能的关键作用。

开发 数据优势

PostgreSQL中的状态机实现:兼顾数据完整性和高级分析

2025-05-08

本文介绍了如何在PostgreSQL数据库中实现有限状态机(FSM)来管理订单状态。通过创建订单事件表、状态转移函数和自定义聚合函数,作者构建了一个系统,能够确保订单状态转换的有效性,并防止无效操作。更重要的是,这种方法还提供了高级分析能力,例如追踪订单状态历史和生成每日订单状态统计报告,这对于拥有大量数据的应用来说非常有价值。作者以订单管理系统为例,详细讲解了实现步骤,并展示了如何利用该系统进行数据分析。

开发

Clojure库的惊人稳定性:避免破坏性变更的秘诀

2025-05-08

本文探讨了Clojure库的非凡稳定性,并揭示了其背后的原因并非静态类型,而是社区约定俗成的避免破坏性变更的实践。作者通过分析Clojure代码库的稳定性和流行库的代码保留率,以及一个修复bug的案例,论证了Clojure社区对稳定性的重视。文章指出,Clojure的稳定性源于其对数据结构(不可变性、EDN序列化)和命名方式(命名空间元素)的设计,以及避免重命名、改变函数签名等破坏性变更的策略。作者认为,与其依赖静态类型来避免变更带来的问题,不如从根本上避免破坏性变更,这才是维护库稳定性的关键。

开发 库稳定性

微软工程师打造类Win11 Linux发行版AnduinOS

2025-05-08
微软工程师打造类Win11 Linux发行版AnduinOS

一位在微软工作的工程师Anduin Xue,利用业余时间开发了一款名为AnduinOS的Linux发行版,其界面设计类似于Windows 11。AnduinOS基于Ubuntu,修改较少,主要专注于用户界面的美化。Anduin Xue表示,该项目纯属个人爱好,目前没有商业化计划,每月仅投入少量时间维护。尽管该项目来自中国,但他强调源代码公开,不存在后门风险。随着微软即将停止对Windows 10的主流支持,AnduinOS为无法升级到Windows 11的用户提供了一个不错的替代方案。

开发

数学问题求解课程:磨练你的数学竞赛技巧

2025-05-08

达里·格林伯格教授的Math 235课程是一门深入浅出的数学问题求解课程,旨在帮助学生掌握数学竞赛中常用的技巧和工具,例如归纳法、鸽巢原理、模算术和柯西-施瓦茨不等式等。课程内容涵盖每周50分钟的视频讲座和40分钟的在线小组讨论,并辅以每周作业。课程参考了众多经典的数学竞赛书籍和资料,例如《Putnam and Beyond》和《The IMO Compendium》,但课程目标并非仅仅是备战IMO,而是培养学生解决各种数学问题的综合能力。最终,学生将获得丰富的实践经验,并熟悉各种常用的数学问题求解技巧。

开发 高等数学

谷歌如何系统性地解决技术债务难题

2025-05-08
谷歌如何系统性地解决技术债务难题

谷歌工程师面临着技术债务导致开发效率低下的问题。他们通过问卷调查、数据分析和跨职能团队合作,定义了十类技术债务,并开发了成熟度模型来评估团队管理技术债务的能力。最终,他们通过教育、工具和流程改进,显著降低了技术债务对工程师工作效率的影响,证明了系统性管理技术债务的重要性,而非追求零债务。

开发

零成本部署React Server Components静态博客

2025-05-08
零成本部署React Server Components静态博客

本文讲述了如何利用Next.js框架的静态站点输出功能,结合React Server Components (RSC),在Cloudflare免费静态托管平台上部署一个完全静态的博客,且成本为零。作者解释了“混合”框架的概念,这类框架既能生成服务器端渲染的动态页面,也能生成静态页面。通过在构建时运行RSC代码并保存其输出,可以实现完全静态的部署,从而避免了服务器成本。文中给出的代码示例展示了如何在构建过程中读取本地文件系统中的数据,生成静态页面。这表明“静态”本质上是提前运行的“服务器”,代码逻辑保持一致,只需改变运行时机。

开发

蓄水池抽样:解决未知数据规模的随机采样难题

2025-05-08
蓄水池抽样:解决未知数据规模的随机采样难题

本文深入浅出地讲解了蓄水池抽样算法,该算法巧妙地解决了在不知道数据总量的情况下进行公平随机采样的问题。文章通过类比抽取扑克牌,逐步解释了算法原理,并用日志收集服务的例子说明了算法的实际应用场景。蓄水池抽样不仅保证了采样的公平性,而且有效控制了内存使用,避免了因数据量过大导致的系统崩溃。文章还简要介绍了算法的拓展和应用,是一篇值得推荐的关于算法讲解的文章。

开源代码编辑器Void:Cursor的强力替代品

2025-05-08
开源代码编辑器Void:Cursor的强力替代品

Void是一个开源的代码编辑器,旨在成为Cursor的替代品。该项目已公开全部源代码,并欢迎所有贡献者。开发者提供详细的贡献指南(HOW_TO_CONTRIBUTE)以及代码库指南(VOID_CODEBASE_GUIDE),并通过Discord服务器和邮件地址([email protected])保持与社区的联系。Void基于VS Code代码库进行开发,鼓励协作和各种建议。

Hypermode 的 Model Router:轻松切换多种 AI 模型

2025-05-08
Hypermode 的 Model Router:轻松切换多种 AI 模型

随着 AI 模型的爆炸式增长,开发者面临着选择和集成多种模型的难题。Hypermode 推出的 Model Router 功能,提供了一个统一的 API,允许开发者无缝切换开源和商业语言模型,例如 LLaMA、GPT、Claude 和 Gemini 等,并支持嵌入模型。Model Router 简化了开发流程,降低了成本,提高了可靠性,并通过 OpenAI SDK、Vercel AI SDK 和 Modus SDK 等提供灵活的访问方式,助力开发者构建更智能、更适应性强的 AI 应用。

AI编程助手:生产力提升20%的实践经验

2025-05-08
AI编程助手:生产力提升20%的实践经验

一家拥有12年历史、40名开发者的SaaS公司尝试使用AI编程助手Cursor和Claude Code,结果显示8名开发者几乎完全依赖AI,11名开发者会根据任务选择性使用。作者发现Claude擅长编写完整功能,而Cursor更适合小的修改。AI助手提升了团队的生产力,尤其在处理重复性任务和理解代码方面。然而,AI生成的代码有时会存在问题,需要开发者仔细检查,且AI生成的代码风格一致,会损失个性化风格。作者认为,熟练使用AI助手是未来的重要技能,但最终决定软件功能的仍然是人的思考能力。

开发

Qtap:无需修改应用即可捕获Linux内核网络流量的eBPF代理

2025-05-08
Qtap:无需修改应用即可捕获Linux内核网络流量的eBPF代理

Qtap是一款基于eBPF的代理,能够捕获Linux内核中流动的网络流量,无需修改应用程序、安装代理或管理证书。它通过附加到TLS/SSL函数来拦截加密前后数据,并将其传递给灵活的插件,提供全面的上下文信息(进程/容器/主机/用户/协议等)。Qtap能够以极低的开销和无延迟的方式显示原始未加密的数据,增强现有可观测性管道,并可用于安全审计、网络问题调试、API开发、第三方集成故障排除等多种场景。目前Qtap处于早期开发阶段,部分API可能会有所变化,文档可能不完整,但欢迎社区贡献和反馈。

开发

Coalton赋能量子编译器:实现离散编译的突破

2025-05-08

Quilc,一个用Common Lisp编写的量子编译器,因动态类型语言的局限性而面临挑战。研究人员利用严格类型的Coalton语言,实现了一个名为离散编译的新功能。该功能通过将连续量子操作离散化,并利用Ross-Selinger算法,将任意酉矩阵分解为Clifford+T门的组合,从而提升了量子计算的精度和效率。Coalton的类型类系统简化了不同代数环的运算,使其成为实现这一复杂算法的理想工具。这项工作成功地将离散编译功能集成到Quilc中,为量子计算的实际应用铺平了道路。

开发 Coalton

初创公司:微服务并非灵丹妙药

2025-05-08
初创公司:微服务并非灵丹妙药

本文探讨了在初创公司中过早采用微服务的弊端。作者指出,过早的微服务会导致开发成本增加、部署复杂化、本地开发环境脆弱、CI/CD重复以及可观察性开销增加等问题,最终降低团队速度,阻碍产品迭代。作者建议初创公司优先选择单体架构,待遇到实际的扩展瓶颈后再考虑微服务。只有在遇到诸如工作负载隔离、不同伸缩需求或不同运行时需求等特定场景时,微服务才值得采用。

开发 单体架构

QueryHub:用自然语言查询数据库的AI神器

2025-05-08
QueryHub:用自然语言查询数据库的AI神器

QueryHub是一个革命性的AI平台,它使用自然语言处理技术,让用户可以用简单的英语查询数据库,无需编写复杂的SQL语句。它能自动生成优化的SQL查询,理解数据库结构,并提供数据可视化功能。QueryHub旨在帮助开发者和企业更高效地分析数据,获取有意义的洞察,即使没有数据库专业知识也能轻松操作。免费版允许连接一个数据库并运行100次AI查询,付费版则提供更多连接和无限查询。

开发

苹果II MouseCard 的 VBL 同步中断之谜

2025-05-08
苹果II MouseCard 的 VBL 同步中断之谜

本文深入探讨了苹果II MouseCard的IRQ中断与垂直消隐(VBL)的同步机制。作者最初在MAME模拟器中发现游戏画面闪烁,而在真实机器上却运行流畅。经过与社区成员的交流和对MouseCard固件的分析,最终揭开了谜底:MouseCard并非直接接收VBL信号,而是通过软件方式在68705微处理器上精确计算并触发中断,实现与VBL的同步。该过程涉及到对6821 PIA寄存器的操作和对68705内部定时器的配置,最终以极高的精度实现与VBL的同步,这与苹果官方文档的描述一致。

CoreWCF流式传输RPC性能瓶颈:StackOverflow提问失败后的反思

2025-05-08
CoreWCF流式传输RPC性能瓶颈:StackOverflow提问失败后的反思

作者尝试使用CoreWCF进行.NET Framework和.NET 8之间的RPC流式传输,以测试随机数传输的吞吐量。但在StackOverflow上提问后,问题被关闭,未得到解答。问题在于CoreWCF服务在客户端断开连接后仍然占用大量CPU,持续写入流。作者怀疑其对WCF流的理解有误,WCF流可能不适合处理长度未知的流式数据。文章探讨了使用WCF流式传输进行高吞吐量RPC的挑战,并考虑了其他替代方案,例如使用单个消息请求或会话模式,以提高性能和可靠性。

开发 CoreWCF

GitHub Actions安全攻防指南:从两次重大安全事件看最佳实践

2025-05-08
GitHub Actions安全攻防指南:从两次重大安全事件看最佳实践

近期GitHub Actions接连遭受两次重大安全事件,攻击者利用漏洞植入挖矿程序和恶意代码。本文总结了这些事件的教训,并提供了增强GitHub Actions安全的实用指南,涵盖了权限管理、第三方Action使用、Secrets管理、分支保护、以及自托管运行器的安全配置等方面。文章还介绍了几种常见的GitHub Actions漏洞,例如中毒管道执行(PPE)和凭证泄露,并建议使用静态分析工具和安全策略来加强防护。

开发

Scheme宏卫生机制的深度解析

2025-05-08

Scheme语言的宏系统引入了“卫生”机制,以避免宏展开时变量命名冲突。文章深入探讨了Scheme中标识符的概念,它不仅包含符号名称,还包含词法上下文和历史上下文。`bound-identifier=?`和`free-identifier=?`谓词用于比较标识符的等价性,前者关注宏展开后绑定标识符的可替换性,后者关注自由标识符的可替换性。文章通过多个例子展示了这两种等价关系的差异,以及历史上下文在宏卫生机制中的作用,最终阐述了Scheme如何通过标识符的历史信息来保证宏的卫生性,避免变量名冲突。

开发 卫生机制

苹果拒绝药提醒应用使用关键警报API

2025-05-08
苹果拒绝药提醒应用使用关键警报API

开发者Jay Han开发的iOS药物提醒应用SuperDose被苹果拒绝使用关键警报API。该API允许通知绕过静音和勿扰模式,对于服用救命药的用户至关重要。苹果的理由是应用无法保证使用合规性,但Han认为用户明确同意即可解决滥用问题,苹果自身的健康应用也使用了该API。Han质疑苹果批准了其他用途更广泛的提醒应用使用该API,而拒绝了他的应用,这可能导致用户错过关键的服药提醒,存在安全风险。

开发 苹果审核

TypeScript 的「超类型化」:过度追求类型安全的反噬?

2025-05-08

本文探讨了 TypeScript 中过度追求类型安全的“超类型化”现象。作者以 TanStack Form 库为例,指出其复杂的类型定义虽然提供了精确的类型安全,但却导致难以理解的类型、难以调试的错误信息以及降低开发效率。作者认为,在类型安全和开发效率之间需要权衡,过度的类型化反而会适得其反,建议采用更简洁易懂的类型定义,或者通过单独的构建步骤生成类型,例如 Astro 框架的做法。

开发
1 2 93 94 95 97 99 100 101 213 214