KaTeX 数学公式大全
编者按:KaTeX 是一款基于 Donald Knuth 的 TeX 系统构建的高性能网页数学排版引擎,能够为数学公式与物理符号提供细致而快速的渲染效果。笔者日常深度使用 Obsidian,该笔记软件原生支持 KaTeX,故特此翻译并整理本文,旨在系统介绍 KaTeX 所支持的 TeX 语法。本文译自官方函数列表文档。
这是 KaTeX 支持的 TeX 函数列表,按逻辑分组排序。
编者按:KaTeX 是一款基于 Donald Knuth 的 TeX 系统构建的高性能网页数学排版引擎,能够为数学公式与物理符号提供细致而快速的渲染效果。笔者日常深度使用 Obsidian,该笔记软件原生支持 KaTeX,故特此翻译并整理本文,旨在系统介绍 KaTeX 所支持的 TeX 语法。本文译自官方函数列表文档。
这是 KaTeX 支持的 TeX 函数列表,按逻辑分组排序。
这篇文章是对 LLM 工作原理的一次梳理。现代 LLM 大多是通过把 transformer 块层层堆叠起来的,所以理解了 transformer 的内部机制,你就理解了大部分内容。
我会讲现代基于 transformer 的 LLM 内部的核心机制,但不涉及那些粘手的数学细节。别误会,数学你还是该学的,但这篇可以当作入门读物。
大多数现代 LLM 都共享同一套 transformer 家族的骨架。它们之间的差异主要来自训练数据、规模与配置选择,以及在此基础上做的后训练。读完本文,你应该能够阅读许多现代 LLM 论文或模型卡,并知道每一节在讲架构的哪个部分。
来源:Building Effective AI Agents
在过去一年里,我们与跨行业的数十支团队合作,构建基于大语言模型(LLM)的智能体。我们一致观察到:最成功的实现并没有使用复杂的框架或专门的库,而是用简单、可组合的模式来构建。
在这篇文章中,我们分享了从与客户合作以及自己构建智能体过程中学到的经验,并为开发者提供构建高效智能体的实用建议。
“智能体(Agent)”可以有多种定义。一些客户把智能体定义为完全自主的系统,能够长时间独立运行,使用各种工具完成复杂任务。另一些客户则用这一术语描述更具规约性的实现,按预定义的工作流执行。在 Anthropic,我们把所有这些不同形态都归为智能体系统(agentic systems),但在架构上对工作流(workflows)和智能体(agents)做出重要区分:
下面我们将详细探讨这两种智能体系统。在 附录 1: 智能体实践 中,我们描述了客户从这类系统中获得特别价值的两个领域。
原文:Voice AI & Voice Agents: An Illustrated Primer
LLM 很擅长对话。
如果你花过不少时间与 ChatGPT 或 Claude 进行自由形式的对话,就会直观地感受到:和 LLM 交谈相当自然,而且在很多场景中都很有用。
LLM 也很擅长把非结构化信息转换为结构化数据1。
新的语音 AI 智能体正是利用了 LLM 的这两项能力——对话,以及从非结构化数据中提取结构——来创造一种新的用户体验。
如今,语音 AI 已经被部署到广泛的商业场景中。例如:
在消费端,对话式语音(以及视频)AI 也开始进入社交应用和游戏。开发者每天都在 GitHub 和社交媒体上分享个人语音 AI 项目与实验。
线性代数的核心思想是将矩阵表示函数。在本文中,我们将考察几个常见的初等函数,并讨论它们对应的矩阵。
回想一下,矩阵-向量乘法 的定义使我们能够从以下意义上将矩阵视为函数:如果我们固定一个矩阵 \(\boldsymbol{A} \in \mathbb{R}^{m \times n}\),该矩阵将 \(\mathbb{R}^n\) 中的向量映射到 \(\mathbb{R}^m\) 中的向量。也就是说,我们可以定义一个函数 \(T : \mathbb{R}^n \rightarrow \mathbb{R}^m\):
在本文中,我们将考察几个常见的初等函数,并讨论它们对应的矩阵。
作者: 鲍勃·尼斯特罗姆,写于 2020年7月
自 Dart 2.0 中用可靠的静态类型系统替换了原有的不完善的可选类型系统以来,空安全是我们对 Dart 做出的最大改动。Dart 最初发布时,编译时空安全还是一项罕见的特性,需要详细讲解。如今,Kotlin、Swift、Rust 和其他语言都针对这个已经非常普遍的问题提供了各自的解决方案。以下是一个示例:
如果运行这段 Dart 程序时没有启用空安全机制,它会在调用 .length 方法时抛出 NoSuchMethodError 异常。因为空值是 Null 类的一个实例,而 Null 类没有 length 方法。运行时错误非常糟糕。对于像 Dart 这样旨在运行在终端用户设备上的语言来说,这一点尤为重要。如果服务器应用程序崩溃,通常可以在用户注意到之前重启它。但是,当 Flutter 应用在用户的手机上崩溃时,用户会非常不满意。用户不满意,开发者自然也不会满意。
开发者喜欢像 Dart 这样的静态类型语言,因为它们允许类型检查器在编译时(通常直接在 IDE 中)查找代码中的错误。越早发现 bug,就能越早修复它。当语言设计者谈到“修复空引用错误”时,他们指的是增强静态类型检查器的功能,使语言能够检测到类似上述尝试对可能为空的值调用 .length 的错误。
原文:Mastering State Management in Flutter

