小编hug*_*omg的帖子

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

如何使用RequireJS优化器删除注释?

我正在尝试从优化的脚本文件中删除版权注释.我们正在使用RequireJS和默认的UglifierJS.我查看了Uglifier,它本身有一个名为-ncor 的标志--no-comments,但看起来似乎并不像RequireJS允许你在构建配置文件中设置该选项.反正有没有这样做?

javascript optimization requirejs uglifyjs js-amd

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

无法将预期类型`Data.ByteString.Internal.ByteString'与实际类型`ByteString'匹配

运行以下代码:

import Crypto.BCrypt
import Data.ByteString.Lazy.Char8

main = do
  maybe_pwhash <- hashPasswordUsingPolicy slowerBcryptHashingPolicy (pack "hunter2")
  print $ maybe_pwhash
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误:

test.hs:5:70:
    Couldn't match expected type `Data.ByteString.Internal.ByteString'
                with actual type `ByteString'
    In the return type of a call of `pack'
    In the second argument of `hashPasswordUsingPolicy', namely
      `(C.pack "hunter2")'
    In a stmt of a 'do' block:
      maybe_pwhash <- hashPasswordUsingPolicy
                        slowerBcryptHashingPolicy (pack "hunter2")
Run Code Online (Sandbox Code Playgroud)

我很困惑,因为我不明白为什么a Data.ByteString.Internal.ByteString和a 之间有区别ByteString.

haskell bytestring

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

可以使用代码块作为C宏的参数吗?

我有一个模式,基本上是一些样板代码,其中一部分在中间变化

if(condition){
    struct Foo m = start_stuff();
    { m.foo = bar(1,2); m.baz = 17; } //this part varies
    end_stuff();
}
Run Code Online (Sandbox Code Playgroud)

是否可以使宏taht将该中间代码块作为参数?C中的宏扩展规则看起来非常复杂,所以我不确定将来是否会出现任何可能出现并且咬我的角落情况(特别是,我不明白如果我的代码如何分离宏参数有逗号).

#define MY_MACRO(typ, do_stuff) do { \
    if(condition){ \
        struct typ m = start_stuff(); \
        do_stuff; \
        end_stuff(); \
    } \
}while(0)

//usage
MY_MACRO(Foo, {
   m.foo = bar(1,2);
   m.baz = 17;
});
Run Code Online (Sandbox Code Playgroud)

到目前为止,我设法想到的唯一一件事就是如果我在宏中使用循环语句breakcontinue被捕获,这对我的特定用例来说是一个可接受的权衡.

编辑:当然,如果可以的话,我会使用一些功能.我在这个问题中使用的示例是简化的,并没有展示只能用于宏魔术的位.

c macros nesc

18
推荐指数
2
解决办法
7626
查看次数

Haskell中的N-queens没有列表遍历

我在网上搜索了Haskell中n-queens问题的不同解决方案,但找不到任何可以在O(1)时间内检查不安全位置的解决方案,就像你为/对角线保留一个数组而另一个用于\ diagonals.

我找到的大多数解决方案只是检查了所有以前的新女王.像这样的东西:http: //www.reddit.com/r/programming/comments/62j4m/nqueens_in_haskell/

nqueens :: Int -> [[(Int,Int)]]
nqueens n = foldr qu [[]] [1..n]
    where qu k qss = [ ((j,k):qs) | qs <- qss, j <- [1..n], all (safe (j,k)) qs ]
      safe (j,k) (l,m) = j /= l && k /= m && abs (j-l) /= abs (k-m)
Run Code Online (Sandbox Code Playgroud)

在Haskell中实现这种"O(1)方法"的最佳方法是什么?我不是在寻找任何"超级优化"的东西.只是某种方式来产生"这个对角线已经被使用了吗?" 数组以功能的方式.

更新:

感谢所有答案,伙计们!我最初问这个问题的原因是因为我想解决一个更难回溯的问题.我知道如何用命令式语言解决它,但不能轻易想到一个纯粹的功能数据结构来完成这项工作.我盘算了一下,皇后问题将是一个很好的模式(即对整个数据结构问题回溯问题:)),但它不是我的真正的,虽然问题.

我实际上想找到一个允许O(1)随机访问的数据结构,并保持处于"初始"状态(自由线/对角线,在n-queens情况下)或处于"最终"状态(被占用)的值线/对角线),转换(自由占用)为O(1).这可以使用命令式语言中的可变数组来实现,但我觉得更新值的限制​​只允许一个很好的纯函数数据结构(例如,与Quicksort相反,它真的需要可变数组).

