分类: 开发

Haskell 的 IO Monad 与值限制:一个令人惊讶的联系

2025-05-26

这篇文章探讨了 Haskell 中 IO Monad 如何巧妙地避免多态引用带来的类型安全问题。尽管 Haskell 以其纯度著称,但 IO Monad 的设计中却隐含着类似于其他 ML 语言中的“值限制”机制。文章通过分析多态引用带来的风险,比较了 Haskell 和其他语言对该问题的处理方式,并深入解释了 IO Monad 的内部实现,揭示了其与 State Monad 的相似性以及为何直接操作 IO 构造器是危险的。最终,文章通过一个例子展示了如何利用 MonadGen 类型类来绕过 IO 的限制,但也强调了这种操作的风险。

开发 IO Monad

GitHub Issues:全球最佳笔记神器?

2025-05-26
GitHub Issues:全球最佳笔记神器?

GitHub Issues堪称全球最佳笔记应用之一!免费、无限容量,支持公开和私密笔记。强大的Markdown支持,包括几乎所有编程语言的语法高亮,还能直接拖拽上传图片和视频。其强大的链接功能允许你链接其他GitHub Issues,并自动同步标题和链接。搜索功能同样出色,支持单个仓库、所有仓库甚至整个GitHub的搜索。完善的API和GitHub Actions支持自动化操作。唯一的缺点是缺乏离线同步功能。

开发

YC支持的Venta AI招聘全栈工程师

2025-05-26
YC支持的Venta AI招聘全栈工程师

YC支持的AI销售团队解决方案公司Venta AI正在阿姆斯特丹招聘一名全职全栈工程师。该职位需要具备丰富的全栈开发经验,精通TypeScript、React、Remix、Python和FastAPI,熟悉多租户SaaS产品设计和AI代码IDE(Cursor、Windsurf、Claude等),并具有可扩展软件操作经验。候选人需要流利的英语表达能力,德语能力为加分项。Venta AI致力于为欧洲企业提供易于使用、合规且透明的AI解决方案,目前已获得Y Combinator和谷歌AI基金的投资。

开发

FreeBSD并非垂死:沉默的巨人与BSD许可证的双刃剑

2025-05-26

近期,围绕FreeBSD是否“正在消亡”的讨论甚嚣尘上。作者通过Google Trends数据分析表明,FreeBSD的搜索趋势稳步上升,与之形成对比的是Linux搜索趋势持平。作者认为,这种误解源于“可用性启发法”,人们只关注讨论较多的Linux,忽略了FreeBSD在幕后默默支撑着大量互联网服务的事实。FreeBSD的BSD许可证虽然使其成为优秀的商业产品基础,但也导致公司缺乏回馈社区的动力。作者呼吁使用FreeBSD的公司积极分享使用案例和遇到的问题,以便FreeBSD基金会能够更好地连接产业与软硬件厂商,共同推动FreeBSD的发展。

开发 BSD许可证

jjui: Jujutsu 版本控制系统的终端界面

2025-05-26
jjui: Jujutsu 版本控制系统的终端界面

jjui 是一款用于 Jujutsu 版本控制系统的终端用户界面。它提供丰富的功能,例如:使用自动完成功能更改 revset;对修订或分支进行变基;将多个修订压缩为一个;查看和比较文件的差异;移动书签;查看操作日志;以及预览修订、文件和操作的详细信息。jjui 支持多种安装方式,包括 Homebrew、AUR、Nix 和 Go。最低支持的 jj 版本为 v0.21+。

开发

数据工程师的周记:Gemini崛起,数据领域新机遇

2025-05-26
数据工程师的周记:Gemini崛起,数据领域新机遇

一位资深数据工程师分享了他最近几周的思考和见闻,内容涵盖了数据领域的新趋势、优秀工具的推荐以及对未来创新的展望。他提到,数据生产者和消费者之间的连接至关重要,并对Google Gemini等大型语言模型的快速发展表示赞赏。此外,他还指出了财务软件领域存在的巨大创新机会,例如数据整合和AI预测等。

