小编blo*_*ong的帖子

在bash脚本中使用expect为SSH命令提供密码

对于那些想要回复我应该使用SSH密钥的人请弃权

我正在尝试在bash脚本中使用expect来提供SSH密码.提供密码是有效的,但我不会像我应该的那样在SSH会话中结束,它会回到海峡.

我的剧本:

#!/bin/bash

read -s PWD

/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com'
expect "password"
send "$PWD\n" 
EOD
echo "you're out"
Run Code Online (Sandbox Code Playgroud)

我脚本的输出:

spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com
usr@$myhost.example.com's password: you're out
Run Code Online (Sandbox Code Playgroud)

我想拥有我的SSH会话,只有当我退出它才能返回我的bash脚本.我之前使用bash的原因是因为我使用了一个菜单,我可以选择连接哪个单元.

谢谢

linux ssh bash expect

125
推荐指数
8
解决办法
35万
查看次数

Meteor app - 重置已部署应用的数据库

有没有一种简单的方法来重置流星部署的应用程序中的数据?

因此,例如,如果我部署了一个名为的应用程序test.meteor.com- 我怎样才能轻松重置该应用程序收集的数据?

当地我跑meteor reset,但我不确定在生产中做什么.

mongodb meteor

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

mediatype,contenttype和mimetype有什么区别?

mimetype,contenttypemediatype之间有区别吗?(Java的JAX-RS MediaType).

维基百科文章中我收集到,它只是在HTTP请求的上下文中作为请求标题中的字段的内容类型:那么这些只是同义词还是不同术语之间存在任何实际的语义差异?

content-type http mime-types web

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

@符号在java中意味着什么?

以下是代码段.

@Intercepts({@Signature(
type= Executor.class,
method = "update",
args = {MappedStatement.class,Object.class})})
public class
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下@ sign在Java中的含义吗?

java oop annotations

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

如何扩展现有的docker镜像?

我正在使用官方的elasticsearch Docker镜像,而不是设置我自己的弹性搜索实例.这很有效,直到我想扩展它.我想在该ElasticSearch实例中安装奇迹以获取更多信息.

现在,dockerfile/elasticsearch会自动运行ElasticSearch并将命令设置为/bin/bash不起作用,也不会附加到容器或尝试通过SSH访问它,也不会安装ssh-daemon apt-get install -y openssh-server.

在这种特殊情况下,我可以进入容器的文件系统并执行opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest,一切正常.

但是,apt-get如果我无法在正在运行的容器中安装终端,我怎么能安装需要安装的附加服务?

elasticsearch docker

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

将CoffeeScript项目转换为JavaScript(不缩小)?

我们正在使用CoffeeScript编写的特定jQuery 插件,我希望我可以将项目转换为一些看起来很正常的JavaScript.该库看起来结构非常好(良好的OOP实践),但我真的很喜欢它,如果我可以探索它的源代码而不必学习CoffeeScript所需的所有技巧.

javascript json node.js coffeescript npm

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

在ExtJS中调用超类方法的更好方法

我读过的所有ExtJS文档和示例都建议调用这样的超类方法:

MyApp.MyPanel = Ext.extend(Ext.Panel, {
  initComponent: function() {
    // do something MyPanel specific here...
    MyApp.MyPanel.superclass.initComponent.call(this);
  }
});
Run Code Online (Sandbox Code Playgroud)

我已经使用这种模式很长一段时间了,主要的问题是,当你重命名你的类时,你还必须改变所有对超类方法的调用.这很不方便,经常我会忘记,然后我必须追查奇怪的错误.

但是看完来源Ext.extend(),我发现,这不是我可以使用superclass()super()该方法Ext.extend()增加了原形:

MyApp.MyPanel = Ext.extend(Ext.Panel, {
  initComponent: function() {
    // do something MyPanel specific here...
    this.superclass().initComponent.call(this);
  }
});
Run Code Online (Sandbox Code Playgroud)

在这个代码中,将MyPanel重命名为其他东西很简单 - 我只需更改一行.

但我怀疑......

  • 我没有在任何地方看到过这种情况,旧的智慧说,我不应该依赖于无证件的行为.

  • 我没有在ExtJS源代码中找到这些superclass()supr()方法的单独使用.为什么在你不打算使用它们时创建它们?

  • 也许这些方法在某些旧版本的ExtJS中使用但现在已被弃用?但它似乎是一个非常有用的功能,你为什么要弃用呢?

那么,我应该使用这些方法吗?

javascript extjs extend superclass extjs3

29
推荐指数
3
解决办法
4万
查看次数

批量插入Oracle数据库:哪个更好:FOR Cursor循环还是简单选择?

哪个是批量插入Oracle数据库的更好选择?一个FOR Cursor循环就像

