分类: 开发

Preserves:一种表达能力更强的全新数据语言

2025-01-29

Preserves 是一种类似于 JSON、XML 等的数据模型和序列化格式,它拥有语法中立的数据模型和语义,支持多种语法间的无损转换。该项目提供了 Preserves 的规范文档、教程、多种语言的实现(包括 Python、Rust、JavaScript 等)以及工具,旨在为开发者提供一种更强大、更灵活的数据表达方式。它也提供Schema和查询功能,方便数据处理。与 JSON 相比,Preserves 提供了更丰富的表达能力和更强的可扩展性。

开发 数据语言

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

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

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

开发

2025 年,我为何依然钟爱 Sublime Text?

2025-01-29
2025 年,我为何依然钟爱 Sublime Text?

一位资深开发者在 2025 年依然坚持使用 Sublime Text,并分享了他的理由。Sublime Text 的速度快、资源占用少,LSP 支持使其保持现代感,强大的代码片段功能、项目工作区管理以及可定制的构建系统都让他爱不释手。虽然文档和插件开发体验还有提升空间,但他认为 Sublime Text 的简洁、高效以及多年的稳定性使其仍然是一款优秀的代码编辑器。

开发

探索式编程:先写代码再设计

2025-01-29

本文介绍了一种名为“探索式编程”的编程方法,它颠覆了传统的先设计后编码的模式。探索式编程倡导先编写代码,通过代码的反馈来理解问题,逐步完善方案。作者以斯蒂芬·金的写作方式作比,认为这类似于“发现式写作”。这种方法虽然看起来比较随意,但它能帮助程序员避免被既有经验所束缚,更好地理解问题的本质。文章还探讨了探索式编程的益处和相关的工具,并呼吁编程界应该接受这种多元化的编程方式。

可组合SQL:解决SQL测试和业务逻辑难题的函数式方法

2025-01-29

本文探讨了SQL在测试和复用业务逻辑方面的不足,提出了一种名为“函子”的可组合SQL片段解决方案。通过将查询参数化并依赖接口而非具体表,函子解决了SQL测试的难题,并允许在不同查询中复用业务逻辑,从而提高代码的可读性、可测试性和可重用性。作者还讨论了泛型、业务逻辑泛化以及避免全局变量等方面的扩展,最终实现高效、可测试且易于理解的SQL查询。

开发

OAuth 2.0:解密全球最流行的授权框架

2025-01-28
OAuth 2.0:解密全球最流行的授权框架

本文深入浅出地解释了OAuth 2.0协议的工作原理。作者以构建一个代码部署平台为例,阐述了OAuth 2.0如何解决用户凭据共享的安全问题,并对比了使用普通用户凭据和个人访问令牌(PAT)的优劣。文章详细讲解了OAuth 2.0中的三个核心角色(资源服务器、资源拥有者和授权服务器),以及各种授权流程(授权码流程、隐式流程、客户端凭据流程、资源所有者凭据流程和设备码流程),并分析了每种流程的安全性及适用场景。此外,文章还探讨了访问令牌、刷新令牌、范围和PKCE等重要概念。

Meelo:为音乐收藏家打造的自托管音乐服务器

2025-01-28
Meelo:为音乐收藏家打造的自托管音乐服务器

Meelo是一款自托管的个人音乐服务器和Web应用程序,类似于Plex或Jellyfin,但更注重灵活性和浏览体验。它专为音乐收藏家设计,能够识别B面歌曲、稀有曲目,自动检测合唱和二重唱,支持多种格式和元数据解析,并能从MusicBrainz等平台获取信息。Meelo支持音乐视频,并区分音乐视频与采访、幕后花絮等。目前已发布,可通过Docker镜像部署。

Win7/Win Server 2008 R2 纯色壁纸登录延迟问题

2025-01-28

在Windows 7或Windows Server 2008 R2系统中,如果设置纯色作为桌面背景,登录过程中可能会出现30秒的欢迎屏幕延迟。微软已确认此问题,并提供了更新修复此问题。此问题在使用远程桌面连接登录或禁用桌面窗口管理器会话管理器服务时不会发生。此外,使用图片文件作为桌面背景也能避免此问题。解决方法包括使用带纯色的图片作为背景或调整注册表项DelayedDesktopSwitchTimeout的值。

软件依赖:安全与效率的博弈

2025-01-28

