分类: 开发

AlgoMIDI:基于细胞自动机和图遍历算法的音乐工作室

2025-03-02
AlgoMIDI:基于细胞自动机和图遍历算法的音乐工作室

AlgoMIDI是一款基于细胞自动机和图遍历算法创作音乐的虚拟音乐工作室,它可以被视为Cellular Minimata的精神续作。不同于前者仅仅可视化细胞自动机,AlgoMIDI中的每个“活细胞”都会触发一个音符。它使用Vue 3, Vite, TypeScript, Web Audio API (via Tone.js), p5.js和Cytoscape.js等技术构建,并包含康威生命游戏、图遍历算法(BFS/DFS)等功能,用户可以通过点击单元格创建初始图案,并调整播放速度(60-240 BPM)。虚拟钢琴呈现由细胞自动机和图遍历算法生成的音符,并提供多种布局选项。

开发

浏览器字体大小偏好:打破16px == 1em 的迷思

2025-03-02
浏览器字体大小偏好:打破16px == 1em 的迷思

本文探讨了浏览器字体大小偏好设置的局限性,以及如何更好地实现响应式排版。作者指出,浏览器默认的字体大小并非总是16px,简单的基于em和rem的像素计算无法适应所有用户偏好。文章建议放弃基于像素的字体大小计算,直接使用浏览器的默认字体大小,并通过`clamp()`函数结合视口单位实现响应式调整,从而在不同屏幕尺寸下提供最佳阅读体验。同时,作者还提出了一种基于自定义元素的方案,允许用户对不同网站设置个性化的字体大小。

二十年程序员的“全栈”征程

2025-03-02

一位拥有二十年编程经验的资深前端工程师,历经GW-BASIC、HTML、JavaScript、jQuery、EmberJS、Angular等技术栈的洗礼,却始终未能构建完整的企业级全栈应用。如今,他抓住公司转向Blazor的机会,开始学习C#和.NET,并计划系统学习企业应用架构、遗留代码处理等知识,目标是最终实现全栈开发的梦想。这篇文章记录了他的学习历程,并分享了他的学习资源和方法。

从微软跳槽:道德与面包的抉择

2025-03-02

一位曾在微软从事Viva Insights(一款员工监控软件)开发的工程师,因无法忍受其监控性质而选择离职。尽管拥有高薪和“大厂”光环,但他更看重个人价值观,宁愿放弃高收入,选择依靠股息收入创业,开发自己的IT项目Fourplex,以避免参与不道德的产品研发。他认为,即使收入减少,也不愿为了金钱而牺牲自己的道德底线。

开发

Python陷阱:来自Java/C++程序员的视角

2025-03-01

这篇演讲探讨了Python对于来自Java或C++程序员的潜在陷阱。演讲者指出,Python的动态特性、运行时错误以及与Java/C++在语法和行为上的细微差异,都可能导致误解。例如,Python的装饰器比Java的注解功能强大得多;类体赋值创建的是类变量,而非实例变量;Python具有函数作用域而非块作用域。演讲者建议通过学习其他语言、倾听问题、以及编写更清晰易懂的代码来提升对Python的理解,并避免这些陷阱。

开发

纯C语言实现的JSON解析器:高效、安全且易用

2025-03-01

本文介绍了一个用纯C语言编写的JSON解析器。它采用面向对象的方法,将函数附加到结构体上,提高代码可读性和可维护性。该解析器注重安全,避免了常见的内存泄漏、段错误等问题。此外,它还提供了一个简洁易用的API,并附带了详细的编译和使用说明,以及代码示例。作者还分享了编译C项目的技巧,以及一些代码优化策略,例如使用变长宏来内联生成JSON,以及高效的内存管理方法。

开发 JSON解析

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

2025-03-01
arXivLabs:与社区合作的实验性项目

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

开发

Xcode频繁联网:隐私隐患与性能瓶颈

2025-03-01

开发者Jeff Johnson发现Xcode在构建项目时频繁连接Apple服务器,导致构建速度变慢。他通过Little Snitch监控发现,`developerservices2.apple.com`是罪魁祸首,禁用该连接后构建速度显著提升。此外,Xcode还会在启动和打开项目时连接其他Apple服务器,例如`devimages-cdn.apple.com`和`appstoreconnect.apple.com`,这些连接看似并非必需,可能涉及开发者数据的收集。Johnson认为Xcode的行为侵犯了开发者隐私,并建议开发者禁用不必要的网络连接。

