小编kkm*_*kkm的帖子

我可以在功能上连接数字和字符串吗?

我试图创建一个在字符串中嵌入数字的纯函数.明显的连接方法不起作用:

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)

是否有一种干净,实用的方式来连接数字和字符串?我想避免编写自己的连接或转换函数,但如果必须,我会.

functional-programming casting d concatenation phobos

6
推荐指数
1
解决办法
215
查看次数

是否有一个打包的运行时可重新分发FSharp.Core 4.3.0.0?

在我们的环境中,我们有一个服务器场,每个服务器都运行许多任务.使用内部调度系统部署任务二进制包(并运行任务).

当引入对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的副本.

f# f#-3.0

6
推荐指数
1
解决办法
2439
查看次数

打包仅构建工具包

我正在构建一个仅包含构建工具的包: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.

nuget

6
推荐指数
1
解决办法
277
查看次数

使用 Address Sanitizer 编译主机应用程序时可使用 OpenCL

我正在调试 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)

c++ debugging opencl address-sanitizer

6
推荐指数
1
解决办法
208
查看次数

使用异步函数订阅可观察序列

我有一个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函数一次正确地传递一个事件呢?

c# system.reactive async-await

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

是否有工具可以转储/显示提供商清单中定义的事件数据模板?

> wevtutil.exe gp <provider-name> /ge /gm /f:xml
Run Code Online (Sandbox Code Playgroud)

打印给定提供者的清单,但其数据模板除外。我是否缺少一个可以显示已安装提供商清单中定义的模板的工具?它们必须存在于二进制 WEVT_TEMPLATE 资源中,因为Tdh* 函数似乎知道它们。

etw

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

git commit 错误信息:无法打开(以前删除的源文件)

每次我在该 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。它是罪魁祸首吗?指向这些文件名的卡住指针存储在哪里?如何清洁?

git

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

F#是否具有地址和&指针解除引用*功能?

在C#中,我写道

unsafe void Main() {
  float f = 3.14f;
  int i = *(int*)&f;
}
Run Code Online (Sandbox Code Playgroud)

是否可以将此代码转换为F#?

我的理解是指针是由nativeptr<'a>类型表示的,但我对于我的生活我找不到相当于地址引用&和指针解引用的*运算符.我怀疑 NativePtr.get可能是后者,但它的实现逃脱了我,因为我不太了解IL.

我知道BitConverterMarshal,但我正在寻找一种方法来实现位修改而不复制内存.

f# pointers unsafe inline byref

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

如何强制Git(2.5+)HTTP传输更喜欢SPNEGO而不是基本身份验证?

简介:我使用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)

git libcurl http-authentication spnego

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

编译文件过大[202493852字节]在线提交错误

在使用二维数组时,我尝试使用静态数组将 -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)

上面的代码片段被成功接受并编译。

有人可以解释为什么会这样吗?

c++

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

编译时符号是#defined但#ifdef没有看到它

我在头文件中声明了一个测试类,并在一个单独的文件中定义.该类必须在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)

c++

2
推荐指数
1
解决办法
507
查看次数

忽略 git refspec 中的单个命名空间

考虑以下存储库。它有很多团队成员的私有分支,都在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/*

git git-refspec

2
推荐指数
1
解决办法
1147
查看次数

如何在工厂函数中解析构造函数签名

Tcreate(...)下面的函数中创建实例时,我想支持类的构造函数的两个可能签名之一:

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中是否可行,是否有任何库支持?

c++ sfinae c++11

2
推荐指数
1
解决办法
77
查看次数