现代软件开发高度依赖外部库,如同敞开大门般信任外部代码。作者认为,这种依赖关系如同将房屋大门敞开,虽然提升了效率,却也增加了安全风险。文章探讨了如何在保证效率的同时提升软件安全性,提出了组件隔离和最小权限原则,并借鉴了OpenSSH和Actor模型的思想,设想了一种更安全的软件架构,但这需要重新思考硬件、操作系统和编程语言。

开发

Svelte 5:框架的未来与Rich Harris的对话

2025-01-28
Svelte 5:框架的未来与Rich Harris的对话

Smashing Magazine对Svelte创造者Rich Harris的访谈揭示了Svelte 5的重大更新和未来方向。Svelte 5是一个从底层重写的版本,引入了更明确的状态管理机制。Harris强调Svelte的目标并非单纯的市场份额,而是构建高质量、健壮易用的应用,并致力于改善整体软件质量,解决软件普遍存在的缺陷问题。未来,Svelte将专注于完善周边生态,例如SvelteKit,目标是成为JavaScript领域的Rails或Laravel,简化全栈应用开发。

开发 Svelte 5

Malimite:一款强大的iOS和macOS反编译器

2025-01-28
Malimite:一款强大的iOS和macOS反编译器

Malimite是一款开源的iOS和macOS反编译器,旨在帮助研究人员分析和解码IPA文件和应用程序包。它基于Ghidra反编译器构建,直接支持Swift、Objective-C和Apple资源。Malimite支持多平台(Mac、Windows、Linux),自动解码iOS资源,避免lib代码反编译,并重建Swift类,甚至内置LLM方法翻译功能。预编译的JAR文件可在Releases页面找到,更多安装和使用说明请参考Wiki。

开发

使用BFF模式构建安全的Keycloak、Angular应用程序

2025-01-28

本文介绍了如何使用Backend for Frontend (BFF)模式,结合Keycloak和Angular构建一个安全的Web应用程序。为了避免在浏览器中存储敏感数据,该方案将所有与Keycloak交互的认证流程都委托给BFF服务器处理。BFF充当Keycloak和Angular应用之间的安全中介,管理OAuth2和PKCE流程,安全地存储令牌,并防止敏感操作(如令牌刷新)到达浏览器。Angular应用无需直接与Keycloak交互,只需与BFF提供的简化端点交互。文章详细讲解了Keycloak的配置、BFF服务器(使用Express.js)的搭建,以及Angular应用的开发,并强调了这种架构在提高安全性方面的优势。

利用 uv 作为 Shebang 行提升 Python 脚本效率

2025-01-28
利用 uv 作为 Shebang 行提升 Python 脚本效率

作者 Rob Allen 分享了他使用 `#!/usr/bin/env -S uv run --script` 作为 Shebang 行来运行 Python 脚本的经验。这种方法利用 uv 工具管理脚本依赖,使得可以直接通过命令行运行 Python 脚本,无需额外配置虚拟环境等,提高了脚本的便捷性和可执行性。作者在 ~/bin 目录下创建了许多自动化脚本,并通过这种方法简化了脚本的运行过程。

开发

Go语言错误处理语法糖提案:简洁与清晰的博弈

2025-01-28
Go语言错误处理语法糖提案:简洁与清晰的博弈

Go语言社区正在讨论一个新的错误处理语法提案,旨在减少冗余代码。该提案建议引入一个新的“?”运算符,允许以更简洁的方式处理函数返回的错误,同时保持代码的可读性。提案引发了社区广泛讨论,主要争议点在于新的语法是否足够清晰,以及是否会鼓励开发者忽略错误处理。一些开发者认为该提案能有效减少样板代码,提高代码可读性;另一些则担心新语法过于隐晦,可能导致难以调试的错误。

开发 语法糖

llama.cpp WASM性能翻倍:AI辅助编程的胜利

2025-01-28

Simon Willison 的博文中介绍了 llama.cpp 的一个重大改进:通过优化 SIMD 指令,WASM 版本的速度提升了两倍。令人惊讶的是,99% 的代码由 AI 辅助编程工具 DeepSeek R1 生成。DeepSeek R1 花费了 3-5 分钟思考每个提示,最终帮助开发者改进了 llm_groq.py 插件,并成功消除了 model_map,优化了代码结构。这展示了 AI 在代码优化和重构方面的巨大潜力。

开发

DECUServe:OpenVMS 社区的在线宝藏

2025-01-28