开发

Claude Code:自动化软件发布流程

2025-05-26
Claude Code:自动化软件发布流程

Molin公司利用Anthropic的Claude Code自动化了其1-3次/周的软件发布流程。Claude Code能够创建PR、检查差异、部署后端以及发布JS bundle。通过`.claude/release.md`文件中的指令,Claude Code可以检查是否存在release PR,创建PR,检查合并状态、检查流程,最终合并PR并部署到生产环境。这显著提高了效率,减少了人工操作。

开发

iOS iMessage 诡异 Bug:提及“Dave and Buster’s”则无法发送音频消息

2025-05-26

最近一个iOS bug引发热议:在iMessage中发送包含“Dave and Buster’s”(一家美国运动酒吧)的音频消息时,接收方无法收到。

调查发现,问题出在iOS的转录引擎将“Dave and Buster’s”转录为包含未转义的&符号的HTML代码,导致MessagesBlastDoorService(旨在阻止黑客攻击的安全机制)因解析错误而终止消息发送。

虽然看起来像安全漏洞,但这实际上证明了BlastDoor机制有效地阻止了潜在的恶意代码注入,体现了苹果在安全方面的谨慎。

开发 iOS Bug

Guile垃圾收集器中的堆大小启发式问题

2025-05-26

Guile项目正在将一个基于Nofl的保守扫描垃圾收集器集成到其构建系统中。目前使用可增长堆策略,该策略通过乘数来调整堆大小,以应对内存碎片问题。然而,如果内存碎片严重,即使堆大小已达到预期大小的两倍,仍然可能发生分配失败,导致程序死锁。文章探讨了解决这个问题的方法,包括提高乘数、改变堆组织方式,以及为Nofl收集器预留空闲块等。最终目标是使Guile垃圾收集器能够高效地处理内存碎片,并避免死锁的发生。

开发

程序员的“技术洁癖”:理性还是感性?

2025-05-26
程序员的“技术洁癖”:理性还是感性?

Hacker News上充斥着诸如“为什么我的创业公司选择Common Lisp和DragonflyBSD”之类的博文,作者总以理性的技术理由为其选择辩护,但实际上这往往是掩盖情感因素的托词。人们选择技术,一部分源于情感:舒适感、熟悉感或对特定时代的怀旧。他们选择冷门技术,如同一种象征性魔法,将技术与个人认同感联系起来。作者认为,承认并接受这种情感驱动并无不妥,但切忌自欺欺人,应理性评估选择的利弊,避免在无意义的技术追求上浪费时间。

开发

JWT 十周年:安全令牌标准的十年历程与未来展望

2025-05-25

十年前,JSON Web Token (JWT) 成为 RFC 7519,标志着历时四年半的基于 JSON 的安全令牌格式和加密标准的创建工作圆满完成。JWT 及其相关规范已被广泛应用于各种安全场景,甚至超出最初设计者的想象。如今,JWT 仍在不断发展,为了应对新兴的威胁和漏洞,相关规范正进行更新,以确保其在未来十年继续保持安全可靠。

开发

用Claude和SnapTrade构建金融交易机器人

2025-05-25

Dino Angelov分享了他如何利用Anthropic的Claude和MCP协议,结合SnapTrade的API,构建一个金融交易机器人。他尝试用Claude编写MCP服务器,但发现Gemini表现更好。最终,他使用go-mcp框架快速构建了服务器,实现了连接经纪商账户、查看投资组合和执行交易等功能。文章还提醒用户需谨慎使用,因为LLM存在不可预测性,可能导致意外交易。

开发

Mojo 语言新增特性:从 Python 调用 Mojo 代码

2025-05-25
Mojo 语言新增特性:从 Python 调用 Mojo 代码

