小编Joh*_*isz的帖子

期望一个浮点数数组靠近Jasmine中的另一个数组

我正在测试返回数组数组的Javascript函数,以查看返回的数组是否包含与包含预期输出的数组相同的元素:

expect(myArray).toEqual(expectedArray);
Run Code Online (Sandbox Code Playgroud)

如果myArray和expectedArray只包含整数,则可以完美地工作,但如果由于浮点精度错误而至少存在一个浮点数,则会失败.toBeCloseTo似乎没有在数组上运行.

目前我正在做一个循环来做成员检查:

for (var i = 0; i < myArray.length; i++) {
    expect(myArray[i]).toBeCloseTo(expectedArray[i]);
}
Run Code Online (Sandbox Code Playgroud)

......但是有更清洁的方法吗?如果出于某种原因测试失败,则输出是臃肿具有可怕的错误消息的量.

javascript arrays floating-point jasmine

10
推荐指数
1
解决办法
961
查看次数

如何使用Reflection API在TypeScript中获取数组项类型?

我在TypeScript中有以下小类,其中一些公共字段被装饰:

class Company {
    @dataMember
    public name: string;

    @dataMember
    public people: Person[];
}

class Person {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

通过使用反射元数据,我可以确定公司属性名称人员的类型:它们分别是构造函数StringArray,它们是预期的和逻辑的.

我的属性装饰函数:

function decorate(target: Object, propertyKey: string | symbol): void {
    var reflectType = Reflect.getMetadata("design:type", target, propertyKey);
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是我如何确定数组元素的类型(构造函数)?它甚至可能吗?在上面的例子中,它应该是(引用)Person.


注意:我在实例化之前需要类型引用,因此,使用数组项动态确定类型是不可能的:没有数组项,甚至没有Array实例.

arrays reflection decorator typescript

9
推荐指数
1
解决办法
2625
查看次数

Typescript动态创建带循环的数组

我正在创建一个模拟类,用于为我的Angular2 TypeScript项目生成示例数据.我仍然是编程的初学者,并且努力使用有关TypeScript的信息.我的问题:

我想创建100个项目并将它们保存在一个数组中.将动态生成100个项目.我使用的静态方式非常简单,但我怎么能动态地做到这一点?我从一些迭代代码开始,但我怎样才能最好地替换console.log代码,并让迭代的输出作为静态数据.我需要一些例子

mock-names.ts(静态)

export var NAMES: Name[] = [
    {"id": 01, "name": "Tony"},
    {"id": 02, "name": "Jake"}
]
Run Code Online (Sandbox Code Playgroud)

mock-names-动态.(动态)

export var NAMES = [];

for (let i = 1; i < 100; i++) {
    console.log(i);
}
Run Code Online (Sandbox Code Playgroud)

name.ts(名称类文件)

export class Name {
    id: number;
    name: string;
}
Run Code Online (Sandbox Code Playgroud)

typescript angular

9
推荐指数
2
解决办法
4万
查看次数

ASP.NET - SmtpClient - 无法连接到远程服务器

我正在开发一个项目,其中一个要求是重写ASP.NET应用程序.旧的ASP.NET应用程序基于.NET Framework 1.1.新的ASP.NET应用程序基于.NET Framework 3.5.

旧Web应用程序中的一个功能是发送电子邮件的能力.旧代码使用System.Web.Mail.SmtpMail该类,而新的Web应用程序使用System.Net.Mail.SmtpClient该类.

在我们的开发服务器上进行测试时,一切正常.但是,我们有两个beta客户端测试我们的软件,他们都遇到了在新的Web应用程序中发送电子邮件的问题.

具体例外情况如下:

无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它

旧的和新的ASP.NET应用程序都在同一台服务器上(Windows Server 2003).它们都使用相同的Exchange邮件服务器.为什么旧的ASP.NET应用程序可以成功发送电子邮件,但新的应用程序不能?

我查看了旧代码,它没有使用任何形式的身份验证,只是指定了发件人的电子邮件地址,收件人的电子邮件地址,主题,正文和服务器,并发送了邮件.我在新代码中做了同样的事情,唯一的区别是我使用了SmtpClient类.

下面是新ASP.NET应用程序的代码片段:

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(messageTo);
mail.From = new MailAddress(messageFrom);
mail.Subject = messageSubject;
mail.Body = messageBody;

SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mail);
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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

更换文档正文时是否收集了内联javascript垃圾?

考虑我有以HTML编写的以下网页(仅限正文部分):

<body>
    <p>
        ...
    </p>