开发

Servo:Rust编写的轻量级高性能网页渲染引擎

2025-03-01
Servo:Rust编写的轻量级高性能网页渲染引擎

Servo是一个由Rust编写的高性能网页渲染引擎,支持WebGL和WebGPU,可用于桌面、移动和嵌入式应用。由Mozilla Research于2012年创建,它致力于成为轻量级Web技术的替代方案,并推动Web标准发展。2020年,Mozilla将Servo的管理权移交给Linux基金会,2023年,Igalia加入并将其迁移至Linux基金会欧洲分会。该项目将利用资金维护基础设施,确保引擎版本可用并与Web平台测试集成,未来还将用于改进和开发工作。

文本编辑器光标的魔法:你总是在范围之外打字

2025-03-01
文本编辑器光标的魔法:你总是在范围之外打字

你是否想过,为什么在文本编辑器中,光标总能停留在文字的末尾,让你感觉可以随时添加字符?这其实是一种巧妙的“欺骗”。本文探讨了文本编辑器中光标位置与字符串范围的微妙关系,用“耙子及其齿”的比喻解释了为什么你总是在范围之外打字,并提供了一个改进的`NSRange`扩展,更准确地处理光标插入位置。

开发

ChatGPT 幻觉:程序员的奇遇记

2025-03-01

一位程序员向ChatGPT寻求Rails关联预加载的解决方案,结果ChatGPT“一本正经”地给出了一个根本不存在的语法。更有趣的是,这个语法竟然是他自己两年前在Rails论坛上提出的一个无效方案!这说明,即使是强大的LLM,在面对小众话题和缺乏足够上下文时,也会出现“幻觉”,像极了刚入行的程序员一样,盲目复制粘贴,最终以失败告终。

开发

AI代码审查的错配:工具为何无法解决你的真正问题

2025-03-01

许多工程团队购买AI代码审查工具,却发现它们并没有解决他们认为的问题。文章指出,团队的核心工程师花费大量时间审查代码,导致开发周期缓慢。虽然AI工具能提高代码质量,但在减少审查时间上效果不佳,因为它们主要关注代码编写者而非审查者。理想的解决方案是将专注于代码编写者的AI工具与专注于审查者的工具结合,从而提高代码质量并加快审查流程。

Emacs Tree-sitter语法高亮进阶:基于语义的代码着色

2025-03-01
Emacs Tree-sitter语法高亮进阶:基于语义的代码着色

作者改进Emacs中的Tree-sitter语法高亮,不再局限于简单的关键字着色。文章详细介绍了如何利用Tree-sitter模式,根据代码语义对变量名进行个性化高亮,例如区分控制流关键字、类型别名和导入语句。作者通过自定义`treesit-font-lock-rules`函数,结合`treesit-inspect-mode`工具,精确控制着色规则,最终实现了更智能、更具表达力的代码高亮效果。后续文章将探讨基于变量名的启发式高亮方法。

开发

JavaScript框架的十年变迁:从混乱到统一

2025-03-01
JavaScript框架的十年变迁:从混乱到统一

十年过去了,JavaScript框架经历了从小型、轻量到功能丰富、庞大的演变。服务器端渲染的兴起和浏览器API的改进,使得客户端和服务器端代码共享成为可能,催生了“元框架”的出现。文章探讨了Next.js和React Router等流行框架的优缺点,并建议开发者选择简单、易维护的技术,例如传统的React单页面应用+Express API后端,或者根据项目需求选择合适的框架组合,例如使用Fastify或NestJS作为后端API,并结合元框架用于用户界面。作者认为,尽管框架选择仍然繁多,但近年来JavaScript生态系统的进步已大大改善了开发体验。

开发 元框架

Maestro:一款简洁高效的移动端和Web UI测试框架

2025-03-01
Maestro:一款简洁高效的移动端和Web UI测试框架

