Articles of 模板

厨师模板 – 有条件地插入一段文字

有了厨师,只有满足条件,才有办法从模板中插入文本块? 假设我们有一个属性: node["webapp"]["run"] = "true" 我们只需要在sites-enabled / app.conf中的nginx.conf中input一个条目,如果这个webapp是真的,就像这样: #The nginx-webapp.conf.erb template file SOME WORKING NGINX CONFIG STUFF <% if node["webapp"]["run"]=="true" -%> location /webapp { try_files $uri @some_other_location; } <% end -%> SOME OTHER WORKING NGINX CONFIG STUFF 就目前而言,条件文本不会出错,它永远不会出现。 我仔细检查了模板可以看到节点属性,通过使用这个: <%= node["webapp"]["run"] %> 哪个DID将文本“true”插入到configuration文件中。 我在厨师和erb模板中看到。 如何使用布尔代码块 ,我可以插入看起来只是文本与节点的评估variables。 我试过改变 <% if node[:webapp][:run]=="true" -%> TEXT <% end -%> […]

如何在包含模板variables的数组上循环遍历?

我正在使用Ansible为Web服务器设置自动configuration过程。 为此,我有一个包含虚拟主机的字典的数组来设置: vhosts: – name: 'vhost1' server_name: 'domain1.com' – name: 'vhost2' server_name: 'domain2.com' 我准备了一些通用的nginx虚拟主机configuration模板: server { listen 80; server_name {{ item.server_name }}; root /home/www/{{ item.name }}/htdocs; index index.php; location / { try_files $uri $uri/ /index.php?$args; } } 最后,我使用以下任务将准备好的模板复制到目标主机: – name: Setup vhosts template: src=vhost.j2 dest=/etc/nginx/sites-available/{{ item.name }} with_items: vhosts 这些任务按预期遍历vhostvariables。 不幸的是,Ansible不会将迭代器中的当前项传递给模板,而是模板可以访问所有当前有效的variables。 有什么办法将当前项目从迭代器传递到模板?

一些显式的实例不是在G ++中生成的

我正在build立一个库,它处理几种不同types的二进制“语言”,每种语言都有一个“处理器”types。 该库build立良好,我到目前为止的范围缩小到以下模板代码: // Processor.h template <class A, class B = DefaultProcessor> class Processor { public: // Default constructor. Processor(void); // Constructor from DefaultProcessor pointer type. Processor(B* pB); virtual ~Processor(void){}; // Dereferencing operator A* operator->(void) const; private: A* pRawPointer; }; // Processor.cpp template <class A, class B> A* Processer<A, B>::operator->(void) const { if (nullptr == pRawPointer) […]

嵌套模板gcc编译器4.1.2错误

我试图创build一个模板类来隔离用户从数据types。 我会更喜欢使用适配器类,但需要更改需要模板的function签名。 在下面的代码示例(而不是实际的项目只是一个简化的版本来说明问题),而在主例程中,我可以使用ob_traits接口。 但是,当我尝试创build使用ob_traits作为基类的模板化的StructWrapper时,出现错误,而gcc无法识别创build的IntAdapter类。 这编译在MSVC 8.0上,但在gcc 4.1.2上失败20070626(Red Hat 4.1.2-14) 所以,首先两个问题,你明白为什么编译失败,下面指定的错误? 其次,如何以更简单的方式实现这个概念有什么build议? #include <iostream> template <typename T > struct ob_traits { ob_traits( T& param ) { value = param; }; T value; }; struct GeneralStructure { int a; GeneralStructure(int param):a(param){} }; struct DifferentStructure { GeneralStructure hidden; DifferentStructure( int param ):hidden(param){}; } ; /*template< typename T > […]

无法为我的LruCache类定义模板化types

#include <map> #include <list> template < typename K, typename V> class LruCache { private: typedef std::pair< K, V > EntryPair; typedef std::list< EntryPair > CacheList; typedef std::map< K, CacheList::iterator > CacheMap; public: LruCache(){} ~LruCache(){} }; 如果我尝试简单 LruCachecaching; 我收到以下编译错误: LruCache.h:17:46: error: type/value mismatch at argument 2 in template parameter list for 'template<class _Key, class _Tp, class […]

Windows到Linux端口c ++错误

