小编Chr*_*ian的帖子

在Ansible中有条件地定义变量

我想在Ansible剧本中有条件地定义一个变量,如下所示:true.如果条件没有解析为true,我希望变量保持未定义.

如果我尝试这样做,Ansible会出错: my_var.为什么这是一个错误呢?

完整的案例如下:when: condition.如果true已定义,则角色会执行特殊操作.在某些情况下,我不希望角色这样做.我可以使用my_var,但后来我必须复制整个角色块.我还可以使用额外的bool变量,但我想要一个解决方案而不必更改角色的"接口".

有任何想法吗?

ansible

34
推荐指数
4
解决办法
6万
查看次数

在Linux中重新启动文件更改过程

是否有一个简单的解决方案(使用常见的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)

linux shell

19
推荐指数
4
解决办法
7588
查看次数

"net/http"使用全局变量被认为是golang的一个好习惯吗?

golang包"net/http"使用全局变量DefaultServeMux来注册处理程序.这被认为是一种很好的做法,甚至是一种golang成语吗?毕竟它是一个全局变量吗?

不使用全局变量的两个主要原因是AFAIK 1)它们增加了复杂性,2)在并发程序中存在问题.

也许1)在这种情况下不被认为是重要的,因为开发人员可以选择不使用DefaultServerMux?2)怎么样?Go中的全局变量总是线程/ goroutine安全吗?不过,我很惊讶它用在Go的标准库中.我从未在其他语言/标准库中看到过这种做法.

go

16
推荐指数
1
解决办法
7955
查看次数

配置具有从属角色的Ansible角色

最好用一个例子来描述这个问题:

有两个角色:

  • mailserver:基本邮件服务器配置
  • mailinglist:邮件列表应用程序

邮件列表软件需要邮件服务器将传入的邮件传输到邮件列表软件的"虚拟收件箱".这需要一些邮件服务器的配置.但邮件服务器不知道邮件列表角色,也不了解具有类似配置要求的其他角色.

我想做的是:

  • mailinglist(和其他类似的角色)将传输配置存储在变量中transport_config.这可能是一个"运输地图",如$ email => $ spool.
  • mailinglist取决于mailserver角色.
  • mailserver使用变量配置它的"传输" transport_config.

有没有办法在Ansible中做这样的事情?或者这个问题的另一个解决方案 这是不是可以使用类似角色的变量{role: mailserver, transport_config: ...},因为依赖于邮件服务器可能有不止一个角色.

我能想到的是一种解决方法:mailserver读取/解析定义传输映射的配置目录.mailinglist和其他角色将文件添加到此目录.这里的问题是,这通常需要"配置构建器"来读取这样的配置目录并生成主配置文件.

ansible ansible-role

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

在Emacs中突出显示并替换不可打印的unicode字符

我有一个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吗?

unicode emacs

7
推荐指数
2
解决办法
7512
查看次数

修复了导航/标题和键盘滚动

如果在页面顶部有固定位置的元素,例如导航栏:在视口底部看不到的内容可能会被固定隐藏,使用键盘(PgUp/PgDown,Space)的页面滚动有时会变得困难滚动后的元素.

如何解决这个问题?浏览器计算它们应该滚动多远?我观察了不同浏览器和不同页面上相同浏览器的不同行为(例如,Firefox在http://www.sueddeutsche.de/上留下了大约80px的旧内容,但在http://www.taz上却少得多.de.Chromium留下了更多内容.)

这是一个问题,即我旁边的人是否使用键盘滚动网页?你知道任何统计数据吗?

为了说明这个问题,我创建了一个小提琴:https: //jsfiddle.net/x7hj8c4m/ 尝试使用Firefox上的Space滚动内容.固定元素将覆盖滚动前尚未显示的文本.如果你添加left: 0,它的工作原理.

html javascript css browser

7
推荐指数
2
解决办法
625
查看次数

Shell命令在鼠标光标下获取颜色(xorg)

我需要获取鼠标光标下方像素的十六进制代码颜色。有很多不错的GUI工具来解决此任务,但是我需要一种简单的命令行方式来获取颜色,以便可以在Shell脚本中使用该解决方案。

可能我可以使用ImageMagick拍摄(一个像素?)屏幕截图并从中提取颜色(我可以使用来获取位置xdotool)。也许有一个更简单的解决方案。

有什么建议么?

shell xorg

6
推荐指数
2
解决办法
4006
查看次数

std :: priority_queue:自定义排序,不定义比较器类

我希望有一个具有自定义排序的优先级队列,但是像我一样懒,我不想定义一个实现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';期望类型,得到'比较')

有什么建议?

c++ boost stl bind priority-queue

4
推荐指数
1
解决办法
1498
查看次数

在参数内使用zsh的全局别名

我为一些远程主机使用全局别名, 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.这样的导出变量.无论如何,全局别名对变量的好处是什么(除了不必键入$).

zsh

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

标签 统计

ansible ×2

shell ×2

ansible-role ×1

bind ×1

boost ×1

browser ×1

c++ ×1

css ×1

emacs ×1

go ×1

html ×1

javascript ×1

linux ×1

priority-queue ×1

stl ×1

unicode ×1

xorg ×1

zsh ×1