小编Twi*_*ron的帖子

如何创建所有脚本加载器都支持的angular2库

如何创建一个包含Angular 2模块的javascript文件,该模块可以被其他应用程序使用,但是在运行时直接从中央服务器加载并且不捆绑到特定应用程序的代码中?

可以将其视为Angular 2库的CDN.要求是此库的使用者将在其页面上包含单个脚本.

这是以这种方式实现它的要求,所以我对任何建议将库捆绑到单个应用程序的输出文件中的答案不感兴趣.必须在运行时直接从库的服务器加载库脚本.

  • 集中式Web应用程序称为CustomAuth
  • CustomAuth有一个名为的Angular 2模块 CustomAuthModule
  • CustomAuthModule公开了可由外部Angular 2应用程序使用的多个服务和组件.

这是所需的工作流程(从高级别).

  • 开发人员希望在名为BookLibrary的Angular2应用程序中使用CustomAuth.
  • 在开发人员的索引页面上,他们添加了指向的脚本包含http://server-url/CustomAuth/script.不应要求消费者知道有关systemjs或webpack等模块加载器的任何信息.
  • 在他们的angular2代码中,他们从CustomAuth模块(服务,组件等)导入东西.
  • 当他们使用angular-cli编译应用程序时,它将不包含CustomAuth代码,而是假设它将在运行时动态加载.

我已经做了很多关于这方面的研究,我没有任何运气可以搞清楚.任何帮助将不胜感激.

systemjs webpack umd angular

11
推荐指数
1
解决办法
497
查看次数

在启动时打开Karma debug.html页面

简短版本:

如何启动Karma并让它在与Karma启动页面相同的浏览器中自动打开debug.html文件?

长版:

我不是很喜欢使用控制台记者的Karma,所以我一直在使用karma-jasmine-html-reporter-livereload输出到Karma的localhost:9876/debug.html文件.问题是,每次我开始调试会话时,我都必须单击业力打开的网页中的"调试"按钮.

我想找到一种方法让业力通过gulp任务自动打开debug.html页面.我在多个浏览器中运行测试,因此我希望在每个Karma打开的浏览器中打开debug.html页面作为第二个选项卡.当karma关闭时,我还希望能够关闭该debug.html选项卡.我尝试了很多东西,没有成功.

这是我的gulp任务.'watch'任务监视我的源TypeScript文件,并将它们编译成javascript ...没什么特别的.

gulp.task('watch-test', ['watch'], function (done) {
    //start a livereload server so that the karma html 
    //reporter knows to reload whenever the scripts change
    livereload.listen(35729);
    gulp.watch('dist/src/**/*.js').on('change', livereload.changed);

    new KarmaServer({
        configFile: __dirname + '/karma.conf.js',
        singleRun: false
    }, done).start();
});
Run Code Online (Sandbox Code Playgroud)

javascript debugging node.js karma-runner gulp

10
推荐指数
2
解决办法
2073
查看次数

Google表格过滤器使用IN子句

问题:在Google表格中,使用内置函数,如何编写过滤器以根据每行中不存在于另一个范围的有效值列表中的列来排除记录.

细节

我正在使用Google表格编写一份财务电子表格,其中我的所有费用和收入都输入到一张名为"交易"的表格中.我有一个名为常数的单独表格,其中列出了收入类别列表和费用类别列表.

以下是一些用于问题的示例数据:

常量

在此输入图像描述

交易

在此输入图像描述

我有一张名为ByMonth的工作表,我想在一个部分显示所有费用交易,并在一个单独的部分显示所有收入交易.目标:

在此输入图像描述

我需要在谷歌工作表功能基本上做这个SQL查询:

select date, category, amount from transactions 
where category not in (
    select * from expense_categories
)
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何让Google表格让我用他们的功能做一个IN概念.

这是一个单元函数表达式,我用它来根据日期字段过滤行:

=filter(Transactions!A2:C, 
        DATEVALUE(Transactions!A2:A) >= date(2015,4,1), 
        DATEVALUE(Transactions!A2:A) <= date(2015,4,30)
)
Run Code Online (Sandbox Code Playgroud)

我将向filter()函数添加第三个条件,并且第三个条件将以某种方式将每行数据的Category列与有效费用或收入类别列表进行比较并返回布尔值.

