如何让写作不那么困难

灵感部分来源于关于朱迪思·巴特勒的写作有多糟糕的再次讨论(答案:真的很糟糕!),我一直在思考关于如何写好的建议。我之前曾指出,很大一部分此类建议是无用的、自相矛盾的,或者经常被提出建议的人自己忽略。(“省略不必要的词语,”威廉·斯特伦克在《风格的要素》中宣称。是的,但是如果你已经知道一个词是不必要的,你就应该不需要被告知要省略它;如果你不知道它是不必要的,斯特伦克的建议又有什么用呢?)

尽管如此,有三条建议对我在写作上的效率产生了实实在在的影响——而且我认为也对我的写作质量产生了影响,尽管这不由我说了算。在这里列出来,以防它们也能帮助你:

构建有效的 LLM 智能体

过去一年,我们与数十个团队合作,在各行各业构建大型语言模型(LLM)智能体。我们发现,最成功的实现并非采用复杂的框架或专门的库,而是基于简单、可组合的模式构建的。

在这篇文章中,我们将分享从与客户合作和自行构建智能体的过程中学到的经验,并为开发者提供构建有效智能体的实用建议。

Vercel v0.dev:评测

探索 AI 驱动的 Web 应用程序构建器

我一直在我的 Web 项目中使用许多 Vercel 产品 - 例如,他们的 Next.js 应用程序框架部署基础设施Vercel AI SDK。我喜欢这些工具,因为它们易于使用和上手,可靠且快速 - 而且它们中的大多数都是开源的,这太棒了 ❤️。

他们最新的创新是 v0.dev,这是一个 AI 驱动的工具,可帮助您使用对话式聊天界面构建前端应用程序。当我第一次听说它时,我以为它只是另一个带有聊天界面的 AI 编码工具,类似于要求 ChatGPT 或 Claude 生成代码。然而,v0.dev 最近宣布了一项重大更新,其中包括与流行的 shadcn UI 组件的集成以及拉取外部 npm 包的能力。所以我决定昨天试用一下。

体验令人震惊。仅仅一个小时,我就能够使用 v0.dev 的聊天界面构建一个功能齐全、外观精美的网站。感觉就像魔法一样 - 一系列“惊掉下巴”的时刻。我非常兴奋,以至于当 George 下班回家时,我跑下楼去滔滔不绝地谈论这个工具有多么棒。有趣的是 - 他已经试用过了,并且印象深刻,只是比我兴奋的反应更平静一些 🙂。

终于,BERT的替代品出现了:ModernBERT 隆重登场

这个博客文章介绍了 ModernBERT,这是一个最先进的仅编码器模型系列,代表了对旧版编码器的全面改进,具有 8192 的序列长度、更好的下游性能和更快的处理速度。

ModernBERT 可作为任何类似 BERT 的模型的即插即用替代品,提供 base (139M 参数) 和 large (395M 参数) 两种模型大小。

推测性解码:实现示例指南

LLMs 非常强大,但它们往往有点慢,这在需要速度的场景中并不理想。推测性解码是一种旨在通过更快生成响应而不牺牲质量来加速 LLMs 的技术。

本质上,这是一种在文本生成过程中“提前猜测”的方法,在保持LLMs所期望的准确性和深度的同时,预测可能出现的下一个词语。

在本篇博客中,我将解释什么是推测性解码,它是如何工作的,以及如何使用 Gemma 2 模型来实现它。

Remix 对比 Next.js

Remix 还是 Next.js?探索哪个 React 框架适合您的需求。比较功能、性能和使用场景。

Next.js 和 Remix 是基于 React 构建的流行框架。它们通过提供构建完整、高性能和 SEO 友好的 Web 应用程序所需的关键功能和工具,扩展了 React 的能力。尽管两者都建立在 React 的基础上,但它们的方法和优势有所不同。

Next.js,作为开发者社区中备受推崇的框架,在 2023 年 JavaScript 现状调查中名列榜首。其受欢迎程度源于其强大的功能、广泛的应用生态系统以及成熟的工具链。Remix 虽然较新且使用不如 Next.js 广泛,但它因专注于提升网站加载速度和改善开发者体验而逐渐为人所知。

本文不会决出胜者;它将成为您客观了解它们优缺点的指南。通过探讨它们的问题解决哲学和理想用例,您将学会做出明智的决策,并选择与您下一个项目需求完美契合的框架。

