我想在Ansible剧本中有条件地定义一个变量,如下所示:true.如果条件没有解析为true,我希望变量保持未定义.
如果我尝试这样做,Ansible会出错:
my_var.为什么这是一个错误呢?
完整的案例如下:when: condition.如果true已定义,则角色会执行特殊操作.在某些情况下,我不希望角色这样做.我可以使用my_var,但后来我必须复制整个角色块.我还可以使用额外的bool变量,但我想要一个解决方案而不必更改角色的"接口".
有任何想法吗?
是否有一个简单的解决方案(使用常见的shell utils,通过大多数发行版提供的util,或者一些简单的python/...脚本)在某些文件发生变化时重启进程?
简单地打电话就好了watch -cmd "./the_process -arg" deps/*.
更新: 一个简单的shell脚本和提议的inotify-tools(很好!)符合我的需求(适用于没有参数的命令):
#!/bin/sh
while true; do
$@ &
PID=$!
inotifywait $1
kill $PID
done
Run Code Online (Sandbox Code Playgroud) golang包"net/http"使用全局变量DefaultServeMux来注册处理程序.这被认为是一种很好的做法,甚至是一种golang成语吗?毕竟它是一个全局变量吗?
不使用全局变量的两个主要原因是AFAIK 1)它们增加了复杂性,2)在并发程序中存在问题.
也许1)在这种情况下不被认为是重要的,因为开发人员可以选择不使用DefaultServerMux?2)怎么样?Go中的全局变量总是线程/ goroutine安全吗?不过,我很惊讶它用在Go的标准库中.我从未在其他语言/标准库中看到过这种做法.
最好用一个例子来描述这个问题:
有两个角色:
mailserver:基本邮件服务器配置mailinglist:邮件列表应用程序邮件列表软件需要邮件服务器将传入的邮件传输到邮件列表软件的"虚拟收件箱".这需要一些邮件服务器的配置.但邮件服务器不知道邮件列表角色,也不了解具有类似配置要求的其他角色.
我想做的是:
mailinglist(和其他类似的角色)将传输配置存储在变量中transport_config.这可能是一个"运输地图",如$ email => $ spool.mailinglist取决于mailserver角色.mailserver使用变量配置它的"传输" transport_config.有没有办法在Ansible中做这样的事情?或者这个问题的另一个解决方案 这是不是可以使用类似角色的变量{role: mailserver, transport_config: ...},因为依赖于邮件服务器可能有不止一个角色.
我能想到的是一种解决方法:mailserver读取/解析定义传输映射的配置目录.mailinglist和其他角色将文件添加到此目录.这里的问题是,这通常需要"配置构建器"来读取这样的配置目录并生成主配置文件.
我有一个UTF-8文件包含一些Unicode字符,如LEFT-TO-RIGHT OVERRIDE(U + 202D),我想从文件中删除它.在Emacs中,它们是隐藏的(应该是正确的行为?).如何使这种"异国情调"的unicode字符可见(同时不改变"常规"unicode字符的显示,如德语变音符号)?以后我如何替换它们(replace-string例如.C-X 8 Ret对isearch /不起作用replace-string).
在Vim中,它非常简单:这些字符默认显示为十六进制表示(这是一个错误或缺少的功能吗?),您可以轻松地删除它们:%s/\%u202d//g.这应该可以用Emacs吗?
如果在页面顶部有固定位置的元素,例如导航栏:在视口底部看不到的内容可能会被固定隐藏,使用键盘(PgUp/PgDown,Space)的页面滚动有时会变得困难滚动后的元素.
如何解决这个问题?浏览器计算它们应该滚动多远?我观察了不同浏览器和不同页面上相同浏览器的不同行为(例如,Firefox在http://www.sueddeutsche.de/上留下了大约80px的旧内容,但在http://www.taz上却少得多.de.Chromium留下了更多内容.)
这是一个问题,即我旁边的人是否使用键盘滚动网页?你知道任何统计数据吗?
为了说明这个问题,我创建了一个小提琴:https:
//jsfiddle.net/x7hj8c4m/
尝试使用Firefox上的Space滚动内容.固定元素将覆盖滚动前尚未显示的文本.如果你添加left: 0,它的工作原理.
我需要获取鼠标光标下方像素的十六进制代码颜色。有很多不错的GUI工具来解决此任务,但是我需要一种简单的命令行方式来获取颜色,以便可以在Shell脚本中使用该解决方案。
可能我可以使用ImageMagick拍摄(一个像素?)屏幕截图并从中提取颜色(我可以使用来获取位置xdotool)。也许有一个更简单的解决方案。
有什么建议么?
我希望有一个具有自定义排序的优先级队列,但是像我一样懒,我不想定义一个实现operator()的比较器类.
我真的希望编译这样的东西:
std::priority_queue<int, std::vector<int>,
boost::bind(some_function, _1, _2, obj1, obj2)> queue;
Run Code Online (Sandbox Code Playgroud)
其中some_function是一个bool返回函数,它带有四个参数,第一个和第二个是队列的整数,最后两个是计算排序所需的一些对象(const引用).
(错误:'boost :: bind'不能出现在常量表达式中)
但这不编译.甚至更简单
std::priority_queue<int, std::vector<int>, &compare> queue;
Run Code Online (Sandbox Code Playgroud)
不会编译,比较是返回bool的二进制函数.
(错误:模板参数列表中参数3的类型/值不匹配'模板类std :: priority_queue';期望类型,得到'比较')
有什么建议?
我为一些远程主机使用全局别名,
alias -g MY_HOST="server.waytolongfoobar.com"以便能够使用它们进行ssh ssh MY_HOST.但是,如果我想向主持人scp一些东西,我必须使用一些尴尬的东西scp file.tar.gz 'echo MY_HOST':~/dir.有没有更好的方法在参数内使用全局别名?
也许我使用全局别名是为了错误的目的?我想我实际上可以使用像scp file $MY_HOST:~/dir.这样的导出变量.无论如何,全局别名对变量的好处是什么(除了不必键入$).