分类: 开发

亚马逊程序验证教学材料公开:Dafny进阶指南

2025-06-02

亚马逊公开了一套使用Dafny进行程序验证的教学材料,该材料不仅涵盖Dafny编程语言本身,更深入探讨了其作为证明辅助工具的强大功能。课程分为三个部分:第一部分介绍Dafny编程语言基础;第二部分深入讲解Dafny作为证明辅助工具的使用,包括自然演绎等形式化证明方法;第三部分结合前两部分内容,讲解如何使用Dafny进行程序验证,涵盖函数式、命令式和面向对象程序的验证。这套材料不仅适合初学者入门,也为经验丰富的Dafny开发者提供了进阶学习的机会。

开发

MongoDB的极端建模实践:TLA+规范与实现的一致性检查

2025-06-02

MongoDB工程师尝试使用TLA+规范和两种一致性检查技术(追踪检查和测试用例生成)来验证其产品的实现是否符合规范。追踪检查实验在MongoDB服务器上进行,目标是验证Raft共识协议的实现;测试用例生成实验在MongoDB移动SDK上进行,目标是验证操作转换算法的实现。结果表明,追踪检查因多线程程序状态快照的难度和规范与实现的差异而失败,而测试用例生成成功发现了算法中的一个错误,并实现了100%的代码分支覆盖率。该文章总结了经验教训,并介绍了近年来该领域的研究进展,强调了持续一致性检查对TLA+主流化的重要性。

LLM辅助编程:炒作还是革命?资深程序员的独到见解

2025-06-02
LLM辅助编程:炒作还是革命?资深程序员的独到见解

资深程序员Thomas Ptacek驳斥了AI编程工具仅仅是昙花一现的观点。他认为,虽然LLM生成的代码并非完美,需要人工审查和调整,但其显著提高了编程效率,尤其在处理重复性工作方面。通过使用代理程序,LLM可以自主完成代码编写、测试和调试等任务,极大减少了程序员的负担。作者认为,LLM并非要取代程序员,而是成为程序员的强大助手,提升整体开发效率,尤其在处理大量重复性工作时,其优势更为明显。

(fly.io)
开发

HTML 类属性分组的艺术:让代码更易读

2025-06-02
HTML 类属性分组的艺术:让代码更易读

本文介绍了一种改进HTML类属性组织方式的方法,通过在类属性值中添加空格、换行符或其他字符来更清晰地分组不同的CSS类,例如使用`[card] [section box] [bg-base color-primary]`或`card | section box | bg-base color-primary`来代替`card-section-background1-colorRed`。虽然这种方法并非没有局限性(例如,优化器可能去除空格,预处理器可能重新排序),但它可以提高代码的可读性和可维护性,尤其是在大型项目中。作者还展示了使用emoji或注释等更具创意的方式来增强类属性的可读性,并提醒读者注意代码的可理解性以及团队合作的重要性。

开发

macOS CoreAudio 零日漏洞分析:一场与内存损坏的较量

2025-06-02
macOS CoreAudio 零日漏洞分析:一场与内存损坏的较量

2025年4月,苹果发布了针对CoreAudio中一个“已在野外被利用”的漏洞的补丁。安全研究员深入分析了这个名为CVE-2025-31200的漏洞,它是一个CoreAudio中的内存损坏漏洞。通过对比旧版和新版二进制文件,研究员锁定了问题函数apac::hoa::CodecConfig::Deserialize。漏洞的核心在于对音频数据中数组大小的错误处理,攻击者可以利用这个漏洞进行越界读写操作,最终导致程序崩溃。研究员通过逆向工程和动态分析,最终复现了漏洞,并揭示了其利用方式。该漏洞利用了Apple Positional Audio Codec (APAC)的特性,通过精心构造的音频文件,控制数组大小,实现内存越界读写。虽然该漏洞最终导致程序崩溃,但其潜在危害性极高,可能被用于更复杂的攻击。

开发 CoreAudio

轻量级网络行为分析器Vanta:一位本科生的致谢之作

2025-06-02
轻量级网络行为分析器Vanta:一位本科生的致谢之作

Vanta是一款轻量级、快速的命令行网络行为分析器,它能够重建协议级数据流并从捕获的数据中提取结构化活动。不同于Wireshark等功能强大的GUI工具,Vanta专注于简洁性、结构性和易用性,非常适合自定义脚本和最小化设置。它支持HTTP、DNS和TLS协议解析,能够自动重建双向数据流,并以简洁的JSON格式输出结果。该项目由一位本科生在MacBook Air M1上开发完成,作为对支持国际学生的大学的感谢。

开发

Onlook:面向设计师的开源可视化代码编辑器

