小编use*_*951的帖子

map(&:name)在Ruby中意味着什么?

我在RailsCast中找到了这段代码:

def tag_names
  @tag_names || tags.map(&:name).join(' ')
end
Run Code Online (Sandbox Code Playgroud)

什么是(&:name)map(&:name)意味着什么?

ruby syntax operators parameter-passing

483
推荐指数
11
解决办法
12万
查看次数

存储时间序列数据,关系数据还是非数据?

我正在创建一个系统,使用SNMP以(可能)5分钟的间隔轮询设备以获取有关各种指标的数据,例如CPU利用率,磁盘利用率,温度等.最终目标是以时间序列图的形式为系统用户提供可视化.

我已经看过了,在过去使用的RRDTool,但拒绝了它作为存储捕获的数据无限地将我的项目很重要,我想更高层次和更灵活的访问捕获的数据.所以我的问题是:

什么是更好的关系数据库(如MySQL或PostgreSQL)或非关系数据库或NoSQL数据库(如MongoDB或Redis)在查询数据进行图形处理时的性能.

相关的

给定一个关系数据库,我将使用一个data_instances表,其中将存储为所有设备测量的每个度量捕获的每个数据实例,并包含以下字段:

领域: id fk_to_device fk_to_metric metric_value timestamp

当我想在特定设备上绘制特定指标的图形时,我必须查询此单个表,过滤掉其他设备,以及为此设备分析的其他指标:

SELECT metric_value, timestamp FROM data_instances
    WHERE fk_to_device=1 AND fk_to_metric=2
Run Code Online (Sandbox Code Playgroud)

此表中的行数为:

d * m_d * f * t
Run Code Online (Sandbox Code Playgroud)

其中d是的数量的装置,m_d是累计度量的数目被记录为所有设备,f频率在其中数据被轮询和t是总量时间系统已收集数据.

对于一年中每5分钟记录3个设备的10个度量标准的用户,我们将有不到500万条记录.

索引

没有索引fk_to_device并且fk_to_metric扫描这个不断扩展的表将花费太多时间.因此,索引上述字段以及timestamp(用于创建具有本地化期间的图表)是必需的.

非关系(NoSQL)

MongoDB具有集合的概念,与表不同,这些可以在没有设置的情况下以编程方式创建.有了这些,我可以为每个设备划分数据存储,甚至为每个设备记录每个指标.

我没有使用NoSQL的经验,也不知道它们是否提供任何查询性能增强功能,例如索引,但是前一段提出在数据存储在NoSQL下的结构中进行大多数传统的关系查询工作.

未定

具有正确索引的关系解决方案是否会在一年内减少爬行?或者NoSQL方法的基于集合的结构(与我存储的数据的心智模型相匹配)是否提供了明显的好处?

database time-series non-relational-database relational-database nosql

177
推荐指数
3
解决办法
6万
查看次数

当我的shell脚本退出时,如何终止后台进程/作业?

当我的顶级脚本退出时,我正在寻找一种清理混乱的方法.

特别是如果我想使用set -e,我希望后台进程会在脚本退出时死掉.

shell

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

等价的.try()用于散列以避免在nil上出现"未定义的方法"错误?

在Rails中,如果不存在值以避免错误,我们可以执行以下操作:

@myvar = @comment.try(:body)
Run Code Online (Sandbox Code Playgroud)

当我深入挖掘哈希并且不想得到错误时,等价物是什么?

@myvar = session[:comments][@comment.id]["temp_value"] 
# [:comments] may or may not exist here
Run Code Online (Sandbox Code Playgroud)

在上述情况下,session[:comments]try[@comment.id]不起作用.什么会?

ruby hash ruby-on-rails ruby-on-rails-3

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

136
推荐指数
8
解决办法
10万
查看次数

测试空值或零值字符串

我试图在Ruby中有条件地设置变量.如果变量为nil或空(0长度字符串),我需要设置它.我想出了以下内容:

variable = id if variable.nil? || (!variable.nil? && variable.empty?)
Run Code Online (Sandbox Code Playgroud)

虽然它有效,但它对我来说似乎不像Ruby.表达上述内容的方式是否更为简洁?

ruby ruby-on-rails

86
推荐指数
3
解决办法
17万
查看次数

如何在bash中声明2D数组

我想知道如何在bash中声明一个2D数组然后初始化为0.

在C中它看起来像这样:

int a[4][5] = {0};
Run Code Online (Sandbox Code Playgroud)

我如何为元素赋值?如在C:

a[2][3] = 3;
Run Code Online (Sandbox Code Playgroud)

linux bash shell

69
推荐指数
6
解决办法
18万
查看次数

RegexBuddy的免费替代品

是否有任何好的替代品支持以不同的方式编写正则表达式并允许您测试它们?

regex

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

Ruby局部变量未定义

我有以下Ruby代码:

local_var = "Hello"

def hello
  puts local_var
end

hello
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

local_variables.rb:4:in 'hello': undefined local variable or method 'local_var' 
for main:Object (NameError) from local_variables.rb:7:in '<main>'
Run Code Online (Sandbox Code Playgroud)

我一直认为局部变量不能从块外部,函数,闭包等访问.

但是现在我在文件中定义了局部变量,并尝试从INSIDE函数获取对同一文件的访问权限 .

我的理解有什么问题?

ruby local-variables

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

如何使用Ruby 2.3中引入的Array#dig和Hash #dig?

Ruby 2.3引入了一种新的方法Array并被Hash调用dig.我在关于新版本的博客文章中看到的例子是人为的,令人费解的:

# Hash#dig
user = {
  user: {
    address: {
      street1: '123 Main street'
    }
  }
}

user.dig(:user, :address, :street1) # => '123 Main street'

# Array#dig
results = [[[1, 2, 3]]]
results.dig(0, 0, 0) # => 1
Run Code Online (Sandbox Code Playgroud)

我没有使用三嵌套平面数组.什么是如何有用的现实例子?

UPDATE

事实证明,这些方法解决了一个最常见的Ruby问题.下面的问题有20个重复,所有这些都通过使用dig以下方法解决:

如何避免NoMethodError在嵌套哈希中缺少元素,而不重复nil检查?

Ruby Style:如何检查嵌套的哈希元素是否存在

ruby arrays hash

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