DECUServe 是一个面向 OpenVMS 用户的在线社区,提供丰富的资源和支持。它拥有庞大的知识库,涵盖各种问题和解决方案,并举办过超过五十场技术会议。用户可以通过命令行、浏览器或新闻阅读器访问会议记录、资料库和个人网页。DECUServe 还提供 SSH、SFTP 和 DCLinabox 等多种系统访问方式,方便用户参与讨论和协作。这是一个充满活力且互助友爱的社区,为 OpenVMS 用户提供了宝贵的资源和支持。

开发

HawkEye:多平台开源许可证头部检查与格式化工具

2025-01-28
HawkEye:多平台开源许可证头部检查与格式化工具

HawkEye是一个功能强大的开源工具,用于检查和格式化代码文件中的许可证头部信息。它支持多种格式,包括GitHub Actions集成,并提供命令行界面方便本地使用。HawkEye可以检查许可证头部的完整性和一致性,自动修复不符合规范的文件,甚至可以删除许可证头部。该项目最初基于Java开发,后重构为Rust,以提供更小的Docker镜像和更高的性能。

FastAnime:命令行下的动漫观看体验

2025-01-28
FastAnime:命令行下的动漫观看体验

FastAnime 是一款命令行工具,允许用户在终端中浏览和观看动漫。它支持 AniList 集成,提供强大的搜索和下载功能,并可自定义配置。用户可以使用各种命令浏览动漫、下载视频、管理缓存等。此外,它还支持 MPV 播放器,并提供桌面通知和多种快捷键。FastAnime 的安装方便,支持多种包管理器和操作系统,并具有丰富的命令行选项和自定义功能,为用户提供了便捷且强大的动漫观看体验。

开发 AniList

YC 孵化的 AI 数据应用开发平台 Structured 诚招创始工程师

2025-01-28
YC 孵化的 AI 数据应用开发平台 Structured 诚招创始工程师

Y Combinator 孵化的初创公司 Structured 正在招聘创始工程师。Structured 致力于通过将整个分析堆栈整合到代码中,重新定义开发人员构建和部署数据应用程序的方式。他们正在寻找一位雄心勃勃、勤奋且注重产品的工程师,参与核心 SDK 的构建、交互式组件的设计以及解决各种挑战性问题,例如实时数据同步和云端部署。这将是一个绝佳的机会,可以加入一个由经验丰富的 Meta 工程师组成的优秀团队,拥有股权并塑造一家初创公司的未来。

开发

一键下载YouTube视频和播放列表的Python脚本

2025-01-28
一键下载YouTube视频和播放列表的Python脚本

一个名为`Download-Simply-Videos-From-YouTube`的Python脚本可以轻松下载YouTube视频和播放列表。它支持高品质下载、多种格式、字幕和缩略图,并能自动组织文件。只需安装Python和FFmpeg,运行脚本并按照提示操作即可。该脚本由热衷于自动化内容创作的软件AI工程师Pierre-Henry Soria创建。

开发 YouTube下载

颠覆数据库架构:将数据库反转

2025-01-28

Martin Kleppmann 在其演讲中提出了一种颠覆性的数据库架构思想:将数据库“反转”。传统数据库是全局的、共享的、可变的状态,而Kleppmann 认为,一个更优的模型是将数据库视为不断增长的不可变事实集合,并使用像 Apache Samza 这样的分布式流处理框架实时处理数据流。这种方法的核心是持久化的分布式提交日志(例如 Apache Kafka),通过连接数据流和可靠地管理大量数据,实现更简洁的代码、更好的可扩展性和鲁棒性、更低的延迟以及更大的数据处理灵活性。

开发 Apache Samza

CMU的AI工程生产实践课程:从模型到产品

2025-01-28

卡内基梅隆大学(CMU)开设了一门名为“生产中的机器学习/AI工程”的课程,涵盖了将机器学习模型构建成实际产品的完整生命周期。课程内容包括模型构建、部署、质量保证和维护,以及负责任的AI实践(安全、隐私、公平性、可解释性)和MLOps。该课程面向具备一定数据科学和编程经验的学生,无需软件工程背景。课程通过案例研究和大型项目,帮助学生将模型转化为可实际部署和维护的产品,并培养学生在跨学科团队中的协作能力。

开发 AI工程

使用 Neovim 和 Treesitter 高亮显示 Lua 中的 Bash 代码片段

2025-01-28

