分类: 开发

Zig编译时元编程:妙不可言

2025-01-07

本文深入探讨了Zig编程语言的编译时元编程(comptime)特性。作者起初发现comptime难以掌握,但最终对其强大的功能赞叹不已。文章以六种不同的视角解释comptime,包括忽略它、将其视为泛型、将其视为编译时执行的标准代码、部分求值、编译时求值和运行时代码生成以及文本代码生成。通过实例演示,作者说明了comptime如何提高代码效率、简化代码阅读和调试,以及如何实现代码生成等高级功能。Zig的comptime特性使得开发者能够在编译时进行大量的计算和代码生成,从而提高程序性能并简化代码编写。

DiscoTool:轻松管理你的Arduino USB设备

2025-01-07
DiscoTool:轻松管理你的Arduino USB设备

DiscoTool是一个强大的命令行工具和Python库,用于发现并管理连接到USB的Arduino类型开发板。它支持macOS、Linux和Windows,无需额外安装即可使用pip安装。DiscoTool提供了丰富的命令,例如连接REPL、安装和更新模块、备份板卡数据等,并支持自定义命令行工具和环境变量。此外,它还提供了一个Python模块,方便开发者集成到自己的项目中,轻松获取设备信息,例如制造商、序列号、版本号等。

开发

大型语言模型的代码优化局限性

2025-01-07
大型语言模型的代码优化局限性

博主David Andersen尝试使用大型语言模型(LLM)优化一段寻找百万个随机整数中数字和为30的最小和最大值差的代码。最初的Python和Rust代码运行缓慢。虽然LLM能够优化部分代码,例如改进数字求和函数,但它未能识别出关键的优化点:在进行代价较高的数字求和计算前先检查数字是否满足条件。人工干预后,通过一系列优化,包括使用更快的随机数生成器、并行化和预处理等,最终将Rust代码的运行速度提升了55倍。这表明LLM在代码优化方面存在局限性,尤其是在需要深入理解算法和并行化策略的复杂问题上,仍然需要人类程序员的智慧和经验。

开发

使用LLM进行编程:我的2024年经验总结

2025-01-07

作者分享了过去一年使用生成式模型进行编程的个人经验。他发现LLM在编程中的好处远大于缺点,尤其是在代码自动补全、代码搜索和基于聊天的编程方面。基于聊天的编程虽然需要学习和调整编程方式,但能提供代码首稿,并能快速修复错误。作者还提到,LLM更擅长处理结构清晰的问题,并建议使用独立的、更小的代码包,以便更好地与LLM交互。最后,作者介绍了sketch.dev项目,这是一个为LLM设计的Go编程IDE,旨在简化LLM的反馈循环,提高编程效率。

开发

Mac OS X Dock幕后:一位工程师的25年回忆

2025-01-06
Mac OS X Dock幕后:一位工程师的25年回忆

本文是Mac OS X Dock早期工程师James Thomson的回忆录。他讲述了在爱尔兰苹果公司参与开发Dock的经历,包括最初的设计、与乔布斯的互动、以及最终离开苹果的经过。文中充满了紧张刺激的细节,例如保密工作、乔布斯对工程师位置的苛刻要求,以及他本人在开发过程中遇到的挑战和成就。这篇文章不仅回顾了Mac OS X Dock的开发历史,也展现了一位工程师的职业历程和人生感悟。

开发 Mac OS X Dock

Triptych:让超文本再次“超”起来的三项提案

2025-01-06

Alexander Petros和Carson Gross提出了Triptych,旨在增强HTML表达能力,使其更轻松地处理网络请求。这三项提案分别为:在HTML表单中支持PUT、PATCH和DELETE方法;赋予按钮发起HTTP请求的能力;实现局部页面替换。Triptych借鉴了htmx等库的优点,并完善了HTML进行RESTful操作的能力,使得开发者可以用更简洁的HTML声明页面行为和处理HTTP请求,从而实现全页面导航或局部页面更新。

开发 网络请求

FormBee:注重隐私的开源表单后端

2025-01-06
FormBee:注重隐私的开源表单后端

FormBee是一个开源的表单后端,专为注重数据隐私的开发者设计。它简化了网站表单数据的提交过程,无需编写服务器端代码即可将表单数据发送到电子邮件、Telegram、Webhook等。FormBee提供多种功能,包括插件支持、验证码保护、白名单域名以及自动回复邮件等。开发者可以轻松自托管FormBee,并通过Docker镜像快速部署。

开发

pl_synth: 基于 JSON 的微型音乐合成器

2025-01-06

