1 个不稳定版本
0.1.0 | 2019年9月10日 |
---|
#8 在 #experimentation
9KB
148 行
多样性是生活的滋味
重新思考实验生成
描述
Variety 是一个实验变异生成器。这意味着什么?我们可以生成介于 1 到 N 之间的可变长度数字,其中 N 是变异的数量。然后我们可以使用这个数字列表来决定应该启用什么和禁用什么。
目标
实现一个基于单个无符号整型 id 的通用算法,该算法可用于多种语言。
- Rust 实现
- Perl 中的 ffi
- Java 中的 ffi
- Node 中的 ffi
为什么?
测试很难。进行实验性测试更难。通过将功能切换逻辑与实验解耦,我们可以让它们和谐共存。这项工作的后半部分涉及允许每个 '用户'(用户是调用应用程序的任何东西,其中应用程序是一个功能切换和实验的单个单元)决定他们的体验。这对于开发者体验和复制用户遇到的问题非常有用。最基本的例子,假设我们确定用户 id 为 1234 在他们的使用过程中触发了几个异常,并希望评估他们确切做了什么,使用我们当前的实验方法,这是非常复杂的,涉及头文件和解码。本项目提出一个单一的 32 位无符号整数作为 '实验 ID',该 ID 可以编码为十六进制字符串进行传输。这个实验 ID 将为任何可以提供它的用户提供完全相同的体验。有了这个,我们可以复制冲突实验的问题,甚至在进行集成测试时拥有更精细的控制。
如何?
Rust!我们可以创建一个 .so 库,允许每种语言提供自己的 API,调用我们的本地实现。Rust 可以看作是一个更友好的 C。首先,我们将专注于提供对 Rust 库的 JNI 绑定。
作者
Luke Collier
依赖项
~405–630KB