小编Chr*_*nch的帖子

Ruby - 不可变对象

我有一个用Ruby编写的高度多线程应用程序,它共享一些实例变量.写入这些变量很少(1%),而读取非常常见(99%).什么是最好的方式(在您看来或以惯用的Ruby方式)确保这些线程始终能够看到最新的值?到目前为止,我有一些想法(虽然在我检修之前我想要你的意见):

  • 在读取或写入任何这些变量之前,请使用最常用的锁(来自Java Concurrency in Practice).这样做的缺点是它synchronize在我的代码中放了很多块,我没有看到一种简单的方法来避免它.
  • 使用Ruby的freeze方法(见这里),虽然它看起来同样麻烦,并没有给我任何第一个选项带来的同步好处.

这些选项看起来都非常相似,但希望那里的任何人都会有更好的想法(或者可以为这些想法中的一个做好准备).我也可以将对象设置为不可变,因此它们在操作过程中不会被破坏或改变,但是我不太了解Ruby以便自己调用这个问题,这个问题似乎在争论对象是高度可变的.

ruby multithreading immutability

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

在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,但到目前为止无济于事.

ruby testing monkeypatching rcov

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

编写ActiveRecord适配器

我想为HBase数据库编写自己的ActiveRecord适配器,因为目前还没有.但是,我一直在网上搜索一下,找不到有关如何编写ActiveRecord适配器的任何好资源.您将如何进行此操作,或者您可以推荐任何链接?

ruby activerecord hbase ruby-on-rails

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

Python - 图书馆问题

我对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 *得很好,但由于我不知道里面有什么,所以很难使用它.

python networking scapy

6
推荐指数
1
解决办法
4630
查看次数

在Ruby中自动记录异常

是否有一个库或简单的方法来捕获Ruby程序中抛出的异常并将其记录到文件中?我查看了log4rlogger,但两者的文档都没有提供我将如何做到这一点的任何示例.我远程运行这个程序并失去stdout和stderr的句柄,如果这些信息有帮助的话.

你会推荐什么?

ruby logging exception-handling

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

如何在对等系统中可靠但最少地分发项目

如果有人拥有可以查询的点对点系统,则希望

  • 减少整个网络上的查询总数(通过将“热门”项目和“类似”项目一起分布)
  • 避免在每个节点上过多存储
  • 确保在面对客户端停机,硬件故障以及用户离开时(即使是中等程度的稀有商品)也具有良好的可用性(可能为档案管理员/历史学家检测稀有商品)
  • 避免查询在网络分区的情况下找不到匹配项

鉴于这些要求:

  1. 有没有标准的方法?如果没有,是否有任何受人尊敬的实验研究?我对分配方案很熟悉,但是我还没有看到任何真正可以解决学习问题的方法。
  2. 我是否缺少任何明显的标准?
  3. 是否有人有兴趣解决/解决这个问题?(如果是这样,我很乐意将本周末聚集在一起的非常la脚的模拟器的一部分开源,并且通常会提供无用的建议)。

@cdv:我现在已经看过视频了,它非常棒,尽管我觉得它并没有完全适用于可插拔的发行策略,但肯定是90%的实现。但是,这些问题突出了这种方法的有用差异,这些差异解决了我的一些进一步担忧,并为我提供了后续的参考。因此,尽管我认为这个问题尚待解决,但我暂时接受您的回答。

language-agnostic distributed p2p fault-tolerance machine-learning

5
推荐指数
1
解决办法
420
查看次数

Python:没有名为core.exceptions的模块

我正在尝试让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的模块.重新下载该文件夹解决了该问题.

python google-app-engine

5
推荐指数
1
解决办法
2467
查看次数

Ruby和WS-Security

我很难找到实现WS-Security的优秀Ruby库.我已经看过wss4r但尚未使用它(文档对它有点亮).您使用哪些库来完成此任务,或者有更好的替代方案?

ruby ws-security soap

5
推荐指数
1
解决办法
1758
查看次数

判断XMPP用户是否在线

我正在使用该xmpppy库编写一个可以与用户聊天的 XMPP 客户端。它有自己的 XMPP 用户帐户,需要知道给定用户是否在线。然而,关于如何执行此操作的文档有点稀疏。你会推荐什么?

到目前为止,我见过的唯一解决方案是在 XMPP 服务器启动之前启动一个守护进程,并监视发送出去的所有状态消息 - 然后,如果用户发送了“我在线”,则称他们在线- 键入消息,但不是相应的“我正在注销”消息。然而,作为 XMPP 的新手,我认为会有更好的方法来做到这一点。

python xmpp xmpppy

5
推荐指数
1
解决办法
6864
查看次数

Ruby - Expect和Pty的问题

我正在尝试编写一个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 expect pty

4
推荐指数
1
解决办法
7144
查看次数