Modular 团队宣布 Mojo 语言最新的夜间版本新增特性:支持从 Python 调用 Mojo 代码!此功能通过扩展 Mojo 手册的 Python 互操作性章节实现,并新增了示例代码,演示了如何在 Python 和 Mojo 之间进行数据传递,以及如何从 Python 调用使用 GPU 的 Mojo 代码。这一突破性进展旨在将 Mojo 集成到现有的 Python 代码库中,从而提升 Python 代码的性能,尤其是在处理性能瓶颈时,Mojo 加速器的优势将得到充分发挥。

开发

Blacksmith CI/CD安全架构深度剖析

2025-05-25
Blacksmith CI/CD安全架构深度剖析

Blacksmith 的 CI/CD 系统以其严密的安全性著称。文章详细介绍了其架构,从 GitHub 集成开始,到控制平面、数据平面,再到缓存机制,层层递进地阐述了如何保护用户的代码、密钥和缓存工件。通过 GitHub SSO 进行身份验证,最小权限原则,TLS 加密,以及 Firecracker 微虚拟机等技术,确保了各个环节的安全性。文章最后还提到了 SOC 2 Type 2 合规性以及定期渗透测试,力求打消用户对安全的顾虑。

Koog:用Kotlin构建AI智能体的框架

2025-05-25
Koog:用Kotlin构建AI智能体的框架

Koog是一个基于Kotlin的框架,用于构建和运行完全用Kotlin编写的AI智能体。它允许创建与工具交互、处理复杂工作流程并与用户沟通的智能体。Koog具有纯Kotlin实现、MCP集成、嵌入功能、自定义工具创建、即用型组件、智能历史压缩、强大的流式API、持久化智能体内存、全面的跟踪和灵活的图工作流程等特性,支持Google、OpenAI、Anthropic、OpenRouter和Ollama等LLM提供商。Koog支持JVM和JS目标,并提供详细的依赖项添加说明。

开发

警惕复杂性贩子:简单才是王道

2025-05-25
警惕复杂性贩子:简单才是王道

本文探讨了软件开发中“意外复杂性”的危害。作者指出,一些工程师为了满足个人虚荣心或出于自保,故意制造不必要的复杂性,从而控制项目,获取更多资源。这种“复杂性贩子”的行为阻碍了团队效率,增加了维护成本,并最终损害了业务价值。作者建议,要警惕这种行为,优先选择简单可靠的方案,并要求工程师在引入新复杂性之前清理旧的复杂性,确保系统易于维护和转移。简单、可维护的系统才能真正创造价值。

开发

Blitz: Zig 语言的闪电般快速 CLI 框架

2025-05-25
Blitz: Zig 语言的闪电般快速 CLI 框架

Blitz 是一个为 Zig 语言打造的超高速、零成本的命令行界面 (CLI) 框架。它模块化、符合人体工程学且性能卓越,内置了所有必要的功能。开发者可以轻松构建模块化、易用且高性能的 CLI 程序。其设计灵感源自 Cobra (Go) 和 clap (Rust),支持多种功能,例如模块化命令和子命令、快速标志解析、类型安全的参数支持以及自动帮助/版本/弃用处理等。

开发

用Prolog编写的极简X11窗口管理器plwm

2025-05-25
用Prolog编写的极简X11窗口管理器plwm

plwm是一个用Prolog编写的可高度定制的X11动态平铺窗口管理器。它轻量、快速,资源占用少(仅10-15MB内存),并支持多种布局、浮动窗口、多显示器、外部栏等功能。plwm易于定制和扩展,其配置采用声明式Prolog代码,并提供丰富的快捷键和命令行选项,为用户提供灵活的窗口管理体验。

开发

仅用数据类型实现复数和FFT(无浮点数)

2025-05-25
仅用数据类型实现复数和FFT(无浮点数)