Maestro是一款简单高效的移动端和Web UI测试框架,它吸取了Appium、Espresso、UIAutomator和XCTest等前辈的经验。它内置容错机制,能够应对UI元素位置不稳定和屏幕点击失败等问题;内置延迟容忍机制,无需手动添加等待时间;采用解释执行,迭代速度快,无需编译;使用YAML文件定义测试,语法简洁强大;只需单个二进制文件即可运行。

开发 Maestro

百万球体渲染的OpenGL和WASM之旅:踩坑实录

2025-03-01

作者在一次招聘挑战中尝试使用OpenGL渲染百万个球体,过程中将项目移植到WASM和WebGL以提高性能和可访问性。文章详细记录了两个关键错误:错误地映射纹理坐标导致球体扁平化,以及VAO重复使用导致球体渲染异常。最终成功实现百万球体渲染,并分享了经验教训和资源链接。

开发

Common Lisp 元对象协议中的依赖管理难题

2025-03-01

本文讲述了作者在使用 Common Lisp 的元对象协议 (MOP) 开发库时遇到的依赖管理难题。作者通过一个监控类(monitored-class)的例子,展示了如何在子类继承父类的监控功能时,巧妙地利用 CLOS 的 Dependent Maintenance Protocol 解决因父类重新定义而导致子类监控功能失效的问题。文章详细解释了如何使用依赖包装器和更新依赖方法,确保子类始终继承最新的监控功能,即使父类被重新定义。这是一个关于在 Common Lisp 中进行高效交互式开发的实践案例,体现了 Common Lisp 强大的元编程能力和对交互式开发的良好支持。

告别代码:AI赋能的“vibe coding”时代来临

2025-03-01
告别代码:AI赋能的“vibe coding”时代来临

无需编程经验,也能轻松构建应用!文章介绍了“vibe coding”——一种利用AI工具进行软件开发的新方法。通过自然语言描述需求,AI就能自动生成代码,解决bug,大大降低了软件开发的门槛。文章对比了传统编码、低代码平台和vibe coding,并详细讲解了vibe coding的工作流程,以及Replit Agent、Lovable、Bolt.new、Rosebud AI和Databutton等平台的优缺点。作者还分享了利用vibe coding成功开发应用的案例,并探讨了其局限性和应对方法,以及如何将vibe coding应用于创业中,最终鼓励读者尝试这种新兴技术。

开发

System76发布COSMIC Alpha 6:Rust桌面环境的重大更新

2025-03-01
System76发布COSMIC Alpha 6:Rust桌面环境的重大更新

System76发布了其基于Rust的全新桌面环境COSMIC Alpha 6,带来了诸多改进。新增了桌面缩放功能,方便用户调整屏幕元素大小;改进了工作区管理,支持更直观的窗口切换和拖拽;优化了文件管理器、媒体播放器和文本编辑器,并修复了大量bug,提升了性能和稳定性。此外,Alpha 6还对字体、内存管理和CPU使用率进行了优化,整体使用体验更加流畅。

开发

从「魔法」到「真相」:开发者进阶之路

2025-03-01

作者分享了自身编程学习经验,将初学者面对复杂技术的迷茫比作面对宏伟建筑的无助感。起初,编译器、操作系统等看似神秘,但随着经验积累,作者逐渐理解了底层原理,例如Go语言的编译时计算实现。他通过学习Go的编译时计算功能,最终理解了其巧妙的实现机制,并为此做出了一些贡献,虽然最终发现部分功能并非必要。这篇文章鼓励开发者深入学习,揭开技术的神秘面纱,持续提升自身能力。

超1250个词缀的在线词典

2025-03-01
超1250个词缀的在线词典

这个在线词典收录了超过1250个词缀,并辅以约10000个例句进行解释说明。它基于作者2002年由牛津大学出版社出版的书籍《Ologies and Isms: Word Beginnings and Endings》。该书于2008年停印,作者随后将其免费提供在线访问。网站目前正在进行一系列修订和更新。

开发 词缀

在Deno和Jupyter Notebook上本地运行大型语言模型

2025-03-01
在Deno和Jupyter Notebook上本地运行大型语言模型

本文讲述了作者利用Deno、Jupyter Notebook、Ollama和LangChain.js等工具,在本地运行大型语言模型DeepSeek R1的经历。作者首先介绍了项目的背景和目标,然后详细讲解了环境搭建、模型安装、代码编写以及结果展示等步骤,最终成功实现了与本地大型语言模型的交互。整个过程流畅自然,并展现了Deno和Jupyter Notebook在AI开发中的便捷性和高效性。