我正在将一个大的c ++应用程序从Windows移植到Linux,到目前为止,我一直在解决这些问题,并用标准代码replace了Windows特定的东西。 我遇到了一个像这样开始的模板 #define IC __attribute__((inline)) template <typename object_type, typename base_type = intrusive_base> class intrusive_ptr { private: typedef base_type base_type; typedef object_type object_type; typedef intrusive_ptr<object_type, base_type> self_type; typedef const object_type* (intrusive_ptr::*unspecified_bool_type) () const; … public: IC intrusive_ptr(); IC intrusive_ptr(object_type* rhs); IC intrusive_ptr(self_type const& rhs); IC ~intrusive_ptr(); IC self_type& operator= (object_type* rhs); IC self_type& operator= (self_type […]

尝试实例化函数应该在的模板的Linux gcc挑选

我有以下代码重现我的错误: // non-namespacing this compiles as expected namespace n { template <typename T> void foo(T const & t) { t.doesnt_have_this_method(); } } template <typename T> void bar(T const & t) { // picks the template over the overload n::foo(t); } namespace n { // function overload void foo(int const &); } void n::foo(int const &) […]

模板func和非模板func呼叫顺序

在Linux中,我得到 template max() is called 但在Windows下我得到了 non-template max() is called 为什么? 在Linux中,我使用gcc 4.5,在Windows中使用VS2008。 #include <iostream> #include <vector> template < typename T > inline void max( const int& a, const T& b ) { std::cout << "template max() is called" << std::endl; } template < typename T > inline void Imax( const int& a, const std::vector<T>& […]

驱动程序模板,最小内核发行版,驱动程序社区,驱动程序的微控制器?

我是embedded式Linux驱动程序开发的新手,开发了字符,UART和简单的USB驱动程序,并与SBC(树莓派2)合作。 我的主要学习资源是:基本的Linux设备驱动程序,embedded式Linux系统devise和开发,YouTube教程和LDD3。 由于缺乏现实生活中的驾驶经验,我想分享一些问题: 模板:是否有一些驱动程序模板用于加速编码过程,例如,具有经常使用的结构和function,以针对特定驱动程序进行修改和定制。 什么是合适的最低限度分布:我现在正在做的是要么使用Buildrootbuild立一个内核映像,然后插入开发的USB驱动程序,或将开发的USB驱动程序插入Ubuntu。 为了正确testing,我必须卸载默认的USB驱动程序(usb_storage); 否则不能testing我的模块。 所以,我的问题是关于现实生活中的发展和如何获得没有驱动程序的最小内核,以及如何在使用Buildroot构build时将我的模块包含在其中(作为其一部分)? 你有什么build议embedded式Linux驱动程序开发社区的详细问答? ie未来,如果我想问低层次的细节,比如这个x结构是什么,或者我在使用这个y函数的时候遇到了这个错误….是否有专门的社区? 因为我发现的一切都是针对Linux的,对于内核黑客来说,还是没有经验。 什么是链中的错过链接? 为微控制器开发应用程序依赖于数据表,用户指南,寄存器,C等。embedded式Linux的驱动程序依赖于C,Linux API,子系统等。在大多math习资源中,我从来没有find两者之间的关系。 那么,真的有分开吗? 或者他们之间有一个错过的链接? 例如,对于这个I2C传感器http://www.robot-electronics.co.uk/htm/srf10tech.htm,我们必须对其进行操作(将hexa发送到寄存器并从寄存器接收值)。 如果我们想象我们想为它开发一个I2C驱动程序,那么我们肯定需要在驱动程序中做相同的工作,这在Essential Linux Device Drivers(第278页)中有介绍。 其背后的要点是I2C内核隐藏了许多复杂和简化的驱动程序开发过程。 但是,我认为现实生活中的情况并不是传感器,而是一个微控制器或一个复杂的设备。 那么,我们如何操作这个微控制器的寄存器和外设? 另外,我没有find这种情况下的教程!

* nix上的模板方法专业化

我有一个变体类,它使用了一些函数模板专门化来获取和设置不同的types,这些types在Visual Studio 2010中编译和运行良好。但是,这个代码位于一个通用的解决scheme中,也需要在redhat,ubuntu等上编译。 在非命名空间范围中,我收到了显式特化的错误。 我认为简单的解决方法是简单地在同一个命名空间中使用范围限定符来为类定义我的特化。 但是现在我得到了实例化之后发生的专门化的错误,因为从各种types转换的类的其他方法在类中使用此模板。 那么做什么是正确的方式是这样的: namespace Example { class CSomeVariant { public: bool toString(std::string& out) { return get(out); } private: template <typename T> bool get(T& val) { try { val = boost::any_cast<T>(m_stored); } catch (…) { return false; } return true; } boost::any m_stored; }; template<> bool CSomeVariant::get(std::string& val) { try { if […]