小编use*_*783的帖子

C++显式构造函数和迭代器

请考虑以下代码:

#include <vector>

struct A
{
    explicit A(int i_) : i(i_) {}
    int i;
};

int main()
{
    std::vector<int> ints;
    std::vector<A> As(ints.begin(), ints.end());
}
Run Code Online (Sandbox Code Playgroud)

上面应该编译吗?由于构造函数被标记,我的感觉是它不应该explicit.

Microsoft Visual C++同意,给出一个明确的错误消息: cannot convert from 'int' to 'const A'; Constructor for struct 'A' is declared 'explicit'

但是,使用Comeau的在线编译器,代码编译成功.

哪个是对的?

编辑:

有趣的是,更改vectorset(在添加operator <到A之后)会导致两个编译器都出错.

然而,改变vector<int>map<int, int>vector<A>map<A, A>原因两种编译器接受代码!

c++ constructor iterator explicit

7
推荐指数
1
解决办法
3733
查看次数

Windows应用程序中的日志记录(跟踪)准则

我认为有两种不同类型的日志记录:

  • 以用户为中心的日志,例如我的反病毒产生的日志("已开始扫描","未发现威胁"等)
  • 以开发人员为中心的跟踪,可以像异常日志一样简单,也可以像每个方法调用的日志一样详细

我目前正在计划如何将第二种类型的日志记录合并到我们的应用程序中,以便我们能够记录用户报告问题时出现的问题.我已经看过几个关于这些痕迹应该如何详细和可用框架的讨论,但在这里我正在寻找一些更一般的指导方针.

我的具体问题包括:

  • 我们应该记录到文件,Windows事件日志还是其他地方?对于这些可能对用户不感兴趣的以开发人员为中心的日志,我觉得文件最合适.但在那种情况下:

    • 文件应该放在哪里?
    • 我们应该实现某种形式的日志轮换以防止文件过大?
    • 我们如何处理同时访问日志的应用程序的多个实例?

  • 该跟踪是否应该默认打开?如果是的话,我有点担心表现; 但如果不是,我们是否会以"开启跟踪并尝试重现问题"来回应许多用户的问题?这听起来不太有用.

我希望你能帮我解决这些问题.我也非常感谢您对此主题的任何其他建议.

windows logging trace

7
推荐指数
1
解决办法
4878
查看次数

正在使用"Windows事件跟踪"事件

这个问题的答案让我开始考虑使用"Windows事件跟踪"来满足我们的跟踪需求.我遇到过NTrace,这似乎是从C#代码生成ETW事件的好方法(使用与XP兼容的"经典提供者"模型).

但是,我无法找到一种简单的方法来使用这些事件 - 实时查看它们和/或将它们记录到文件中.我找到的唯一方法是在NTrace文档中描述:使用仅作为Windows DDK的一部分提供的工具.

在现场复杂问题的情况下,我们可能需要让用户生成包含跟踪的文件.我们不能要求用户下载DDK或执行一些复杂的操作才能执行此操作.

是否有一种直接,用户友好的方式将ETW事件记录到文件中?

此外,如果某人没有以管理员身份运行,是否可以在Windows Vista/7上使用ETW事件?

windows logging trace etw

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

打包命令行应用程序以进行分发?

我目前正在用Python编写命令行应用程序,需要以最易于下载和运行的方式向最终用户提供.对于那些可能没有安装Python(2.7)的Windows用户,我打算使用PyInstaller来生成一个独立的Windows可执行文件.然后用户可以简单地下载"myapp.exe"并运行myapp.exe [ARGUMENTS].

