小编Gla*_*eep的帖子

JavaScript函数可以接受最大数量的参数吗?

我知道JavaScript函数可以接受"任意"数量的参数.

function f(){};
f(1,2,3,4 /*...*/);
Run Code Online (Sandbox Code Playgroud)

但我想知道实际上有多少"任何"可以限制?

比如说,让我说一百万个参数f().那会有用吗?或者翻译龙骨?

我猜测最大值是(a)特定于实现或(b)(2^32)-1,因为arguments对象是类似数组的.

我没有在语言规范中看到这一点,但我可能没有连接一些点.

javascript

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

为Ruby模块中的每个方法调用执行代码

我正在Ruby 1.9.2中编写一个定义了几个方法的模块.当调用这些方法中的任何一个时,我希望它们中的每一个首先执行某个语句.

module MyModule
  def go_forth
    a re-used statement
    # code particular to this method follows ...
  end

  def and_multiply
    a re-used statement
    # then something completely different ...
  end
end
Run Code Online (Sandbox Code Playgroud)

但我想避免a re-used statement在每个方法中明确地放置该代码.有办法吗?

(如果重要的话,a re-used statement每个方法在调用时都会打印自己的名字.它会通过一些变体来实现puts __method__.)

ruby methods module metaprogramming

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

如何在捆绑电子应用程序之前对其进行编码(对于Mac)?

我正在为Mac OS X开发一个Electron应用程序.我试图在本地开发之前.app测试它的自动更新功能,然后将其捆绑为.

我有一个构建的应用程序的初始版本Foo.app,以及使用该模块.dmg和用作更新.我托管了这些文件.我已经验证他们安装并正确运行.我有一个在本地运行的Squirrel服务器,它将返回指向该服务器的正确JSON有效负载..zipelectron-builder.zip

为了在本地开发我的应用程序,我使用Webpack来转换我的Web资产,并使用electron@1.4.4在Electron中启动这些资产.换句话说,在本地开发时,我不会发布捆绑的.app; 我正在启动一个开发服务器并在Electron中提供这些资产.该过程类似于运行$ electron ..

在此行调用自动更新挂钩时会发生此问题:

autoUpdater.setFeedURL(feedURL)
Run Code Online (Sandbox Code Playgroud)

此行引发电子错误,表示:

"Could not get code signature for running application."
Run Code Online (Sandbox Code Playgroud)

好的,所以我进行搜索,看到有一些指南可以解释如何对应用程序进行编码签名:

但是,这些表明我应该编码签名.app.正如我所说,我试图测试自动更新,然后将其捆绑为.app.我不想一次又一次地重建,直到我自动更新正常工作.

所以我做了另一个搜索,看到有几个论坛问题与我要求的或多或少相同:

我无法通过挖掘这些线程来解决问题.我希望有人可以在捆绑之前给我一个明确的解决方案来签署Electron应用程序.


对于答案,我希望得到所有这些答案的明确答案:

  • 是否可以在捆绑之前对我的Electron应用程序进行编码签名.app?即,我将推出的文件$ electron .
  • 如果有,怎么样?
  • 如果没有,为什么?有没有办法加快测试?

javascript macos electron

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

带有OAuth2的YouTube API v3:更新和删除失败并显示"权限不足"错误

我想updatedelete使用视频的YouTube的API V3使用的OAuth2认证通过google-api-client (0.6.4)红宝石的宝石.但是,当我尝试执行这两个操作中的任何一个时,我看到以下错误消息:

Google::APIClient::ClientError: Insufficient Permission
Run Code Online (Sandbox Code Playgroud)

下面是奇怪的事情:使用完全相同的认证过程与updatedelete,我可以insert(上载)成功,没问题!所以,我不认为这是我的身份验证设置的问题,但我的代码中的其他地方.

scope在任何这些操作中,我的读写总是相同的:

https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/youtube.upload
Run Code Online (Sandbox Code Playgroud)

并根据API文档,该空间分隔组作用域应包括insert,updatedelete行动.

client_id,client_secret,refresh_token始终是所有这些行动也一样-所以,这不能成为问题,或者,可以吗?请注意,我的程序access_token在到期时会自动获取新内容,因此,我不相信这就是问题所在.

为了比较,这是我的insert(上传)代码的样子(这是有效的):

# Auth stuff, then...
@client.execute!(
  :api_method => @youtube.videos.insert,
  :body_object => body,
  :media => Google::APIClient::UploadIO.new(file_path, 'video/*'),
  :parameters => {
    'uploadType' => 'multipart',
    :part => body.keys.join(','),
  }
)
Run Code Online (Sandbox Code Playgroud)

这是我的delete代码看起来像(这失败): …

ruby youtube api youtube-api google-api-ruby-client

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