DECLARE
   CURSOR C1 IS SELECT * FROM FOO;
BEGIN
   FOR C1_REC IN C1 LOOP
   INSERT INTO BAR(A,
                B,
                C)
          VALUES(C1.A,
                 C1.B,
                 C1.C);
   END LOOP;
END
Run Code Online (Sandbox Code Playgroud)

或简单的选择,如:

INSERT INTO BAR(A,
                B,
                C)
        (SELECT A,
                B,
                C
        FROM FOO);
Run Code Online (Sandbox Code Playgroud)

任何一个特定原因要么更好?

sql oracle plsql

23
推荐指数
4
解决办法
14万
查看次数

Google文档如何处理编辑冲突?

我一直在编写自己的Javascript编辑器,其功能类似于Google Docs(允许多人同时处理它).有一点我不明白:

假设您已将用户A和用户B直接相互连接,网络延迟为10毫秒.我假设编辑器使用diff系统(据我理解Docs),其中编辑表示为"在索引3处插入'文本',并且差异被加时间戳并强制按时间顺序应用于所有客户端.

让我们从包含文本的文档开始:"xyz123"

用户A在时间戳001ms处在文档的开头键入"abc",而用户B在时间戳005ms处在"xyz"和"123"之间键入"hello".

两个用户都希望结果是:"abcxyzhello123",但考虑到网络延迟:

  • 用户B将在时间011ms接收用户A对"在索引0处插入'abc'的编辑.为了保持按时间顺序排列,用户B将在索引3处撤消用户B的插入,在索引0处插入用户A的"abc",然后在索引3处重新插入用户B的插入,该索引现在位于"abc"和"xyz之间" ,"因此给"abchelloxyz123"
  • 用户A将在时间015ms接收用户B对"在索引3处插入'hello'的编辑.它会认识到用户B的插入是在用户A之后完成的,只需在索引3处插入"hello"(现在在"abc"和"xyz"之间),给出"abchelloxyz123"

当然," abchello xyz123"与" abc xyz hello 123"不一样

除了字面上为每个角色分配自己的唯一ID之外,我无法想象Google将如何有效地解决这个问题.

我想到的一些可能性:

  • 跟踪插入点而不是使用差异发送索引将起作用,但如果用户B在编辑之前移动了1ms的插入点,则会遇到完全相同的问题.
  • 您可以让用户B使用他的差异发送一些信息,例如"在'xyz'之后插入'",这样用户A就可以智能地识别出这种情况,但是如果用户A插入文本"xyz?"该怎么办?
  • 用户B可以识别出这种情况发生了(当它收到用户A的差异并发现它是冲突时),然后发出一个diff撤消用户B的编辑和一个新的差异,它进一步插入用户B的"你好""abc".length索引对.这个问题是(1)用户A会在文本中看到"跳跃",(2)如果用户A继续编辑,则用户B必须不断修复其差异 - 即使"修复者"差异也会关闭并需要修复,指数增加复杂性.
  • 用户B可以发送一个属性,它接收到的最后一个时间戳差异是-005ms或者其他东西,然后A可以识别B不知道它的变化(因为A的差异在001ms)然后进行冲突解决.问题是(1)所有用户的时间戳都会稍微偏离,因为大多数计算机时钟都不准确到ms;(2)如果第三个用户C的用户A延迟25ms,但用户B滞后2ms,用户C在-003ms之间在"x"和"y"之间添加一些文本,然后用户B将用户C的编辑作为参考点,但是用户A不会知道用户C的编辑(以及用户B的参考点)直到22ms.我相信如果您使用通用服务器为所有编辑加时间戳,这可以解决,但这似乎相当复杂.
  • 你可以给每个角色一个唯一的ID,然后处理那些ID而不是索引,但这似乎有点过分......

我正在阅读http://www.waveprotocol.org/whitepapers/operational-transform,但很想听到解决这个问题的所有方法.

algorithm editing google-docs collaborative-editing operational-transform

21
推荐指数
1
解决办法
4636
查看次数

如何让extjs组合框像普通的html选择框一样?

ExtJS提供了一个花哨的组合框,它具有许多功能 - 提前输入,允许随机输入文本,隐藏下拉列表中所有未加入已输入文本的条目.

我不想要这些功能.我想要一个选择框,其行为几乎与人们期望普通选择框在vanilla html中完全相同.

我确实希望它绑定到数据存储,我确实想要组合框附带的所有其他extjs配置好东西.我只是不希望用户/测试人员遇到一个选择框时会吓坏他们,这些选择框打破了他们现有的这些工作方式的心理范式.

那么如何才能让extjs组合框更像选择框呢?或者我是否完全使用了错误的小部件?

extjs extjs3

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