PhobosLab 的 Dominic Szablewski 发布了 pl_synth,一个轻量级的 C/JS 音乐合成器及其配套的乐谱编辑器(tracker)。pl_synth 受 Sonant 启发,专注于代码和数据的小巧性,并通过使用 WASM 技术显著提升了 JavaScript 版本的性能,将音乐生成时间从 5 秒缩短至 25 毫秒。它支持多种乐器和效果,并提供撤销/重做功能,最终成果可以直接嵌入 URL 中。pl_synth 已集成到 high_impact 游戏引擎中。

C语言中的`defer`关键字:一种简易实现

2025-01-06
C语言中的`defer`关键字:一种简易实现

本文介绍了在C语言中实现`defer`关键字的几种方法,`defer`关键字允许开发者在代码块结束后自动执行一些清理操作,例如释放内存或解锁互斥锁。文章首先解释了`defer`的用途,然后分别使用GCC扩展和C++特性实现了`defer`,最后还提出了一种新的语法提案,旨在简化`defer`的实现和使用。这对于提高C语言代码的可读性和安全性具有重要意义。

开发

代码审查新技巧:问问工程师“你觉得你的作品怎么样?”

2025-01-06

一位工程师在进行复杂的UI改动代码审查时,作者没有直接审核,而是先询问工程师“你觉得你的作品怎么样?”。工程师的回应促使他发现并修复了几个bug,甚至放弃了一个有问题的需求。这简单的提问,让工程师对自己的作品进行更深入的思考和改进,最终提高了代码质量。作者认为,定期询问工程师对自身作品的感受,是一个值得尝试的有效技巧。

开发

用LLM生成搞笑表情包:比想象中难得多

2025-01-06
用LLM生成搞笑表情包:比想象中难得多

一位滑铁卢大学的实习生尝试使用LLM和Greptile API生成可以“吐槽”GitHub代码库的表情包。他发现,让LLM生成既符合技术细节又幽默风趣的文字并非易事。起初,直接让LLM生成吐槽文字效果不佳,过于通用。后来,他将任务拆分成代码分析和文字生成两步,先用Greptile API分析代码库找出具体问题,再用LLM生成针对性吐槽。图像生成方面,由于模型处理文字能力有限,他最终采用预设模板和node-canvas手动添加文字。整个过程充满了挑战,但也最终上线了reporoast.com,一个可以自动生成代码库吐槽表情包的网站。

htmx:下一个jQuery?稳定性优先的Web开发利器

2025-01-06

htmx,从intercooler.js演变而来,旨在成为Web开发中稳定可靠的工具,如同jQuery一样经久耐用。文章阐述了htmx未来的发展方向:优先保证稳定性,避免频繁更新;限制核心功能的增加,主要通过扩展API拓展功能;保持季度发布节奏。htmx的目标不是成为全能的Web应用解决方案,而是专注于简化超媒体控制,并致力于与其他工具和技术更好地集成,最终希望其核心功能能够融入HTML标准。

开发

提升基于属性的测试:以人为本的设计

2025-01-06

本篇博士论文研究如何提升基于属性的测试(PBT)的易用性,从而惠及更广泛的开发者群体。研究者通过深入的用户调研,发现了PBT用户在随机数据生成和测试有效性评估方面面临的挑战。为此,论文提出了改进随机数据生成器的新算法,并开发了名为Tyche的开源工具,帮助开发者更好地理解和利用PBT进行软件测试,最终提升软件质量和可靠性。

开发

基于样条距离场的 terrain 生成技术

2025-01-06

为了克服游戏引擎Tangerine的局限性,作者开发了一个名为Star Machine的CPU光线追踪器和一个名为Rainy Road的赛车游戏原型。Rainy Road需要一种高效且紧凑的terrain渲染系统,能够处理样条曲线定义的道路和其他地形特征。作者提出了一种基于样条距离场的terrain生成技术,该技术利用样条曲线生成地形表面,通过计算点到最近样条曲线的距离及其法向量来确定高度。该技术避免了传统高度图的限制,并支持程序化物体放置。目前该技术仍在积极实验和研究中,作者也探索了改进插值策略和使用稀疏点云等方向。

开发 样条曲线

42:一款强大的航天器姿态控制系统仿真软件

2025-01-06
42:一款强大的航天器姿态控制系统仿真软件

42是一个全面的通用航天器姿态和轨道动力学仿真软件,主要用于支持姿态控制系统的设计和验证,涵盖从概念研究到集成和测试的整个生命周期。它可以精确模拟多体航天器姿态动力学(刚体和/或柔性体),以及二体和三体轨道飞行状态,模拟环境从低地球轨道到整个太阳系。42支持同时模拟多个航天器,便于研究交会对接、邻近操作和精确编队飞行。它还具有航天器姿态的可视化功能。

