小编Chr*_*nch的帖子

Ruby - 查看端口是否打开

我需要一个快速的方法来确定一个给定的端口是否用Ruby打开.我目前正在摆弄这个:

require 'socket'

def is_port_open?(ip, port)
  begin
    TCPSocket.new(ip, port)
  rescue Errno::ECONNREFUSED
    return false
  end
  return true
end
Run Code Online (Sandbox Code Playgroud)

如果端口是打开的,它的效果很好,但是它的缺点是它偶尔会坐下等待10-20秒然后最终超时,抛出ETIMEOUT异常(如果端口关闭).我的问题是:

可以将此代码修改为仅等待一秒钟(false如果我们当时没有得到任何回报,则返回)或者是否有更好的方法来检查给定端口上的给定端口是否打开?

编辑:只要它跨平台工作(例如,Mac OS X,*nix和Cygwin),调用bash代码也是可以接受的,尽管我更喜欢Ruby代码.

ruby bash port network-programming

43
推荐指数
5
解决办法
3万
查看次数

查找当前运行文件的路径

如何找到当前运行的Python脚本的完整路径?也就是说,我需要做些什么来实现这个目标:

$ pwd
/tmp
$ python baz.py
running from /tmp 
file is baz.py
Run Code Online (Sandbox Code Playgroud)

python

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

Ruby - 将块传递给方法

我正在尝试使用Highline gem进行Ruby密码输入,因为我有两次用户输入密码,我想消除我传入的块上的重复.例如,我的简单版本现在做的是:

new_pass = ask("Enter your new password: ") { |prompt| prompt.echo = false }
verify_pass = ask("Enter again to verify: ") { |prompt| prompt.echo = false }
Run Code Online (Sandbox Code Playgroud)

而我想改变它是这样的:

foo = Proc.new { |prompt| prompt.echo = false }
new_pass = ask("Enter your new password: ") foo
verify_pass = ask("Enter again to verify: ") foo
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这不起作用.这样做的正确方法是什么?

ruby highline

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

如何递归添加CVS目录

我已经玩了一点CVS,并不是最熟悉它的所有功能,但对我来说,一个巨大的烦恼是试图添加包含更多目录的新目录.运行" cvs add"只会添加当前目录的内容,并且使用" cvs import"看起来不是正确的事情,因为它仍然是我正在生成的所有代码(这个如何声明导入是针对第三方源)

你们知道以任何方式递归地将给定目录中的所有内容添加到当前的CVS项目中(或者如果SVN或git使这更容易)吗?

cvs

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

在Go中执行shell命令

我想在Go中执行shell命令,并在程序中将结果输出作为字符串.我看到了Rosetta Code版本:

package main
import "fmt"
import "exec"