我还想为已安装Python的用户(在各种平台上)提供(较小的)下载.一种选择是将我的所有代码放入单个.py文件"myapp.py"(以...开头#! /usr/bin/env python),并使其可用.这可以下载,然后使用myapp.py [ARGUMENTS]或运行python myapp.py [ARGUMENTS].但是,将我的应用程序限制为单个.py文件有几个缺点,包括限制我组织代码的能力以及难以使用第三方依赖项.

相反,我想分发我自己的代码的几个文件的内容,以及一些(纯Python)依赖项.是否有任何工具可以将所有这些打包成一个文件,可以使用现有的Python安装轻松下载和运行?

编辑:请注意,我需要这些应用程序以便最终用户运行.它们不太可能已经pip安装,也没有其他任何超出Python核心的东西.使用PyInstaller,我可以生成一个文件,这些用户可以从Web下载并使用一个命令运行(或者,如果没有参数,只需双击).有没有办法在不使用PyInstaller的情况下实现这种易用性(即没有冗余地捆绑Python运行时)?

python packaging software-distribution

7
推荐指数
2
解决办法
1379
查看次数

Python源文件中的函数顺序

在诸如C和C++之类的语言中,通常在其调用者之上定义被调用函数,以避免需要前向声明.例如:

void g() { ... }

void f() { g(); ... }

int main() { f(); ... }
Run Code Online (Sandbox Code Playgroud)

在Python中,如果

if __name__ == '__main__': 
    main() 
Run Code Online (Sandbox Code Playgroud)

idiom用在源文件的末尾,前向声明是不必要的,函数的顺序无关紧要.

Python源文件中的函数顺序是否有任何约定?调用函数仍然通常写在调用者之上,反之亦然?

编辑:答案是关于功能顺序没有约定(例如,PEP 8中没有任何内容).甚至标准库中的模块也不一致.

python coding-style

7
推荐指数
2
解决办法
2990
查看次数

如何在存在异常的情况下稳健地调用第三方代码?

在使用异常信号错误的语言中,我想调用一些第三方代码,如果失败,则运行后备代码.例如:

try:
    result = third_party.fast_calculation()
catch:
    result = slower_calculation()
Run Code Online (Sandbox Code Playgroud)

根据我的经验,很少知道第三方代码可能抛出的所有异常.因此,我不能在catch条款中列出这些例外情况.另一方面,我经常被告知不要catch每一个可能的例外.

catch在这种情况下我该如何写条款?

language-agnostic exception-handling exception robustness

7
推荐指数
1
解决办法
119
查看次数

在JavaScript中,是否可以绕过setter?

我有一个o原型对象p:

var p = {}
var o = Object.create(p)
Run Code Online (Sandbox Code Playgroud)

可以向a对象添加属性o,然后向原型添加同名的setter p:

o.a = 1
Object.defineProperty(p, 'a', {set: function(value) {}});

console.log(o.a);  // 1
Run Code Online (Sandbox Code Playgroud)

但是,如果我们尝试在setter 之后添加属性,则不会将其添加到o- 而是调用setter:

Object.defineProperty(p, 'a', {set: function(value) {}});
o.a = 1

console.log(o.a);  // undefined
Run Code Online (Sandbox Code Playgroud)

是否可以先定义setter,然后绕过它以a直接添加属性o

javascript prototype getter-setter

7
推荐指数
1
解决办法
161
查看次数

使用 python 获取正在运行的 Windows 应用程序列表

我只想返回 Windows 任务管理器中“应用程序”类别下列出的那些应用程序,而不是所有正在运行的进程。下面的脚本返回我不想要的所有进程。如何根据我的要求修改此代码?

import subprocess
cmd = 'WMIC PROCESS get Caption,Commandline,Processid'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
    print(line)
Run Code Online (Sandbox Code Playgroud)

python windows subprocess

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

在Python中,为什么在使用`eval`时没有出现警告?

以下代码按预期打印警告:

>>> import warnings
>>> def f():
...     warnings.warn('Deprecated', DeprecationWarning)
...     print('In function f()')
... 
>>> f()
__main__:2: DeprecationWarning: Deprecated
In function f()
Run Code Online (Sandbox Code Playgroud)

但是,使用时eval,不会出现警告消息:

>>> eval('f()')
In function f()
Run Code Online (Sandbox Code Playgroud)

为什么在这两种情况下警告的行为有所不同?

python warnings eval

7
推荐指数
1
解决办法
185
查看次数

WPF和MVVM:在运行时更改数据绑定转换器

我在用户界面中使用WPF和MVVM模式.在我的ViewModel中,我有一个List,其中包含以毫米为单位的距离,我通过将ListView.ItemsSource绑定到List来显示在ListView中.但是,我希望显示的值使用更自然的单位 - 米或英尺,具体取决于"公制"复选框的状态.

我写了几个简单的类,MillimetresToMetresConverter和MillimetresToFeetConverter,它们都实现了IValueConverter.虽然我可以将我的数据绑定上的Converter属性设置为一个或另一个,但我不确定当复选框的状态发生变化时如何在这些转换器之间进行更改.

我的计划是在我的ViewModel上有一个字段"IValueConverter lengthConverter",我可以设置为一个转换器或另一个,然后在我的XAML中...="{Binding Converter={Binding Path=lengthConverter}}"- 遗憾的是这不起作用,因为Converter不是依赖属性.

如何在运行时更改数据绑定使用的转换器?

data-binding wpf mvvm ivalueconverter

6
推荐指数
2
解决办法
3642
查看次数