作者编写了一个用于同步其多台设备软件包的工具,其配置文件用 Lua 编写。为了方便阅读和编辑包含 Bash 脚本的 Lua 代码片段,作者使用了 Neovim 和 Treesitter 插件。Treesitter 通过注入功能,根据配置识别 Lua 表格中的 `script` 字段并将其内容识别为 Bash 代码进行高亮显示,提升了代码的可读性和可维护性。文中详细介绍了 Neovim 和 Treesitter 的配置方法,以及自定义查询规则以实现 Bash 代码高亮的功能。

开发 Treesitter

Railway如何利用Slack扩展支持数千名开发者

2025-01-28
Railway如何利用Slack扩展支持数千名开发者

Railway公司为了更好地支持数千名开发者,巧妙地利用Slack构建了一个强大的客户支持系统。起初,他们手动创建Slack频道,但随着规模扩大,这种方式变得不可持续。于是,他们开发了“Help Station”内部支持工具,并将其与Slack集成,实现了自动创建Slack频道、同步消息以及自动分类客户问题(销售或支持)。过程中他们克服了诸多技术挑战,例如Slack Bolt SDK的Socket模式和HTTP模式切换、消息队列的应用(Temporal)等。最终,他们实现了50倍的客户互动提升和8倍的响应速度提升,极大地提升了客户满意度和公司营收。

AI辅助开发的四天血泪史:我的桌面项目噩梦

2025-01-27
AI辅助开发的四天血泪史:我的桌面项目噩梦

作者计划用一天时间完成一个桌面项目Deskthang,该项目旨在利用树莓派Pico、LCD显示屏和RGB LED显示GitLab CI/CD流水线的运行状态。他试图利用AI工具辅助开发Zig代码,并将图像数据通过USB传输到Pico。然而,由于AI工具的误导和对USB通信机制理解不足,项目进展异常艰难,最终耗时四天,代码混乱不堪。作者总结了教训:AI是工具而非副驾驶,需保持独立思考;人为引入摩擦可提升专注力;从错误中学习比捷径更有效;要尊重项目的复杂性。

开发

Go 1.24 的 `go tool` 命令:开发效率的革命性提升

2025-01-27
Go 1.24 的 `go tool` 命令:开发效率的革命性提升

Go 1.24 版本引入的 `go tool` 命令及其 `go.mod` 中的工具指令,彻底改变了 Go 项目的工具管理方式。过去,开发者常常使用 `tools.go` 模式或手动安装工具,这导致性能损耗和依赖树膨胀。`go tool` 则有效解决了这些问题,通过缓存机制提升了构建速度,并避免了不必要的依赖引入,从而显著提升了开发效率。虽然迁移过程中可能遇到一些兼容性问题,例如与 gqlgen 的冲突,但 `go tool` 带来的性能提升和依赖管理的简化,使其成为近年来 Go 生态系统中最令人兴奋的改进之一。

开发 go tool

AI赋能编码:使用Cline和大型语言模型的旅程

2025-01-27
AI赋能编码:使用Cline和大型语言模型的旅程

作者Paolo Galeone分享了他使用AI辅助开发SaaS平台bot.eofferte.eu的经历。他利用Cline插件和大型语言模型(LLM),如Claude Sonnet 3.5和Gemini,重构了平台的前端UI/UX,并生成了各种文档。在后端开发中,AI加速了代码优化和重复性任务,但也强调了专业知识的重要性。多语言内容生成方面,AI高效地翻译了JSON文件中的多语言模板,实现了平台的多语言支持。总结来说,AI工具极大地提升了开发效率,但需要开发者具备专业知识来验证和整合AI生成的代码。

开发

微软开源基于PostgreSQL的文档数据库

2025-01-27
微软开源基于PostgreSQL的文档数据库

微软出人意料地发布了一个基于PostgreSQL关系型数据库的开源文档数据库平台。该平台完全开源,无需商业许可费,并建议用户使用开源的FerretDB作为前端。此举标志着微软对开源的进一步拥抱,并为NoSQL数据库社区提供了一个新的选择。该数据库利用两个PostgreSQL扩展:pg_documentdb_core(优化BSON)和pg_documentdb_api(实现CRUD和查询操作)。FerretDB 2.0版本与之集成,性能提升显著,某些工作负载速度提升20倍。此举可能对MongoDB等现有文档数据库构成挑战。

开发
1 2 174 175 176 178 180 181 182 213 214