小编hel*_*rve的帖子

如何处理Node.js加密流中的块长度

我想加密输入流并通过TCP将其发送到另一台服务器.到现在为止还挺好.一切顺利,直到连接关闭.几乎在任何情况下都不满足192位所需的块大小,并且脚本崩溃wrong final block length,尽管我打开了自动填充.

在使用旧版界面时,似乎只有自动填充才有效.我在这里做错了吗?

var net = require("net")
  , crypto = require("crypto");

var credentials = { algorithm: "aes192", password: "password" }
  , decipher = crypto.createDecipher(credentials.algorithm, credentials.password)
  , cipher = crypto.createCipher(credentials.algorithm, credentials.password);

decipher.setAutoPadding(true);
cipher.setAutoPadding(true);

net.createServer(function(socket) {
  socket.pipe(socket);
}).listen(2000);

var socket = net.connect(2000);

socket.pipe(decipher).pipe(process.stdout);
process.stdin.pipe(cipher).pipe(socket); 

socket.write("Too short.");
socket.end();
Run Code Online (Sandbox Code Playgroud)

在我理想的Node.js世界中,当源流关闭时,(De-)密码流将自动填充最后一个块.我认为这是一个设计缺陷.

除了打开一个问题,我该如何规避这种行为呢?我是否必须在Socket和(De-)Cipher Streams之间放置一个字节计数器?

javascript cryptography stream node.js

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

std :: vector/Programming book神话的默认大小?

在我购买的德语编程书(约会到2012年)中称为"C++fürC-Programmierer"(C++ for C programmers,duh!)作为参考我在关于STL的章节中找到了以下部分(我将正确翻译)离开你们):

大多数STL实现在内存管理方面都很慷慨.矢量的分配主要以1kb块为例进行.如果分配一些向量,那么剪辑并不重要,但是如果你创建十到几十个向量,它就会发生.

我找不到任何证实这一点的消息来源.我知道这取决于实现,但我找不到任何确认即使是一个平台的东西.Cplusplus.com 仅表明:

[...]

因此,与数组相比,向量消耗更多内存以换取管理存储和以有效方式动态增长的能力.

到目前为止我尝试了什么?

我写了一个小的C++程序,利用OS X特定的malloc_size()函数,但我从来没有使用它,我很确定我做错了.如果我按照以下方式做某事:

std::vector<int>* i = new std::vector<int>;
std::cout << malloc_size(i) << std::endl;
Run Code Online (Sandbox Code Playgroud)

Cout只是告诉我32,这可能是一个int的大小,因此证明了作者部分错误,但我并不是真的相信自己的努力.

有谁知道更好或知道资源?提前致谢.

此致,卡森

c++ containers memory-management stl vector

10
推荐指数
3
解决办法
1495
查看次数

不安全的IO或:Haskeline和目录

免责声明:我对Haskell有点新鲜.

大家好,

我正在写一个翻译,或者在这种情况下,写一个REPL.为此我使用haskeline,这对REPL很好.它具有将命令行历史存储在文件中的能力,这也很好.

但是,我在使用它时遇到的一个问题是它似乎没有将"〜"扩展到主目录,这意味着我必须手动检索主目录.

我可以这样做(目前也这样做):

-- | returns a fresh settings variable
addSettings :: Env -> Settings IO
addSettings env = Settings { historyFile = Just getDir
                           , complete = completeWord Nothing " \t" $
                                        return . completionSearch env
                           , autoAddHistory = True
                           }
    where
        getDir :: FilePath
        getDir = unsafePerformIO getHomeDirectory ++ "/.zepto_history"
Run Code Online (Sandbox Code Playgroud)

但是这种使用unsafePerformIO,这让我感到畏缩.您是否知道一个良好而干净的解决方法,不涉及重写整个功能?这可能是haskeline我不知道的功能或者我没看到的功能.

告诉我没有办法改写和重新思考它一切都很好.

编辑:

我知道unsafePerformIO很糟糕,这就是为什么它让我畏缩.如果你是Haskell的新手并且现在正在阅读这个问题:假装它不在那里.

haskell haskeline io-monad

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

Python:各种列表到笛卡尔积,可变长度

我想从三个不同的数组创建单词或组合.输出应该是自身的笛卡尔积和另一个长度可变的数组.例:

array1 = ["a", "b", "c"]
array2 = ["x", "y", "z"]
Cartesian product of both, length 3: aaa, aab, aac ... axb, axc, axx... zzx, zzy, zzz
Run Code Online (Sandbox Code Playgroud)

你能指出我正确的方向吗?

python product variable-length

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

PyQt 中的evaluateJavaScript - 未调用函数

我对 PyQt/它的 Webview 有问题。困扰我的代码应该呈现图表,但它没有。我正在使用 Highcharts 框架并为通过 Python 呈现图表的 javascript 函数提供数据。我还检查 webview 是否准备好,因为这是我以前的错误。有问题的代码如下所示:

command = ('loadPinch(' + str(random.sample(range(10000), 1000)) +
            ', ' + str(['2009', '01', '01']) + ');')
self.webview.page().mainFrame().evaluateJavaScript("""
        var readyStateCheckInterval = setInterval(function() {
            if(document.readyState === 'complete'){ """ +
                command + """
                clearInterval(readyStateCheckInterval);
            }
        }, 10);""")
Run Code Online (Sandbox Code Playgroud)

loadPinch 是一个 JavaScript 函数,看起来与此类似(这又类似于 Highcharts 示例图):

    function loadPinch(data, date){
    $('#container').highcharts({
        chart: {
            zoomType: 'x',
            spacingRight: 20
        },
        title: {text: 'Twitter Trends'},
        subtitle: {
            text: document.ontouchstart === undefined ?
                'Click and drag in the plot area …
Run Code Online (Sandbox Code Playgroud)

javascript python qt pyqt4 highcharts

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