小编Ham*_*jan的帖子

我希望我的Python脚本检测版本,并​​在不匹配的情况下优雅地退出

我想让它尽可能通用 - 例如尽可能多地处理.

由于版本3不向后兼容版本2,我想确保使用正确的打印语句.

如果您有任何疑问,请随时告诉我,并根据可用的(例如图书馆)分享与动态逻辑有关的相关知识.

假设我有一个脚本只能在版本1.x,或2.x或3.x下运行.

或者需要库A或库B的脚本.

谢谢!

编辑:

现在......当谈到Python(不像.Net)时,一些像SciPy,Google App Engine这样的库会让你紧紧抓住特定的版本.在Linux,Mac Os上,您可以在命令行上切换不同的Python安装.这就是我想避免混淆的原因 - 我想记住哪个脚本适用于哪个版本的Python以及它需要哪些库.我宁愿让它以人类可读的方式失败.

python version

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

如何使用StyleCop或VS2010检测重新抛出C#异常的坏方法?

我的同事经验丰富的C++黑客转而使用.Net.他们无意中犯的一个错误就是编写如下代码:

catch(ArgumentExcepttion ae)
{
    // Code here logs the exception message
    // And this is supposed to re-throw the exeception
    throw ae; // as opposed to throw;
    // But, as we all know, doing this creates a new exception with a shorter stack trace.
}
Run Code Online (Sandbox Code Playgroud)

我在许多地方看到过这种情况.我真的不能想到切断堆栈跟踪会有用的情况.我认为这应该是特殊的情况值得评论.如果我错了,请纠正我.如果要切割堆栈跟踪,我认为总是做得更好:

throw new ArgumentException("text", ae /* inner exc */);
Run Code Online (Sandbox Code Playgroud)

无论如何,我想做的是检测所有这些情况并发出警告.正则表达式搜索无济于事,因为:

catch(Exception e)
{
    Exception newExc = new Exception("text", e);
    Log(newExc);
    throw newExc;
}
Run Code Online (Sandbox Code Playgroud)

我将不得不使用StyleCop之类的工具(我有4.3.3.0版本).我现在正在使用VS2008,但很快就会转向VS2010.

关于如何完成我想要的任何想法?

c# rethrow

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

最快的因子实现,64位结果

这不是家庭作业,只是我喜欢的东西.因此,直接计算因子不是很快; 记忆化可以帮助,但如果结果是装配到32或64位,则阶乘只能为输入工作0通过1220分别.所以...我们不妨使用查找表:

n   n!
0   1       
1   1       
2   2       
3   6       
4   24      
5   120     
6   720     
7   5040        
8   40320       
9   362880      
10  3628800     
11  39916800        
12  479001600       
13  6227020800  2^32=   4294967296
14  87178291200     
15  1.30767E+12     
16  2.09228E+13     
17  3.55687E+14     
18  6.40237E+15     
19  1.21645E+17     
20  2.4329E+18      
        2^64=   1.84467E+19
Run Code Online (Sandbox Code Playgroud)

因此,假设我想要一个使用内联汇编的内联C++阶乘函数,结果需要32位或64位无符号整数.如果输入为负或大到足以导致溢出,则输出应为0.如何在汇编中完成此操作以使其消耗最少量的循环?此代码将在64位Intel/AMD架构上运行.如果可行,我有兴趣改善最坏的情况,所以20!不应该花费更多的时间来计算0!- 希望有一种二元搜索方法.希望有一个聪明的伎俩if (n == 0 || n == 1) { return 1; }.此外,如果输出需要是32位,那么我认为汇编指令可以包含代码和数据.我的装配知识很薄弱.如果这个问题没有多大意义,请告诉我.

能够在C++中使用该函数会很好 - 使它成为一个更现实的问题.例如,如果调用函数是昂贵的,那么尝试在程序集的主体中保存1-2个时钟周期将无济于事.

c++ assembly x86-64 factorial inline-assembly

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

如何将用户从控制台的输入读入 Unicode 字符串?

C++初学者的问题。这是我目前所拥有的:

// From tchar.h
#define _T(x)       __T(x)

...

// From tchar.h
#define __T(x)      L ## x

...

// In MySampleCode.h
#ifdef _UNICODE
    #define tcout wcout
#else
    #define tcout cout
#endif

...

// In MySampleCode.cpp
CAtlString strFileName;
if (bIsInteractiveMode)
{
char* cFileName = new char[513];
tcout << endl;
tcout << _T("Enter the path to a file that you would like to XYZ(purpose obfuscated) ") << endl;
tcout << _T(">>> ");            
cin.getline(cFileName, 512);
strFileName = cXmlFileName;
}

