(编辑:基于@Michael反馈的问题更准确)
在bash中,我经常使用参数扩展:以下命令default value在$VARNAME未设置时打印" " ,否则打印VARNAME内容.
echo ${VARNAME:-default value} #if VARNAME empty => print "default value"
echo ${VARNAME-default value} #if VARNAME empty => print "" (VARNAME string)
Run Code Online (Sandbox Code Playgroud)
我没有在GNU上找到类似的功能make.我终于在我写的Makefile:
VARNAME ?= "default value"
all:
echo ${VARNAME}
Run Code Online (Sandbox Code Playgroud)
但我对这个解决方案不满意:它总是创建变量VARNAME,这可能会改变某些makefile上的行为.
有没有更简单的方法来获取未设置变量的默认值?
==>查看coliru上的完整代码段和编译.
我有一个LiteralType类填充constexpr要求:
struct MyString
{
constexpr MyString(char const* p, int s) : ptr(p), sz(s) {}
constexpr char const* data() const { return ptr; }
constexpr int size() const { return sz; }
char const *ptr = 0;
int const sz = 0;
};
Run Code Online (Sandbox Code Playgroud)
我用它作为constexpr static成员变量:
struct Foo
{
int size() { return str_.size(); }
constexpr static MyString str_{"ABC",3};
};
int main()
{
Foo foo;
return ! foo.size();
}
Run Code Online (Sandbox Code Playgroud)
但链接器说:(
Clang-3.5和GCC-4.9)
undefined …Run Code Online (Sandbox Code Playgroud) 我想知道如何使用Ansible将我的SSH公钥复制到许多主机.
第一次尝试:
ansible all -i inventory -m local_action -a "ssh-copy-id {{ inventory_hostname }}" --ask-pass
Run Code Online (Sandbox Code Playgroud)
但我有错误The module local_action was not found in configured module paths.
第二次尝试使用剧本:
- hosts: all
become: no
tasks:
- local_action: command ssh-copy-id {{ inventory_hostname }}
Run Code Online (Sandbox Code Playgroud)
最后,我为每个托管主机输入了密码:
ansible all -i inventory --list-hosts | while read h ; do ssh-copy-id "$h" ; done
Run Code Online (Sandbox Code Playgroud)
在将公共SSH密钥部署到多台主机时,如何只填写一次密码?
编辑: 我已成功使用Konstantin Suvorov的答案中的以下剧本将我的SSH公钥复制到多个远程主机.
- hosts: all
tasks:
- authorized_key:
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
Run Code Online (Sandbox Code Playgroud)
user根据文档,该字段应该是强制性的,但似乎没有.因此,当与此命令行一起使用时,上述通用playbook可用于任何用户:
ansible-playbook -i …Run Code Online (Sandbox Code Playgroud) 我正在使用此curl命令行来清理我的索引:
curl -XDELETE http://example.com/my_index-*
Run Code Online (Sandbox Code Playgroud)
但是,现在,我想删除my_index-.*[.][0-3][0-9]:
my_index-YYYY.MM.ddmy_index-YYYY.MM.dd-*我发现的相关Elasticsearch文档:
删除索引API在正则表达式上没有说什么.
多个指数说:
它也支持通配符,例如:
test*或*test或te*t或*test*,并以"增加"(能力+)和"删除"(-),例如:+test*,-test3.
几乎所有具有
index参数的API都支持index参数值中的日期数学.
[...]
date_format是可选格式,应在其中呈现计算日期.默认为YYYY.MM.dd.
我的问题:
DELETEElasticsearch HTTP服务器发送请求方法以删除仅格式化的索引my_index-YYYY.MM.dd?my_index-*但保持my_index-*-*?例如,有时可以在POST数据中提供正则表达式:
curl -XPOST http://example.com/my_index-2017.07.14/_search?pretty' -H 'Content-Type: application/json' -d'
{
"suggest": {
"song-suggest" : {
"regex" : "n[ever|i]r",
"completion" : {
"field" …Run Code Online (Sandbox Code Playgroud) 我有一个3 次方项目提供了许多库(假设只有头的库).我想为这个项目编写一个CMake封装:
foo.cmakeadd_library( foo-aaa INTERFACE IMPORTED GLOBAL)
set_target_properties(foo-aaa PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/aaa/inc)
add_library( foo-bbb INTERFACE IMPORTED GLOBAL)
set_target_properties(foo-bbb PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/bbb/inc)
add_library( foo-ccc INTERFACE IMPORTED GLOBAL)
set_target_properties(foo-ccc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/ccc/inc)
add_library( foo-ddd INTERFACE IMPORTED GLOBAL)
set_target_properties(foo-ddd PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/ddd/inc)
add_library( foo-eee INTERFACE IMPORTED GLOBAL)
set_target_properties(foo-eee PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/eee/inc)
[...] And many more
# For convenience I also want to provide
# a global/dummy target depending on all above libraries
add_library( foo ????? )
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txtcmake_minimum_required(VERSION 3.1)
project(bar …Run Code Online (Sandbox Code Playgroud) 在使用解析属性时__dict__,我@staticmethod不是callable.
Python 2.7.5 (default, Aug 29 2016, 10:12:21)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import (absolute_import, division, print_function)
>>> class C(object):
... @staticmethod
... def foo():
... for name, val in C.__dict__.items():
... if name[:2] != '__':
... print(name, callable(val), type(val))
...
>>> C.foo()
foo False <type 'staticmethod'>
Run Code Online (Sandbox Code Playgroud)
我在下面提供了一个更详细的例子:
test.pyfrom __future__ import (absolute_import, division, print_function)
class …Run Code Online (Sandbox Code Playgroud) 什么是最先进的大约功能检查值是否设置与否?
例如,下面的迭代器解析单元格.一些单元格包含值,其他单元格为空.
什么是最方便的方式?
struct iterator
{ //usage:
bool isset() const // if (it.isset())
bool isSet() const // if (it.isSet())
bool empty() const // if (it.empty())
bool is_set() const // if (it.is_set())
bool is_valid() const // if (it.is_valid())
operator void*() const; // if (it)
explicit operator bool() const; // if ((bool)it) or if(it) //thanks @stijn
operator bool() const; // if (it) //why not implicit conversion?
bool operator!() const; // if (!!it)
//throwing exception as pointed out by …Run Code Online (Sandbox Code Playgroud) 什么是硬/软限制是什么意思?
核心文件大小的差异例如:
ulimit -Sc 1024对比ulimit -Hc 1024
我经常ulimit -c unlimited在运行二进制文件之前输入我的脚本.
但是,我想限制文件大小以避免磁盘已满.
然后我想知道最好的方法:
ulimit -Sc 1024 # Soft
ulimit -Hc 1024 # Hard
ulimit -c 1024 # Both
Run Code Online (Sandbox Code Playgroud)
另一个建议:价值怎么样?
ulimit -c 1024或者ulimit -c 10240还是其他什么东西?
我使用64位整数内的位存储标志.
我想知道是否有一个位设置无论64位整数内的位置(ei我不关心任何特定位的位置).
boolean isOneSingleBitSet (long integer64)
{
return ....;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Bit Twiddling Hacks(Sean Eron Anderson)计算位数,但我想知道检测单个位是否设置的最有效方法是什么...
我发现了一些其他相关的问题:
以及一些维基百科页面:
注意:我的应用程序是在java中,但我很好奇使用其他语言的优化...
编辑:琉永福指出我的问题在我的第一个链接已经得到了答案:请参见如果一个整数是2的幂确定的位操作黑客(肖恩·安德森玉龙).我没有意识到单个位与2的幂相同.
我已经尝试了几个小时来编写一个派生自的类boost::variant.但我不明白是什么问题(我不明白编译错误意味着什么).
实现干净boost::variant派生类的规则是什么?
#include <boost/variant.hpp>
class MyVariant : public boost::variant<char,bool>
{
public:
MyVariant () : boost::variant<char,bool>( ) {}
template <typename T>
MyVariant( T& v) : boost::variant<char,bool>(v) {}
template <typename T>
MyVariant(const T& v) : boost::variant<char,bool>(v) {}
};
int main ()
{
MyVariant a;
MyVariant b = a; //compilation error
// MyVariant c = MyVariant();
// MyVariant d (true);
// MyVariant e ('E');
}
Run Code Online (Sandbox Code Playgroud)
为什么我要使用继承?(编辑给@zaufi更多细节)
const char*为stringint为longenum …