小编Ben*_*lts的帖子

使用caja来清理Javascript?

我想允许我的应用程序的用户在Javascript中编写扩展其功能的插件,而不允许访问除我提供的插件API对象之外的任何内容.例如,插件可能如下所示:

plugin.hookSomeUserAction(function() {
    plugin.doSomethingWickedAwesome();
    document.title = 'hacked!'; //shouldn't work
});
Run Code Online (Sandbox Code Playgroud)

Caja看起来应该能够完成工作,但文档可能是我见过的任何开源项目中最糟糕的(非常成就!).我需要一些帮助来设置系统.

我已经在命令行上使用了cajoler,并且我已经将一个这样的插件哄骗到某种有希望被清理的Javascript中.困惑的Javascript看起来像是期待提供一个"IMPORTS___"对象,它应该包含插件可以访问的所有东西.到目前为止很有前途!

不幸的是,让那个惹恼Javascript的文件实际加载并运行已经变成了一个真正的混乱.不幸,文档中的源代码段完全错误,因为函数loadCaja实际上并没有出现在google-caja的当前主干中的任何位置.我找到了一些代码,至少做了些什么:

<div id="plugin"></div>
<script>
    caja.configure({
        cajaServer: "/js/caja"
    }, function(frameGroup) {
        frameGroup.makeES5Frame(document.getElementById('plugin'),
            { /* No network access */ },
            function(frame) {
                frame.url('/js/plugins/test.js')
                    .run({});
            }
        );
    });
</script>
Run Code Online (Sandbox Code Playgroud)

不幸的是,它的作用是尝试让cajoler重新调整我已经哄骗过的javascript.我绝对不想让服务器在每个请求上重新调用每个插件; 我只是在上传时将其哄骗并将其存储起来以备使用.

我也找不到任何关于如何或在何处指定IMPORTS___内容的文档(鉴于这是整个安全模型,它似乎是文档中的一个奇怪的疏忽).是传递给.run()的对象吗?

javascript google-caja

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

specs2:如何使用"failtrace"选项

在我的specs2测试中,我经常使用辅助函数来同时测试一组条件.不幸的是,这使得失败测试的行号输出无效,因为所有失败都在同一行.

谷歌出现了一个"故障转移"选项,它将输出堆栈失败的痕迹.但是,我找不到如何实际使用它的示例.它在build.sbt吗?它是否在SBT命令行中使用?它是否在Specification类的构造函数中以某种方式设置?

scala stack-trace specs2

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

提高Chrome JS堆限制?

我有一个使用太多内存的JavaScript应用程序.它不会崩溃选项卡,但可能需要几分钟才能加载,其中大部分都用在GC中.我正在使用堆分析器来查看分配最多内存的函数,这非常有效.

有没有办法让Chrome允许每个进程有更大的JS堆,这样我就可以在不等待GC分钟的情况下减少内存压力的测试运行?也许是我找不到的命令行参数?

javascript google-chrome

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

在AndEngine中对多个实体修饰符进行排队

我试图沿两条路径一个接一个地有一个精灵(下面的"指针").这是我的代码:

    scene.attachChild(pointer);

    pointer.clearEntityModifiers();
    pointer.registerEntityModifier(new MoveModifier(
        1.0f, 540, 960, 1000, 1000,
        new IEntityModifierListener() {
            public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {}
            public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
                clickSound.play();

                pointer.clearEntityModifiers();
                pointer.registerEntityModifier(new MoveModifier(
                    1.0f, pointer.getX(), pointer.getY(), 500, 2500,
                    new IEntityModifierListener() {
                        public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {}
                        public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
                            pointer.clearEntityModifiers();
                            pointer.detachSelf();
                        }
                    },
                    EaseCubicInOut.getInstance()
                ));
            }
        },
        EaseCubicInOut.getInstance()
    ));
Run Code Online (Sandbox Code Playgroud)

指针按预期沿第一个路径移动,然后clickSound播放,然后没有任何反应.第二个MoveModifier没有任何效果.我在这做错了什么?

android andengine

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

在递归代码中使用Javascript function.caller进行堆栈跟踪?

在javascript中,我可以使用foo.caller在堆栈跟踪中获取对foo之上的函数的引用.但是,当函数在同一堆栈跟踪中多次出现时,这不起作用,foo.caller只返回foo.