2025-06-02
Onlook:面向设计师的开源可视化代码编辑器

Onlook 是一款面向设计师的开源可视化代码编辑器,使用 Next.js 和 TailwindCSS 构建,允许用户直接在浏览器 DOM 中进行编辑,并实时查看代码变化。它提供 AI 辅助功能,支持拖拽式布局调整,并允许用户通过右键点击元素直接定位到代码位置。目前 Onlook 正在积极开发中,欢迎开发者贡献代码。

开发

神经数据平台后端工程师招聘:捍卫大脑的战场

2025-06-02
神经数据平台后端工程师招聘:捍卫大脑的战场

Piramidal公司招聘一名资深软件工程师,负责其神经数据旗舰平台的后端基础设施建设和维护。理想候选人拥有5年以上产品驱动公司工程经验,精通Python及其他后端语言、容器化和编排技术(如Kubernetes)、关系数据库(如Postgres/MySQL)和Web技术(如JavaScript, React)。他们需要与机器学习工程师和内部客户紧密合作,构建安全可靠、高效愉悦的用户交互和自动化系统。公司致力于利用技术提升人类潜能,捍卫认知自由,反对思想商品化和操控。

开发 神经数据

三种计算多边形网格边界的算法优化

2025-06-02
三种计算多边形网格边界的算法优化

本文介绍了三种计算多边形网格边界的等效算法,它们是逐步优化的步骤,以逐步提高效率的方式产生相同的结果。文章首先描述了网格拓扑的典型表示,并区分了边的不同概念,然后介绍了三种算法:基于map的算法(O(n log n)复杂度)、基于排序的算法(O(n log n)复杂度)以及基于最小价态的算法(O(n)复杂度)。最后,作者比较了三种算法的效率,并指出了最小价态算法的创新性,以及其在游戏开发中的应用潜力。

开发 网格处理

Stack Overflow的兴衰:AI时代下的社区之殇

2025-06-02
Stack Overflow的兴衰:AI时代下的社区之殇

曾经,Stack Overflow凭借其强大的社区文化和互助精神,成为程序员的圣地。程序员们乐于分享知识,解决问题,并在其中获得成就感。然而,随着声誉系统的引入,这种纯粹的互助精神逐渐被功利化的竞争取代,社区活力日渐衰退。如今,AI技术的兴起更是加剧了这一趋势,让人们不禁思考:在AI时代,程序员的社区文化该如何延续?Stack Overflow的兴衰,提醒我们:技术平台的成功,最终取决于其对人性的尊重和对社区的维护。

开发 社区文化

跨平台矢量图形库ThorVG:WebGPU时代的先锋

2025-06-02
跨平台矢量图形库ThorVG:WebGPU时代的先锋

ThorVG矢量图形库支持多种渲染引擎,包括CPU/SIMD、OpenGL/ES、WebGL和WebGPU,可根据应用和系统偏好选择最佳方案。它尤其在Web生态系统中领先一步,充分利用WebGPU的计算着色器和低开销的现代GPU访问,实现更激进的优化策略和更广泛的应用。ThorVG在WebGPU之上完全支持其规范中的矢量渲染特性,并通过抽象底层硬件图形加速(如Metal、Vulkan和DirectX),确保在各种系统上的无缝应用,无论安装了何种硬件加速器。

开发

Android 系统字体迭代器 Bug 侦探记

2025-06-02

这篇博文讲述了一个持续时间比预期更长的 Bug 修复过程。Android 系统定义了不同的 API 级别,某些符号仅在特定 API 版本中可用。Firefox Android 版 (Fenix) 使用 `ASystemFontIterator_open`,但它仅在 API 29 及更高版本可用。为了兼容旧版 API,Fenix 使用了 `__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__` 和 `__builtin_available` 进行编译时和运行时检查。然而,由于 Firefox 的构建系统默认使用隐藏可见性 (`-fvisibility=hidden`),导致弱符号 `ASystemFontIterator_open` 在共享库中变为未定义,最终导致崩溃。修复方法是临时更改包含 Android 系统头文件时的默认可见性。

开发

Rust编译器新特性:大幅减小目标目录大小

2025-06-02

Rust 的目标目录大小一直是开发者痛点。本文介绍了一种新方法,通过新的编译器标志 `-Zembed-metadata=no` 和 Cargo 标志 `-Zno-embed-metadata`,显著减小目标目录大小。该方法避免了元数据在 `.rlib` 和 `.rmeta` 文件中的重复存储,测试结果显示,在 Release 模式下,目标目录大小最多可减少 36.3%。该特性目前处于 nightly 阶段,未来计划将其设为默认行为,但需谨慎考虑向后兼容性问题。

