我有一个Vagrantfile配置一个带Ansible的Virtualbox VM.Ansible playbook包含Ansible Vault加密变量.我的问题是,虽然我通过了选项,但Vagrant配置不会提示输入密码.
Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.provider "virtualbox" do |vb|
# Build a master VM for this box and clone it for individual VMs
vb.linked_clone = true
end
config.vm.box = "bento/ubuntu-16.04"
config.vm.hostname = "test-vm"
config.vm.provision :ansible do |ansible|
ansible.verbose = true
ansible.playbook = "playbook.yml"
ansible.ask_vault_pass = true
# ansible.raw_arguments = --ask-vault-pass
# ansible.raw_arguments = ["--vault-id", "@prompt"]
# ansible.raw_arguments = ["--vault-id", "dev@prompt"]
end
end
Run Code Online (Sandbox Code Playgroud)
playbook.yml:
---
- name: Test
hosts: all
vars:
foo: !vault |
$ANSIBLE_VAULT;1.1;AES256
65306264626234353434613262613835353463346435343735396138336362643535656233393466 …Run Code Online (Sandbox Code Playgroud) 我需要一个QLabel其宽度不应该适应所包含的文本,但可以由用户调整大小(或者确切地说是布局)。如果文本对于宽度而言太长,QLabel则只需将其剪掉即可。
这个问题在某种程度上与How to make QLabel Expand width Geometry to Accommodation text相反 。然而,这个问题的内容对我没有帮助。在布局中的 QLabel 上设置文本也没有调整大小。
将QLabel显示来自另一个系统的标识符(单个单词)。有时这些标识符每秒会改变很多次,这使得整个布局闪烁。它QLabel是垂直码头的一部分,因此码头的宽度会闪烁。
另一方面,应该由用户决定他/她可以看到多少标识符。所以我想允许用户更改扩展坞的宽度,以便扩展坞的宽度QLabel适应该宽度。
为了实现这一目标,我设置了水平尺寸策略QSizePolicy::Preferred并派生了我自己的标签类,QLabel我已重写该标签类sizeHint()以返回固定尺寸。但这并没有改变行为。
我知道我可以申请QFontMetrics计算文本的宽度,然后将其剪掉以适合宽度QLabel。但这似乎不是正确的解决方案,特别是因为我希望将最后一个字母本身剪掉(如果它不完全适合),以便向用户提供标识符太长而无法显示的线索。
我想在 CMake 中取消设置一个(布尔)属性,以便get_property(... SET)返回0尽管该属性首先被设置。将属性设置为0、FALSE、 或OFF是不够的。如何实现这一目标?
我有一些生成一些源文件的自定义命令。CMake 会自动将GENERATED源文件属性分配给这些文件。这似乎使 GNU Makefile 生成器添加一条规则来删除这些带有make clean.
但是,我不希望清理这些文件,因为一旦它们存在,用户就可以编辑它们。自定义命令应该仅确保它们不存在时生成。在配置时使用execute_process而不是自定义命令生成它们是不可行的。
设置GENERATED为0、FALSE、 或OFF不会从清理中排除源。
我目前绑定了 Ubuntu 16.04,如果可能的话,应该避免让所有用户使用更新的 CMake 版本。
我有一个data.table并且需要知道在给定条件下包含最小值的行的索引.简单的例子:
dt <- data.table(i=11:13, val=21:23)
# i val
# 1: 11 21
# 2: 12 22
# 3: 13 23
Run Code Online (Sandbox Code Playgroud)
现在,假设我想知道在这种情况val下哪一行是最小的i>=12,在这种情况下是2.
dt[i>=12, which.min(val)]
# [1] 1
Run Code Online (Sandbox Code Playgroud)
返回1,因为dt[i>=12]它是第一行.
也
dt[i>=12, .I[which.min(val)]]
# [1] 1
Run Code Online (Sandbox Code Playgroud)
返回1,因为.I只应该用于分组.
为了.I正确应用,我添加了一个分组列:
dt[i>=12, g:=TRUE]
dt[i>=12, .I[which.min(val)], by=g][, V1]
# [1] 2
Run Code Online (Sandbox Code Playgroud)
请注意,这g是NA对i<12,从而which.min排除从结果组.
但是,这需要额外的计算能力来添加列并执行分组.我的生产data.table有几百万行,我必须经常找到最小值,所以我想避免任何额外的计算.
你有什么想法,如何有效地解决这个问题?
我们有一些旧的 C++ 代码,其中包含只有在__gnu_linux__定义预处理器符号时才编译的部分。在我的 Ubuntu 20.04 和 GCC 9.3 上编译不是问题。现在,我们尝试将其移植到基于 Alpine Linux 和 GCC 10.2 的 Docker 容器,并发现在__gnu_linux__这种情况下未定义。
因此,我搜索了有关__gnu_linux__预处理器宏的任何文档,但在 GCC 或其预处理器 CPP 的文档中找不到任何内容。我能找到的唯一提示是以下预定义符号列表,但它没有提到任何文档:https : //sourceforge.net/p/predef/wiki/OperatingSystems/
__gnu_linux__预处理器宏的任何官方文档?通过在 中进行全文搜索,/usr我获得了一些点击。一个是 Boost 头文件也查询该宏,另外两个是二进制文件cc1和cc1plus. 我发现那些是分别为 C 和 C++ 实现预处理器的 GCC 的内部工具,但我找不到这些的任何官方文档。所以,我克隆了 GCC 源代码库,发现它__gnu_linux__在更改日志中只提到了一次,并且包含一些特殊的提交,用 更改了一行__gnu_linux__,但没有一个对它做出明确的声明。