在 Ruby 1.9.2 中包含目录中的所有模块

我已将一组.rb文件放在一个目录中modules/。每个文件都包含一个模块。我正在从一个单独的脚本加载所有这些文件:

Dir["modules/*.rb"].each {|file| load file }
Run Code Online (Sandbox Code Playgroud)

但接下来我必须将它们一一包含在内,明确列出并命名它们:

class Foo
  include ModuleA
  include ModuleB
  # ... and so on.
end
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一些非显式的单行代码可以完成此任务,la(伪代码)......

class Foo
  for each loaded file
    include the module(s) within that file
  end
  # ... other stuff.
end
Run Code Online (Sandbox Code Playgroud)

我考虑过实际读取文件的内容,搜索字符串“ module”,然后提取模块名称,并以某种方式include基于此进行操作 - 但这似乎很荒谬。

我正在尝试做的事情是可取的和/或可能的吗?

ruby

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

JavaScript中无分配循环的模式?

假设我们正在编写一个平滑动画至关重要的浏览器应用程序.我们知道垃圾收集可以阻止执行足够长的时间以引起可察觉的冻结,因此我们需要最小化我们创建的垃圾量.为了最大限度地减少垃圾,我们需要在主动画循环运行时避免内存分配.

但是执行路径遍布循环:

var i = things.length; while (i--) { /* stuff */ }

for (var i = 0, len = things.length; i < len; i++) { /* stuff */ }
Run Code Online (Sandbox Code Playgroud)

并且他们的var语句分配内存可以分配垃圾收集器可能删除的内存,我们要​​避免.

那么,在JavaScript中编写循环结构以避免每个都分配内存的好策略是什么?我正在寻找一个通用的解决方案,列出了利弊.


以下是我提出的三个想法:

1.)为索引和长度声明"顶级"变量; 到处重用它们

我们可以声明app.iapp.length在顶部,并一次又一次地重复使用它们:

app.i = things.length; while (app.i--) { /* stuff */ }

for (app.i = 0; app.i < app.length; app.i++) { /* stuff */ }
Run Code Online (Sandbox Code Playgroud)

优点:简单到实现.缺点:取消引用属性所带来的性能可能意味着Pyrrhic的胜利.可能会意外误用/破坏属性并导致错误.

2.)如果已知数组长度,请不要循环 - 展开

我们可以保证数组具有一定数量的元素.如果我们事先知道长度是多少,我们可以在程序中手动解开循环:

doSomethingWithThing(things[0]); …
Run Code Online (Sandbox Code Playgroud)

javascript garbage-collection memory-management

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

WebGL警告:"属性0被禁用.这会显着降低性能"

当我运行下面的JavaScript/WebGL代码(请向下滚动)时,我在开发控制台中看到以下警告消息:

[.WebGLRenderingContext]
PERFORMANCE WARNING: Attribute 0 is disabled.
This has significant performance penalty
Run Code Online (Sandbox Code Playgroud)

下面的代码在画布上成功绘制了一个白点.但是,我希望警告消失.我需要在下面的代码中更改什么才能使其停止显示?

HTML:

<!DOCTYPE html>
<html>
<body>
  <canvas id="canvas" width="100" height="100"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

JavaScript:

var
    VERTEX_SHADER_SOURCE = ""+
      "void main() {"+
      "  gl_Position = vec4(0.0, 0.0, 0.0, 1.0);"+
      "  gl_PointSize = 10.0;"+
      "}",

    FRAGMENT_SHADER_SOURCE = ""+
      "void main() {"+
      "  gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);"+
      "}",

    canvas = document.getElementById('canvas'),
    gl = canvas.getContext('webgl'),

    vertexShader = gl.createShader(gl.VERTEX_SHADER),
    fragmentShader = gl.createShader(gl.FRAGMENT_SHADER),

    shaderProgram = gl.createProgram();

// Compile the shaders. …
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas webgl

5
推荐指数
2
解决办法
4423
查看次数

为什么事件冒泡在分离的DOM元素中不起作用?

我有一个父母在内存中<div>有一个孩子<div>- 没有附在当前文件上.我想CustomEvent在孩子身上触发一个,但是从父母那里听那个事件.这是我的代码:

var parent = document.createElement('div');
var child = document.createElement('div');
parent.appendChild(child);
parent.addEventListener('boom', function(event) {
    console.log('parent listener', event); // <~ This never runs!
});
var event = new CustomEvent('boom', { bubbles: true });
child.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

此代码无法按预期工作.父节点上的事件侦听器永远不会触发.这似乎与JavaScript事件系统相矛盾,因为事件从目标中冒出来.但是,如果我将此代码段的最后两行修改为以下内容,则回调会像我期望的那样触发:

