小编CoD*_*anX的帖子

JavaScript ES6:测试箭头功能,内置函数,常规函数?

除了常规功能内置功能之外,还有一种优雅的方式可以告诉Harmony的纤细箭头功能吗?

和谐维基指出:

箭头函数就像内置函数一样缺乏.prototype和任何[[Construct]]内部方法.所以new(()=> {})抛出一个TypeError,否则箭头就像函数一样

这意味着,您可以测试箭头功能,如:

!(()=>{}).hasOwnProperty("prototype") // true
!(function(){}).hasOwnProperty("prototype") // false
Run Code Online (Sandbox Code Playgroud)

但是测试也将返回true任何内置函数,例如setTimeoutMath.min.

如果您获得源代码并检查它是否可以在Firefox中运行"native code",但它看起来不太可靠也不可移植(其他浏览器实现,NodeJS/iojs):

setTimeout.toSource().indexOf("[native code]") > -1
Run Code Online (Sandbox Code Playgroud)

小的GitHub项目node-is-arrow-function依赖于函数源代码的RegExp检查,这不是那么整洁.

编辑:我尝试了一下JavaScript解析器橡子,看起来工作得很好 - 即使它太过分了.

acorn = require("./acorn");

function fn_sample(a,b){
    c = (d,e) => d-e;
    f = c(--a, b) * (b, a);
    return f;
}

