在我的剧本中,我想创建一个包含外部命令输出的变量.之后我想在几个模板中使用该变量.
以下是剧本的相关部分:
tasks:
- name: Create variable from command
command: "echo Hello"
register: command_output
- debug: msg="{{command_output.stdout}}"
- name: Copy test service
template: src=../templates/test.service.j2 dest=/tmp/test.service
- name: Enable test service
shell: systemctl enable /tmp/test.service
- name: Start test service
shell: systemctl start test.service
Run Code Online (Sandbox Code Playgroud)
让我们说这是我的模板:
[Unit]
Description=MyApp
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do echo {{ string_to_echo }}; sleep 1; done"
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
(注意{{ …
我正在使用Passport-Facebook身份验证.
passport.use(new FacebookStrategy({
clientID: 'CLIENT_ID',
clientSecret: 'CLIENT_SECRET',
callbackURL: "http://www.example.com/auth/facebook/callback"
},
function (accessToken, refreshToken, profile, done) {
process.nextTick(function () {
console.log(profile)
});
}
));
对于一些Facebook帐户,我没有收到email_id,我甚至尝试使用范围变量,如下所示,但我仍然无法获得email_id.
profileUrl:""和ProfileFields:['','']
让我们假设一个像这样的库存文件:
node-01 ansible_ssh_host=192.168.100.101
node-02 ansible_ssh_host=192.168.100.102
node-03 ansible_ssh_host=192.168.100.103
node-04 ansible_ssh_host=192.168.100.104
node-05 ansible_ssh_host=192.168.100.105
[mainnodes]
node-[01:04]
Run Code Online (Sandbox Code Playgroud)
在我的剧本中,我现在想要创建一些包含该组IP地址的变量mainnodes:
vars:
main_nodes_ips: "192.168.100.101,192.168.100.102,192.168.100.103,192.168.100.104"
main_nodes_ips_with_port: "192.168.100.101:3000,192.168.100.102:3000,192.168.100.103:3000,192.168.100.104:3000"
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所得到的:
vars:
main_nodes_ips: "{{groups['mainnodes']|join(',')}}"
main_nodes_ips_with_port: "{{groups['mainnodes']|join(':3000,')}}"
Run Code Online (Sandbox Code Playgroud)
但那会使用主机名而不是IP地址.
有什么想法可以做到这一点?
更新:
看了一段时间的文档,我认为这将允许我遍历所有的IP地址:
{% for host in groups['mainnodes'] %}
{{hostvars[host]['ansible_ssh_host']}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何创建一个包含所有这些IP的数组.这样我就可以|join()对它们使用命令了.
Update2:
我只是觉得我已经弄明白了......但事实证明你不能在剧本中使用{%%}语法......或者我可以吗?在vars部分,它没有.:/
vars:
{% set main_nodes_ip_arr=[] %}
{% for host in groups['mesos-slave'] %}
{% if main_nodes_ip_arr.insert(loop.index,hostvars[host]['ansible_ssh_host']) %} {% endif %}
{% endfor %}
main_nodes_ips: "{{main_nodes_ip_arr|join(',')}}"
main_nodes_ips_with_port: "{{main_nodes_ip_arr|join(':3000,')}}"
Run Code Online (Sandbox Code Playgroud) 如何通过了解歌曲的和弦顺序以编程方式找到歌曲的键?
我问过一些人他们如何确定一首歌的关键,他们都说他们是"通过耳朵"或"反复试验"并通过判断一个和弦是否能解决一首歌......对于普通音乐家而言可能很好,但作为一个程序员,真的不是我想要的答案.
所以我开始寻找音乐相关的库,看看是否还有其他人为此编写过算法.但是我在GitHub上找到了一个名为'tonal'的真正大的库:https://danigb.github.io/tonal/api/index.html我找不到一种接受一组和弦并返回键的方法.
我选择的语言将是JavaScript(NodeJs),但我不一定要寻找JavaScript答案.伪代码或可以在没有太多麻烦的情况下翻译成代码的解释就完全没问题了.
正如你们有些人提到的那样,歌曲中的关键可以改变.我不确定是否可以足够可靠地检测到密钥更改.所以,现在让我们说,我正在寻找一种算法,可以很好地逼近给定和弦序列的键.
...在查看五度音程后,我想我找到了一种模式,可以找到属于每个键的所有和弦.我为此写了一个函数getChordsFromKey(key).通过检查每个键的和弦序列的和弦,我可以创建一个数组,其中包含键与给定和弦序列匹配的可能性的概率:calculateKeyProbabilities(chordSequence).然后我添加了另一个函数estimateKey(chordSequence),它获取具有最高概率得分的键,然后检查和弦序列的最后一个和弦是否是其中之一.如果是这种情况,则返回仅包含该和弦的数组,否则返回具有最高概率得分的所有和弦的数组.这样做可以,但它仍然找不到很多歌曲的正确键或返回具有相同概率的多个键.和弦之类的主要问题A5, Asus2, A+, A°, A7sus4, Am7b5, Aadd9, Adim, C/G是不在五分之一圈内.事实上,例如,键C包含与键完全相同的和弦Am,以及G相同的Em等等...
这是我的代码:
'use strict'
const normalizeMap = {
"Cb":"B", "Db":"C#", "Eb":"D#", "Fb":"E", "Gb":"F#", "Ab":"G#", "Bb":"A#", "E#":"F", "B#":"C",
"Cbm":"Bm","Dbm":"C#m","Eb":"D#m","Fbm":"Em","Gb":"F#m","Ab":"G#m","Bbm":"A#m","E#m":"Fm","B#m":"Cm"
}
const circleOfFifths = {
majors: ['C', 'G', 'D', 'A', 'E', 'B', 'F#', 'C#', 'G#','D#','A#','F'],
minors: ['Am','Em','Bm','F#m','C#m','G#m','D#m','A#m','Fm','Cm','Gm','Dm']
}
function estimateKey(chordSequence) {
let keyProbabilities = calculateKeyProbabilities(chordSequence)
let maxProbability = Math.max(...Object.keys(keyProbabilities).map(k=>keyProbabilities[k])) …Run Code Online (Sandbox Code Playgroud)如果要检索当前用户的所有应用程序的ApplicationInfo列表,则可以运行:
PackageManager pkgmanager = ctx.getPackageManager();
List<ApplicationInfo> installedApps = pkgmanager.getInstalledApplications(PackageManager.GET_META_DATA);
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种获取每个用户而不只是当前用户的列表的方法。我正在处理的应用程序具有root权限!
据我了解,用户ID可以这样检索:
List<Integer> userIds = new ArrayList<>();
PackageManager pkgmanager = ctx.getPackageManager();
final UserManager um = (UserManager) ctx.getSystemService(Context.USER_SERVICE);
List<UserHandle> list = um.getUserProfiles();
for (UserHandle user : list) {
Matcher m = p.matcher(user.toString());
if (m.find()) {
int id = Integer.parseInt(m.group(1));
userIds.add(id);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找这样的东西:
for (int i=0; i<userIds.size(); i++) {
Integer userId = userIds.get(i)
List<ApplicationInfo> installedApps = pkgmanager.getInstalledApplicationsByUserId(userId, PackageManager.GET_META_DATA);
}
Run Code Online (Sandbox Code Playgroud)
显然getInstalledApplicationsByUserId不存在。
起初我以为getPackagesForUid可以解决问题,但事实证明,Linux感觉和用户配置文件中的“用户”之间存在差异。通常,出于隔离目的,每个Android应用程序都在其自己的用户下运行。但是可以在同一用户下运行两个应用程序,以便它们可以轻松访问彼此的数据。getPackagesForUid仅返回在给定用户ID下运行的所有应用程序的名称,通常是一个。除了“用户”之外,还有“用户个人资料”,这是我希望该方法所指的内容。也许我应该也编写userProfileId而不是编写userId代码。
编辑 …
java android android-package-managers android-multiple-users android-work-profile
我正在编写一个生成html文件的小程序,并使用默认浏览器打开它以启动多个下载.
我不想为每次下载打开一个选项卡/窗口,因此为下载创建隐藏的iframe似乎是一个很好的解决方案.
我正在使用onloadiframe来查明每个下载的下载提示是否已经显示.但是,这种方法在Internet Explorer中似乎非常不可靠.
所以我想知道是否有办法解决这个问题或者更好的方法?
(请不要图书馆.)
这是我的html/js代码:
<!DOCTYPE html>
<!-- saved from url=(0016)http://localhost -->
<html><head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<title>Downloads</title>
<script>
"use strict";
var downloadsInfo = {
"http://download-installer.cdn.mozilla.net/pub/firefox/releases/26.0/win32/en-US/Firefox%20Setup%2026.0.exe":"Status: Connecting",
"http://download.piriform.com/ccsetup410.exe":"Status: Connecting"
};
var i = 0;
var iv = setInterval(function() {
i = ++i % 4;
var j = 0;
var finished = true;
for (var key in downloadsInfo) {
var value = downloadsInfo[key];
if (value != "Status: Download Started!") {
value = value+Array(i+1).join(".");
finished = …Run Code Online (Sandbox Code Playgroud) 我有一个节点脚本,它应该利用单个节点进程可以获得的所有CPU资源.但我发现setInterval太慢了.
当然,我在文档中发现了这一点:
当延迟大于2147483647或小于1时,延迟将设置为1.
来源:https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args
现在我想知道是否有办法进一步减少限制,或者是否有可以使用的替代功能.
我不能只使用普通循环,因为还有其他需要同时运行的异步事件.
编辑:
再次:我不能只使用普通循环,因为还有其他需要同时运行的异步事件.我不确定为什么这么难理解.
正常循环正在运行时,您将阻止其他所有操作的执行.如果将循环放在另一个异步执行的函数中并不重要.
这是什么意思?
我们来看一些例子:
setInterval(()=>{console.log('a')},1000) // asynchronous thing that needs to run in the background
while (true) {
// do whatever
}
Run Code Online (Sandbox Code Playgroud)
这段代码会做什么?它会阻止一切.console.log('a')不会连续执行.
setInterval(()=>{console.log('a')},1000) // asynchronous thing that needs to run in the background
setTimeout(()=>{
while (true) {
// do whatever
}
}, 1)
Run Code Online (Sandbox Code Playgroud)
一旦while循环开始,这也将阻止间隔的执行.
我正在生成一些像这样的svg图像:
<svg version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
text {
font-family: Helvetica;
font-size: 60px;
paint-order: stroke;
stroke: #000000;
stroke-width: 6px;
stroke-linecap: butt;
stroke-linejoin: miter;
font-weight: 800;
}
</style>
<g stroke="lightgray" stroke-dasharray="1,1" stroke-width="1" transform="scale(4, 4)">
<line x1="0" y1="0" x2="256" y2="256"/>
<line x1="256" y1="0" x2="0" y2="256"/>
<line x1="128" y1="0" x2="128" y2="256"/>
<line x1="0" y1="128" x2="256" y2="128"/>
</g>
<g transform="scale(1, -1) translate(0, -900)">
<path d="M 128 445 Q 222 525 301 653 Q 319 685 334 709 L 343 725 Q …Run Code Online (Sandbox Code Playgroud)javascript algorithm coordinates force-based-algorithm node.js
我正在尝试获取某个组的主机数量.
想象一下这样的库存文件:
[maingroup]
server-[01:05]
Run Code Online (Sandbox Code Playgroud)
现在在我的剧本中我想获得maingroup其中一部分将5在这种情况下的主机数量,并将其存储在一个变量中,该变量应该在其中一个剧本任务的模板中使用.
目前我手动设置变量,这远非理想.
vars:
HOST_COUNT: 5
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用HTML/CSS尽可能准确地重新创建Google Chrome的标签栏.但结果却比我想象的要复杂得多.
它看起来非常相似,但我注意到几个问题:
有任何想法吗?
我试着查看chromes源代码,看看我是否能找到原始颜色/透明度/曲线值,但我找不到任何东西.
在我忘记之前,如果可能的话,我希望这与IE8或多或少兼容,即使这意味着标签不能是梯形等.
编辑2:从头开始重写整个事情.(Ben-Rhys-Lewis为新标签按钮致记)
https://jsfiddle.net/p7vxzLjq/17/
body {
background: #21C256; /* green windows theme */
/* using transparency the tabbar should automatically adjust itself to whatever color is defined here */
}
.tab-bar {
height: 23px; /* tab height */
cursor: default;
user-select: none; /* disable text selection */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
pointer-events: none; /* disable image drag */
margin: 0; …Run Code Online (Sandbox Code Playgroud)javascript ×5
node.js ×4
ansible ×3
html ×2
algorithm ×1
android ×1
coordinates ×1
css ×1
css3 ×1
download ×1
iframe ×1
java ×1
jinja2 ×1
loops ×1
passport.js ×1
setinterval ×1
tabs ×1