小编aka*_*vel的帖子

在哪里为最有效的代码定义一次性常量?

哪种变体最有效,为什么?或者他们会针对相同的代码进行优化吗?

char inplace(int i) {
    // [some check if 0<=i<=2 here]
    return "azS"[i];
}

char infunc(int i) {
    const char s[] = "azS";
    // [some check if 0<=i<sizeof(s)/sizeof(s[0])-1 here]
    return s[i];
}

const char s[] = "azS";
char inglobals(int i) {
    // [some check if 0<=i<sizeof(s)/sizeof(s[0])-1 here]
    return s[i];
}
Run Code Online (Sandbox Code Playgroud)

请不要咆哮过早的优化是如何邪恶的,这是一个天生的C++呃固有的不可抗拒的好奇心;)

c++ performance

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

通过不安全的网络轻松安全连接(两个端点完全受控)

我需要通过不受信任的网络连接客户端和服务器.我考虑过使用TLS(crypto/tls),但据我所知,我首先需要创建一个创建一个crypto/x509.Certificate.但我觉得我需要传递给x509.CreateCertificate()函数的所有参数都不知所措- 它说它需要以下所有字段:

SerialNumber,Subject,NotBefore,NotAfter,KeyUsage,BasicConstraintsValid,IsCA,MaxPathLen,SubjectKeyId,DNSNames,PermittedDNSDomainsCritical,PermittedDNSDomains.

我完全控制两个端点,所以我相信我不需要任何过期或失效支持/参数(我可以随时在客户端和服务器上更改密钥) - 所以我可以跳过NotBeforeNotAfter(?或者我是否必须设置它们?).我应该在所有其他领域中放置什么,以及为什么要避免任何漏洞?此外,我可以使用相同的私钥/公钥对进行身份验证(客户端到服务器,服务器到客户端),还是必须使用2对?

或者,我可以使用比TLS更简单的东西吗?但请注意,我需要双向身份验证.

编辑:

我根据接受的答案中的建议创建了一个简单的库,以及来自generate_cert.go的密钥生成代码- 请参阅:

github.com/akavel/tunnel

security authentication encryption network-programming go

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

恢复旧的PLT-Scheme项目(1999年之前)

我试图恢复用Scheme(PLT-Scheme,使用mzscheme解释器(?)命令行工具)编写的旧(1999或更早)项目.更糟糕的是,我不知道Scheme或Lisp(事实上,我想学习,但这是另一个故事).

我有以下项目的源代码:

github.com/akavel/sherman

现在,在运行代码时,它会出现如下错误消息:

Sherman runtime version 0.5
Hosted on MzScheme version 52, Copyright (c) 1995-98 PLT (Matthew Flatt)
reference to undefined identifier: list->block
Run Code Online (Sandbox Code Playgroud)

(我试过PLT-方案版本52,53, 103,103p1.早期版本不允许mzscheme -L选项,这是在引用的sherman.bat项目中使用脚本.后来的版本也有一些更严重的问题与代码或选项. )

困难在于,从我看到的,list->block实际上定义的 - 见:collects/sherman/BLOCK.SS第48行.那么,有什么不对?

要运行代码,请执行以下步骤:

  1. 下载PLT-Scheme v.103p1(从旧版本下载页面 - 首先关闭"PLT Scheme现在是Racket"横幅) - 对于Windows,请使用:mz-103p1-bin-i386-win32.zip.
  2. 解压缩(例如,到目录c:\PLT).
  3. 将包含内容的c:\sherman\collects\sherman目录复制到:( c:\PLT\collects\sherman其中c:\sherman包含github存储库的内容).
  4. cmd.exe然后跑cd c:\sherman.
  5. set PATH=c:\PLT;%PATH%
  6. sherman.bat run trivial.s …

scheme racket

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

如何在 quickfix 窗口中浏览任何随机命令的输出?

我想运行一些$RANDOM_COMMAND,并在(“管道到”)quickfix 窗口(:copen/ :cfile)中打开结果。这是可能的,而不必在 vimrc 中定义一些命令?(希望以某种“简单的方式”,即我希望能够记住这一点,这样我就可以在任何带有香草 vim 的新随机框上运行它,我必须登录。)