开发 姿态控制

Mashups.io:Yahoo Pipes 的现代替代品

2025-01-06
Mashups.io:Yahoo Pipes 的现代替代品

Mashups.io 是一款强大的在线数据整合工具,它继承了 Yahoo Pipes 的衣钵,并进行了改进。用户可以轻松地将 RSS feeds、CSV 文件和 JSON 数据混合、过滤和转换,创建自定义的数据源。该平台提供直观的可视化界面,无需编程经验即可构建复杂的数据工作流程。Mashups.io 提供免费和付费方案,满足不同用户的需求,其实时更新功能确保数据始终保持最新。

结构化代码编辑器的演进:从AST到直观UI

2025-01-06
结构化代码编辑器的演进:从AST到直观UI

本文讲述了一个结构化代码编辑器的多年演进历程。最初版本直接编辑AST,操作繁琐。作者随后简化了AST,并尝试过基于文本光标的模式,但都存在不足。最终版本在AST和文本编辑之间取得平衡,采用可编辑类型、投影和框架等技术,并加入了基于图标的UI,支持键盘、鼠标、触摸和遥控器操作,极大提升了用户体验。这个项目使用Gleam和Lustre构建,展现了结构化代码编辑器设计的不断探索和改进。

开发

SPath:用于半结构化数据的查询表达式

2025-01-06
SPath:用于半结构化数据的查询表达式

SPath是一个Rust库,提供了一种类似JSONPath的查询表达式,用于解析半结构化数据,例如JSON、TOML或自定义变体。它可以直接替代JSONPath,并支持多种数据格式。该库易于使用,只需添加`spath`到Cargo.toml依赖即可。示例代码展示了如何使用SPath查询JSON数据,并验证结果。

开发 JSONPath

Notion:你的笔记、任务、Wiki 和数据库一体化工作区

2025-01-06
Notion:你的笔记、任务、Wiki 和数据库一体化工作区

Notion 是一款一体化工作区,它将笔记、任务管理、Wiki 和数据库功能整合在一个平台上。你可以用它来记录笔记、管理待办事项、创建团队Wiki,甚至构建自定义数据库。Notion 的灵活性使其适用于各种场景,从个人知识管理到团队协作,都能轻松应对。其简洁直观的界面和强大的功能,让它成为越来越多人的效率利器。

开发

让Windows 3.1在高清显示器上绽放光彩:一个现代化的SVGA驱动

2025-01-06
让Windows 3.1在高清显示器上绽放光彩:一个现代化的SVGA驱动

这是一个为Windows 3.1打造的现代化通用SVGA驱动程序,支持所有8位、16位、24位或32位图形模式。它改写了原有的Windows 3.1 SVGA驱动,并添加了对多字节像素的支持,使得在高清显示器上运行Windows 3.1成为可能。该项目不仅解决了老旧硬件在现代系统上的兼容性问题,也为怀旧游戏爱好者提供了更好的体验。

Rust编程技巧:巧妙的抽象设计

2025-01-06
Rust编程技巧:巧妙的抽象设计

本文节选自《Rust的秘密:工具》一书,作者John Arundel 通过一个简单的命令行工具——行数计数器,阐述了如何在Rust中进行良好的抽象设计。文章以“魔法函数”方法为指导,先假设一个理想的函数,再根据调用方式设计函数的API,最终实现一个简洁易用的库。文中还包含了单元测试,确保函数的正确性,并强调了API设计的重要性,避免陷入实现细节而忽略用户需求。

开发 抽象设计

极简依赖类型SK演算:Rohlang3项目探秘

2025-01-06
极简依赖类型SK演算:Rohlang3项目探秘

Rohan Ganapavarapu 的 Rohlang3 项目是一个用 Rust 编写的极简语言实验,它尝试在一个类似 SK 演算的基础上实现无点、同像性和依赖类型。Rohlang3 核心是标准的 S 和 K 组合子,但增加了反射、部分求值和环境重排序等功能,并通过 p 和 g 组合子实现了简单的 Pi/Sigma 依赖类型系统。作者的目标并非构建一个完美的系统,而是探索这些概念如何结合,即使存在类型理论中已知的问题。Rohlang3 的同像性允许在运行时操作代码的 AST,而反射和部分求值组合子则提供了强大的元编程能力。

开发

用LLM过滤X(推特)负面内容的Chrome扩展

2025-01-06
用LLM过滤X(推特)负面内容的Chrome扩展