是否有一种稳定的,跨平台的方法来获取Javascript中的完整堆栈跟踪?我希望得到一个可打印的堆栈跟踪; 相反,我正在进行堆栈检查以查看某个方法是否位于堆栈中的任何位置.这是我目前的代码:

function inFunction(foo) {
    var caller = inFunction.caller;
    var maxDepth = 20;
    while(caller && --maxDepth > 0) {
        if(caller == foo)
            return true;
        caller = caller.caller;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何处理堆栈跟踪中多次存在的函数?

javascript stack-trace

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

构造一个从字节数组中读取的java.io.File

我正在使用一个需要java.io.File作为输入的API,但我想发送一个字节数组的API.有没有办法创建一个File对象,它将从我的字节数组而不是从磁盘读取?

java

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

Scala:返回参数化类型的默认值

考虑Scala中的以下函数:

def wrapMyFunction[A](foo: =>A):A = {
    try {
        foo
    }
    catch { case e => 
        //Return whatever the "empty" or "default" instance of type A would be,
        //such as 0, "", None, List(), etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

给定类型参数A,如何获得类型A的"空"或"默认"值?它甚至可能吗?

scala

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

PHP cURL:读取特定的响应头

我在PHP中使用cURL将POST到正在创建资源的端点。它返回201响应,并带有Location标头,该标头给出了所创建资源的URL。我还在响应的正文中获得了一些信息。

获取响应的纯文本主体以及获取位置标头的值的最佳方法是什么?curl_getinfo不返回该标头,当我这样做时:

    curl_setopt($ch, CURLOPT_HEADERFUNCTION, function($ch, $header) {
        var_dump($header);
    });
Run Code Online (Sandbox Code Playgroud)

我只看到一个标头转储了出来,即“ HTTP / 1.1 201 Created”响应代码。

php curl http-headers

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

ES5中的Angular 2路由?

角2 ES5小抄说,要做到这一点:

var MyComponent = ng.router.RouteConfig([
  { path: '/:myParam', component: MyComponent, as: 'MyCmp' },
  { path: '/staticPath', component: ..., as: ...},
  { path: '/*wildCardParam', component: ..., as: ...}
]).Class({
  constructor: function() {}
});
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何指定@Component该类的东西,以便我可以实际实例化它.例如,

ng.router.RouteConfig([...]).Component({})
Run Code Online (Sandbox Code Playgroud)

抛出异常,因为结果.RouteConfig没有.Component方法.同样,结果.Component没有.RouteConfig方法.你如何设置这个?

angular2-routing angular

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

Scala/Akka:在actor没有收到给定超时的消息后运行代码

我有一个接收消息的演员 - 也就是说,它通常会快速连续收到几条消息,然后长时间不活动.当actor没有收到250ms的消息时,我想执行代码.

只是为了澄清我的意思,在Javascript中,我可能会写一些像这样的代码:

function gotMessage() {
  if(this.idleTimeout) {
    clearTimeout(this.idleTimeout);
  }

  this.idleTimeout = setTimeout(function() {
    //My code here
  }, 250);
}
Run Code Online (Sandbox Code Playgroud)

我如何在Scala或Akka中实现这种效果,如果它已经存在于该库中的机制?

scala akka

0
推荐指数
1
解决办法
1284
查看次数

Express 的绝对类型化定义不起作用

我正在尝试使用打字稿在节点中运行 Hello World express 应用程序,而绝对类型类型似乎被完全忽略了。

包.json:

{
    "dependencies": {
        "@types/express": "*",
        "@types/node": "*",
        "express": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "lib": [
            "es2015"
        ],
        "target": "es6",
        "noImplicitAny": true,
        "strictNullChecks": true,
        "noImplicitThis": true,
        "noImplicitReturns": true,
        "moduleResolution": "node",
        "outDir": "dist",
        "baseUrl": "."
    },
    "include": [
        "src/**/*"
    ]
}
Run Code Online (Sandbox Code Playgroud)

源代码/应用程序.ts:

const express = require('express'); //express is typed "any" because @types/express is apparently ignored
const app = express();
const port = 3000;
app.get('/', (req, res) => res.send('Hello World!')); //Compile error here …
Run Code Online (Sandbox Code Playgroud)

node.js express typescript definitelytyped

0
推荐指数
1
解决办法
854
查看次数