    <script>
        function fn() {
            // do stuff
        }
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

现在,如果我用一个div 替换JavaScript中的innerHTMLof document.body,那么body部分变为:

<body>
    <div>
        ...
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

... 如果在代码的其余部分(任何上下文)中没有任何对它的引用存在,那么该fn对象是否有资格进行垃圾收集?

html javascript garbage-collection

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

是否优化了本机映射,过滤器等方法,以便在可能的情况下在单个中间阵列上运行?

考虑下面的片段,它将一个对象数组转换为数字数组,过滤掉负值,然后加倍2:

var objects = (new Array(400)).fill({
    value: Math.random() * 10 - 5
});

var positiveObjectValuesDoubled = objects.map(
    item => item.value
).filter(
    value => value > 0
).map(
    value => value * 2
);
Run Code Online (Sandbox Code Playgroud)

当像这样链接在一起时,总共创建了多少个实际的Array对象?1还是3?(不包括初始objects数组).

特别是,我在谈论由中创建的中间Array对象filter,然后map是链中的第二个调用:考虑到这些数组对象本身没有显式引用,Javascript运行时是否足够智能以在可能的情况下优化,在这种情况下,使用相同的内存区域?

如果无法用明确的是或否回答这个问题,我怎样才能在各种浏览器中确定这一点?(据我所知,数组构造函数不能再被覆盖,所以这不是一个选项)

javascript arrays

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

用户选择退出gtag.js

我们正在寻求为我们的网站访问者实施禁用跟踪的选项.

我已阅读此页面上的文档,但我仍然不清楚如何执行此操作:https://developers.google.com/analytics/devguides/collection/gtagjs/user-opt-out

仅触发"window ['ga-disable-GA_TRACKING_ID'] = true就足够了;" 单击按钮时?Google Analytics(分析)会记住此用户的设置,还是基于每次访问?如果我有第二个按钮将其设置为"false",用​​户是否可以重新启用跟踪?

谢谢!

解决了:

将以下代码粘贴到Google Analytics代码之前的标题中.

<script>
// Set to the same value as the web property used on the site
var gaProperty = 'UA-XXXX-Y';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
  window[disableStr] = true;
}

// Opt-out function
function gaOptout() {
  document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
  window[disableStr] = true; …
Run Code Online (Sandbox Code Playgroud)

google-analytics gtag.js

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

是否可以从内存中的 html 字符串加载电子 webContents?

假设我有两个进程:

进程 1 正在向进程 2 发送一个有效的 html 字符串:

ipcRenderer.send('open-window-from-string', 
'<!DOCTYPE html>' + '<html>' + htmlElement.innerHTML + '</html>');
Run Code Online (Sandbox Code Playgroud)

进程 2(电子主进程)试图从该字符串打开一个新窗口:

ipc.on('open-window-from-string', (event, htmlString) => {
  const windowFromString= BrowserWindow.fromWebContents(htmlString);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将 html 保存为实际的 html 文件。这样,在使用时一切正常:

loadURL(`file://${__dirname}/windowFromString.html`);
Run Code Online (Sandbox Code Playgroud)

但是,这会导致不必要的读/写操作。

这就是为什么我试图从我的记忆中的 htmlString 加载一个新窗口。那么问题又来了: 是否可以从内存中的 html 字符串加载电子 webContents?

在此先感谢您的帮助。

问候, Megajin

javascript node.js electron

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

将一个音频信号除以另一个音频信号

精简版

我需要音频信号除以另一个(幅度方向).如何在不使用ScriptProcessorNode的情况下在Web Audio API中完成此操作?(使用ScriptProcessorNode,任务很简单,但由于固有的性能问题,它完全无法用于生产)

长版

考虑两个音频源,例如两个振荡器节点,oscA以及oscB:

var oscA = audioCtx.createOscillator();
var oscB = audioCtx.createOscillator();
Run Code Online (Sandbox Code Playgroud)

现在,考虑的是,这些振荡器的LFO,都与低(即<20Hz的)的频率,并且它们的信号被用于控制一个单一的目的地AudioParam,例如,增益一个的GainNode.通过各种路由设置,我们可以定义这两个信号之间的数学运算.

加成

如果oscAoscB直接连接到目标AudioParam,它们的输出将在一起:

var dest = audioCtx.createGain();

oscA.connect(dest.gain);
oscB.connect(dest.gain);
Run Code Online (Sandbox Code Playgroud)

减法

如果输出oscB被首先路由通过另一个 GainNode用的增益-1,然后将其连接到所述目的地AudioParam,然后输出oscB被有效地减去从的oscA,因为我们正在有效做一个oscA + -oscB运算.使用这个技巧我们可以从另一个信号中减去一个信号:

var dest = audioCtx.createGain();
var inverter = audioCtx.createGain();

oscA.connect(dest.gain);

oscB.connect(inverter);
inverter.gain …
Run Code Online (Sandbox Code Playgroud)

javascript web-audio-api

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

为“vorbis”和“opus”初始化一个 AudioDecoder,需要描述 - 它到底是什么?

我正在使用 WebCodecs AudioDecoder来解码 OGG 文件(vorbis 和 opus)。AudioDecoder配置中的编解码器字符串设置分别为vorbisopus

我已将容器解析为页面,并且AudioDecoder几乎已准备好工作。

但是,我无法弄清楚description它所期望的字段。我已经阅读了Vorbis WebCodecs Registration,但我仍然迷失方向。那是:

let decoder = new AudioDecoder({ ... });

decoder.configure({
  description: "", // <----- What do I put here?
  codec: "vorbis",
  sampleRate: 44100,
  numberOfChannels: 2,
});
Run Code Online (Sandbox Code Playgroud)

编辑:我知道它需要有关 OGG 文件结构的关键信息。我不明白的是那里到底有什么。绳子看起来怎么样?它是一个以点分隔的参数字符串吗?

javascript oggvorbis webcodecs

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