我想加密输入流并通过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之间放置一个字节计数器?
在我购买的德语编程书(约会到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的大小,因此证明了作者部分错误,但我并不是真的相信自己的努力.
有谁知道更好或知道资源?提前致谢.
此致,卡森
免责声明:我对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的新手并且现在正在阅读这个问题:假装它不在那里.
我想从三个不同的数组创建单词或组合.输出应该是自身的笛卡尔积和另一个长度可变的数组.例:
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)
你能指出我正确的方向吗?
我对 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 ×2
python ×2
c++ ×1
containers ×1
cryptography ×1
haskeline ×1
haskell ×1
highcharts ×1
io-monad ×1
node.js ×1
product ×1
pyqt4 ×1
qt ×1
stl ×1
stream ×1
vector ×1