开发

AttendList:一个基于Ruby on Rails的Google Meet签到追踪器的技术栈

2025-06-02
AttendList:一个基于Ruby on Rails的Google Meet签到追踪器的技术栈

AttendList是一款用于追踪Google Meet出勤情况的应用,其后端采用Ruby on Rails构建,并与Chrome扩展程序配合使用。本文深入探讨了AttendList的架构和gem选择,涵盖了后台任务、身份验证、博客等基础功能,以及部署和一些额外功能。它使用了PostgreSQL数据库,Redis缓存和任务队列,Sidekiq后台任务,Devise身份验证和Google OAuth,Tailwind CSS和ViewComponent视图层,以及各种性能监控和分析工具。作者还分享了其低成本高性能的服务器配置方案,使用Hetzner服务器和Hatchbox部署平台。

开发

Cuss:多语言脏话检测库

2025-06-02
Cuss:多语言脏话检测库

Cuss是一个开源库,提供多种语言的脏话、侮辱性词汇及其置信度评分。它并非用于构建脏话过滤器(作者认为这种过滤器很糟糕),而是用于自然语言处理研究。该库支持多种安装方式,包括npm、esm.sh等,并包含多种语言版本(英语、阿拉伯语、西班牙语、法语、意大利语、葡萄牙语等),每个词汇都标注了0到2的置信度评分,表示其作为脏话的可能性。此外,该库还包含一些其他词汇列表,例如流行语、常用词等。

开发 脏话检测

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

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

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

开发

Kanban:开源Trello替代品来了!

2025-06-02
Kanban:开源Trello替代品来了!

Kan是一个开源的项目管理工具,旨在成为Trello的强大替代品。它提供了看板视图、成员协作、Trello导入、标签过滤、评论、活动日志等功能,并计划推出模板和集成。该项目代码已开源,欢迎贡献!

计算机科学专业的就业困境:高失业率与过剩人才的矛盾

2025-06-02
计算机科学专业的就业困境:高失业率与过剩人才的矛盾

尽管计算机科学专业一直是热门专业,但其失业率却居高不下。根据纽约联邦储备银行的数据,计算机科学专业的毕业生失业率高达6.1%,位列本科专业失业率第七位。科技行业的裁员潮以及对经验的过高要求,导致市场对初级人才的需求下降,许多毕业生面临着就业困境。专家指出,过高的市场期望与实际就业情况存在巨大落差,许多学生缺乏实际技能,难以适应工作需求。

开发

arXivLabs:与社区协作者合作的实验项目

2025-06-02
arXivLabs:与社区协作者合作的实验项目

arXivLabs是一个框架,允许合作者直接在arXiv网站上开发和分享新的功能。参与arXivLabs的个人和组织都认同并接受了arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果你有想法可以为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!

开发

tmux:终端复用利器详解

2025-06-02
tmux:终端复用利器详解

tmux是一个强大的终端复用器,它允许你同时管理多个终端会话、窗口和窗格。你可以想象一下,tmux就像一个终端管理器,它由服务器管理多个会话,每个会话包含多个窗口,每个窗口又可以分割成多个窗格,每个窗格运行一个独立的程序或shell。多个客户端可以同时连接到同一个会话。通过一个前缀键(通常是Ctrl+b),你可以轻松地控制和管理tmux的各个组成部分,实现高效的终端管理。

开发 终端复用

数据库一致性:超越基础知识

2025-06-02
数据库一致性:超越基础知识

本文探讨了在高并发环境下数据库事务一致性的问题。作者通过一个Spring Boot案例,演示了如何在处理大量销售数据时,使用默认分页和幂等性检查如何导致数据不一致(丢失行或重复更新)。文章深入分析了数据库隔离级别(READ UNCOMMITED、READ COMMITED、REPEATABLE READ、SERIALIZABLE)和乐观锁/悲观锁策略,最终通过使用REPEATABLE READ隔离级别和乐观锁,有效解决了数据不一致问题,并显著提升了性能。

开发

arXivLabs:与社区协作的实验性项目

2025-06-02
arXivLabs:与社区协作的实验性项目

arXivLabs是一个允许合作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果您有想法可以为arXiv社区增值,请了解更多关于arXivLabs的信息。

开发

iPhone 智能代理:用 GPT-4.1 控制你的 iOS 设备

2025-06-02
iPhone 智能代理:用 GPT-4.1 控制你的 iOS 设备

一款名为 PhoneAgent 的 iOS 应用利用 OpenAI 的 GPT-4.1 模型,通过访问 iOS 设备的辅助功能树,实现跨应用操作,例如发送信息、下载应用、拨打电话等。它无需越狱,利用 Xcode 的 UI 测试框架与系统交互,但仍处于实验阶段,存在一些已知问题,例如处理长时间任务和动画等。该应用将应用内容发送至 OpenAI API,并通过 TCP 服务器与 UI 测试进行通信。