以下是我尝试过的其他一些事情,但无济于事,包括MATCH,ARRAYFORMULA等的一些变化:

=filter(Transactions!A2:C, row(Transactions!B2:B) = UNIQUE(Constants!A2:A))
=filter(Transactions!A2:C, Transactions!B2:B = UNIQUE(Constants!A2:A))
=filter(Transactions!A2:C, Transactions!B2:B = Constants!A2:A)
Run Code Online (Sandbox Code Playgroud)

有什么建议?

spreadsheet google-sheets google-apps-script

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

IHttpHandler与HttpTaskAsyncHandler的性能

我们有一个webapp,它通过.NET IHttpHandler(称为proxy.ashx)路由许多请求,用于CORS和安全目的.某些资源加载速度很快,而其他资源则根据这些资源所需的大量计算加载速度慢.这是预料之中的.

在负载很重的情况下,proxy.ashx会慢慢爬行,所有资源都会永远加载.在这些峰值加载时间内,如果绕过代理并直接加载资源,则会立即加载,这意味着代理是瓶颈.
(即http://server/proxy.ashx?url = http:// some_resource加载缓慢,但http:// some_resource自行加载速度快).

我有一个假设,即响应性降低是因为IHttpHandler是同步编码的,当有太多长时间运行的请求处于活动状态时,IIS请求线程都忙.我创建了一个快速A/B测试应用程序来验证我的假设,我的测试结果表明情况并非如此.

这篇文章是我基于请求线程池的理解.

在Web服务器上,.NET Framework维护一个用于为ASP.NET请求提供服务的线程池.当请求到达时,将调度池中的线程来处理该请求.如果同步处理请求,则在处理请求时阻止处理请求的线程,并且该线程无法为另一个请求提供服务....
但是,在异步调用期间,服务器在等待第一个请求完成时不会阻止响应其他请求.因此,当有许多请求调用长时间运行的操作时,异步请求会阻止请求排队.

在下面的示例中,理论上,同步处理程序应该在某个阈值之后占用请求线程,从而阻止更多新请求启动.异步处理程序应该允许更多的请求排队,因为每个请求几乎立即将其请求线程返回到线程池,等待它Task.Delay,允许该请求线程在前一个请求仍在等待时处理新请求.

同步HttpHandler

<%@ WebHandler Language="C#" Class="SyncHandler" %>
using System.Web;
using System.Threading;
public class SyncHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        //BLOCKING artifical pause to simulate network activity
        Thread.Sleep(300);
        var Response = context.Response;
        Response.Write("sync response");
    }
    public bool IsReusable { get { return true; } }
}
Run Code Online (Sandbox Code Playgroud)

异步处理程序

<%@ WebHandler Language="C#" Class="AsyncHandler" %>
using System.Web;
using System.Threading.Tasks;

public class …
Run Code Online (Sandbox Code Playgroud)

.net c# benchmarking performance-testing apachebench

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

扩展 Partial 接口的 Typescript 类

我想创建一个具有接口所有属性的类,但实际上并没有声明这些属性本身。接口属性是在构建过程中附加的,并且将在运行时存在。

我发现这篇文章指出了使用的方向Partial<T>……但这似乎不起作用。以下代码不会产生编译错误。

interface Animal {
    name: string;
}

interface HasConstructor {
    constructor: any;
}
//Do this to supress this error: "Type 'Dog' has no properties in common with type 'Partial<Animal>"
type OptionalAnimal = Partial<Animal> & HasConstructor;

class Dog implements OptionalAnimal {
    public constructor() {

    }
    public breed: string;
}
Run Code Online (Sandbox Code Playgroud)

但是,该name属性在 Dog 实例上不可用。

var spot = new Dog();
spot.name = "Spot"; //ERROR: Property 'name' does not exist on type 'Dog'
Run Code Online (Sandbox Code Playgroud)

我可以通过创建另一种类型并像这样引用它来解决这个问题:

type AnimalDog …
Run Code Online (Sandbox Code Playgroud)

typescript

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

VSCode 扩展贡献单个文件图标

我正在为 Roku 的 BrightScript 语言开发这个Visual Studio Code 扩展。VSCode 有一个很好的功能,它在已知文件类型旁边显示一个文件图标,如下所示:

