小编and*_*oke的帖子

使用RequireJS运行Mocha测试时,为什么会看到"define not defined"?

我试图了解如何开发独立的Javascript代码.我想编写带有测试和模块的Javscript代码,从命令行运行.所以,我已经安装node.js,并npm与库一起requirejs,underscoremocha.

我的目录结构如下所示:

> tree .
.
??? node_modules
??? src
?   ??? utils.js
??? test
    ??? utils.js
Run Code Online (Sandbox Code Playgroud)

src/utils.js我正在编写的小模块在哪里,使用以下代码:

> cat src/utils.js 
define(['underscore'], function () {

    "use strict";

    if ('function' !== typeof Object.beget) {
        Object.beget = function (o) {
            var f = function () {
            };
            f.prototype = o;
            return new f();
        };
    }

});
Run Code Online (Sandbox Code Playgroud)

并且test/utils.js是测试:

> cat test/utils.js 
var requirejs = require('requirejs');
requirejs.config({nodeRequire: require});

requirejs(['../src/utils'], function(utils) { …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js node.js npm requirejs

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

Coq中的"true = false"是什么意思?

[我不确定这是否适合堆栈溢出,但此处还有许多其他Coq问题,所以也许有人可以提供帮助.]

我正在从http://www.cis.upenn.edu/~bcpierce/sf/Basics.html#lab28处理以下内容(正好在Case的介绍下面).请注意,我是一个完全的初学者,我在家工作 - 我不是学生.

Theorem andb_true_elim1 : forall b c : bool,
  andb b c = true -> b = true.
Proof.
  intros b c H.
  destruct b.
  Case "b = true".
    reflexivity.
  Case "b = false".
    rewrite <- H. reflexivity.
Qed.
Run Code Online (Sandbox Code Playgroud)

我正在看重写的内容:

  Case := "b = false" : String.string
  c : bool
  H : andb false c = true
  ============================
   false = true
Run Code Online (Sandbox Code Playgroud)

然后rewrite <- H.应用:

  Case := "b = false" : String.string
  c : …
Run Code Online (Sandbox Code Playgroud)

logic coq

25
推荐指数
2
解决办法
5280
查看次数

什么是fn*以及Clojure如何引导?

clojure.core来源似乎假设已存在fn*.这定义在哪里?bootstrap还需要什么(在现有的Java类型上)?它们是如何组合在一起的?

也许这已经被问到了?我很难获得良好的搜索结果fn*.

更新:在标题中将"bootstrap本身"更改为"bootstrap",因为我不想暗示Clojure是自托管的.

bootstrapping clojure

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

Clojure的平行剂量

我根本没有在Clojure中使用多线程,所以不确定从哪里开始.

doseq的身体可以并行运行.我想要的是总是有3个线程运行(留下1个核心空闲),并行地评估主体直到范围耗尽.没有共享状态,没有什么复杂的 - 相当于Python的多处理就可以了.

所以类似于:

(dopar 3 [i (range 100)]
  ; repeated 100 times in 3 parallel threads...
  ...)
Run Code Online (Sandbox Code Playgroud)

我应该从哪里开始寻找?有这个命令吗?标准包装?一个很好的参考?

到目前为止,我已经找到了pmap,并且可以使用它(我如何一次限制为3?看起来它一次使用32个 - 不,源说2 +处理器数量),但似乎这是一个基本原语应该已经存在于某处.

澄清:我真的想控制线程的数量.我有长时间运行的进程并使用相当数量的内存,所以创建一个大数字并希望事情正常运行OK不是一个好方法(例如使用重要的块可用内存).

更新:开始写一个执行此操作的宏,我需要一个信号量(或一个互斥量,或者我可以等待的原子).Clojure中是否存在信号量?或者我应该使用ThreadPoolExecutor?从Java中提取这么多内容似乎很奇怪 - 我认为Clojure中的并行编程应该很容易......也许我正在考虑这完全错误的方式?嗯.代理?

parallel-processing multithreading clojure

16
推荐指数
3
解决办法
5455
查看次数

请帮我理解这些Clojure Hprof的痕迹

我有一些Clojure代码,它模拟然后处理数值数据.数据基本上是双值的向量; 处理主要涉及以各种方式对它们的值进行求和.我将在下面包含一些代码,但我的问题是(我认为)更一般 - 我只是不知道如何解释hprof结果.

无论如何,我的测试代码是:

(defn spin [n]
  (let [c 6000
        signals (spin-signals c)]
      (doseq [_ (range n)] (time (spin-voxels c signals)))))

(defn -main []
  (spin 4))
Run Code Online (Sandbox Code Playgroud)

哪里spin-voxels应该比更贵spin-signals(特别是重复多次).我可以提供较低级别的例程,但我认为这个问题更多的是关于我不理解跟踪的基础知识(下面).

当我用lein编译它然后做一些简单的分析:

> java -cp classes:lib/clojure-1.3.0-beta1.jar -agentlib:hprof=cpu=samples,depth=10,file=hprof.vec com.isti.compset.stack
"Elapsed time: 14118.772924 msecs"
"Elapsed time: 10082.015672 msecs"
"Elapsed time: 9212.522973 msecs"
"Elapsed time: 12968.23877 msecs"
Dumping CPU usage by sampling running threads ... done.
Run Code Online (Sandbox Code Playgroud)

和配置文件跟踪看起来像:

CPU SAMPLES BEGIN (total = 4300) Sun Aug 28 15:51:40 2011
rank   self  accum   count …
Run Code Online (Sandbox Code Playgroud)

profiling jvm clojure hprof

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

如何构建大型OpenCL内核?

我曾在几个项目中使用OpenCL,但始终将内核编写为一个(有时候相当大)的函数.现在我正在开发一个更复杂的项目,并希望在几个内核之间共享功能.

但是我可以找到的示例都将内核显示为单个文件(甚至很少调用辅助函数).似乎应该可以使用多个文件 - clCreateProgramWithSource()接受多个字符串(并假设它们结合起来) - 尽管pyopencl Program()只需要一个源.

所以我希望听到任何有这方面经验的人:

  • 是否存在与多个源文件相关的任何问题?
  • pyopencl最好的解决方法是简单地连接文件吗?
  • 有没有办法编译函数库(而不是使用每个内核传入库源,即使不是全部都使用)?
  • 如果每次都需要传入库源,是否丢弃了未使用的函数(没有开销)?
  • 还有其他最佳做法/建议吗?

谢谢.

coding-style gpgpu opencl pyopencl

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

什么是一元+用于Javascript?

我从Underscore.js找到了一些代码

  _.map = _.collect = function(obj, iterator, context) {
    var results = [];
    if (obj == null) return results;
    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
    each(obj, function(value, index, list) {
      results[results.length] = iterator.call(context, value, index, list);
    });
    if (obj.length === +obj.length) results.length = obj.length;
    return results;
  };
Run Code Online (Sandbox Code Playgroud)

我想知道是什么if (obj.length === +obj.length)

javascript

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

如何最好地使用插件构建和构建Clojure应用程序?

我认为(见下文)我想将Clojure项目构建为具有有序依赖性的多个模块 - 就像Maven让我可以使用多模块项目一样.

但是我无法看到如何用Leiningen做到这一点 - 我只能看到FAQcheckouts描述的修复程序看起来并不那么强大.

莱恩会这样做吗?我应该使用Gradle吗?或者不需要这种东西?

更多上下文:我想知道如何构建支持插件的模块化应用程序(我想这意味着将jar放在类路径上).我想知道我可以在多大程度上构建核心+插件(我认为我应该能够使用Clojure的动态代码加载而不必使用Java/OSGi).因此,我认为单个项目的驱动动力来自于想要将所有内容(核心+默认插件)打包成一个易于最终用户使用的单个blob,但也可以将其划分(并且可以将其构建为在片段中测试,测试每个模块的逻辑独立性).关于这一点的更一般的建议是受欢

更新

下面没有提到的一个可能的解决方案是使用Maven插件 - 我假设它支持Maven所做的一切,但编译Clojure,因此将使用嵌套模块等.

plugins clojure gradle leiningen

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

在OpenCL中,mem_fence()做什么,而不是barrier()?

barrier()(我认为我理解)不同,mem_fence()不会影响工作组中的所有项目.OpenCL规范说(第6.11.10节),用于mem_fence():

订单执行内核的工作项的加载和存储.

(因此它适用于单个工作项).

但是,与此同时,在第3.3.1节中,它说:

在工作项内存中具有加载/存储一致性.

所以工作项中内存是一致的.

那么什么样的东西mem_fence()有用呢?它不适用于项目,但在项目中不需要......

请注意,我没有使用原子操作(第9.5节等).mem_fence()与这些想法一起使用的想法是什么?如果是这样,我很乐意看到一个例子.

谢谢.

规格,供参考.

更新:我可以看到使用时,它是如何有效使用 barrier()(隐式,由于阻挡调用mem_fence()) -但肯定必须有更多,因为它单独存在?

gpgpu memory-fences opencl memory-barriers barrier

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

如何从地图填充Clojure记录?

是否有类似记录的struct-map?如果没有,我应该使用结构(文档不鼓励使用结构)?

也许我完全做错了什么?我有一个相当复杂的功能,目前需要一个选项图.我试图澄清哪些选项值是可接受/使用的(通过用记录替换它).现在我想将它连接到在地图中包含此信息的代码(并且其中包含记录中数据的超集).

record clojure data-structures

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