开发

自托管Firefox Sync服务器:一次充满挑战的旅程

2025-03-01
自托管Firefox Sync服务器:一次充满挑战的旅程

作者尝试自托管Firefox Sync服务器,最初使用Mozilla的syncserver仓库,但因其不再维护且构建历史存在问题而放弃。转向基于Rust的syncstorage-rs后,又因Docker部署文档混乱而受阻。最终借助一个简化的Docker配置syncstorage-rs-docker成功搭建服务器,并使用Docker Compose和MariaDB管理数据库及反向代理Caddy完成配置。整个过程充满挑战,作者分享了经验教训,包括数据库持久化、服务器存储空间以及遵循正确步骤的重要性。

开发 Firefox Sync

Linux内核6.9及以上版本eBPF编程中的FRED陷阱

2025-03-01

最近Linux内核6.9版本在x86_64架构上引入了CONFIG_X86_FRED配置选项,这会在任务内核栈底部添加16字节的填充。这会导致直接访问内核栈和pt_regs结构的eBPF程序出现错误,返回垃圾数据。作者通过升级到Linux 6.11内核后,其eBPF程序xcapture-next出现此问题,通过分析发现是FRED导致的栈地址偏移。作者提出了一种动态检测FRED并调整栈地址计算的方法,避免此问题。这篇文章对eBPF开发者,特别是直接操作内核栈的开发者有重要参考价值。

开发 FRED

Torii:Rust 的强大身份验证框架,掌控你的用户数据

2025-03-01
Torii:Rust 的强大身份验证框架,掌控你的用户数据

Torii 是一个为 Rust 应用程序提供的强大身份验证框架,让你完全控制用户数据。与 Auth0、Clerk 或 WorkOS 等将用户信息存储在云端的托管解决方案不同,Torii 允许你拥有和管理自己的身份验证系统,同时通过灵活的插件系统提供现代身份验证功能。它支持无密码登录、社交 OAuth 和密码密钥等功能,并让你可以选择存储用户数据的位置,兼顾强大的身份验证能力和数据主权。

开发 Torii

「氛围编程」:AI 编码的狂欢与焦虑

2025-02-28

最近,「氛围编程」(Vibe Coding)在社交媒体上爆火,程序员们对这一利用AI快速生成代码的方式褒贬不一。有人担心代码质量和可维护性,也有人兴奋于其带来的效率提升和开发门槛降低。文章探讨了氛围编程在不同场景下的应用,例如独立开发者可以快速验证想法,而大型公司则需要谨慎对待,保证代码质量和安全性。未来,AI将深度融入软件开发流程,软件工程师的角色将转变为设计、维护AI辅助工具和流程,确保AI生成的代码安全可靠。

开发

Neo4j诉讼案:开源许可证的未来悬于一线

2025-02-28
Neo4j诉讼案:开源许可证的未来悬于一线

美国第九巡回上诉法院即将审理Neo4j公司对修改GNU AGPLv3许可证的案子。Neo4j试图添加限制性条款,禁止用户移除这些条款,这与AGPLv3的初衷相悖。此案结果将影响所有开源许可证的效力,甚至可能破坏开源软件的信任基础。开源倡导组织Software Freedom Conservancy已提交了法庭之友简报,但自由软件基金会(FSF)却未介入,引发争议。这场诉讼的焦点在于,许可证持有人是否可以添加无法移除的限制性条款。该案的判决将对开源社区产生深远的影响,甚至可能影响到Neo4j的开源分支ONgDB和DozerDB。

开发

Mozilla TOS调整引发LibreWolf潜在分叉

2025-02-28
Mozilla TOS调整引发LibreWolf潜在分叉

Mozilla近期调整服务条款引发巨大争议,引发人们对LibreWolf浏览器未来是否会进行长期分叉的担忧。虽然维护一个完整的浏览器非常困难,但Mozilla的策略转变被认为存在风险。用户质疑Mozilla的服务条款调整是否会过度收集用户数据,并将其用于AI等用途。LibreWolf的未来走向将取决于Mozilla后续的举动。

开发
1 2 148 149 150 152 154 155 156 213 214