在此处输入图片说明

但是,我的 .brs 文件看起来像这样(默认文件图标)

在此处输入图片说明

在这里这里看到 VSCode 支持图标主题。但是,我不想添加整个主题,我只想为.brs文件添加图像。

有没有办法贡献单个文件的图标?

visual-studio-code vscode-extensions

5
推荐指数
0
解决办法
291
查看次数

为什么 originalPositionFor() 对于 Mozilla 源地图库中的有效位置返回 null

我正在尝试使用 Mozilla 的源地图库将转换后的文件中的位置映射回其原始位置。我发现了一种情况,源地图找不到有效位置,但我不明白为什么。

这是我的源文件

sub main()
end sub
Run Code Online (Sandbox Code Playgroud)

出于这个问题的目的,我正在创建一个源映射,该映射可以完美地模拟源文件而无需转换。因此,理论上任何位置请求都应该返回完全相同的位置。但是,这就是我现在在以下代码片段中看到的内容。在这种情况下,{line: 2, column: 1}返回{line: null, column: null},但{line: 2, column: 0}正确返回{line: 2, column: 0}

我究竟做错了什么?

sourceMap.SourceMapConsumer.initialize({
  "lib/mappings.wasm": "https://unpkg.com/source-map@0.7.3/lib/mappings.wasm"
});

//create a source map
let codeAndMap = new sourceMap.SourceNode(null, null, 'main.brs', [
  new sourceMap.SourceNode(1, 0, 'main.brs', 'sub main()'), '\n',
  new sourceMap.SourceNode(2, 0, 'main.brs', 'end sub')
]).toStringWithSourceMap();

sourceMap.SourceMapConsumer.with(codeAndMap.map.toJSON(), null, (consumer) => {
  console.log('column 0', JSON.stringify(

    //returns {line: 2, column: 0}
    consumer.originalPositionFor({
      line: 2,
      column: 0, …
Run Code Online (Sandbox Code Playgroud)

javascript source-maps

5
推荐指数
0
解决办法
189
查看次数

在ES5(而不是ES6)中创建自定义元素v1

现在,如果您遵循自定义元素specv1的确切规范,则不可能在不支持类的浏览器中使用自定义元素。

有没有一种方法可以创建v1自定义元素而不使用类语法,以使它们在Chrome,FireFox和IE11中完全起作用。另外,由于IE11不对自定义元素提供本机支持,所以我假设我们可能需要使用一些pollyfills,那么,为了在IE11中实现此功能,我们需要哪些polyfills或库?

我已经弄乱了Polymer 2,Polymer 3和Stencil,但是它们对于我们要创建的某些东西来说有点繁重。

这个问题似乎是在正确的轨道上,但是让它在IE11中工作时遇到了一些麻烦,因此,如何才能在IE11中使用Reflect.construct来实现自定义元素?

javascript web-component ecmascript-5 native-web-component

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

网络音频 API 内存泄漏

应该如何清理 web-audio-api AudioNode 以释放其内存?我正在调用oscillatorNode.stop()oscillatorNode.disconnect()基于这篇文章,但它似乎没有帮助,最终导致内存泄漏。这篇文章不适用,因为我一停止振荡器节点就删除引用。

我创建了一个显示问题的示例网站。以下是重现的步骤。

  1. 创建一个本地 html 文件,并在打开开发工具的台式机或笔记本电脑上的 chrome 中运行以下代码片段。
  2. 创建堆快照。
  3. 单击“开始”按钮。
  4. 定期创建另一个堆快照。
  5. 请注意,即使在运行垃圾收集器之后,内存也会不断增加。为什么

在此处输入图片说明

<html>
<body>
    <button onclick="go()">Go</button>
    <button onclick="cancel=true">Cancel</button>
    <div id="status"></div>

    <script>
        var cancel = false;
        var statusEl = document.getElementById('status');

        async function go() {
            cancel = false;
            for (var i = 0; i < 100000; i++) {
                if (cancel) {
                    return;
                }
                statusEl.innerHTML = i;
                play();
                await new Promise((resolve) => { setTimeout(resolve, 1); });
                stop();
            }
        }

        var ctx …
Run Code Online (Sandbox Code Playgroud)

javascript memory-leaks web-audio-api

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