// Demonstrates how CAtlString can …
Run Code Online (Sandbox Code Playgroud)

c++ string unicode atl utf-16

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

Clojure与F#中的符号数学计算

我遇到了下面的F#样本,发现它很有趣.

http://www.codeproject.com/KB/net-languages/SymbolicCalcInFS.aspx

Clojure是否有语言/图书馆设施可以轻松完成这样的事情?如果使事情变得更容易,可以强制使用波兰表示法来表示公式.

谢谢,如果有问题请告诉我.

f# clojure symbolic-math

4
推荐指数
3
解决办法
2050
查看次数

什么时候在.Net代码中手动实习字符串是个好主意?

参考资料如下:http: //msdn.microsoft.com/en-us/library/system.string.intern.aspx

看起来这是由编译器自动完成的,但也可以手动完成.如果我错了,请纠正我,并对此有所了解.语言是C#,VB.Net,C++/CLI,还是其他?

谢谢.

.net premature-optimization string-interning

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

在C#bool?x =真; if(x == true)看起来很尴尬

bool? x = true;
if (x == true)
Run Code Online (Sandbox Code Playgroud)

看起来很尴尬.

但有时这正是所需要的.

有没有更好的办法?

编辑:

谢谢大家的尝试,但到目前为止,我还没有找到一种能够击败原版的方法.我想我只需要处理尴尬,或者评论一下.

c#-4.0

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

在C++中检查Null指针的首选方法是什么?

选项A:

if (NULL == pSomethingColumn) // Yes, we use Yoda conditions
if (NULL != pSomethingColumn)
Run Code Online (Sandbox Code Playgroud)

要么

if (pSomethingColumn)
if (!pSomethingColumn)
Run Code Online (Sandbox Code Playgroud)

我正在寻找解释推理的参考资料.

我听说有人说从技术上讲NULL不一定要定义为0,而是来吧!如果是这种情况,那么吸盘(我们的应用程序)会以-2147483648不同的方式崩溃.

那么,如果NULL != 0,那么我们将遇到大问题.

请帮我解决一个毫无意义的语法辩论.我对这两种方式都不是特别关注; 只是寻找官方的方式.谢谢.

PS我们正在使用Visual Studio C++编译器.

c++ null pointers coding-style

3
推荐指数
2
解决办法
867
查看次数

如何使用可读/可写的本地XML设置?

我在这里找到了类似于我需要的东西:http: //www.codeproject.com/KB/cs/PropertiesSettings.aspx 但它并不适合我.用户设置存储在一些遥远的位置,例如C:\documents and settings\[username]\local settings\application data\[your application],但我无法访问这些文件夹,我无法将设置文件从一台计算机复制到另一台计算机,或者完全删除该文件.此外,在应用程序旁边设置xml文件并复制/发送两者都非常方便.这用于演示软件(这是一种合法的编码任务类型),将由该领域的非技术人员使用.我需要快速完成这个,所以我需要重用一些现有的库而不是自己编写.我需要使它易于使用和便携.我想要的最后一件事就是在午夜接到一个电话,说明当我通过我将建立的设置对话框进行编辑时,设置不会持续存在.

因此,用户设置存储上帝知道在哪里,并且应用程序设置是只读的(不去).还有什么我可以做的吗?我认为app.config文件有多个用途,我想我曾经看到它按照我想要的方式使用,我只是找不到链接.

如果有什么不清楚,请告诉我.

c# xml settings .net-4.0 rapid-prototyping

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

如何使用C#在word 2007文档中的特定坐标处插入图片/文本标签?

我可以这样做,在默认位置插入图片和文字:

        private static object objTrue = true;
        private static object objFalse = false;
        private static object objMissing = Missing.Value;
        private static object objEndOfDoc = @"\endofdoc"; // \endofdoc is a predefined bookmark.

        ...

        this.WordApp = new Word.Application();
        this.WordDoc = new Word.Document();
        this.WordApp.Visible = true;
        this.WordDoc = this.WordApp.Documents.Add(ref objMissing, ref objMissing, ref objMissing, ref objMissing);

        this.WordDoc.Content.InlineShapes.AddPicture(
        FileName: @"C:\MyLogo.png",
        LinkToFile: ref objMissing,
        SaveWithDocument: ref objTrue,
        Range: objMissing);

        // Insert a paragraph at the beginning of the document.
        var paragraph1 = this.WordDoc.Content.Paragraphs.Add(ref objMissing);
        paragraph1.Range.Text …
Run Code Online (Sandbox Code Playgroud)

c# ms-word css-position .net-4.0 office-interop

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