开发 GPT-4.1

HIP:AMD和NVIDIA GPU的单一源码可移植运行时API

2025-06-02
HIP:AMD和NVIDIA GPU的单一源码可移植运行时API

HIP是一个C++运行时API和内核语言,允许开发者从单一源码创建可在AMD和NVIDIA GPU上运行的应用程序。它具有高性能、单一源码C++编程语言支持、平台最佳开发环境和工具支持等特点。HIPIFY工具可自动将CUDA源码转换为HIP源码,开发者也可以针对特定平台进行性能调优。HIP既支持新项目的开发,也提供便捷的CUDA代码移植工具,但并非CUDA的直接替代品,仍需手动编码和性能调整。

开发

“只是JavaScript”的真相:它远比你想象的复杂

2025-06-02

在编程世界中,“只是JavaScript”是句经常被误用的说法。这篇文章探讨了JavaScript的复杂性,指出很多看似简单的.js文件,实际上依赖于浏览器API、Node.js环境变量、JSX编译、预处理器、TypeScript类型注解等多种技术,运行环境和工具链的选择会极大影响代码的可执行性。作者以一系列例子说明,只有脱离了特定运行环境和工具链的“原生”JavaScript代码,才能真正被称为“只是JavaScript”。

开发

十年后的编程语言:Rust挑战C++和Java的宝座

2025-06-02

本文复现了Google 2011年的一份报告,比较了C++、Java、Go和Scala在循环识别算法实现上的差异。十年后,编程语言格局已变,Rust异军突起。文章比较了Rust安全和不安全模式下的实现,发现安全模式下,Rust的编译速度更快,但运行速度略逊于C++;不安全模式下,Rust的性能超越了C++和安全模式下的Rust。文章还分析了代码大小、编译时间、内存占用和运行时间等多个维度的数据,结果表明Rust在性能和内存效率方面展现出强大的竞争力,尤其是在发布版本中,Rust的表现优于C++。

开发

Unix文件系统中的inode 0:一个被遗忘的角落

2025-06-02

本文探讨了早期Unix系统中inode编号的限制以及inode 0的特殊性。作者发现,尽管POSIX标准未明确禁止inode 0的使用,但在实际应用中,许多系统和程序可能依赖于非零inode编号。使用inode 0可能会导致意外行为,因为一些程序可能将它解释为'不存在文件'的信号。虽然在用户空间创建文件系统可以尝试使用inode 0,但这并不被推荐,因为兼容性问题可能导致不可预知的结果。

开发

轻量级、无广告的Jetpack Compose指南针应用

2025-06-02
轻量级、无广告的Jetpack Compose指南针应用

MBCompass是一款使用Jetpack Compose构建的轻量级指南针应用,它摒弃了市面上大多数指南针应用臃肿的广告和过多的功能,专注于提供精准、高效的指南针服务。它利用设备的磁力计和加速计提供实时的地磁场更新,并支持多种功能,例如显示用户当前位置(使用OpenStreetMap)、明暗主题切换、显示磁场强度、保持屏幕常亮、横向显示以及平滑的指南针旋转。此外,它还通过传感器融合技术提高精度,并且完全免费,无广告,也无应用内购买。

月相预警系统:跨语言实现

2025-06-02
月相预警系统:跨语言实现

一个名为`moonphase`的项目提供了多种编程语言的代码片段,用于计算月相。这些代码基于John Walker在80年代编写的moontool程序的算法,并参考了《Practical Astronomy With Your Calculator》一书。该项目支持系统级语言、脚本语言和DSL,所有实现都包含测试用例,并能计算月球的照亮部分。项目强调代码的简洁性和自包含性,方便用户直接复制粘贴使用。

开发 跨语言

个人编写C++标准库:在简易性和完整性之间权衡

2025-06-02
个人编写C++标准库:在简易性和完整性之间权衡

作者出于兴趣编写了一个简易的C++标准库,并在Hacker News和Reddit上分享。文章引发讨论,焦点并非库本身的完整性,而是其命名和设计哲学。作者有意简化库的设计,要求所有类型都必须是“行为良好”的,从而避免处理复杂异常情况。这使得库的复杂度大大降低,但同时也限制了其适用范围。文章还探讨了字符串分割和迭代器的实现,并比较了Python和C++两种语言的差异。最终,作者完成了字符串、正则表达式和基本容器的功能,编译速度很快。

开发
1 2 69 70 71 73 75 76 77 213 214