document.body.appendChild(parent);
child.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我在调度事件之前将我的片段作为文档的子树附加,那么父事件侦听器将按预期完全触发.为什么?有没有办法在使用分离的DOM元素时允许冒泡?

javascript dom google-chrome javascript-events

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

是否可以使用网页中的 SVG 元素来确定 url(#id) 属性的范围?

在 SVG 中,您可以使用 URL 引用(例如 )url(#id)来指向网页上的其他 SVG 元素。例如:

<use filter="url(#my-filter)" ...></use>
Run Code Online (Sandbox Code Playgroud)

但假设,意外地,我最终遇到了这样的命名冲突:

<svg>
  <defs>
    <filter id="my-filter" x="30">
  </defs>
  <use filter="url(#my-filter)"></use>
</svg>

<!-- somewhere else on my page --->
<svg>
  <defs>
    <filter id="my-filter" x="40">
  </defs>
  <use filter="url(#my-filter)"></use>
</svg>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些url()参考文献似乎没有限定范围。当此页面显示时,它们都将使用相同的过滤器——大概是与选择器匹配的第一个元素#my-filter(而不是位于每个元素的上下文<filter>中)。<svg>

是否有某种方法可以添加范围,以便每个引用都指向预期位置?或者我只需要确保这些 id 在我的网页上始终是全局唯一的?

svg dom

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

如何加速我的Ruby/Rake任务,它计算300K日期字符串中日期的出现次数?

我有一个300K字符串的数组,代表日期:

date_array = [
  "2007-03-25 14:24:29",
  "2007-03-25 14:27:00",
  ...
]
Run Code Online (Sandbox Code Playgroud)

我需要计算此数组中每个日期的出现次数(例如,"2011-03-25"的所有日期字符串).确切的时间无关紧要 - 只是日期.我知道文件中的日期范围.所以我有:

Date.parse('2007-03-23').upto Date.parse('2011-10-06') do |date_to_count|
  count = 0
  date_array.each do |date_string|
    if Date.parse(date_string) >= date_to_count && 
       Date.parse(date_string) <= date_to_count
      count += 1
    end
  end
  puts "#{date_to_count} occurred #{count} times."
end
Run Code Online (Sandbox Code Playgroud)

在我的机器上计算仅一个日期的出现时间超过60秒.我可以通过哪些方式优化此任务的性能?

可能有用的注释:我使用的是Ruby 1.9.2.此脚本使用rake 0.9.2在Rake任务中运行.它date_array是从CSV文件加载的.在每次迭代中,它count都保存为我的Rails项目数据库中的记录.

ruby optimization performance rake ruby-on-rails

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

在Rails中,我可以将视图放在"vendor"目录中吗?

在我的Rails应用程序中,我有一些我想要放入的视图(布局,部分)vendor/viewsvendor/views/layouts不是app/views.但是,它是由只有导游(与基地项目结构)暗示assets,并plugins放入vendor.不过,我可以这样做吗?

ruby-on-rails

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

'cabal run'给出了"无法识别的命令:运行"

我正在尝试创建简单的Cabal可执行包.

惊天动地用户指南的'运行可执行程序’一节说:

您可以使用run命令构建Cabal并运行可执行文件.

cabal run EXECUTABLE [-- EXECUTABLE_FLAGS]
Run Code Online (Sandbox Code Playgroud)

然而,当我输入该命令时:

$ cabal run HelloWorld
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

cabal: unrecognised command: run (try --help)
Run Code Online (Sandbox Code Playgroud)

cabal --help告诉我,确实没有run命令.

我错过了什么吗?如何运行我的可执行文件?


我是Haskell和Cabal的新手; 请告诉我这里包含哪些信息会有所帮助.

我在Mac OS X 10.8.5上.

cabal --version 得到:

cabal-install version 0.14.0
using version 1.14.0 of the Cabal library 
Run Code Online (Sandbox Code Playgroud)

ghc --version 得到:

The Glorious Glasgow Haskell Compilation System, version 7.4.2
Run Code Online (Sandbox Code Playgroud)

haskell cabal cabal-dev

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

“List&lt;A&gt;”不包含“ToList”的定义

我收到一个我不明白的编译错误。我确信这段代码应该可以工作,但无法编译。我只是忘记了一些明显的事情吗?这是我的代码和错误消息:

using System.Collections.Generic;
using System.Linq;
public class A { }
public class B : A { }
public class C : A { }
public static class Foo
{
    public static List<A> All = new List<A>
    {
        new A(),
        new B(),
        new C()
    };
    public static List<B> Bs()
    {
        /*
            The error is given here:
            (field) static List<A> Foo.All
            'List<A>' does not contain a definition for 'ToList' and
            the best extension method overload 'Enumerable.ToList<B>(IEnumerable<B>)'
            requires a receiver of type 'IEnumerable<B>' …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

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