本文介绍了一种仅使用代数数据类型,无需浮点数即可实现复数和快速傅里叶变换(FFT)的方法。作者首先解释了为什么使用代数数据类型实现数字是可取的,并指出了传统FFT实现中隐藏的低效之处。然后,作者展示了如何用简洁优雅的方式,仅用代数数据类型实现整数和复数。最后,作者推导出了一个纯函数式实现的复数FFT,同样无需浮点数。这通过使用平衡三进制表示整数,以及利用高斯整数的扩展来表示复数,巧妙地避免了浮点数运算带来的融合障碍,从而提高了算法效率。

惊险刺激!一个自我修改的C程序

2025-05-25

本文讲述了如何创建一个能够在运行时修改自身代码的C程序。作者首先解释了程序代码在内存中的存储方式以及如何使用`mprotect()`函数修改代码段的权限,使其可写。然后,作者通过修改`addl`指令的立即数,实现了改变程序运行结果的功能。最后,作者更进一步,通过`memcpy()`函数将一段shellcode复制到程序代码段,成功地实现了在运行时执行shell命令。整个过程充满了技术挑战,对x86_64汇编语言的理解至关重要。

开源社会大学:免费自学计算机科学的路径

2025-05-25
开源社会大学:免费自学计算机科学的路径

开源社会大学 (OSSU) 提供了一个完整的免费计算机科学教育课程,涵盖了本科计算机科学专业的所有核心内容,课程来自哈佛、普林斯顿、麻省理工等顶尖大学。该课程分为入门、核心和高级三个阶段,大约需要两年时间完成,每周学习20小时。所有课程资料几乎都是免费的,但部分课程的作业评分可能需要付费。学生可以自主安排学习进度,并通过GitHub等平台与全球学习者交流互动,最终完成一个毕业项目。

开发

Pretix 为 Linux 系统打造自定义票务打印驱动

2025-05-25

Pretix 1.8 版本新增了邮寄送票功能,但其推荐打印机 uITL+2003CF 仅提供 Windows 驱动。为了支持 Linux 系统,Pretix 团队自行开发了一个 CUPS 过滤器 `rastertofgl`,该过滤器使用 Python 编写,将 CUPS raster 数据转换为 FGL 代码,并配合 PPD 文件,实现了在 Linux 系统下打印票据的功能。虽然该驱动程序目前仍存在一些问题,但它为使用 Linux 系统的 Pretix 用户提供了便捷的票务打印解决方案。

Ladybird:一款挑战Chrome霸权的全新开源浏览器

2025-05-25
Ladybird:一款挑战Chrome霸权的全新开源浏览器

在谷歌Chrome浏览器主导的浏览器市场,一个名为Ladybird的全新开源浏览器项目悄然兴起。由前苹果和诺基亚WebKit工程师Andreas Kling创建,Ladybird从零开始构建,致力于遵守Web标准,并拒绝商业化运作模式。不同于其他基于Chromium的浏览器,Ladybird的目标是提供一个独立、开放的替代方案,以对抗大型科技公司对网络平台的垄断。虽然目前性能并非其强项,但Ladybird团队秉持“先使其工作,再使其正确,最后使其快速”的开发理念,并计划未来采用Swift语言进行开发。Ladybird的出现,为用户提供了更多选择,也为Web标准的维护和网络生态的多样性提供了新的希望。

开发

Daedalus:一款快速易用的分子查看器

2025-05-25
Daedalus:一款快速易用的分子查看器

Daedalus是一款用于查看和编辑分子(特别是蛋白质和核酸)的开源软件,其易用性和速度堪比PyMOL、Chimera和Discovery Studio。该软件支持多种文件格式,包括PDB、mmCIF、SDF、Mol2和PDBQT。用户可以通过多种方式打开分子文件,包括直接打开、拖拽、输入蛋白质标识符或点击“我感觉很幸运”随机加载蛋白质。Daedalus提供两种相机控制方案,并支持丰富的快捷键操作,方便用户从任意角度查看分子结构。虽然目前一些功能尚在开发中,例如卡通视图和高质量范德华表面视图,但其核心功能已足够实用,并持续根据用户反馈更新。

