我试图创建一个在字符串中嵌入数字的纯函数.明显的连接方法不起作用:
pure string foo(immutable int bar)
{
return "Number: " ~ bar; // Error: strings and ints are incompatible.
return "Number: " ~ to!string(bar); // Error: to() is impure.
}
Run Code Online (Sandbox Code Playgroud)
是否有一种干净,实用的方式来连接数字和字符串?我想避免编写自己的连接或转换函数,但如果必须,我会.
在我们的环境中,我们有一个服务器场,每个服务器都运行许多任务.使用内部调度系统部署任务二进制包(并运行任务).
当引入对Microsoft库或运行时的新的公共依赖时,该依赖性通常作为服务器范围的升级推送(例如,Microsoft Visual C++可再发行组件包).目前,服务器安装了一个名为Microsoft Visual F#2.0 Runtime的软件包,并且在GAC中也有FSharp.Core版本4.0.0.0,我不知道从哪里来,但FSharp.Core 4.3.0.0通常不可用.
Visual F#3.0是否有可再发行的软件包可以将FSharp.Core 4.3.0.0部署到GAC中,还是应该包含每个任务二进制文件的FSharp.Core.dll副本?实际上,如果可能的话,我会避免拥有数百个通用DLL的副本.
我正在构建一个仅包含构建工具的包:a .prop和a .target文件,以及带有MSBuild任务的dll.我指定这些文件放在nuspec文件部分的build文件夹中<file>:
<files>
<file src="bin\Release\Acme.Build.Foo.dll" target="build" />
<file src="MSBuild\Acme.Build.Foo.props" target="build" />
<file src="MSBuild\Acme.Build.Foo.targets" target="build" />
</files>
Run Code Online (Sandbox Code Playgroud)
nuspec文件Acme.Build.Foo.nuspec放在.旁边Acme.Build.Foo.csproj.
如果我使用nuget pack Acme.Build.Foo.csproj,则dll文件也会打包到lib/包的文件夹中,并在将包添加到目标项目时添加为fererence.
如果我愿意nuget pack Acme.Build.Foo.nuspec,我会失去关键字扩展的细节,$id$等等.
我可以兼顾两者吗?是否有可能(1)阻止项目输出lib/.../自动进入或(2)如果没有,至少可以防止该文件被添加为消费项目的参考?
我使用的是最新的NuGet 3.2.0.10516.
我正在调试 OpenCL 应用程序的崩溃。我试图使用 asan 来确定问题的根源。但是后来我发现打开asan并重新编译后,我的应用程序找不到任何OpenCL设备。简单地添加-fsanitize=address到编译器选项使我的程序无法使用 OpenCL。
通过进一步测试,我发现内存清理器不适用于 OpenCL。
为什么会这样?如何在 OpenCL 中使用 asan?
编辑:一个最小的例子
#include <CL/cl.hpp>
#include <vector>
#include <iostream>
int main() {
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
if(platforms.size() == 0) std::cerr << "in asas\n";
else std::cout << "compiled normally\n";
}
Run Code Online (Sandbox Code Playgroud)
编辑2:
cl::Platform::getCL_SUCCESS 正常返回。获取平台的过程中没有错误。
还有一些关于我的设置的信息。
GPU:GTX 780Ti
驱动程序:418.56
OpenCL SDK:Nvidia OpenCL / POCL 1.3,带 CPU 和 CUDA 后端
编译器:GCC 8.2.1
操作系统:Arch Linux(内核 5.0.7 x64)
我有一个asnyc函数,我想在IObservable序列中的每个观察中调用,一次限制一个事件的传递.消费者希望飞行中不超过一条消息; 如果我理解正确的话,这也是RX合约.
考虑这个样本:
static void Main() {
var ob = Observable.Interval(TimeSpan.FromMilliseconds(100));
//var d = ob.Subscribe(async x => await Consume(x)); // Does not rate-limit.
var d = ob.Subscribe(x => Consume(x).Wait());
Thread.Sleep(10000);
d.Dispose();
}
static async Task<Unit> Consume(long count) {
Console.WriteLine($"Consuming {count} on thread {Thread.CurrentThread.ManagedThreadId}");
await Task.Delay(750);
Console.WriteLine($"Returning on thread {Thread.CurrentThread.ManagedThreadId}");
return Unit.Default;
}
Run Code Online (Sandbox Code Playgroud)
该Consume函数伪造750毫秒的处理时间,并ob每100毫秒产生一次事件.上面的代码有效,但调用task.Wait()随机线程.如果我在注释掉的第3行中订阅,则以与生成事件Consume相同的速率调用ob(我甚至无法理解Subscribe我在此注释语句中使用的重载,因此它可能是无意义的).
那么如何从可观察序列到async函数一次正确地传递一个事件呢?
> wevtutil.exe gp <provider-name> /ge /gm /f:xml
Run Code Online (Sandbox Code Playgroud)
打印给定提供者的清单,但其数据模板除外。我是否缺少一个可以显示已安装提供商清单中定义的模板的工具?它们必须存在于二进制 WEVT_TEMPLATE 资源中,因为Tdh* 函数似乎知道它们。
每次我在该 git 存储库中提交任何内容时,都会收到一条(显然是无害的)错误消息,其中提到了一些不再存在的文件:
$ git commit -a
error: Could not open cssrc/csgrpc/Main.cs
error: Could not open cssrc/csgrpc/Main.cs
Recorded preimage for 'cssrc/csgrpc/Main.cs'
... more 3-line groups like one above ...
[x017-upgrade a86861b] Point Audio to new location of....
1 file changed, 1 insertion(+), 1 deletion(-)
Run Code Online (Sandbox Code Playgroud)
这些文件最初是子树的一部分,用 维护git subtree -P cssrc ...,我在git subtree pull冲突期间删除了它们,因为在这个项目中不再需要它们(但之前被修改并提交,因此发生冲突)。
这些文件确实既不在索引中也不在工作树中:
$ git ls-files -cs | grep Main.cs
$ find -name 'Main.cs'
$
Run Code Online (Sandbox Code Playgroud)
该rerere.enabled选项设置为true。它是罪魁祸首吗?指向这些文件名的卡住指针存储在哪里?如何清洁?
在C#中,我写道
unsafe void Main() {
float f = 3.14f;
int i = *(int*)&f;
}
Run Code Online (Sandbox Code Playgroud)
是否可以将此代码转换为F#?
我的理解是指针是由nativeptr<'a>类型表示的,但我对于我的生活我找不到相当于地址引用&和指针解引用的*运算符.我怀疑 NativePtr.get可能是后者,但它的实现逃脱了我,因为我不太了解IL.
我知道BitConverter和Marshal,但我正在寻找一种方法来实现位修改而不复制内存.
简介:我使用Git for Windows 2.5.1对Kerbesized Git服务器进行身份验证.当我在表单中使用URL时https://el2-gitlab.sa.c/kkm/GrammarTools.git,Git甚至不会尝试协商身份验证,并要求输入用户名和密码.强制Git使用SPNEGO的一个工作是在URL本身中提供空的用户名和密码,如https://:@el2-gitlab.sa.c/kkm/GrammarTools.git.在这种情况下,Git愉快地使用现有的Kerberos票证进行身份验证.
我是否可以配置Git来尝试SPNEGO而无需调整远程URL?
更多细节.我花了很多时间试图解决问题.首先,我尝试在.gitconfig中提供一个空的用户名,但无济于事:
[credential "https://el2-gitlab.sa.c"]
username = ''
Run Code Online (Sandbox Code Playgroud)
我没有遇到过关于反向问题的问题,当Git在尝试和未通过协商后拒绝恢复为Basic时,但确认行为在2.3.1中已经改变.
使用空用户名和密码响应提示没有帮助,这与我在SO上可以找到的一些建议相反(但它们可能是2.3.1版之前的日期).
最后,详细的libcurl输出(这里删节)显示Git确实尝试了基本身份验证并完全放弃了Negotiate:
$ export GIT_CURL_VERBOSE=1
$ git clone https://el2-gitlab.sa.c/kkm/GrammarTools.git kerbtest
Cloning into 'kerbtest'...
* Couldn't find host el2-gitlab.sa.c in the _netrc file; using defaults
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
> GET /kkm/GrammarTools.git/info/refs?service=git-upload-pack HTTP/1.1
Host: el2-gitlab.sa.c
User-Agent: git/2.5.1.windows.1
< HTTP/1.1 401 Unauthorized
< Status: 401 Unauthorized
< Www-Authenticate: Basic realm="" …Run Code Online (Sandbox Code Playgroud) 在使用二维数组时,我尝试使用静态数组将 -1 分配给它的第一个元素:
int dp[5001][5001] = {-1}; //setting dp[0][0] to -1
int calc(int i, int j){
//Some operations are happening here which utilize dp array.
}
int main(){
cout << calc(0,0);
}
Run Code Online (Sandbox Code Playgroud)
当我将此代码片段作为在线解决方案提交时,我得到Can't compile file: Compiled file is too large [202493852 bytes].
但是,当我通过在 main() 中设置 dp 的值来尝试一下时
int dp[5001][5001];
int calc(int i, int j){
//Some operations are happening here which utilize dp array.
}
int main(){
dp[0][0] = -1;
cout << calc(0,0);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码片段被成功接受并编译。
有人可以解释为什么会这样吗?
我在头文件中声明了一个测试类,并在一个单独的文件中定义.该类必须在Windows下进行不同的编译,所以我使用#if defined ( _WINDOWS_ ).当我编译同时包含的cpp文件时#if defined ( _WINDOWS_ ),文件被编译为好像_WINDOWS_未定义符号,尽管它是在另一个文件中定义的.当我编译代码时,我收到以下错误:
错误代码:错误lnk2019未解析的外部符号public
源代码
// test.h
class Test
{
public:
#if defined (_WINDOWS_)
void printwindow();
#endif
void notwindows();
};
//test.cpp
#include "test.h"
#if defined (_WINDOWS_)
void Test::printwindow()
{
cout << "i am windows ";
}
#endif
void test::notwindows()
{
cout << " not windows " ;
}
//main.cpp
#include "windows.h"
#include "test.h"
void main()
{
test t1 ;
t1.printwindow() // OK I have declared function so my …Run Code Online (Sandbox Code Playgroud) 考虑以下存储库。它有很多团队成员的私有分支,都在refs/heads/team/命名空间下,我不想获取这些分支,但我仍然想获取所有其余的分支,包括该team命名空间之外任何可能新创建的分支。
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | wc -l
217
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | grep -v refs/heads/team/ | wc -l
32
Run Code Online (Sandbox Code Playgroud)
我正在获取fetch = +refs/heads/*:refs/remotes/golden/*,但这些私有分支只是压垮了我的refs/remote/golden命名空间,使其更难以概览,并且还需要更多空间用于本地存储库。
是否可以获取refs/heads/*但排除refs/heads/team/*?
T在create(...)下面的函数中创建实例时,我想支持类的构造函数的两个可能签名之一:
template <class ?, typename... Args>
T* create(Special* s, Args&&... args) {
T* t =
// If such a constructor exists, this:
new T(s, std::forward<Args>(args)...);
// Otherwise, this:
new T(std::forward<Args>(args)...);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些没有削减它的怪异模板结构.解析成员函数的解决方案涉及SFINAE失败的decltype成员函数,但这对构造函数来说显然不可能,因为它没有自己的签名类型.
这在C++ 11中是否可行,是否有任何库支持?