解锁 Remix.js 在 Web 开发中的强大功能:Remix 为何脱颖而出

作为一名 Web 开发者,您可能已经接触过众多 JavaScript 框架,每个框架都有其独特的优势和挑战。从 React 到 Next.js,Angular 到 Vue,现代生态系统丰富多样,但有时也令人眼花缭乱。Remix.js 登场,作为一个相对较新但功能强大的框架,正在这个领域中崭露头角。尽管仍在不断获得关注,Remix 以其独特的 Web 开发方法,强调速度、简洁以及与 Web 基础协议的更深层次集成,正在开辟自己的一片天地。

在本文中,我们将深入探讨 Remix.js 相较于其他框架的独特之处,以及它在底层如何运作以优化开发体验和性能。

UE5 反面教材:网格组件下的碰撞组件

这是我在其他人的虚幻引擎项目中经常遇到的一种常见(反)模式:一个带有附加的一个或多个碰撞组件的网格。这虽然可行,但并非最佳实践,可能表明开发者习惯于 Unity。

构建使用 Drizzle ORM 和 Deno 的数据库应用程序

Drizzle ORM 是一个 TypeScript ORM,它提供了一种类型安全的方式来与数据库交互。在本教程中,我们将使用 Deno 和 PostgreSQL 设置 Drizzle ORM,以创建、读取、更新和删除恐龙数据:

  • 安装 Drizzle
  • 配置 Drizzle
  • 定义模式
  • 与数据库交互
  • 下一步是什么?

您可以在这个 GitHub 仓库中找到本教程的所有代码。

8 个关于 PHP 内存使用的问答

我努力探索在 PHP 中利用内存的最有效方法。这让我质疑这些方法是否有效。让我们将这些疑问转向 PHP 的内存使用,并通过一系列问题来探讨它们。

抱歉,我找不到第 9 题和第 10 题…

驯服 PHP 应用的内存占用

每次运行 PHP 应用程序或其他软件时,它都会消耗内存。基本上,所有应用程序都需要内存来运行。随着所有这些应用程序争夺资源,计算机必须有效地分配内存。这使我们来到了内存管理过程。那是什么?

内存管理涉及释放、分配、组织和优化可用计算机内存,以确保程序正常运行。大多数情况下,计算机自动进行内存管理,但作为一名 PHP 开发者,你有责任管理你应用的内存占用。

本文将讨论您可以使用的技术来降低 PHP 应用程序的内存占用。

伪造的 Godot 中 3D 俯视角色

之前,我分享了一个为 Gdquest 创建的俯视角色视频。人们对这个小家伙的内部运作感到好奇,想知道创建这种角色使用了什么技术。

请注意,这里详细介绍的这种技术最适合自上而下的角色,但您可以为所有类型的深度效果做类似处理。

所有文件都可在 GitHub 上找到,您可以查看项目并阅读以了解其精髓 :)

选择适合云原生应用的正确编程语言

简介

A. 云原生应用的定义

云原生应用是专门为利用云计算资源和遵循云原生原则而设计的软件应用。

这些应用程序采用现代开发实践、架构和技术,以最大化云环境的好处。它们被容器化,打包成轻量级、可移植的容器,如 Docker,确保在不同环境中的一致部署。

基于微服务架构构建,它们分解为更小、独立的微服务,以实现灵活性和可扩展性。动态且可扩展,它们利用云原生技术进行自动扩展和编排,以处理不同的工作负载。

内置容错机制确保系统对故障具有弹性并保持高可用性。以 API 驱动和去中心化,通过定义良好的 API 促进无缝集成和协作。自动化是核心,通过持续集成/持续部署管道和自动化测试简化开发流程。优先考虑可观察性,具备全面的监控和日志记录功能,以实现实时问题检测和优化。

本质上,云原生应用是为云环境量身定制的,利用尖端技术和实践来提供可扩展、弹性好且敏捷的软件解决方案,以满足现代云计算的需求。

oh-my-zsh docker 插件详解, 配置, 别名使用

Docker 插件

这个插件可以为 docker 自动补全指令并设置别名。

要在你的 zsh 终端里使用这个插件,请在 .zshrc 文件的插件列表里添加 docker

plugins=(... docker)

下面是 docker/cli git 仓库里自动补全脚本的副本: https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker

JSR: 一个全新的 Javascript 包注册中心

JavaScript 社区最近被一个新的包注册中心 JSR 点燃了热情,该项目来自开发 Deno 的团队。Deno 是一个基于 V8 JavaScript 引擎和 Rust 构建的 JavaScript、TypeScript 和 WebAssembly 的运行时。