function test(fn){
    fn = fn || fn_sample;
    try {
        acorn.parse("(" + fn.toString() + ")", {
            ecmaVersion: 6,
            onToken: function(token){ …
Run Code Online (Sandbox Code Playgroud)

javascript function ecmascript-harmony ecmascript-6 arrow-functions

18
推荐指数
3
解决办法
4390
查看次数

如何等待并返回http.request()的结果,以便多个请求串行运行?

假设有一个函数doRequest(options),它应该执行HTTP请求并使用http.request()它.

如果doRequest()在循环中调用,我希望下一个请求是在上一个完成之后(串行执行,一个接一个).为了不搞乱回调和Promises,我想使用async/await模式(用Babel.js进行转换以与Node 6+一起运行).

但是,我不清楚如何等待响应对象进行进一步处理以及如何返回它作为以下结果doRequest():

var doRequest = async function (options) {

    var req = await http.request(options);

    // do we need "await" here somehow?
    req.on('response', res => {
        console.log('response received');
        return res.statusCode;
    });
    req.end(); // make the request, returns just a boolean

    // return some result here?!
};
Run Code Online (Sandbox Code Playgroud)

如果我使用mocha使用各种HTTP请求选项来运行我当前的代码,那么所有请求都是同时发生的.他们都失败了,可能是因为doRequest()实际上没有返回任何东西:

describe('Requests', function() {
    var t = [ /* request options */ ];
    t.forEach(function(options) {
        it('should return 200: ' + options.path, …
Run Code Online (Sandbox Code Playgroud)

httprequest mocha.js node.js async-await babeljs

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

从TeamViewer录制(TVS文件)中提取音频/视频流?

TeamViewer允许使用文件扩展名以专有格式记录会话.tvs.可以使用本地计算机上安装的任何编解码器(使用TeamViewer)将其转换为AVI,但不能使用MP4或其他容器格式.

对AVI的编码非常慢(显然不是多线程,使用x264 vfw; XviD会花费更长时间),结果文件在VLC中无法正常播放,并且在Windows上的Avidemux中根本无法编辑.

因此,我想知道是否可以在TVS文件中提取音频和视频流,以便使用ffmpeg进行进一步处理(否则,我需要编码两次,这意味着每60分钟录像4小时).我希望它与其他格式相似,只是使用自定义编解码器 - 我希望它不是内置在TeamViewer中,但也可用于其他应用程序.

encoding extract decoding desktop-recording teamviewer

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

XSLT如何检查XML节点是否存在?

我有XML文件:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<Data>
  <Records>
    <Record>
     <AddInfo>
      <Info>
      </Info>
     </AddInfo>
    </Record>
  </Records>
</Data>
Run Code Online (Sandbox Code Playgroud)

和XSL文件:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="Dane">
    <html>
      <link rel="stylesheet" type="text/css" href="report.css"></link>
      <body>
        <h2>Table1</h2>
        <table border="1" cellspacing="0">
          <tr>
            <th>XXX</th>
          </tr>
          <xsl:for-each select="Records/Record">
            <tr>
              <td>
                <xsl:value-of select="XXX"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
        <h2>SecondTable</h2>
        <table border="1" cellspacing="0">
          <tr>
            <th>YYY</th>
            <th>ZZZ</th>
          </tr>
          <xsl:for-each select="Records/Record/AddInfo/Info">
            <tr>
              <td>
                <xsl:value-of select="YYY"/>
              </td>
              <td>
                <xsl:value-of select="ZZZ"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

我想这样做:if节点存在,显示带有"Info"节点的表,如果没有,则显示SOME TEXT.

我一直在努力

<xsl:if test="following-sibling::AddInfo"> …
Run Code Online (Sandbox Code Playgroud)

html xml xslt

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

arangodb AQL如何修改嵌套数组中对象的值?

我有这样组织的文件:

{
  "email": "tyler_li@126.com",
  "name": "tyler",
  "address": {
    "street": "Beijing Road",
    "zip": 510000
  },
  "likes": [
    "running",
    {
      "movie": "Star Wars"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我在修改"电影"的价值时遇到了问题.你能帮助我,如何用AQL修改价值?

谢谢!

arangodb aql

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

如何退出循环

我想缩短脚本的处理时间,为了做到这一点,我需要知道在满足某些条件时如何退出循环。

例如,我正在运行我所有的面孔,如果有什么东西True,那么它应该停止循环,而不仅仅是第一步:

for i in range(n_faces):
    if *something* is True:
        continue
Run Code Online (Sandbox Code Playgroud)

我知道通过这样做,我可以跳过 1 步,但是如何跳过整个循环*something* is True

python loops break

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

base64 Type Err,TypeError:expected bytes,not str

当我尝试这段代码时:

#!/usr/bin/python3.2

import time, sys, os
import base64
#####################
tmp = "/home/gh.txt"
ex = "/home/ex.txt"
if (len(sys.argv) < 2):
    print("enter name of the new dict and key")
else:
    global ns
    ns = sys.argv[1]
    global ps
    ps = sys.argv[2]

dss = "{<%s>:%s}" % (ns, ps)
os.system("touch dss0")
fi0 = open(tmp, "a")

fi0.write(dss)
d64i = base64.b64encode(tmp)
fi = open(ex, "a")
fi.write(d64i)
os.system("rm tmp")
Run Code Online (Sandbox Code Playgroud)

我知道这是错误:

File "./n64.py", line 19, in <module>
     d64i=base64.b64encode("/home/gh.txt")
File "/usr/lib/python3.2/base64.py", line 56, in b64encode
     raise TypeError("expected bytes, not %s" …
Run Code Online (Sandbox Code Playgroud)

python file-io base64 typeerror python-3.x

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

将JS对象中的所有属性返回到"空"状态

我想知道在jQuery这样的任何框架中是否有一个实用函数来截断一个JS对象(有多个可能的结果,不确定什么是最有用的):

{ // original object
    foo: "bar",
    arr: [1, 2, 3],
    sub: {a: 4, b: 5, subsub: {c: 6}} }

{ // truncated, variant 1
    foo: "",
    arr: [],
    sub: {} }

{ // truncated, variant 2
    foo: "",
    arr: [],
    sub: {subsub: {}} }

{ // truncated, variant 3
    foo: "",
    arr: [],
    sub: {a: 0, b: 0, subsub: {c: 0}} }
Run Code Online (Sandbox Code Playgroud)

如果不是,是否有一个比递归迭代所有属性更聪明的解决方案,检查类型并在必要时删除/重置?

javascript truncate object clear

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

jq - 返回所有具有匹配条件的子属性的顶级属性键

我的 JSON 看起来像:

{
  "foo": {
    "restricted": true
  },
  "bar": {
    "restricted": false
  },
  "baz": { }
}
Run Code Online (Sandbox Code Playgroud)

作为单行:

{"foo":{"restricted":true},"bar":{"restricted":false},"baz":{}}
Run Code Online (Sandbox Code Playgroud)

我想返回所有具有restricted == false或没有子属性的顶级属性键restricted。使用上面的示例 JSON,预期的输出是:

"bar"
"baz"
Run Code Online (Sandbox Code Playgroud)

jq

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

为什么Object.observe()不提供更改回调的数据路径?

Object.observe()回调的changes数组包含具有以下四个属性的对象:

  • 名称
  • 宾语
  • 类型
  • 属性oldValue

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe#Parameters

为什么没有path本地提供的?例:

var ob = {
    foo: [
        {moo: "bar", val: 5},
        {val: 8}
    ]
}

ob.foo[0].val = 1;
// callback should provide path "foo.0.val" or "foo[0].val"
Run Code Online (Sandbox Code Playgroud)

有一个Node.js模块扩展Object.observe()到也包括路径:observed.js,
但我担心本机的性能提升observe()会丢失(如果没有,请你解释它是如何实现的?).这也许可以browserify模块,但无法想象它会在同步环境表现良好,我仍然不知道为什么没有人似乎已经想到了一个额外的path属性.

javascript observers ecmascript-harmony object.observe

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

arangodb:属性值历史

对于我们数据库中的某些节点,我们需要存储每个更改的字段值的历史记录.

我们正在考虑两种可能的结构:

  1. 使用键值索引,使用表单的条目

    id.attribute_name.counter = {
        "field": "name",
        "old_value": "jon",
        "new_value": "john",
        "datetime_modified": "some-date",
        "modified_by": "some-user"
    }
    
    Run Code Online (Sandbox Code Playgroud)

    where id是记录的唯一ID,counter只是一个递增的整数.

  2. 使用图形结构,并使"delta"节点连接到主节点,具有"修改"边缘,并且存储在此节点中的相同JSON对象(+属性名称).

历史信息有时用于决定是否使用新信息更新记录.

想知道两种方法的优点/缺点.

data-modeling revision-history arangodb

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

错误MSB4057:项目中不存在目标"v8"

我正在尝试使用官方构建脚本并遵循官方Windows构建说明,将V8构建为ArangoDB的一部分.

所有v8*targets(v8-build.bat)的编译都失败:

msbuild All.sln /t:v8 /p:Configuration=Release /p:Platform=x64
msbuild All.sln /t:v8_libbase /p:Configuration=Release /p:Platform=x64
msbuild All.sln /t:v8_libplatform /p:Configuration=Release /p:Platform=x64
Run Code Online (Sandbox Code Playgroud)

错误MSB4057:项目中不存在目标"v8".

如果我在Visual Studio中打开解决方案文件,它看起来像这样:

All.sln

我可以建立v8,v8_libbasev8_libplatform在VS中很好.

  • Windows 7 64位
  • Visual Studio 2013 Ultimate
  • Cygwin 2.2.0
  • cmake 3.3.1

v8 compiler-errors msbuild-target arangodb visual-studio-2013

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