我正在阅读boost :: MPL作者的c ++模板元编程书.我是精神/凤凰图书馆的忠实粉丝.
但是我很想知道.使用c ++元编程模板是一件麻烦事.它不是用于那种用途.模板和宏都不支持循环.在模板中,您基本上必须通过递归.
据我了解,c ++编译过程大致如下:
模板元编程是对第1步和第2步的攻击,20年前被错误地发现了.
使用实际语言不是更简单吗?我的意思是一些语言可以访问c ++语法树并操纵它,以及良好的文本处理能力.
我正在考虑像twig/django这样的模板语言,以及g ++ AST的相应钩子,以及type_traits和pod类型的原生定义.
这存在吗?我在网上找不到这样的东西.它可以实现与c ++模板元编程相同的结果(以及更多),但编译速度更快,代码更清晰,更易读.
我试图在我的python代码库上运行CPD的GUI版本,但即使我将min chunk size设置为1,也不会返回重复的代码.
我的代码不是很好.
有没有人在python项目上运行CPD有任何成功?
我正在使用Win32 API来停止/启动/检查/ 更改线程状态.一般工作得很好.有时它会失败,我正试图追查原因.
我有一个线程通过以下方式强制其他线程上的上下文切换:
thread stop
fetch processor state into windows context block
read thread registers from windows context block to my own context block
write thread registers from another context block into windows context block
restart thread
Run Code Online (Sandbox Code Playgroud)
这非常好用......但......很少,上下文切换似乎失败了.(症状:我的多线程系统在执行奇怪的寄存器内容的奇怪地方时高高飘扬).
上下文控制通过以下方式完成:
if ((suspend_count=SuspendThread(WindowsThreadHandle))<0)
{ printf("TimeSlicer Suspend Thread failure");
...
}
...
Context.ContextFlags = (CONTEXT_INTEGER | CONTEXT_CONTROL | CONTEXT_FLOATING_POINT);
if (!GetThreadContext(WindowsThreadHandle,&Context))
{ printf("Context fetch failure");
...
}
call ContextSwap(&Context); // does the context swap
if (ResumeThread(WindowsThreadHandle)<0)
{ printf("Thread resume failure");
... …Run Code Online (Sandbox Code Playgroud) 我还没有进入计算机科学的正规语言领域,所以也许我的问题很愚蠢.我正在用C++编写一个简单的NMEA解析器,我必须选择:
我的第一个想法是手动构建一个简单的有限状态机,但后来我想也许我可以用更少的工作来做,甚至更有效率.我之前使用过正则表达式,但我认为NMEA正则表达式很长,应该花费很长时间来匹配它.
然后我考虑使用解析器生成器.我认为所有人都使用相同的方法:他们生成FSA.但我不知道哪个更有效率.你什么时候通常使用解析器生成器而不是正则表达式(我认为你可以在解析器生成器中编写正则表达式)?
请解释这些差异,我对理论和经验感兴趣.
我们使用MAC地址将PC识别为运行软件的许可.(不关心MAC欺骗;许可证很难获得:) PC可能有多个以太网控制器(我们也不担心没有一个以太网控制器的情况;我们在5年内没有遇到这样的机器),因此可靠地选择稳定的一个是有问题的.
我以为我们已经钉了这个但是显然没有.我们使用Microsoft SDK iphlpapi模块中的GetAdaptersInfo,然后沿着列表向下走.我们使用最后一个适配器,因为它可能是主板以太网控制器.唉,我们遇到了一个Thinkpad,看起来会改变哪个控制器是最后的,这取决于它是否停靠.
有没有办法可靠地找到系统上主板以太网控制器的MAC地址(如果存在)?对于那些有2个或更多的主板,选择其中一个稳定?[如果我知道一套是基于主板的,我可以轻松选择最低地址MAC].
我有一些PHP源代码,我正在托管公司XYZ托管.我正在使用像Zend Guard或ionCube这样的PHP加密软件来保护源不被任何人查看(系统管理员或破解系统管理员的黑客).
对完全访问系统的人(如系统管理员或破解系统管理员的黑客)解密源是多么容易/困难?我不知道加密软件是如何工作的,但我假设他们使用了一些密钥,这些密钥必须留在服务器上,因此系统管理员或黑客都可以访问.如果您在技术上了解操作方法,请不要犹豫,在答案中提供解释.
使用此类源加密是否会降低网站的速度?如果有人有第一手经验或知道有第一手经验的人;)
我对这方面的技术方面感兴趣,加密的有效性如何......以及使用它们或考虑使用它们的人的缺点
谢谢(所有有用的答案/评论已经投票)
编辑:迄今为止的答案似乎忽略了我想要了解的内容.我试图了解加密的有效性.我真的没有任何代码需要保护好坏人,以上只是一个例子,所以像开源或聘请律师这样的建议并没有真正解决我的技术好奇心...... A +对任何得到这一点的人来说
我有一个C#4.0解析器.它接受'dynamic'作为关键字作为类型.我的解析器会跳过以下形式的C#3.0程序中发现的语句:
dynamic = <exp> ;
Run Code Online (Sandbox Code Playgroud)
那么,它真的是动态关键字吗?或者它仍然可以用作任意标识符名称?(如果是这样,为什么'int'不是以同样的方式对待)?
是否有某个参考规范说明dynamic是否是关键字?最新的ECMA C#4规范甚至没有提到"动态",我在MS网站上找到的最好的是"初步规范",它说它是一个关键字,但我怀疑这只是草率的写作.
是否有(首选免费)工具可以分析方法中可能有多少种不同的组合?我目前正在重构一个有很多if/switch语句的方法,我很好奇这个方法有多少可能的不同执行方式.
假设我有一个简单的方法:
public void DoSomething(bool flag1, int value)
{
if (flag1)
{
if (value > 0)
{
Console.WriteLine("Flag1 & value > 0");
return;
}
else
{
Console.WriteLine("Flag1 & value <= 0");
return;
}
}
elseif (value > 0 and value < 10)
{
Console.WriteLine("Flag1 is false and value between 0 & 10");
return;
}
if (value < 0)
{
Console.WriteLine("Flag1 = false & value <= 0");
return;
}
elseif(value = 0)
{
Console.WriteLine("Flag1 = false & value >= 10");
return; …Run Code Online (Sandbox Code Playgroud) @property(nonatomic, retain) NSMutableArray* playerList;
Run Code Online (Sandbox Code Playgroud)
...
team.playerList = [[NSMutableArray alloc] initWithArray:self.playerList];
Run Code Online (Sandbox Code Playgroud)
这是内存泄漏吗?
那么为什么静态分析仪不能选择这个呢?
有没有办法以编程方式检查单个C source file是否有潜在危害?
我知道没有检查会产生100%的准确性 - 但至少有兴趣做一些基本的检查,如果找到一些表达式/关键字会引发一个红旗.有什么想法的想法?
注:我会检查文件是比较小的尺寸(最多的行数100S),实现所有的操作数值分析功能,在内存中.代码中不得使用外部库(math.h除外).此外,不应使用I/O(函数将与内存数组一起运行).
鉴于上述情况,我是否可以做一些程序性检查,至少尝试检测有害代码?
注意:因为我不期望任何I/O,如果代码执行I/O - 它被认为是有害的.