在Ruby中,我认为你可以调用一个尚未定义的方法,并捕获被调用方法的名称,并在运行时处理此方法.
Javascript可以做同样的事情吗?
我知道MongoDB不像关系数据库那样支持事务,但我仍然想知道如何实现几个操作的原子性.在网络上狩猎,我看到有人提到没有交易的交易.通过幻灯片阅读,我仍然不清楚如何使用Mongoose.js实现它.
以此代码段为例:
player.save(callback1);
story.save(callback2);
Run Code Online (Sandbox Code Playgroud)
如何实现callback1和callback2以使它们一起成功或一起失败?
在我的应用程序的许多地方发生以下模式:
我尝试了以下两种实现模式:
路由器处理提取
查看句柄获取
我不喜欢#1,因为路由器变成了模型/集合获取逻辑的巨大球,并且似乎有太多的责任.#2似乎是一个更好的职责分配(路由器只是决定要显示哪个视图,查看它需要获取哪些数据),但它确实使视图呈现有点棘手,因为它现在是有状态的.
StackOverflow社区的想法是什么?1,2还是其他什么?
有没有办法通过将它连接到远程shell在结构中的标准输入来执行多行shell脚本?或者我必须始终将其写入远程文件系统,然后运行它,然后删除它?我喜欢发送到stdin,因为它避免了临时文件.如果没有结构API(似乎没有基于我的研究),大概我可以直接使用ssh模块.基本上,我希望fabric.api.run不仅限于获取传递给shell作为命令行参数1行命令,而是会采取一个完整的多行脚本并将其写入到远程shell的标准输入.
为了澄清我想要这个命令行的结构等效:
ssh somehost /bin/sh < /tmp/test.sh
Run Code Online (Sandbox Code Playgroud)
除了在python中,脚本源coude不会来自本地文件系统上的文件,它只是内存中的多行字符串.请注意,这是一个逻辑操作,远程端没有临时文件,这意味着意外故障和崩溃不会留下孤立文件.如果在结构中有这样的选项(这就是我要问的问题),那么任何一方都不需要一个临时文件,这只需要一个ssh操作.
我有一堆锚标签(<a>),我需要转换为<span>标签.我不需要这样做来禁用点击(我知道preventDefault()并false从点击事件处理程序返回).我只需要执行此操作以启用拖放排序(IE禁止锚标记但允许跨度).
我有一个很好的工作解决方案.
我只是想知道你们中的任何一个巫师是否有更好的方法来达到同样的最终结果.
我有很多以链接开头的Backbone.js动作
<a href="#makeCookies">Make Cookies</a>
Run Code Online (Sandbox Code Playgroud)
和Backbone.View事件哈希一样
'click [href=#makeCookies]': 'makeCookies'
Run Code Online (Sandbox Code Playgroud)
和一个事件处理函数
makeCookies: function (event) {
event.preventDefault();
//code to make cookies
//I have no intention of ever using #makeCookies in the URL,
//it's just there so I can wire up the event handler properly
}
Run Code Online (Sandbox Code Playgroud)
是否有一种干净的方法来避免这种样板event.preventDefault().我想过只使用<button>标签而不是<a>标签,但这似乎不合适.
我想让我的个人服务器成为我的主要git远程并自动镜像到github.我发现这篇文章主要使用一个post-receive脚本git push --mirror(基本上).
我的方法不同之处在于我希望避免创建和保护部署密钥,然后在每个存储库上配置它.
我的post-receive脚本与注释中标记的大多数变体一起正常工作,除非我在上面的博客文章中执行完整的nohup + stdio重定向+后台处理,身份验证停止工作.
GITHUB_USERNAME=focusaurus
BARE_PATH=$(pwd -P)
REPO_NAME=$(basename "${BARE_PATH}")
REPO_URL="ssh://git@github.com/${GITHUB_USERNAME}/${REPO_NAME}"
echo "About to mirror to ${REPO_URL}"
#hmm, this works
#git push --mirror "${REPO_URL}"
#this works, too
#nohup git push --mirror "${REPO_URL}"
#and this also works OK
nohup git push --mirror "${REPO_URL}" &
#but this fails with
#Permission denied (publickey).
#fatal: The remote end hung up unexpectedly
#Somehow ssh agent forwarding must get screwed up? Help me, Internet.
#nohup git push --mirror …Run Code Online (Sandbox Code Playgroud) 所以ansible-playbook有--ask-pass和--ask-sudo-pass.有没有办法在没有密码的情况下首先尝试使用ssh,然后只有在无密码登录失败时才提示输入密码?同样,可以在没有密码的情况下首先尝试sudo然后只提示如果不起作用?
仅供参考我有一个小的shell函数试图通过反复试验来解决这个问题,但是我希望这样的事情能够被纳入ansible.
get_ansible_auth_args() {
local base_check="ansible all --one-line --inventory-file=deploy/hosts/localhost.yml --args=/bin/true --sudo"
${base_check}
if [[ $? -eq 0 ]]; then
return;
fi
local args="--ask-pass"
${base_check} ${args}
if [[ $? -eq 0 ]]; then
export ANSIBLE_AUTH_ARGS="${args}"
return;
fi
local args="--ask-pass --ask-sudo-pass"
${base_check} ${args}
if [[ $? -eq 0 ]]; then
export ANSIBLE_AUTH_ARGS="${args}"
return;
fi
}
Run Code Online (Sandbox Code Playgroud) 因此,如果我在OS X 10.6.8上的node.js v0.6.7中使用虚假路径运行此简单调用,则会出现错误,如预期的那样.
var fs = require("fs");
fs.stat("/tmp/foo", function(error, stat) {
return console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
它打印此输出:
{ [Error: ENOENT, no such file or directory '/tmp/foo'] errno: 34, code: 'ENOENT', path: '/tmp/foo' }
Run Code Online (Sandbox Code Playgroud)
我的问题是,根据/usr/include/sys/errno.h我的系统,ENOENT应该有代码2,那么为什么这个错误说errno 34(errno.h中的ERANGE),但是将它与错误消息配对ENOENT?
目标:给定一个没有安装python的Debian服务器(以及其他一些缺少的ansible先决条件),使用ansible来安装它们,这样我就可以使用正常的ansible模块(几乎所有这些都需要python)来配置服务器.
根据"脚本"模块的ansible文档,"这个模块在远程系统上不需要python,就像原始模块一样.".但是,根据我的测试,似乎脚本模块确实尝试在远程系统上运行python,至少如果sudo选项为true.我相信只要我不启用ansible的sudo选项,我就可以使用脚本模块,但是我需要我的远程用户在没有密码提示的情况下拥有sudo权限,或者我的脚本只是挂起等待交互式条目sudo密码.
所以我的问题是:A)"脚本"模块的处理是什么.它是否需要远程系统上的python?
和B)有没有更好的方法来实现我的更大的目标,即完全自动化部署,而无需任何手动步骤,然后才能使用ansible本身?
这是我的输出ansible-playbook -vvv显示它/usr/bin/python在远程系统上运行,并且没有文件,因为尚未安装python.
TASK: [install ansible prerequisites]
***************************************** <10.9.8.31> ESTABLISH
CONNECTION FOR USER: plyons <10.9.8.31> EXEC ['ssh', '-C', '-tt',
'-q', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s',
'-o', 'ControlPath=/Users/plyons/.ansible/cp/ansible-
ssh-%h-%p-%r', '-o', 'StrictHostKeyChecking=no', '-o',
'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications
=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o',
'PasswordAuthentication=no', '-o', 'ConnectTimeout=10',
'10.9.8.31', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-
tmp-1396233547.35-182235573044157 && chmod a+rx $HOME/.ansible/tmp
/ansible-tmp-1396233547.35-182235573044157 && echo
$HOME/.ansible/tmp/ansible-tmp-1396233547.35-182235573044157'"]
<10.9.8.31> PUT
/var/folders/n4/8skjkv9s5hbc4t5r0tr0xrk80000gn/T/tmpT1Vh6e TO
/home/plyons/.ansible/tmp/ansible-
tmp-1396233547.35-182235573044157/stat <10.9.8.31> EXEC ['ssh',
'-C', '-tt', '-q', …Run Code Online (Sandbox Code Playgroud) ansible ×2
backbone.js ×2
javascript ×2
dom ×1
fabric ×1
git ×1
github ×1
jquery ×1
mongodb ×1
node.js ×1
posix ×1
python ×1
ruby ×1
ssh-agent ×1
transactions ×1