想象一下一群书呆子为如何操作数据争吵了五年。这基本上就是 Flutter 社区一直在发生的事情。
五年过去了,关于 GetX 的帖子仍然会引发风暴。我就是那些书呆子之一。所以,我想最后一次狂热一下,然后继续我的生活。这是我关于状态管理的最终结论。
使用任何你想用的状态管理方案。如果你在意别人用什么,那就找点更好的事情去关心。
我不在乎你用什么。然而,我强烈建议你了解你所使用的工具,并理解如何仅使用 Flutter 提供的工具来管理你的状态。
状态管理这个短语可以分解为一个用于管理你的状态的系统。什么是状态?
状态是一种数据。应用程序中有两种类型的数据:
一个典型的状态例子是用户信息。例如,你可以在主屏幕上显示 Hello, Tadas,其中 Tadas 这部分信息是从用户信息状态中获取的。假设你有一个设置页面,可以在其中将名称更改为 T-Dog。这将使用新值更新用户信息状态,你的应用将更改为显示 Hello,T-Dog。状态管理解决方案将促进这一更改数据并在整个应用程序中传播这些更改的过程。
其他一些常见的状态例子包括新闻动态、关注者数量、待办事项、倒计时器等。
状态最简单的定义就是可以更改的数据。
原文:The Ultimate Flutter Layout Guide:The only guide you need to layout your Flutter widgets hassle-free
你在构建 Flutter 应用时是否曾被以下错误困扰过?
A RenderFlex overflowed…(RenderFlex 溢出…)RenderBox was not laid out(RenderBox 未布局)Viewport was given unbounded height(Viewport 被赋予了无限高度)An InputDecorator …cannot have an unbounded width(InputDecorator 不能拥有无限宽度)Incorrect use of ParentData widget(ParentData 组件使用不正确)如果答案是肯定的,那么这篇博客文章就是为你准备的!
在这篇博客文章中,我将讨论并分享一些常见的 Flutter 布局场景和最佳实践。我会更多地关注代码片段,而不是组件细节。对于组件详情,我会分享相关链接。
一个将其子组件在其内部对齐的组件,并可选择根据子组件的大小调整自身大小。

Center(
child: Container(
height: 120.0,
width: 120.0,
color: Colors.blue[50],
child: const Align(
alignment: Alignment.topRight,
child: FlutterLogo(
size: 60,
),
),
),
)
原文: Matrix-vector multiplication
在上一篇博客文章中,我们讨论了观察矩阵的三种方式:作为值表格、作为向量列表,以及最终作为函数。正是第三种观察矩阵的方式赋予了矩阵真正的力量。在这里,我们将介绍矩阵和向量之间的一种操作,称为矩阵-向量乘法,这将使我们能够将矩阵用作函数。
矩阵-向量乘法是矩阵和向量之间的一种操作,会产生一个新向量。值得注意的是,矩阵-向量乘法仅定义在矩阵和向量之间,其中向量的长度等于矩阵的列数。其定义如下:
定义 1 (矩阵-向量乘法): 给定矩阵 \(\boldsymbol{A} \in \mathbb{R}^{m \times n}\) 和向量 \(\boldsymbol{x} \in \mathbb{R}^n\),\(\boldsymbol{A}\) 和 \(\boldsymbol{x}\) 的矩阵-向量乘法定义为
其中 \(\boldsymbol{a}_{*,i}\) 是 \(\boldsymbol{A}\) 的第 \(i\) 个列向量。
像大多数数学概念一样,矩阵-向量乘法可以从多个角度审视,具有不同程度的抽象性。这些视角在尝试概念化我们利用矩阵-向量乘法来建模现实世界问题时的各种方式时非常有用。以下是我发现用于概念化矩阵-向量乘法的三种方式,按从最不抽象到最抽象排序:
在这里,我将介绍思考矩阵的三种主要方法。当我在本科线性代数课程中第一次接触到矩阵时,这种对矩阵多方面思考方式的高级描述将帮助我更好地直觉矩阵。
矩阵是线性代数中的基本概念,在科学和工程领域中无处不在。从表面上看,矩阵只是一个二维的值数组。例如,以下是一个矩阵:
正如我在上一篇博客文章中讨论的那样,有些概念需要从多个角度观察才能掌握其真实本质。尽管矩阵表面上很简单,但我认为矩阵是其中一个概念,并且我相信,如果一开始就提供对矩阵的高层次、多视角概述,以便为未来的线性代数学习提供背景,那么对于我--大学线性代数课程的二年级学生来说,这会对我有所帮助。在这篇文章中,我将介绍查看矩阵的三个主要角度,这对我以前的自己有帮助。
在介绍观察矩阵的三种角度之前,我将介绍一些符号。首先,一个矩阵是一个矩形的值数组。例如,以下矩阵 \(\boldsymbol{A}\) 有 \(m\) 行和 \(n\) 列: