小编JBe*_*ley的帖子

如何在ansible playbook中只运行一个任务?

有没有办法只在ansible playbook中运行一个任务?

例如,在roles/hadoop_primary/tasks/hadoop_master.yml.我有"start hadoop job tracker services"任务.我可以运行那一项任务吗?

hadoop_master.yml文件:

---
# Playbook for  Hadoop master servers

- name: Install the namenode and jobtracker packages
  apt: name={{item}} force=yes state=latest
  with_items: 
   - hadoop-0.20-mapreduce-jobtracker
   - hadoop-hdfs-namenode
   - hadoop-doc
   - hue-plugins

- name: start hadoop jobtracker services
  service: name=hadoop-0.20-mapreduce-jobtracker state=started
  tags:
   debug
Run Code Online (Sandbox Code Playgroud)

ansible

155
推荐指数
5
解决办法
12万
查看次数

扩展python - 到swig,而不是swig或Cython

我发现了我的python代码中的瓶颈,与psycho等一起玩.然后决定为性能编写ac/c ++扩展.

在swig的帮助下,你几乎不需要关心论点等.一切正常.

现在我的问题是:swig创建了一个非常大的py文件,它在调用实际的.pyd或.so代码之前执行了很多'checkings'和'PySwigObject'.

如果你手写这个文件或者让swig这样做,你们中是否有人有任何经验可以获得更多的性能.

c c++ python swig cython

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

Visual Studio中的"多处理器编译"有什么缺点吗?

在Visual Studio for C++项目中使用"多处理器编译"选项时,我应该注意哪些缺点,副作用或其他问题?或者,用另一种方式表达问题,为什么在Visual Studio中默认关闭此选项?

c++ compilation multiprocessing visual-studio

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

std :: list :: splice和其他列表容器的复杂性

我有一些代码处理各种std :: list对象,我目前正在使用一种非常低效的方法在它们之间传输内容(我正在迭代一个列表的任意部分,并逐个将元素移动到第二个列表).我之前写过这段代码之前我才知道std :: list :: splice函数,我现在打算用我的代码替换它,例如:

list<string> list1, list2;

list1.push_back("a");
list1.push_back("b");
list1.push_back("c"); // list1: "a", "b", "c"

list<string>::iterator iterator1 = list1.begin();
iterator1++: // points to "b"

list2.push_back("x");
list2.push_back("y");
list2.push_back("z"); // list2: "x", "y", "z"

list<string>::iterator iterator2 = list2.begin();
iterator2++; // points to "y"

list1.splice(iterator1, list2, iterator2, list2.end());

// list1: "a", "y", "z", "b", "c"
// list2: "x"
Run Code Online (Sandbox Code Playgroud)

我有一个关于拼接功能复杂性的问题.根据这个消息来源:

http://www.cplusplus.com/reference/stl/list/splice/

它应该在拼接的第一个和最后一个元素之间的范围内具有线性复杂度(在我的示例中为iterator2和list2.end()),并且源表明这是因为迭代器前进.我可以忍受这个,但我一直希望不断复杂.

我的假设(在我找到此源之前)是splice函数执行如下操作:

  1. 切断"x"和"y"之间的链接
  2. 切断"z"和list2.end()之间的链接
  3. 形成"x"和list2.end()之间的链接
  4. 断开"a"和"b"之间的联系
  5. 形成"a"和"y"之间的联系
  6. 在"y"和"b"之间形成一个链接

从而恢复两个列表以完成链.

然后,相同的原则将适用于任意大小的列表.我不确定我看到哪里需要splice函数来推进任何迭代器,因为我为它提供了完成它所需要的所有迭代器.

所以我的问题是,C++规范如何解决这个问题?它是否仅在接头的起点和终点处断开并重新形成链路,还是逐个通过每个链路前进?如果是后者,那么任何其他列表容器(例如来自QT)是否提供前者?我的代码驻留在模拟程序的内部循环中,因此赋予它恒定而不是线性复杂性将是非常有价值的.

c++ qt list std

25
推荐指数
1
解决办法
4066
查看次数

对于operator ==来改变其操作数是不好的做法?

脚本

我有一个课我希望能够比较平等.这个类很大(它包含一个位图图像),我会多次比较它,所以为了提高效率,我要对数据进行哈希处理,只检查哈希是否匹配.此外,我将只比较我的对象的一小部分,所以我只是在第一次完成相等性检查时计算哈希值,然后使用存储的值进行后续调用.

class Foo
{
public:

   Foo(int data) : fooData(data), notHashed(true) {}

private:

   void calculateHash()
   {
      hash = 0; // Replace with hashing algorithm
      notHashed = false;
   }

   int getHash()
   {
      if (notHashed) calculateHash();
      return hash;
   }

   inline friend bool operator==(Foo& lhs, Foo& rhs)
   {
      if (lhs.getHash() == rhs.getHash())
      {
         return (lhs.fooData == rhs.fooData);
      }
      else return false;
   }

   int fooData;
   int hash;
   bool notHashed;
};
Run Code Online (Sandbox Code Playgroud)

背景

根据这个答案的指导,平等运算符的规范形式是:

inline bool operator==(const X& lhs, const X& rhs);

此外,操作符重载以下一般建议 …

c++ comparison equality const operator-overloading

21
推荐指数
2
解决办法
1382
查看次数

如何避免#include依赖于外部库

如果我正在创建一个带有头文件的静态库,例如:

// Myfile.h

#include "SomeHeaderFile.h" // External library

Class MyClass
{

// My code

};
Run Code Online (Sandbox Code Playgroud)

在我自己的项目中,我可以告诉编译器(在我的情况下,Visual Studio)在哪里查找SomeHeaderFile.h.但是,我不希望我的用户关注这一点 - 他们应该能够包含我的头,而不必通知他们的编译器有关SomeHeaderFile.h的位置.

这种情况通常如何处理?

c++ dependencies header-files static-libraries

15
推荐指数
1
解决办法
4854
查看次数

在Visual Studio(2005)下使用Makefile而不是Solution/Project文件

有没有人使用makefile进行Visual Studio C++构建(在VS 2005下)而不是使用项目/解决方案设置.对于我们来说,项目/解决方案的工作方式并不直观,当您尝试使用特定的编译时标志调整构建时,会导致配置爆炸.

在Unix下,很容易设置一个makefile,其默认选项被用户设置(或其他配置设置)覆盖.但是在Visual Studio中执行这些类型的操作似乎很困难.

举例来说,我们有一个项目需要为3个不同的平台构建.每个平台可能有多个配置(例如调试,发布和其他几个).我在新成立的项目中的目标之一是拥有一个可以让所有平台构建在一起的解决方案,这使得构建和测试代码更改变得更容易,因为您不必打开3个不同的解决方案来测试代码.但visual studio将需要3*(基本配置数)配置.即PC Debug,X360 Debug,PS3 Debug等

看起来makefile解决方案在这里要好得多.使用一些基本的批处理文件或脚本,可以很容易地将配置explotion保持在最低限度,并且只为我们必须执行的所有不同构建维护一小组文件.

但是,我没有在visual studio下使用makefile的经验,并且想知道其他人是否有他们可以分享的经验或问题.

谢谢.

(编辑后发现这些是C++版本)

c++ makefile visual-studio

11
推荐指数
1
解决办法
9483
查看次数

如何使用UnitTest ++运行单个测试?

如何使用UnitTest ++运行单个测试?

我正在运行UnitTest ++.我的main功能如下:

int main()
{
   printf("diamond test v0.1 %s\n\n",TIMESTAMP);
   diamond::startup();
   UnitTest::RunAllTests();
   diamond::shutdown();
   printf("press any key to continue...");
   getc(stdin);
}
Run Code Online (Sandbox Code Playgroud)

对于调试我想写一些UnitTest::RunSingleTests("MyNewUnitTest");代替的东西UnitTest::RunAllTests();.UnitTest ++是否提供了这样的功能?如果是,那么语法是什么?

c++ unittest++

11
推荐指数
2
解决办法
3505
查看次数

c ++中的:: operator规则

我认为::在访问全局范围的情况下,运算符可以是一元的.在所有其他情况下,::将被视为二元运算符,并且对于::运算符的求值规则N1::N2::N3::n等效于以下内容:

((N1::N2)::N3)::n // Error: ::n has not been declared
Run Code Online (Sandbox Code Playgroud)

但那条线不能编译.这很好奇.标准中没有关于评估的任何信息nested-name-specifier.如果评估nested-name-specified相当于qualified/unqualified-id,但在标准中的任何地方都没有这样说,那将是很自然的.那么我们可以假设a的评估nested-name-specifier是依赖于实现的吗?

c++ language-lawyer

11
推荐指数
2
解决办法
526
查看次数

LPWSTR字符串的连接

在Visual C++中,我有一个

LPWSTR mystring;
Run Code Online (Sandbox Code Playgroud)

已在代码中的其他位置定义.

我想创建一个新的LPWSTR,其中包含:

"hello " + mystring + " blablabla"        (i.e. a concatenation)
Run Code Online (Sandbox Code Playgroud)

我生气这么简单(连接)!非常感谢,我迷路了!

c++ string winapi concatenation string-concatenation

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