代码设计压力:隐形之手如何塑造你的代码

2025-05-25
代码设计压力:隐形之手如何塑造你的代码

你是否曾有过这种奇怪的直觉:代码中有些地方不对劲,却无法指出原因?你是否在项目伊始遵循最佳实践,但最终架构还是变得古怪?Hynek Schlawack 在 PyCon US 2025 上的演讲探讨了“设计压力”这一隐形力量如何影响代码设计。演讲涵盖了耦合类型、软件设计中的吸引性陷阱、类型化设计等主题,并通过案例分析,强调了在数据映射和类型状态模式等方面的权衡取舍。演讲还批判性地审视了ORM和异步原语对代码复杂性的影响。

开发 代码架构

重大更新:列表API过滤器升级,支持嵌套复杂表达式

2025-05-25
重大更新:列表API过滤器升级,支持嵌套复杂表达式

列表API进行了重大更新,过滤器现支持嵌套复杂表达式,这带来了破坏性变更,用户需要更新客户端库。所有客户端库都已更新,以支持新语法并辅助构建嵌套过滤器。对于直接使用HTTP的用户,过滤器格式从col[ne]=val变为filter[col][$ne]=val。例如,排除值范围[v_min, v_max]:?filter[$or][0][col][$gt]=v_max&filter[$or][1][col][$lt]=v_min。此外,还增加了Swift语言的客户端实现,在管理员面板中显示了发行版本并链接到发行页面,以及更新了依赖项。

极简34键键盘:编程利器Ferricy的定制之路

2025-05-25

作者打造了一款名为Ferricy的34键分体式人体工学键盘,旨在提升编程效率。基于Colemak布局,通过三层自定义按键及ZMK组合键实现高效输入,包括导航层(用home row模拟Vim键位)、符号层(镜像数字键盘布局)和数字层。此外,利用home row mods和caps-word功能,巧妙地解决了特殊字符和大小写切换的问题。作者强调舒适度和准确性优先于速度,最终打造出一款适合自身编程习惯的个性化键盘。

开发 键盘定制

React Photo Studio:一款在线图片编辑应用的Beta版本

2025-05-25
React Photo Studio:一款在线图片编辑应用的Beta版本

React Photo Studio是一款在线图片编辑应用,目前正处于Beta测试阶段,许多功能仍在积极开发中。开发者Chase Manning诚邀对开源项目感兴趣的朋友贡献力量,详情请查阅贡献指南。该项目独立于任何其他摄影工作室产品、品牌或公司,与业界其他实体完全独立。任何与其他产品的相似之处纯属巧合,源于行业标准实践和技术。

Unix文件名长度限制的演变史

2025-05-25

Unix早期版本的文件名长度限制令人惊讶地短:最初只有8字节,后来才增加到14字节。这与Unix简单的目录结构设计有关。文章深入探讨了Unix V4及之前版本的目录结构,解释了文件名长度限制的演变原因以及16字节目录项如何更好地适应512字节磁盘块。此外,文章还提到了早期Unix中inode数量的限制,这反映了早期Unix系统的一些固有限制。

开发

文件格式设计与ZX Spectrum游戏开发杂谈

2025-05-25

博主分享了文件格式设计的十个技巧,包括检查现有格式、考虑可读性、使用分块结构、允许部分解析、版本控制、编写规范文档等。他还详细描述了为ZX Spectrum开发一款名为“Deep Fishing”的钓鱼游戏的历程,从设计文档到代码实现,包括图像转换、像素绘制、随机函数使用、音频设计等细节。此外,博主还分享了他游玩《质量效应》系列游戏的心得体会,并列出了新一年的计划,包括学习数学、锻炼身体、更新SoLoud库等。

1 2 76 77 78 80 82 83 84 213 214