func main() {
  cmd, err := exec.Run("/bin/ls", []string{"/bin/ls"}, []string{}, "", exec.DevNull, exec.PassThrough, exec.PassThrough)
  if (err != nil) {
    fmt.Println(err)
    return
  }
  cmd.Close()
Run Code Online (Sandbox Code Playgroud)

但这并没有以我可以以编程方式访问的方式捕获实际标准或错误 - 那些仍然打印到常规stdout/stderr.我看到使用Pipe作为out或err可以帮助其他地方,但没有如何这样做的例子.有任何想法吗?

shellexecute go

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

在Go中生成随机数

我试图在Go中生成随机数(整数),但无济于事.我找到了randcrypto/rand,这似乎是我想要的,但我无法从文档中看出如何使用它.这就是我现在正在尝试的:

    b := []byte{}
    something, err := rand.Read(b)
    fmt.Printf("something = %v\n", something)
    fmt.Printf("err = %v\n", err)
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这总是输出:

    something = 0
    err = <nil>
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,以便它实际生成随机数?或者,有没有办法设置这个生成的随机数的上限?

random go

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

在Ruby中按名称以编程方式访问变量

我不完全确定Ruby是否可行,但希望有一种简单的方法可以做到这一点.我想声明一个变量,然后找出变量的名称.也就是说,对于这个简单的片段:

foo = ["goo", "baz"]
Run Code Online (Sandbox Code Playgroud)

如何获取数组的名称(此处为"foo")?如果它确实可能,这是否适用于任何变量(例如,标量,散列等)?

编辑:这是我基本上要做的事情.我正在编写一个包含三个重要变量的类的SOAP服务器,验证代码基本上是这样的:

  [foo, goo, bar].each { |param|
      if param.class != Array
        puts "param_name wasn't an Array. It was a/an #{param.class}"
        return "Error: param_name wasn't an Array"
      end
      }
Run Code Online (Sandbox Code Playgroud)

我的问题是:我可以用foo,goo或bar替换'param_name'的实例吗?这些对象都是数组,所以到目前为止我收到的答案似乎不起作用(除了重新设计整个事情ala dbr的答案)

ruby variables

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

在R中绘制简单数据

我有一个逗号分隔文件,foo.csv其中包含以下数据:

scale, serial, spawn, for, worker
5, 0.000178, 0.000288, 0.000292, 0.000300
10, 0.156986, 0.297926, 0.064509, 0.066297
12, 2.658998, 6.059502, 0.912733, 0.923606
15, 188.023411, 719.463264, 164.111459, 161.687982
Run Code Online (Sandbox Code Playgroud)

我基本上有两个问题:

1)如何绘制第一列(x轴)与第二列(y轴)?我正在尝试这个(从阅读本网站):

data <- read.table("foo.csv", header=T,sep=",")
attach(data)
scale <- data[1]
serial <- data[2]
plot(scale,serial)
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

Error in stripchart.default(x1, ...) : invalid plotting method
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?一个快速谷歌搜索揭示了别人同样的问题,但没有相关的答案.更新:事实证明,如果我跳过中间的两个赋值语句,它可以正常工作.知道为什么会这样吗?

第二个问题在第一个问题之后非常容易:

2)如何绘制第一列(x轴)与y轴上的所有其他列?一旦我解决了我遇到的第一个问题,我认为这很容易,但我只是对R有点新,所以我仍然围绕着它.

plot r

19
推荐指数
3
解决办法
8万
查看次数

Ruby - 将整数转换为字符串

在Ruby中,尝试打印String的各个元素给我带来了麻烦.我没有看到每个字符,而是看到了他们的ASCII值:

>> a = "0123"
=> "0123"
>> a[0]
=> 48
Run Code Online (Sandbox Code Playgroud)

我已经在线查看,但无法找到任何方法让原来的"0"退出.我对Ruby有点新意,我知道它必须是简单的东西,但我似乎无法找到它.

ruby arrays

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

Clojure - 发生故障的副作用

在涉及Clojure时,我已经编写了一个非常基本的程序来回应用户输入的内容.然而,它并没有以我认为自然的方式运行.这是代码:

(defn goo []
  (print "echo> ")
  (def resp (read-line))
  (print resp)
)
Run Code Online (Sandbox Code Playgroud)

我希望代码能够像这样运行(对我来说输入foo为输入read-line):

user=> (goo)
echo> foo
foonil
Run Code Online (Sandbox Code Playgroud)

但相反,回声和读取线被切换:

user=> (goo)
foo
echo> foonil
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我缺少一个微妙的东西吗?

编辑:从Joe的回答,更新的正确解决方案是:

(defn goo []
  (print "echo> ")
  (flush)
  (def resp (read-line))
  (print resp)
  (flush)
)
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用println而不是冲洗,则不需要冲洗print.

clojure

13
推荐指数
2
解决办法
1584
查看次数

标签 统计

ruby ×4

go ×2

arrays ×1

bash ×1

clojure ×1

cvs ×1

highline ×1

network-programming ×1

plot ×1

port ×1

python ×1

r ×1

random ×1

shellexecute ×1

variables ×1