Unbaited是一款Chrome扩展程序,利用Llama 3.3模型和Groq API,实时分析X(前推特)上的推文,过滤掉诱导参与和煽动性内容。它检测到新推文后,将其发送到Groq API进行分析,并模糊处理识别出的诱导性推文。用户可以自定义系统提示来调整分析方式,并一键显示隐藏的推文。该项目旨在展示社交媒体平台如何更好地赋予用户控制权,目前仍处于原型阶段,需要Groq API密钥才能使用。

开发 AI过滤

计算机科学家为何求助于“神谕”?

2025-01-06
计算机科学家为何求助于“神谕”?

计算复杂性理论研究者们为了解决计算难题,常常借助“神谕”——一种能瞬间正确回答特定问题的假设设备。这并非魔法,而是为了探索计算的本质。通过研究不同类型的神谕如何影响问题难度(例如P与NP问题),他们可以更好地理解计算的固有局限性,甚至启发新的算法,例如Shor算法就是受神谕研究启发而产生的量子算法,它能快速分解大数,对现代密码学具有重大意义。神谕作为一种研究工具,帮助科学家们突破现有理论框架的限制,深化对计算复杂性的理解。

开发

深入理解Einsum:超越矩阵乘法的利器

2025-01-06

Einsum并非简单的矩阵乘法,而是爱因斯坦求和约定的一种高效实现。它通过简洁的符号表示复杂的张量运算,避免了循环嵌套,提升代码可读性和运行效率。本文深入探讨Einsum的运作机制,并以具体的例子展示其在处理高维张量运算时的优势,例如矩阵乘法、转置、迹运算等。对于需要进行高性能张量计算的开发者而言,Einsum是不可或缺的工具。

开发 张量运算

我的链接博客运营之道

2025-01-06
我的链接博客运营之道

Simon Willison分享了他运营链接博客的经验。从2003年开始,他坚持15年更新链接博客,积累了7000多篇文章。他认为链接博客是低投入高回报的写作方式,可以记录有趣的内容、分享观点并给予创作者应有的认可。他总结了运营技巧:添加额外信息(如创作者姓名、关键主题引用、代码片段等),力求为读者提供增值体验;使用Markdown和Django等技术搭建博客;并通过Substack等工具发送周报。他鼓励更多人尝试这种分享方式,认为这是一种低成本、高价值的网络参与方式。

开发 链接博客

OKR与日常工作:一场关于效率的博弈

2025-01-06
OKR与日常工作:一场关于效率的博弈

作者探讨了在工程和市场团队中OKR(目标与关键成果)的应用差异。文章指出,市场团队的OKR更易于设定,因为其工作更偏向项目制,而工程团队的工作则更偏向产品迭代。工程团队的OKR不应简单地重复产品路线图,而应关注本季度独特的目标、变化和挑战,例如,一个“前端可观测性平滑发布”的OKR,重点不在于发布本身,而在于确保发布的顺利进行和对业务的积极影响。文章强调,OKR应突出本季度的特殊关注点,而非试图涵盖所有工作内容。

开发

io_uring:Linux异步I/O编程的革新

2025-01-06

io_uring是Linux下强大的异步I/O编程新方式,它克服了以往I/O子系统的诸多限制,极具潜力。本指南由Shuveb Hussain编写,涵盖了io_uring的介绍、底层接口、liburing库的使用示例(包括cat、cp和一个web服务器),以及高级用法等内容。该指南还提供源代码示例和GitHub仓库地址,方便开发者学习和贡献。

开发

用Common Lisp从YouTube视频中OCR识别音乐

2025-01-06

一位开发者尝试使用Common Lisp从YouTube视频中提取音乐数据。他先尝试了Tesseract和ChatGPT,但效果不佳。最终,他采用了一种基于像素差分的旧式方法,通过手动提取字符图像并进行比对,成功地从视频中提取了大部分乐谱信息。虽然提取的乐谱并非完美,但已足够满足他的需求,并证明了该方法的可行性。他还在文中分享了使用Lisp进行图像处理和高效开发的经验。

开发

Supabase:远程优先的开源 Firebase 替代方案,诚聘英才

2025-01-06
Supabase:远程优先的开源 Firebase 替代方案,诚聘英才

Supabase,一个完全远程、异步工作的开源 Firebase 替代方案,正在全球招聘!他们提供丰厚的福利,包括硬件预算、全额医疗保险、年度海外团建等。Supabase 崇尚开放协作,拥有遍布全球的团队和庞大的社区。如果你热衷于开源,并渴望在一个充满活力且多元化的团队中工作,不妨申请 Supabase 的职位。

开发
1 2 191 192 193 195 197 198 199 213 214