编辑:最初不知道如何更准确地表达“简单方式”,但现在我至少部分知道了:我更喜欢1, max 2 lines 的答案

编辑2:尝试过类似下面的东西(从这个这个

:call setqflist(split(system('RANDOM_COMMAND'), '\n'))
:copen
Run Code Online (Sandbox Code Playgroud)

但似乎没有反正工作:/(和MUCHO丑陋太)

vim

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

使用Rust构建的DLL是否在运行时需要libgcc.dll?

如果我使用Rust语言构建DLL ,它是否需要libgcc*.dll在运行时出现?

一方面:

  • 我在互联网上的某个地方看到了一个帖子,声称是的;
  • rustc.exe已经libgcc_s_dw2-1.dll在其目录中,并且cargo.exehttp://crates.io网站下载时不会在没有dll的情况下运行;

另一方面:

  • 我看过有关在Rust中构建玩具操作系统内核的文章,因此他们肯定不需要存在libgcc动态库.

所以,我很困惑.什么是明确的答案?

windows rust libgcc

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

将未打开文件中的行加载到 VimScript 中的变量中

我需要根据一些外部命令的输出构建一个快速修复列表。但是该命令只给了我文件名和行号,例如:

foo.txt:10
bar.txt:20
Run Code Online (Sandbox Code Playgroud)

我想将指定文件的实际内容添加到 quickfix 列表中,例如:

foo.txt:10: this is some line from foofile
bar.txt:20: hello world, we're a line from barfile
Run Code Online (Sandbox Code Playgroud)

这能做到吗?

理想情况下,我希望这是跨平台的,所以可能在纯 VimScript 中,不调用外部命令,如sed或类似的命令?

模拟

我当前的行为可以用一个函数来模拟:

function! MyFunc()
    let mylist = ["foo.txt:10:...", "bar.txt:20:..."]
    cgetexpr mylist
    copen
endfunction

call MyFunc()
Run Code Online (Sandbox Code Playgroud)

我希望这些...部分成为真实文件中的内容......

vim

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

如何在 Windows 上访问 Poly/ML 中的库?

我已从“PolyML5.6-64bit.msi”安装程序安装了 Poly/ML;我可以通过在“开始”菜单中单击 REPL 来启动它;但我不知道如何从中访问任何库?我尝试这样做use "something",但它会导致如下错误:

\n\n
> use "Math";\nException-\n   Io\n     {cause = SysErr ("No such file or directory", SOME ENOENT), function =\n      "TextIO.openIn", name = "Math"} raised\n
Run Code Online (Sandbox Code Playgroud)\n\n

use "Basis"与或类似use "Windows"

\n\n

请注意,我对 SML 完全是新手;我似乎use在一些通用的 SML 教程中找到了该命令,但不知道我是否正确使用它:/

\n\n

编辑:另外,目标安装目录似乎只包含以下三个二进制文件,不确定那里是否应该有一些源:

\n\n
C:\\Program Files\\Poly ML>dir\n Volume in drive C is Windows\n Volume Serial Number is CENS-ORED\n\n Directory of C:\\Program Files\\Poly ML\n\n26.02.2016  00:03    <DIR>          .\n26.02.2016  00:03    <DIR>          ..\n25.01.2016  14:22           681\xc2\xa0472 PolyLib.dll\n25.01.2016  14:23         8\xc2\xa0182\xc2\xa0784 PolyML.exe\n25.01.2016  14:22 …
Run Code Online (Sandbox Code Playgroud)

sml polyml

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

相当于:git reset --hard --patch?

是否可以做相同的git reset --hard --patch?(因为这给了我:) fatal: --patch is incompatible with --{hard,mixed,soft}.

换句话说,该怎么办git reset --patch,但是有没有"未分级"的变化立即被丢弃?(特别是对于新添加的文件 - 我不希望它们乱丢我的工作目录,因为我已经把它放在其他东西上了......所以很难找到新的垃圾来手工删除它......)

编辑:或者,可能是"多个临时区域",其中块可以像 - 使用--patch一样从一个传递到另一个?

edit2:从上面的问题看起来并不清楚,所以我将从我在下面发表的评论中复制免责声明:请注意我不希望在"要提交的更改"中显示任何显示为"新文件"的文件在输出中git status移动到"未跟踪文件".对于他们中的每一个,我希望能够明确地决定是否要保留它们或永久丢弃它们(即从磁盘中删除).

换句话说:我试图将提交分成两部分,但我有一些"新文件".其中一些我想进入提交的"另一半".但我不想从"未跟踪文件"列表中逐一添加它们.

edit3:再次澄清:我有很多"未跟踪的文件",我不想因为一个或其他原因而添加到.gitignore或.git/info/exclude.

git

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

在React Native代码库中,生成声明的“单个JSON消息”的代码在哪里?

2018年的一篇文章中,Facebook工程师声称:

React Native旨在返回一条JSON消息,其中列出了要执行的突变,例如[["createView", attrs], ["manageChildren", ...]]。我们设计了整个系统,从不依赖于返回同步响应,并确保该列表中的所有内容都可以完全序列化为JSON并返回。

React Native代码库*中,负责此功能的确切代码(构建JSON)在哪里?还是引用的声明可能是位于 “简化”?

我正拼命地寻找它,但似乎是在盘旋。每当我找到一条最初看起来很有前途的音轨时,似乎都无法将我引向将生成此类JSON的地方:(

* 请注意,我对Android代码库特别感兴趣;最好是RN v0.55,即撰写本文时的最新版本。

如果可能,我也对补充的“反向”代码感兴趣。我的意思是,我假设“本地”(在Android情况下为Java)代码也必须在某个时候将某些“事件”信号发送回JS,并且我假设它们也是JSON。那么,这段代码又存放在哪里?(我对接收和反序列化该JSON的JS代码感兴趣。)

(此外,如果能在基于Expo的应用程序中从JS原始格式访问那些“低级”功能(发送和接收JSON),我将不胜感激;但这在答案中是100%可选的,因为一旦我知道上述主要问题的答案,我便有足够的信心相信自己能够自己找到答案。)

注意:为全面披露,我还在HN上交叉发布了该问题,但截至撰写本文时尚未有答案。我计划在有关HN的讨论话题过时时从此处删除此说明。

编辑1号

基于SO提出的“相关”问题,我开始感到模糊,感觉到名为“ BatchedBridge” 的概念/关键字可能与我要寻找的非常接近。我的直觉似乎告诉我,这可能是朝正确方向迈出的第一步。我找到了一篇博客文章,描述了如何观察通过BatchedBridge双向传播的消息,据报道会产生如下日志:

{type: 1, module: "WebSocketModule", method: "addListener", args: Array(1)}
{type: 1, module: "WebSocketModule", method: "connect", args: Array(4)}
{type: 0, module: "RCTDeviceEventEmitter", method: "emit", args: Array(2)}
{type: 1, module: "Timing", method: "createTimer", args: …
Run Code Online (Sandbox Code Playgroud)

react-native

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

在C++中使用cling,怎么做?

对于一个学校项目,我和我的团队正在开展一个项目,我们需要使用cling解释器.我们观看了几个关于cling的youtube视频,所有这些都是在我们的系统上编译和工作的.

我们面临的问题是我们似乎无法找到如何在c ++代码中调用cling函数.几乎没有关于这个主题的信息(或者至少我们找不到它).我们已经查看了cern网站有关此主题和支持论坛的信息.

有没有人有一个很好的例子或网站,我们可以找到有关这个主题的更多信息?

提前致谢.

亲切的问候,
鲍勃

更新:
我们发现通过包括cling/Interpreter/Interpreter.h我们可以与口译员交谈.我们还没有编译,但我们越来越近了.有关详情,请查看:http://www.youtube.com/watch?v = wZZdDhf2wDw

c++ interpreter cling

4
推荐指数
1
解决办法
2013
查看次数