我认为,在Haskell中使用不可变数组可以获得同样好的解决方案,而"main"函数看起来就像我想要的那样:

-- try all positions for a queen in row n-1
place :: BoardState -> …
Run Code Online (Sandbox Code Playgroud)

algorithm haskell functional-programming backtracking data-structures

17
推荐指数
2
解决办法
4064
查看次数

isNaN()与parseInt()的混淆

有一些奇怪的东西.

为什么
isNaN("")我得到False
不过,
parseInt("")我得到NaN

javascript

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

为线性同余发生器挑选A,C和M.

我希望实现一个具有指定周期的简单伪随机数发生器(PRNG),并确保在该周期的持续时间内没有冲突.经过一番研究后,我发现了非常着名的LCG,这是完美的.问题是,我无法理解如何正确配置它.这是我目前的实施:

    function LCG (state)
    {
        var a = ?;
        var c = ?;
        var m = ?;

        return (a * state + c) % m;
    }
Run Code Online (Sandbox Code Playgroud)

它表示,为了使所有种子值都有一个完整的时间段,必须满足以下条件:

  1. cm是相对素数
  2. a-1可被m的所有素因子整除
  3. 如果m是4的倍数,则a-1是4 的倍数

13很容易理解和测试.然而,2,我不太明白这意味着什么或如何检查它.那么C,它可以为零吗?如果它不是零怎么办?

总的来说,我需要选择A,C和M,使得我的周期为48 ^ 5 - 1.M等于期间,我不确定A和C.

javascript algorithm math prng number-theory

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

如何告诉QuickCheck只为参数生成有效的列表索引?

假设我想为(!!)函数编写一些单元测试.

my_prop xs n = ...
Run Code Online (Sandbox Code Playgroud)

我想将n限制为仅有效的索引,我知道我可以做类似的事情

my_prop xs n = (not.null) (drop n xs) ==> ...
Run Code Online (Sandbox Code Playgroud)

但这使得绝大多数生成的案例都无效并被抛弃.有没有办法我可以设置,以便QuickCheck xs首先生成列表并使用其值只生成有效的情况n

haskell quickcheck

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

Javascript big-O属性访问性能

JavaScript属性访问的性能特征是什么(在当前实现上)?

  • 假设数组访问是O(1)是否安全?
  • 如果我使用一个对象作为哈希表(使用字符串键),我可以安全地假设O(1)或O(log n)访问时间吗?

  • 是否有任何常见的浏览器或环境比其他浏览器或环境明显更快/更慢,我应该留意?

  • JavaScript标准有什么要说的吗?

最重要的是:

  • 我在哪里可以找到这种渐近的JavaScript性能问题的好参考?

javascript

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

如果库吞没所有异常,我如何调试我的异步,基于承诺的代码?

问题

JSFiddle:http: //jsfiddle.net/missingno/Gz8Pe/2/

我有一些看起来像这样的代码:

var d = new Deferred();
d.resolve(17);
return d.then(function(){
     //do some stuff...
})
.then(function(){
    var obj = a_funtion_that_returns_null_on_IE();
    var x = obj.some_property; //BOOM!
});
Run Code Online (Sandbox Code Playgroud)

问题是,当我在IE上时,我只能看到'obj' is null or not an object错误,没有任何对相应行号的引用,也没有调试器停在违规行(就像我希望的那样).

这种问题使得代码很难调试,我现在能想到的唯一解决方案(搞乱控制流库或使用调试器或console.log进行逐步调试)是我的事情.宁可不必做.

我的想法是怎么回事

为了允许在链被触发后添加errbacks,then将抢先捕获回调抛出的任何异常.我认为这是IE调试器没有停止错误或显示通常的错误消息的原因,其中包含行号.

没有行号的错误消息来自控制流库:它提供了一个deferredOnError挂钩,只要捕获并保存以供日后使用,就会调用该挂钩,默认行为是console.error-the Error对象:

dojo.config.deferredOnError = function(err){
    //a chance to log the exception after it is captured by "then"
    //or do other things with it
    console.error(err);
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,我无法找到从IE中的错误对象获取行号或堆栈跟踪的方法,并且以一种不允许我重新抛出异常并让它冒泡到顶层的方式调用钩子.

我想要的是

我希望有一种更好的方法来调试异步代码,然后逐步调试调试器.在最好的情况下,有一种方法可以让调试器暂停异常(就像在未处理的异常上一样),或者至少是 …

javascript debugging dojo promise deferred

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