Deno 团队一直致力于为 JavaScript 开发提出新的选择。在详细回顾了 Node 早期设计时的遗憾之后,Node.js 的创建者 Ryan Dahl 于 2018 年的 JSConf EU 会议上公布了 Deno 项目。这个项目的目的是提供一个更快、更安全的 JavaScript 运行时,Deno 团队还将 Node/npm 的兼容性作为 Deno 项目的核心组成部分。

为了推动 Deno 的发展,Deno Land Inc. 于 2021 年成立,资金由 Shasta Ventures 和 Mozilla Corporation 提供。一年后,Deno 在红杉资本领投的 A 轮融资中获得了 2100 万美元的额外资金。

JSR 是 Deno 为重新定义 JavaScript 包注册中心领域做法而做出的最新努力。与长期以来被 JavaScript 生态系统视为标准包注册中心的 npm 相比,JSR 有几个明显的技术差异。Deno 团队在 2023 年 SeattleJS 会议上非正式宣布了 JSR 项目,并在 2023 年更新的博文中附上了该项目的链接。

几周前,JSR 网站总结了 Deno 正在构建的内容:

  • 为什么要选择 JSR? 真正的 TypeScript 优先环境:高效的类型检查,无需转换过程 —— 直接用 TypeScript 编写并部署代码。
  • 性能和可用性处于最前沿: 通过集成的工作空间和无缝的 NPM 集成,JSR 将可用性放在首位。
  • 安全且可访问的模块: JSR 中的所有模块都通过 HTTPS 公开,确保代码始终是安全的。
  • 开源,由社区驱动: JSR 由开发人员为开发人员构建,是根据 JavaScript 社区实际需求和贡献逐步形成的。

使用 Vite 和 Hono 开发全栈 web 应用

很多人都听过可以用 Vite 在浏览器中实现热加载模块的能力,并以这种方式使用它。但 Vite 能做的更多,特别是对于现代解决方法,新的后端框架也倾向于支持 Vite 的开发服务器。其中之一是 Hono。

与 Express 这样的传统框架相比,Hono 是一个相对较新的框架。它采用现代 Web API 的无服务器设计确实吸引了我的眼球。使用 Vite,Hono 应用程序也能从热模块重载中受益,这为我们提供了一种开发全栈应用程序的全新方式。

我有机会说服我的同事(在我的新工作场所)从使用 Koa/Egg.js 框架和 Webpack 的旧架构切换到这种新的 Vite + Hono 组合,并从中受益匪浅。使用这种新的全栈架构,我们不仅设法减少了后端和前端之间不必要的划分,而且还提高了代码质量,因为 Hono 可以在后端和前端之间共享 API 类型。

所以,在这里,我将与想要拥抱 Web 开发新时代的人分享我使用这个新栈的经验。我们开始吧。

将 Axum 程序迁移到 Loco

为获得最新的文档. 请参考 Loco 中文网

注意:Loco 基于 Axum,它是“包含所有功能的 Axum”,将您的 Axum 代码移至 Loco 非常容易。

我们将研究 realworld-axum-sqlx,它是一个基于 Axum 的应用程序,尝试使用 API、真实数据库和真实世界场景以及诸如配置和日志记录之类的真实世界的可操作性要求来描述一个真实世界的项目。

一点一点地研究 realworld-axum-sqlx我们将证明通过将它从 Axum 移至 Loco,大部分代码早已为您编写好,您将获得更佳的最佳实践、更好的开发体验、集成测试、代码生成和更快速的构建应用程序。

您可以使用这种分解方式来理解如何将您自己的基于 Axum 的应用程序也移至 Loco。如有任何问题,请在 discussions 中联系或点击绿色邀请按钮加入我们的 discord

Loco CLI

为获得最新的文档. 请参考 Loco 中文网

创建一个模板程序:

$ cargo install loco-cli
$ loco new
< 按照命令进行 >

现在 cd 进入你的应用程序,设置一个方便的 rr 别名并尝试各种命令:

$ cd myapp
$ cargo loco --help

你可以通过 CLI 在以下环境中驱动你的开发:

$ cargo loco generate model posts
$ cargo loco generate controller posts
$ cargo loco db migrate
$ cargo loco start

以及运行测试或使用 Rust 就像你已经知道的:

$ cargo build
$ cargo test