小编Seb*_*anR的帖子

使用 k6 下载整个网站

我目前正在评估 k6 是否适合我们的负载测试需求。我们有一个相当传统的网站架构,使用 Apache 网络服务器、PHP 和 MySQL 数据库。使用 k6 发送简单的 HTTP 请求看起来很简单,我认为我们将能够用它测试所有主要功能,因为我们不太依赖 JavaScript,而且大多数页面都是静态的。

但是,我不确定如何处理请求中返回的 HTML 中引用的资源(样式表、图像等)。我们还需要加载它们,因为这有时会导致数据库请求,这必须是负载测试的一部分。

k6 中是否有一些开箱即用的功能可以让您像浏览器一样加载所有资源?我知道 k6 不会渲染页面,我也不需要它。我只需要请求 HTML 内的所有资源。

load-testing k6

8
推荐指数
2
解决办法
1万
查看次数

如何使用shadow DOM在动态加载的Web组件样式中加载@font-face

我有一个带有 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。如何动态加载这些规则?

html css

7
推荐指数
1
解决办法
2643
查看次数

在没有签名证书的情况下在Windows 8上部署VSTO加载项

我写了一个Word VSTO加载项,我希望将其提供给一些同事和朋友。我最初想使用ClickOnce进行部署,因为它对我来说很容易设置,也很容易安装。我的加载项的部署在Windows 7上运行良好,但在Windows 8 / 8.1上却遇到了一些麻烦。SmartScreen筛选器抱怨我的加载项并完全阻止安装。在这里,我发现问题在于我尚未使用真实证书对加载项进行签名。唯一的解决方案似乎是让用户“在Trusted Publishers商店中安装测试证书”(强烈建议不要这样做)或从授权机构那里获取证书,这对我来说不是一个选择,因为我只是一个爱好开发者,不要

因此,还有其他方法可以在没有证书的情况下部署外接程序吗?我可以使用不需要证书的其他安装程序吗?还是与安装程序无关,SmartScreen筛选器将始终阻止所有未安装未使用“真实”证书签名的VSTO加载项的尝试吗?

在这方面,我真的对Microsoft感到非常恼火-为什么他们使小型独立开发人员难以将应用程序部署到用户上?

任何帮助将非常感激!

sr258

deployment clickonce vsto certificate windows-8

6
推荐指数
1
解决办法
2496
查看次数

从 AWS S3 SDK v3 中的 getObject 获取可读对象

我正在将使用 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)

node.js aws-sdk node-streams aws-sdk-js

6
推荐指数
1
解决办法
3526
查看次数

在没有等待的情况下调用异步方法会发生什么?

我想知道如果我在没有使用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实现(主要使用数据绑定),我想避免使用事件处理程序.

c# asynchronous mvvm async-await windows-store-apps

5
推荐指数
1
解决办法
1411
查看次数

删除的实体在 Entity Framework Core 的 ChangeTracker 中显示为已修改

我试图理解为什么 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 中设置不同的值,即使它在两种情况下都被真正删除了?

entity-framework entity-framework-core

5
推荐指数
1
解决办法
2360
查看次数

使用Puppeteer将CSS注入网站

如果操作成功或失败时,我正在Puppeteer上运行自动化测试的网站将显示信息弹出窗口。不幸的是,这些弹出窗口有时掩盖了我的脚本必须单击的按钮。如果我可以在站点中注入一些CSS来隐藏这些弹出窗口,那就太好了。有内置的方法可以做到这一点吗?

javascript puppeteer

4
推荐指数
1
解决办法
3286
查看次数

GitHub Actions:Prettier 仅在 windows-latest 上发现错误

我目前正在将 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)

continuous-integration prettier github-actions

4
推荐指数
1
解决办法
3151
查看次数

MVVM架构:一个模型-多个视图模型+数据访问的地方

我对涉及数据访问的 MVVM 应用程序(以前的 WinRT,现在面向 UWP)的体系结构感到非常困惑。我非常不确定如何在 UI 中传播更改以及在何处访问数据层。

这是基本架构:

  1. 模型层:包含只有自动属性的模型(没有引用其他模型的导航属性,只有 Id;所以它们基本上只是数据库的表示)。它们不实现 INotifyPropertyChanged。
  2. 数据访问层:使用 sqlite-net 将模型存储在数据库中的存储库。它公开了基本的 CRUD 操作。它从模型层返回并接受模型。
  3. 视图模型
    • 模型的视图模型:它们环绕模型并公开属性。有时我以两种方式将控件(例如文本框)的内容绑定到属性。然后 setter 访问数据层以保留此更改。
    • Views 的 PageViewModels:它们包含上面的 ViewModels 和命令。许多命令在执行数据访问、执行领域特定逻辑和更新 PageViewModels 属性时变得很长。
  4. 视图(页面):它们绑定到 PageViewModels 并通过 DataTemplate 绑定到模型的 ViewModels。有时有双向数据绑定,有时我使用命令。

我现在对这个架构有几个问题:

问题 1:一个模型可以在多个宫殿的屏幕上显示。例如,一个主从视图,显示一个类型的所有可用实体的列表。用户可以选择其中之一,其内容显示在详细视图中。如果用户现在更改了详细视图中的属性(例如模型的名称),则更改应立即反映在主列表中。这样做的最佳方法是什么?

  1. 模型一个 ViewModel吗?我认为这没有多大意义,因为主列表只需要很少的逻辑,而详细视图要多得多。
  2. 模型实现 INotifyPropertyChanged并将更改传播到 ViewModels?我遇到的问题是,数据层目前不能保证它在一个模型 ID 上为两次读取操作返回的对象是相同的——它们只包含从数据库读取的数据,并且在读取时是新创建的(我认为这就是 sqlite-net 的工作方式)。由于来自 ViewModel 的所有 PropertyChanged 事件订阅,我也不太确定如何避免发生内存泄漏。我应该实现 IDisposable 并让 PageViewModel 调用它的孩子的 Dispose() 方法吗?
  3. 我目前在我的数据访问层上有一个DataChanged 事件。每当发生创建、更新或删除操作时都会调用它。可以同时显示的每个 ViewModel 都会侦听此事件,检查更改的模型是否是其 ViewModel 的模型,然后更新自己的属性。我再次遇到内存泄漏的问题,这变得很慢,因为太多的 ViewModel 必须检查更改是否真的适合他们。
  4. 其它的办法? …

c# architecture entity-framework mvvm

3
推荐指数
1
解决办法
1130
查看次数

为 VS Code 智能感知导入时避免 eslint 错误 no-unused-vars

在使用 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 错误而无需完全关闭它?

ecmascript-6 eslint visual-studio-code

3
推荐指数
2
解决办法
1555
查看次数

达到更多虚拟用户时 k6 显示的错误

我正在评估 k6 以满足我的负载测试需求。我已经设置了一个基本的负载测试,我目前正在尝试解释我得到的错误消息和结果值。也许有人可以帮助我解释我所看到的:

如果我将 VUS 调高到 300 左右,我就会开始在控制台中看到错误消息和 500 条错误消息。

这些主要包括:

  • 拨 tcp XXX:443: i/o 超时
  • 读取 tcp YYY(local ip):35252->XXX(host ip):443: 读取:连接由对等方重置
  • 级别=警告消息=“请求失败”错误=“意外的EOF”
  • 获取https://REQUEST_URL/:超出上下文截止日期”

我也有几个检查的问题:

  • 检查 res.status === 0 和 res.body === null 的错误
  • 检查 res.status === 0 中的错误,但正文包含正确的内容

怎么可能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)

load-testing k6

3
推荐指数
1
解决办法
2834
查看次数