我有一个用Ruby编写的高度多线程应用程序,它共享一些实例变量.写入这些变量很少(1%),而读取非常常见(99%).什么是最好的方式(在您看来或以惯用的Ruby方式)确保这些线程始终能够看到最新的值?到目前为止,我有一些想法(虽然在我检修之前我想要你的意见):
synchronize在我的代码中放了很多块,我没有看到一种简单的方法来避免它.freeze方法(见这里),虽然它看起来同样麻烦,并没有给我任何第一个选项带来的同步好处.这些选项看起来都非常相似,但希望那里的任何人都会有更好的想法(或者可以为这些想法中的一个做好准备).我也可以将对象设置为不可变,因此它们在操作过程中不会被破坏或改变,但是我不太了解Ruby以便自己调用这个问题,这个问题似乎在争论对象是高度可变的.
我正在尝试对我用Ruby编写的一段代码进行单元测试File.open.为了模仿它,我monkeypatched File.open到以下:
class File
def self.open(name, &block)
if name.include?("retval")
return "0\n"
else
return "1\n"
end
end
end
Run Code Online (Sandbox Code Playgroud)
问题是我使用rcov来运行整个事情,因为它使用File.open来编写代码覆盖率信息,它获得monkeypatched版本而不是真实版本.我如何取消monkeypatch这种方法将其恢复为原始方法?我试过搞乱alias,但到目前为止无济于事.
我想为HBase数据库编写自己的ActiveRecord适配器,因为目前还没有.但是,我一直在网上搜索一下,找不到有关如何编写ActiveRecord适配器的任何好资源.您将如何进行此操作,或者您可以推荐任何链接?
我对Python比较陌生,并且在使用Python网络操作工具Scapy编程时遇到了问题.但是,我不知道它是否与Scapy问题一样多,因为它是一个傻瓜新手问题.在scapy网站上,他们提供了一个我无法在自己的机器上运行的示例程序:
#! /usr/bin/env python
import sys
from scapy import sr1,IP,ICMP
p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
p.show()
Run Code Online (Sandbox Code Playgroud)
我得到了:
Traceback (most recent call last):
File "test.py", line 4, in <module>
from scapy import sr1,IP,ICMP
ImportError: cannot import name sr1
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:在安装Python库时,我是否需要更改路径或类似内容?另外,我可以在解释器中运行一些东西来告诉我scapy包的内容吗?我可以运行from scapy import *得很好,但由于我不知道里面有什么,所以很难使用它.
如果有人拥有可以查询的点对点系统,则希望
鉴于这些要求:
@cdv:我现在已经看过视频了,它非常棒,尽管我觉得它并没有完全适用于可插拔的发行策略,但肯定是90%的实现。但是,这些问题突出了这种方法的有用差异,这些差异解决了我的一些进一步担忧,并为我提供了后续的参考。因此,尽管我认为这个问题尚待解决,但我暂时接受您的回答。
language-agnostic distributed p2p fault-tolerance machine-learning
我正在尝试让Google AppEngine在我的Debian盒子上工作,当我尝试访问我的页面时出现以下错误:
<type 'exceptions.ImportError'>: No module named core.exceptions
Run Code Online (Sandbox Code Playgroud)
当我在我的其他Ubuntu盒子上运行它时,同样的应用程序对我来说很好,所以我知道这不是应用程序本身的问题.但是,我需要让它在这个Debian盒子上工作.它最初有python 2.4但在AppEngine抱怨之后我安装了python2.5和python2.5-dev软件包(无济于事).
我在谷歌集团的帖子中看到,这可能是由于AppEngine的版本,只是为了重新安装它,但这不起作用.有任何想法吗?
编辑1:还尝试卸载python2.4和2.5然后重新安装2.5,这也无法正常工作.
编辑2:当我将AppEngine放入CVS项目时,它没有将核心目录添加到我的项目中,所以当我检查它时,字面上没有名为core.exceptions的模块.重新下载该文件夹解决了该问题.
我很难找到实现WS-Security的优秀Ruby库.我已经看过wss4r但尚未使用它(文档对它有点亮).您使用哪些库来完成此任务,或者有更好的替代方案?
我正在使用该xmpppy库编写一个可以与用户聊天的 XMPP 客户端。它有自己的 XMPP 用户帐户,需要知道给定用户是否在线。然而,关于如何执行此操作的文档有点稀疏。你会推荐什么?
到目前为止,我见过的唯一解决方案是在 XMPP 服务器启动之前启动一个守护进程,并监视发送出去的所有状态消息 - 然后,如果用户发送了“我在线”,则称他们在线- 键入消息,但不是相应的“我正在注销”消息。然而,作为 XMPP 的新手,我认为会有更好的方法来做到这一点。
我正在尝试编写一个Ruby脚本,它将ssh到服务器,运行给定的命令,并从中获取输出.这是我到目前为止所做的,主要是改编自Ruby编程书:
require 'pty'
require 'expect'
$expect_verbose = true
PTY.spawn("ssh root@x.y") do |reader, writer, pid|
reader.expect(/root@x.y's password:.*/)
writer.puts("password")
reader.expect(/.*/)
writer.puts("ls -l")
reader.expect(/.*/)
answer = reader.gets
puts "Answer = #{answer}"
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,我要回来的是这样的:
Answer = .y's password:
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么以及如何缓解这个问题?
ruby ×6
python ×3
activerecord ×1
distributed ×1
expect ×1
hbase ×1
immutability ×1
logging ×1
networking ×1
p2p ×1
pty ×1
rcov ×1
scapy ×1
soap ×1
testing ×1
ws-security ×1
xmpp ×1
xmpppy ×1