我目前正在评估 k6 是否适合我们的负载测试需求。我们有一个相当传统的网站架构,使用 Apache 网络服务器、PHP 和 MySQL 数据库。使用 k6 发送简单的 HTTP 请求看起来很简单,我认为我们将能够用它测试所有主要功能,因为我们不太依赖 JavaScript,而且大多数页面都是静态的。
但是,我不确定如何处理请求中返回的 HTML 中引用的资源(样式表、图像等)。我们还需要加载它们,因为这有时会导致数据库请求,这必须是负载测试的一部分。
k6 中是否有一些开箱即用的功能可以让您像浏览器一样加载所有资源?我知道 k6 不会渲染页面,我也不需要它。我只需要请求 HTML 内的所有资源。
我有一个带有 Shadow DOM 的 HTML 5 WebComponent,它显示的内容必须根据组件中显示的内容类型加载样式。样式表列表是从服务器获取的。
我可以像这样加载样式表:
for (const style of styles) {
const stylesheet = document.createElement('link');
stylesheet.setAttribute('rel', 'stylesheet');
stylesheet.setAttribute('href', style);
stylesheet.setAttribute('type', 'text/css');
this.root.appendChild(stylesheet);
}
Run Code Online (Sandbox Code Playgroud)
但是,样式表有时还包含@font-face未添加到组件中的规则。浏览器永远不会创建对规则中字体引用的请求@font-face。如何动态加载这些规则?
我写了一个Word VSTO加载项,我希望将其提供给一些同事和朋友。我最初想使用ClickOnce进行部署,因为它对我来说很容易设置,也很容易安装。我的加载项的部署在Windows 7上运行良好,但在Windows 8 / 8.1上却遇到了一些麻烦。SmartScreen筛选器抱怨我的加载项并完全阻止安装。在这里,我发现问题在于我尚未使用真实证书对加载项进行签名。唯一的解决方案似乎是让用户“在Trusted Publishers商店中安装测试证书”(强烈建议不要这样做)或从授权机构那里获取证书,这对我来说不是一个选择,因为我只是一个爱好开发者,不要
因此,还有其他方法可以在没有证书的情况下部署外接程序吗?我可以使用不需要证书的其他安装程序吗?还是与安装程序无关,SmartScreen筛选器将始终阻止所有未安装未使用“真实”证书签名的VSTO加载项的尝试吗?
在这方面,我真的对Microsoft感到非常恼火-为什么他们使小型独立开发人员难以将应用程序部署到用户上?
任何帮助将非常感激!
sr258
我正在将使用 AWS S3 SDK v2 的库转换为 v3。
我的库是另一个库的接口的实现。另一个库提供抽象文件存储的接口(例如,在本地文件系统或云中存储)。
目前我有这个功能(v2 SDK):
public async getFileStream(filename: string): Promise<Readable> {
return this.s3.getObject({
Bucket: this.bucket,
Key: filename,
})
.createReadStream();
}
Run Code Online (Sandbox Code Playgroud)
新的 v3 SDK 不再有createReadStream。我检查了互联网上的各个网站,他们都建议使用.Body.transformToWebStream().pipe. 我不能这样做,因为我需要返回Readable.
我尝试这样做(v3 SDK):
import { Readable } from 'node:stream';
public async getFileStream(filename: string): Promise<Readable> {
return Readable.fromWeb(
(await this.s3.getObject({
Bucket: this.bucket,
Key: filename,
})
).Body.transformToWebStream()
);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Argument of type 'ReadableStream<any>' is not assignable to parameter of type 'import("stream/web").ReadableStream<any>'.
Type 'ReadableStream<any>' is missing the …Run Code Online (Sandbox Code Playgroud) 我想知道如果我在没有使用await的情况下调用标记为async的方法会发生什么.考虑这个例子:
private int id = 0;
async Task Initialize()
{
var content = await LoadFromDisk(id);
await Process(content);
return;
}
DataId
{
get { return id; }
set { id = value; Initialize(); }
}
Run Code Online (Sandbox Code Playgroud)
我知道这会产生一个编译警告,但我的问题是,如果在Initialize()中等待的方法调用仍然可以像预期的那样工作.正如您所看到的那样,setter不需要等待Initialize(),因为没有返回值,它是属性的setter的最后一次调用.这是一种火,忘了.
我想这样做的原因是我想将MVVM和数据后端结合起来,迫使我使用异步方法.
在上面的示例中,用户从列表中选择条目,程序应该在视图的另一部分中显示有关条目的详细信息.
我想将列表的当前选定条目绑定到DataId,每当用户更改选择时,它都会更新详细信息视图.当然,可以从事件处理程序执行异步方法调用,但为了更清晰的MVVM实现(主要使用数据绑定),我想避免使用事件处理程序.
我试图理解为什么 Entity Framework Core 2 的 ChangeTracker 将已删除实体的状态设置为“已修改”,如果删除是通过从另一个实体的列表中删除实体来完成的。
考虑这个例子:
Class1
List<Class2> MyListOfClass2Objects
Class2
Run Code Online (Sandbox Code Playgroud)
这两个类DbSet在 EF 的DbContext. 如果我从MyListOfClass2Objects列表中删除一个对象然后调用DbContext.SaveChanges(),则Class2对象的状态将ChangeTracker设置为EntityState.Modified,而不是EntityState.Deleted我所期望的。如果我通过调用is 中Set<T>.Remove()的状态来删除实体。然而,在这两种情况下,实体都会从数据库中删除。ChangeTrackerEntityState.Deleted
那么,为什么实体框架会根据您删除实体的方式在 ChangeTracker 中设置不同的值,即使它在两种情况下都被真正删除了?
如果操作成功或失败时,我正在Puppeteer上运行自动化测试的网站将显示信息弹出窗口。不幸的是,这些弹出窗口有时掩盖了我的脚本必须单击的按钮。如果我可以在站点中注入一些CSS来隐藏这些弹出窗口,那就太好了。有内置的方法可以做到这一点吗?
我目前正在将 CI 管道从 CircleCI 迁移到 GitHub Actions,但我遇到了 Prettier 问题。我们使用 Prettier 在我们的项目中强制执行一致的代码风格,这是 CI 管道中的一个步骤。该管道在 Linux、MacOS 和 Windows 上运行。
我执行npx prettier --check "{src,test,examples}/**/*.ts"检查文件是否存在格式问题。奇怪的是,这个检查在 ubuntu-latest 和 macos-latest 上通过,但在 windows-latest 上失败。
您可以在此处查看 windows-latest 的示例输出:
Run npm run format:check
> h5p-nodejs-library@2.0.0 format:check D:\a\H5P-Nodejs-library\H5P-Nodejs-library
> npx prettier --check "{src,test,examples}/**/*.ts"
Checking formatting...
test\TemporaryFileManager.test.ts
[... nearly all our files...]
Code style issues found in the above file(s). Forgot to run Prettier?
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! h5p-nodejs-library@2.0.0 format:check: `npx prettier --check …Run Code Online (Sandbox Code Playgroud) 我对涉及数据访问的 MVVM 应用程序(以前的 WinRT,现在面向 UWP)的体系结构感到非常困惑。我非常不确定如何在 UI 中传播更改以及在何处访问数据层。
这是基本架构:
我现在对这个架构有几个问题:
问题 1:一个模型可以在多个宫殿的屏幕上显示。例如,一个主从视图,显示一个类型的所有可用实体的列表。用户可以选择其中之一,其内容显示在详细视图中。如果用户现在更改了详细视图中的属性(例如模型的名称),则更改应立即反映在主列表中。这样做的最佳方法是什么?
在使用 ES6 类时,我希望在 VS Code 中使用具有代码完成功能的 Intellisense。为了实现这一点,我导入了一个类并添加了 JSDoc 标记来告诉 VS Code 这个类在特定方法中使用。这工作正常,但是当我打开此规则时,ESLint 会抱怨 import 语句没有未使用的变量。原因是导入的类只在 JSDoc 中引用,而在实际的 JavaScript 代码中没有引用。
考虑这个例子:
类1.js
import Class2 from './class2'; // ESLint complains about no-unused-vars here
export class Class1 {
/**
* @param {Class2} foo
*/
anotherMethod(foo) {
foo.someMethod(); // Intellisense and code-completion works for foo.
}
}
Run Code Online (Sandbox Code Playgroud)
class2.js
export default class Class2 {
someMethod() { }
}
Run Code Online (Sandbox Code Playgroud)
对于在 JSDoc 中(仅)引用的导入,是否有任何方法不会获得 no-unused-vars 错误而无需完全关闭它?
我正在评估 k6 以满足我的负载测试需求。我已经设置了一个基本的负载测试,我目前正在尝试解释我得到的错误消息和结果值。也许有人可以帮助我解释我所看到的:
如果我将 VUS 调高到 300 左右,我就会开始在控制台中看到错误消息和 500 条错误消息。
这些主要包括:
我也有几个检查的问题:
怎么可能res.status是 0 但主体仍然包含正确的值?
我怀疑我已达到负载生成机器的连接限制,这就是我收到错误消息的原因。所以我必须建立一个集群或转移到 Cloud runners!?
k6 生成的统计数据显示长http_req_blocked值,我将其解释为等待获取连接端口的时间。这似乎表明我的测试运行机器的连接池已达到极限。
http_req_blocked...........: avg=5.66s min=0s med=3.26s max=59.38s p(90)=13.12s p(95)=20.31s
http_req_connecting........: avg=1.85s min=0s med=280.16ms max=24.27s p(90)=4.2s p(95)=9.24s
http_req_duration..........: avg=2.05s min=0s med=496.24ms max=1m0s p(90)=4.7s p(95)=8.39s
http_req_receiving.........: avg=600.94ms min=0s med=82.89µs max=58.8s p(90)=436.95ms …Run Code Online (Sandbox Code Playgroud) c# ×2
k6 ×2
load-testing ×2
mvvm ×2
architecture ×1
async-await ×1
asynchronous ×1
aws-sdk ×1
aws-sdk-js ×1
certificate ×1
clickonce ×1
css ×1
deployment ×1
ecmascript-6 ×1
eslint ×1
html ×1
javascript ×1
node-streams ×1
node.js ×1
prettier ×1
puppeteer ×1
vsto ×1
windows-8 ×1