小编Dar*_*ook的帖子

语义记录:已添加具有相同密钥的项目

我试图使用新的语义应用程序块进行日志记录.根据MSDN,我有测试方法,用于检查EventSource

EventSourceAnalyzer.InspectAll(MyEventSource.Log);
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个测试时,我得到了错误

An item with the same key has already been added 
Run Code Online (Sandbox Code Playgroud)

通常,如果我们使用相同的事件ID,我们会收到此错误,但我为每个方法使用不同的EventID.下面是我的事件源类

EventSource(Name = "SLAB_1.1.1403.1")]
public class MyEventSource : EventSource
{
    public class Keywords
    {
        public const EventKeywords Page = (EventKeywords)1;
        public const EventKeywords DataBase = (EventKeywords)2;
        public const EventKeywords Diagnostic = (EventKeywords)4;
        public const EventKeywords Perf = (EventKeywords)8;
    }

    public class Tasks
    {
        public const EventTask Page = (EventTask)1;
        public const EventTask DBQuery = (EventTask)2;
    }

    private static MyEventSource _log = new MyEventSource();
    private MyEventSource() { } …
Run Code Online (Sandbox Code Playgroud)

logging etw event-listener

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

malloc/free in C++:为什么free不接受const void*,有更好的方法吗?

将C++ 11代码连接到一些C回调,我必须传递const char * const *,即一个字符串数组.这是我的代码的简化版本:

int main(int,char**){
  const int cnt = 10;
  const char * const * names =
    static_cast<const char * const *>(malloc( sizeof(char*) * cnt));
  //... allocating names[0], etc. coming soon ...
  the_c_function(names);
  free(names);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以我研究了如何malloc在C++中使用,但我坚持free,因为它告诉我:"从'const void*'无效转换为'void*'[-fpermissive]"

我的第一反应是"呃?你为什么关心,所有你需要做的就是释放指针." 第二反应是把它扔掉.但这会被编译器拒绝:

free( const_cast<void*>(names) );
Run Code Online (Sandbox Code Playgroud)

这也是如此:

free( static_cast<void*>(acctnames) );
Run Code Online (Sandbox Code Playgroud)

例如"从类型'const char*const*'中的static static_cast'到'void*'类型".

什么的工作是一个很好的"OLEÇ投:

free( (void*)(acctnames) );
Run Code Online (Sandbox Code Playgroud)

那是安全的,还是我在这里遗漏了什么?(valgrind告诉我"所有堆块都被释放 - 没有泄漏可能",这是一种安慰!)

PS在Linux上使用g ++ 4.8.1.

更新:解释为什么free()想要一个非常量指针在这里:无法释放C中的常量指针 (虽然我发现barak …

c c++

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

如何在nltk中创建句子的否定

我是NLTK的新手.我想创造一个句子的否定(通常是现在时).例如,是否有一个允许我转换的功能:'我跑'到'我不跑'

要么

'她跑'到'她不跑'.

我想我可以使用POS来检测动词及其前面的代词但我只是想知道是否有更简单的内置函数

python nlp nltk

5
推荐指数
2
解决办法
1287
查看次数

如何取消RestSharp同步execute()调用?

我有这一行,它执行阻塞(同步)Web服务调用,并且工作正常:

var response = client.Execute<DataRequestResponse>(request);
Run Code Online (Sandbox Code Playgroud)

(var代表IRestResponse<DataRequestResponse>)

但是,现在我希望能够取消它(来自另一个线程).(我发现了类似的问题,但我的代码必须保持同步 - 代码更改必须在此函数中保持本地化.)

我找到了CancellationTokenSource,而且ExecuteTaskAsync()需要一个CancellationToken.(见/sf/answers/1524580711/)听起来它可以完成这项工作.我得到了这段代码:

var cancellationTokenSource = new CancellationTokenSource();
var task = client.ExecuteTaskAsync(request, cancellationTokenSource.Token);
task.Wait();
var response = task.Result;
Run Code Online (Sandbox Code Playgroud)

最后一行拒绝编译,告诉我它不能进行隐式转换.所以我尝试了一个明确的演员:

IRestResponse<DataRequestResponse> response = task.Result as IRestResponse<DataRequestResponse>;
Run Code Online (Sandbox Code Playgroud)

编译,运行,然后崩溃(抛出NullReferenceException,说"对象引用未设置为对象的实例").

(顺便说一下,一旦我有了这个工作,那么cancellationTokenSource.Token当然会从主线程中传入,我也会添加一些代码来检测中止发生的时间:我将抛出异常.)

我的备份计划只是为了中止正在运行的整个线程.原油,但这实际上已经足够好了.但如果可以的话,我宁愿"正确地"做到这一点.

更多信息:

同步Execute调用在这里:https://github.com/restsharp/RestSharp/blob/master/RestSharp/RestClient.Sync.cs#L55 ,它最终调用Http.AsGet()Http.AsPost(),然后在此结束:https:// github. COM/restsharp/RestSharp/BLOB /主/ RestSharp/Http.Sync.cs#L194

换句话说,RestSharp正在使用HttpWebRequest.GetResponse.这有一个Abort功能,但是作为一个同步功能(即在请求完成之前不会返回)对我来说没什么用处!

c# mono multithreading restsharp

5
推荐指数
2
解决办法
3110
查看次数

在页面底部或HTML部分有pandoc脚注吗?

我开始在Markdown中使用内联脚注:

Some text^[an aside here]. More text.
Run Code Online (Sandbox Code Playgroud)

当我使用pandoc导出到HTML时,它们出现在整个文档的末尾,但在PDF中它们出现在页面的末尾.我更喜欢它们在页面的末尾,我想知道是否有办法在HTML中以这种方式获取它们?

我意识到页面末尾会因HTML而变得复杂; 对于我来说,结尾部分也会起作用.实际上,将它们放在PDF的部分末尾而不是页面的末尾也可能有用.(我已尝试将其---作为分节符,但脚注仍然在文档末尾.)

(我也试过制作pdf,然后pdf2html,哪种工作但是真的很难看.Pandoc似乎不支持pdf到html,我得到"无法解码字节'\ xd0'......")


(这不是重复:在Pandoc Markdown输出中生成内联而不是列表样式的脚注? 这个问题是关于从另一种格式转换 markdown格式时脚注的处理方式.)

markdown pandoc

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

如何知道 R 完成了多少个深度学习 epoch?

默认情况下,提前停止处于启用状态h2o.deeplearning()。但是,从 R 中,我如何知道它是否确实提前停止了,以及它停止了多少个纪元?我试过这个:

model = h2o.deeplearning(...) print(model)

它告诉我有关层、MSE、R2 等的信息,但没有告诉我运行了多少个 epoch。

在 Flow 上,我可以看到信息(例如,“评分历史 - 偏差”图表或评分历史表中 x 轴停止的位置)。

r h2o

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

如何最好地处理构造函数中的异常?

如何在构造中以最佳方式对待异常?

option1 - 捕获创建对象的异常:

class Account {
    function __construct($id){
        if(empty($id)){
            throw new My_Exception('id can\'t be empty');
        }

        // ...
    }
}

class a1 {
    function just($id){
    try {
        $account = new Account($id);
    }
    catch(Exception $e){
        $e->getMessage();
    }
}

class a2{
    function just($id){
    try {
        $account = new Account($id);
    }
    catch(Exception $e){
        $e->getMessage();
    }
}
Run Code Online (Sandbox Code Playgroud)

option2:在__construct中捕获异常

class Account{
    function __construct($id){
    try{
        if(empty($id)){
            throw new My_Exception('id can\'t be empty');
        }

        // ...
    }
    catch(My_Exception $e) {

    }
}
Run Code Online (Sandbox Code Playgroud)

请写下哪些情况应该使用option1,其中应该使用option2或其他更好的解决方案.

谢谢

php exception-handling exception

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

如何告诉nunit-console在Mono下使用4.0?

我在MonoDevelop下设置了一个简单的项目,可以从那里成功运行测试(*).

当我从命令行尝试nunit-console.exe时,我得到了这个:

 .../mono2/bin/Debug$ nunit-console mono2.exe
 NUnit version 2.5.10.0
 ...
 Runtime Environment - 
   OS Version: Unix 2.6.32.44
  CLR Version: 2.0.50727.1433 ( 2.10.8.1 (Debian 2.10.8.1-1~dhx1~lucid1) )

 ProcessModel: Default    DomainUsage: Single
 Execution Runtime: Default
 Unhandled Exception:
 System.ArgumentException: NUnit components for version 4.0.30319 of the CLR are not installed
 ...
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了重要的事情,请告诉我.

nunit-gui也犯了同样的错误.nunit-gui有一个从2.0切换到4.0的选项,但是当我尝试它再次给我同样的错误,所以不让我改变它.

更多细节:Ubuntu 10.04,使用http://badgerports.org/lucid.html存储库,因此Mono 2.10.8.1.

该项目根据MonoDevelop中的项目选项设置为使用"Mono/.NET 4.0".

更多信息:

/ usr/bin/nunit-console包含:

#!/bin/sh

exec /usr/bin/cli /usr/lib/nunit/nunit-console.exe "$@"
Run Code Online (Sandbox Code Playgroud)

/ usr/lib/nunit /目录包含:

   3073 2011-03-14 18:13 nunit.exe.config
   2598 2011-03-14 18:13 nunit-console.exe.config
  23040 2012-02-29 10:19 nunit-console-runner.dll
   4608 2012-02-29 …
Run Code Online (Sandbox Code Playgroud)

mono nunit c#-4.0

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

如何配置FastRWeb以使用RServer内置Web服务器

我是RServe(和FastRWeb)的新手.我安装了RServe 1.7.0,因为我想使用它的内置网络服务器.由于我已经在这台机器上运行了apache,我想在自定义端口上运行RServe/FastRWeb.

我做了cd /usr/local/lib/R/site-library/FastRWeb;sudo ./install.sh,创建了/ var/FastRWeb /目录树.

我没有看到任何提到端口的配置文件.默认的/var/FastRWeb/code/rserve.conf如下所示:

socket /var/FastRWeb/socket
sockmod 0666
source /var/FastRWeb/code/rserve.R
control enable
Run Code Online (Sandbox Code Playgroud)

我猜这意味着它默认使用unix套接字?所以我认为我的问题是我究竟需要将该文件放入(并从中移除),比如让它在TCP端口8888上监听?还有什么我需要做的吗?(我希望能够从其他机器连接,而不仅仅是localhost.)

可能相关的是,我看过/var/FastRWeb/web/index.html并且它包含将要连接的javascript是/cgi-bin/R/特定于使用Apache时的路径,还是它会好起来的,原样,什么时候使用RServe?

r rserve

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

什么是相当于"中"的git漂亮格式?(或者:为什么%s中没有LF)

我试图找出git log --pretty=format:...默认git log行为的等价物.我可以发现默认值是"中等",但无法跟踪对应的相当格式的字符串(这样我就可以复制它的一部分).

我真正的问题是为什么%s将提交消息作为单行提供给我,吞下所有换行符(否则就是完整的消息).而默认git log行为不仅保留换行符,而且还给它一个很好的缩进.我正在试验的完整命令是:

git log --all --pretty=format:\"%h %cd%d%+s\" --name-status --date=local
Run Code Online (Sandbox Code Playgroud)

(%s并且%+s与提交消息中的换行符相同)

(git版本1.9.1)

git

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