小编Pet*_*ons的帖子

Javascript是否具有Ruby的method_missing功能?

在Ruby中,我认为你可以调用一个尚未定义的方法,并捕获被调用方法的名称,并在运行时处理此方法.

Javascript可以做同样的事情吗?

javascript ruby metaprogramming

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

Mongoose.js交易

我知道MongoDB不像关系数据库那样支持事务,但我仍然想知道如何实现几个操作的原子性.在网络上狩猎,我看到有人提到没有交易的交易.通过幻灯片阅读,我仍然不清楚如何使用Mongoose.js实现它.

以此代码段为例:

player.save(callback1);
story.save(callback2);
Run Code Online (Sandbox Code Playgroud)

如何实现callback1和callback2以使它们一起成功或一起失败?

transactions mongodb

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

骨干路由器或视图是否应该处理获取数据并显示加载状态?

在我的应用程序的许多地方发生以下模式:

  • 用户单击某些链接触发导航
  • 需要获取数据以呈现视图
  • UI设计需要在获取数据时显示"加载"微调器
  • 获取数据后,我们将显示渲染的视图

我尝试了以下两种实现模式:

  1. 路由器处理提取

    • 路由器告诉容器视图显示加载微调器
    • 路由器加载任何集合/模型
    • 路由器告诉容器视图隐藏加载微调器
    • 路由器将集合/模型传递给视图并呈现它
  2. 查看句柄获取

    • 路由器只是创建并呈现视图
    • 该视图将获取所需的集合和模型
    • 首次渲染视图时,它只显示加载微调器,因为数据仍在加载
    • 当数据到达时,模型/集合触发事件并将视图绑定到那些,以便重新渲染自身,从而隐藏加载微调器并显示完整视图

我不喜欢#1,因为路由器变成了模型/集合获取逻辑的巨大球,并且似乎有太多的责任.#2似乎是一个更好的职责分配(路由器只是决定要显示哪个视图,查看它需要获取哪些数据),但它确实使视图呈现有点棘手,因为它现在是有状态的.

StackOverflow社区的想法是什么?1,2还是其他什么?

backbone.js

17
推荐指数
2
解决办法
4871
查看次数

使用fabric和管道脚本文本运行shell脚本到shell的stdin

有没有办法通过将它连接到远程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操作.

python fabric

12
推荐指数
2
解决办法
8149
查看次数

如何禁用锚(链接)标记(转换为span)

我有一堆锚标签(<a>),我需要转换为<span>标签.我不需要这样做来禁用点击(我知道preventDefault()false从点击事件处理程序返回).我只需要执行此操作以启用拖放排序(IE禁止锚标记但允许跨度).

我有一个很好的工作解决方案.

http://jsfiddle.net/5HGbx/

我只是想知道你们中的任何一个巫师是否有更好的方法来达到同样的最终结果.

javascript jquery dom

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

避免使用骨干事件处理程序中的event.preventDefault()样板文件

我有很多以链接开头的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>标签,但这似乎不合适.

javascript-events backbone.js

10
推荐指数
1
解决办法
7436
查看次数

镜像自托管git存储库到github.com(auth失败)

我想让我的个人服务器成为我的主要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)

git github ssh-agent

9
推荐指数
1
解决办法
243
查看次数

只有在必要时才能自动询问密码

所以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)

ansible

8
推荐指数
1
解决办法
2941
查看次数

为什么errno 34和代码ENOENT之间不匹配

因此,如果我在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

posix node.js

7
推荐指数
1
解决办法
1万
查看次数

使用脚本模块引导ansible先决条件.需要python吗?

目标:给定一个没有安装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

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