我试图找出做我认为很容易的最佳方法.我有一个名为Line的数据库模型,它代表发票中的一行.
看起来大致如此:
public partial class Line
{
public Int32 Id { get; set; }
public Invoice Invoice { get; set; }
public String Name { get; set; }
public String Description { get; set; }
public Decimal Price { get; set; }
public Int32 Quantity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
此类是从db模型生成的.
我有另一个类,增加了一个属性:
public partial class Line
{
public Decimal Total
{
get
{
return this.Price * this.Quantity
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,从我的客户控制器,我想做这样的事情:
var invoices = ( from c in _repository.Customers
where …Run Code Online (Sandbox Code Playgroud) 也许我没有正确地思考这个问题.我正在使用单元测试开始我的第二个项目.我的第一个项目是我自己编写的,对于这个项目,我正在尝试Boost :: test.
我的问题是,编译成可执行文件的单元测试项目的正确程序是什么?似乎我看到的所有东西都是库和依赖项.我希望我的exe项目能够进行单元测试,但是我不希望在二进制文件中出现一堆单元测试函数,我也不想做
#ifdef _DEBUG
BOOST_AUTO_TEST_CASE( my_func )
{
}
#endif
Run Code Online (Sandbox Code Playgroud)
围绕我的所有测试.
我考虑过为单元测试创建一个单独的项目,但这并不适用于可执行文件..除非我想做一些花哨的预构建操作从我的其他项目复制到测试项目中.
有什么想法或想法吗?
我试图在Windows上使用plink作为ssh替代品,但我发现当plink连接到远程linux机器时,它不会提供.bash_profile或.bashrc.
我应该创建一个不同的点文件吗?还是有其他选择吗?
例如,我的bashrc文件在我的路径中添加了一个目录.这个目录包含我想要使用的额外程序,一个是python.
这不起作用:
plink host python
Run Code Online (Sandbox Code Playgroud)
这将是:
plink host "source .bashrc;python"
Run Code Online (Sandbox Code Playgroud)
当我在没有命令参数的情况下使用plink时,它会输出.bash_profile并且一切正常,但看起来只需发送命令plink就不会获取任何一个文件.
有解决方法吗?
我很确定python脚本可以在所有三个中运行,但我想确定.我已经在这里和那里阅读过可以编写CPython,Jython,IronPython的编辑,我希望我能够深入了解这一区别.
我的情况是我有3种不同的api,我想测试.每个api执行相同的功能代码,但它们在实现上是不同的.我正在为每种语言的api编写包装器.每个包装器都应该使用Boost :: python,Jython和IronPython向python公开完全相同的功能和实现.
我的问题是,使用这些公开的方法编写的python脚本(每种语言都很常见)是否适用于Python的所有三种"风格"?
就像我说的那样,我很确定答案是'当然',但我需要确保在花费太多时间进行研究之前.
我有一个用C语言编写的库,我有两个用C++和C编写的应用程序.这个库是一个通信库,所以其中一个API调用如下所示:
int source_send( source_t* source, const char* data );
Run Code Online (Sandbox Code Playgroud)
在C应用程序中,代码执行以下操作:
source_t* source = source_create();
for( int i = 0; i < count; ++i )
source_send( source, "test" );
Run Code Online (Sandbox Code Playgroud)
C++应用程序执行此操作的位置:
struct Source
{
Source()
{
_source = source_create();
}
bool send( const std::string& data )
{
source_send( _source, data.c_str() );
}
source_t* _source;
};
int main()
{
Source* source = new Source();
for( int i = 0; i < count; ++i )
source->send( "test" );
}
Run Code Online (Sandbox Code Playgroud)
在英特尔酷睿i7上,C++代码每秒产生的消息几乎增加了50%.而在英特尔酷睿2双核处理器上,它每秒产生的消息数量几乎完全相同.(核心i7有4个核心,每个核心有2个处理线程)
我很好奇硬件执行什么样的魔术才能解决这个问题.我有一些理论,但我想我会得到一个真正的答案:)
编辑:评论中的其他信息
编译器是visual C++,所以这是一个windows …
我有一个使用boost python导出到Python的方法,它将boost :: function作为参数.
从我所读的boost :: python应该支持boost :: function没有太大惊小怪,但是当我尝试用python方法调用该函数时它给了我这个错误
Boost.Python.ArgumentError: Python argument types in
Class.createTimer(Class, int, method, bool)
did not match C++ signature:
createTimer(class Class {lvalue}, unsigned long interval,
class boost::function<bool _cdecl(void)> function, bool recurring=False)
Run Code Online (Sandbox Code Playgroud)
我用这段代码从python中调用它
self.__class.createTimer( 3, test.timerFunc, False )
Run Code Online (Sandbox Code Playgroud)
在C++中,它被定义为
boost::int32_t createTimer( boost::uint32_t interval, boost::function< bool() > function, bool recurring = false );
Run Code Online (Sandbox Code Playgroud)
这里的目标是一个计时器类,我可以做类似的事情
class->createTimer( 3, boost::bind( &funcWithArgs, arg1, arg2 ) )
Run Code Online (Sandbox Code Playgroud)
创建一个执行funcWithArgs的计时器.感谢boost bind,这几乎适用于任何函数或方法.
那么我需要使用什么语法让boost :: python接受我的python函数作为boost :: function?
我正在研究C#日志记录,如果消息低于日志记录阈值,我不希望我的日志消息花费任何时间进行处理.我可以看到log4net最好的是在评估日志参数后进行阈值检查.
例:
_logger.Debug( "My complicated log message " + thisFunctionTakesALongTime() + " will take a long time" )
Run Code Online (Sandbox Code Playgroud)
即使阈值高于Debug,仍将评估thisFunctionTakesALongTime.
在log4net中,您应该使用_logger.isDebugEnabled,以便最终得到
if( _logger.isDebugEnabled )
_logger.Debug( "Much faster" )
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的.net日志记录解决方案,每次我想记录时都不需要检查.
在C++中,我被允许这样做
LOG_DEBUG( "My complicated log message " + thisFunctionTakesALongTime() + " will take no time" )
Run Code Online (Sandbox Code Playgroud)
因为我的LOG_DEBUG宏执行日志级别检查.这让我在整个应用程序中都有一行日志消息,我更喜欢这个消息.有人知道在C#中复制这种行为的方法吗?
是否有内置的linux实用程序,我可以用来测试新编译的共享库以获取外部未定义的引用?Gcc似乎足够聪明,可以在我自己的二进制文件中检查未定义的符号,但如果符号是对另一个库的引用,则gcc不会在链接时检查.相反,当我尝试从另一个程序链接到我的新库时,我只收到消息.
当我编译一个不同的项目时,在库中获取未定义的引用消息似乎有点愚蠢,所以我想知道在构建库时是否可以检查内部和外部的所有引用,而不是在链接到它时.
示例错误:
make -C UnitTests debug
make[1]: Entering directory `~/projects/Foo/UnitTests`
g++ [ tons of objects ] -L../libbar/bin -lbar -o UnitTests
libbar.so: undefined reference to `DoSomethingFromAnotherLibrary`
collect2: ld returned 1 exit status
make[1]: *** [~/projects/Foo/UnitTests] Error 1
Run Code Online (Sandbox Code Playgroud) Boost带有一个示例文件
boost_1_41_0\libs\function_types\example
叫interpreter.hpp和interpreter_example.hpp
我试图创建一种情况,我有一堆不同的参数,返回类型等函数所有寄存器并记录到一个位置.然后有能力拉出一个函数并用一些参数执行它.
在这里阅读了几个问题之后,从其他几个问题来看,我认为在这个示例文件中实现的设计与我能够获得的一样好.它需要任何类型的函数,并允许您使用字符串参数列表调用它,该列表被解析为正确的数据类型.基本上它是一个控制台命令解释器,这可能是它的意思.
我一直在研究代码并试图获得相同的实现来接受类成员函数,但到目前为止都没有成功.我想知道是否有人可以建议所需的修改,或者可能在类似的东西上工作并且有相同的代码.
在示例中,您将看到
interpreter.register_function("echo", & echo);
interpreter.register_function("add", & add);
interpreter.register_function("repeat", & repeat);
Run Code Online (Sandbox Code Playgroud)
我想做点什么
test x;
interpreter.register_function("classFunc", boost::bind( &test::classFunc, &x ) );
Run Code Online (Sandbox Code Playgroud)
但这打破了任意数量的论点特征.所以我在想某种自动生成boost :: bind(&test :: classFunc,&x,_1,_2,_3 ......)就是票,我只是不确定实现它的最佳方法.
谢谢
在我工作的地方,我们构建和分发了一个库和一些基于该库构建的复杂程序.所有代码都是用C语言编写的,并且可以在大多数"标准"系统上使用,如Windows,Linux,Aix,Solaris,Darwin.
我从QA部门开始,在最近运行测试时,我已多次提醒我需要记住设置文件描述符限制和默认堆栈大小更高或坏事情将发生.Solaris和现在的Darwin尤其如此.
现在这对我来说非常奇怪,因为我是一个相信0所需的环境,摆弄产品.所以我想知道是否有时候这种要求是必要的邪恶,或者我们做错了什么.
编辑:
描述问题和一些背景的好评.但是我不相信我的问题已经足够好了.目前,我们要求客户以及测试人员在运行我们的代码之前设置这些限制.我们不是以编程方式执行此操作.并且这不是他们可能用完的情况,在正常负载下我们的程序会耗尽并且出现故障.重新提出这个问题,是否要求客户更改这些ulimit值以在某些平台上运行我们的软件,即Solaris,Aix,还是我们作为一家公司让这些用户难以开始?
Bounty:我添加了一笔赏金,希望能够获得更多关于其他公司正在采取哪些措施来管理这些限制的信息.你能用实际设置吗?我们应该吗?我们的计划是否应该达到这些限制,或者这可能是一个迹象表明事情可能有点凌乱?这真的是我想要知道的,作为一个完美主义者,一个看似肮脏的程序真的让我感到困惑.
c++ ×5
boost ×3
boost-python ×2
c ×2
c# ×2
linux ×2
python ×2
asp.net-mvc ×1
cpu ×1
hardware ×1
ironpython ×1
jython ×1
linker ×1
linq ×1
logging ×1
performance ×1
plink ×1
ssh ×1
testing ×1
unit-testing ×1
windows ×1