小编Kim*_*hto的帖子

如何计算移动平均线而不保留计数和数据总数?

我试图找到一种计算移动累积平均值的方法,而不存储到目前为止收到的计数和总数据.

我想出了两个算法,但都需要存储计数:

  • 新的平均值=((旧计数*旧数据)+下一个数据)/下一个计数
  • 新平均值=旧平均值+(下一个数据 - 旧平均值)​​/下一个计数

这些方法的问题在于计数越来越大,导致平均值的精度下降.

第一种方法使用旧计数和下一计数,显然是1.这让我想到也许有一种方法可以删除计数,但遗憾的是我还没有找到它.它确实让我更进一步,导致第二种方法,但仍然计数存在.

是可能的,还是我只是在寻找不可能的事情?

moving-average

105
推荐指数
7
解决办法
11万
查看次数

如何在销毁记录时使carrierwave删除文件?

我正在使用carrierwave gem上传文件.

我已经构建了一个系统,供用户将图像标记为不合适,并且管理员可以删除图像.据我所知,在图像上调用destroy只会从表中删除路径名.

有没有办法让carrierwave实际删除文件本身?或者当我销毁图像路径时,rails会自动删除文件吗?

ruby ruby-on-rails carrierwave

55
推荐指数
2
解决办法
7万
查看次数

与咆哮的协会和收藏

假设我们有类似的东西:

class Company
  include Mongoid::Document
  has_many :users
  field :name, type: String
end

class User
  include Mongoid::Document
  belongs_to :company
  field :name, type: String
end

module CompanyRepresenter
  include Roar::Representer::JSON 
  property :name
end

module UserRepresenter
  include Roar::Representer::JSON 
  property :name
  link :self do
    user_url
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我们继续做这样的事情:

user.extend(UserRepresenter).to_json
Run Code Online (Sandbox Code Playgroud)

一切都很棒.但是怎么样:

User.all.to_json
Run Code Online (Sandbox Code Playgroud)

要么:

company.extend(CompanyRepresenter).users.to_json?
Run Code Online (Sandbox Code Playgroud)

甚至:

company.users.collect{|u| u.extend(UserRepresenter)}.extend(Representable::JSON::Collection).to_json
Run Code Online (Sandbox Code Playgroud)

结果始终是Mongoid正常to_json条目的数组.

问题是我如何获得类似Company.all.to_jsonRoared JSON的内容,包括链接和其他额外的序列化数据.

ruby rest mongoid

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

当单元格/字段包含前导双引号时,Ruby 将不会解析 CSV

当其中一列包含双引号 " 字符时,我将如何解析 CSV 文件?我收到“第 xxx 行中缺少或杂散引号”错误,因为其中有一个尾随双引号。确切的错误是“缺少或第 58 行中的杂散引用 (CSV::MalformedCSVError)”。数据来自解析另一个设备(防火墙)配置的应用程序,并且“已由管理员作为注释添加到该设备的配置中,并且因此超出了我的控制范围。

输入数据示例(无法提供文件,它们本质上是敏感的):

"Table 1 Firewall Policy from INT to EXT administrative service rules on TestFirewall","1","Yes","Allow","[Group] GreenServer","[Host] Any","[Group] FTP","No",""Access"^M
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,最后一列中的注释是“”Access”。如果最后一列中只有双引号,我到目前为止的脚本似乎工作得很好。

复制所需的最少代码:

#!/usr/bin/env ruby
require 'csv'
require 'pp'
nipperfiles = Dir.glob(ARGV[0] + '/*.csv')

def allcsv(nipperfiles)
  filearray = []
  nipperfiles.each do |csv|
  filearray << csv
  end

  filearray
end

def devicetype(filelist)
  filelist.each do |f|
  CSV.foreach(f, :headers => true, :force_quotes => true, :encoding => Encoding::UTF_8) do |row|
    if row["Table"] =~ /audit device list/ && row["OS"] =~ …
Run Code Online (Sandbox Code Playgroud)

ruby csv

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

如何安全加载包含多个文档的 YAML 文件?

安全加载典型的单个文档 YAML 文件的常规方法是使用YAML.safe_load(content).

YAML 文件可以包含多个文档:

---
key: value
---
key: !ruby/struct
  foo: bar
Run Code Online (Sandbox Code Playgroud)

使用这样加载 YAML 文件YAML.safe_load(content)只会返回第一个文档:

---
key: value
---
key: !ruby/struct
  foo: bar
Run Code Online (Sandbox Code Playgroud)

如果您拆分文件并尝试安全加载第二个文档,则会按预期收到异常:

{ 'key' => 'value' }
Run Code Online (Sandbox Code Playgroud)

要加载多个文档,您可以使用YAML.load_stream(content)它返回一个数组:

Psych::DisallowedClass (Tried to load unspecified class: Struct)
Run Code Online (Sandbox Code Playgroud)

问题是没有YAML.safe_load_stream会引发非白名单数据类型的异常。

ruby yaml

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

如何使用 Yard 记录继承的构造函数

开设课程,例如:

class Foo
  def initialize(data)
  end
end

class Bar < Foo
end
Run Code Online (Sandbox Code Playgroud)

每个继承的子类Foo都有自己独特的属性,通过选项哈希传入data

各州的码输出Bar

class Foo
  def initialize(data)
  end
end

class Bar < Foo
end
Run Code Online (Sandbox Code Playgroud)

我一直无法弄清楚如何记录Bar#initialize.

尝试包括:

class Bar < Foo
  # @overload initialize(data)
  #   @param data [Hash]
  #   @option data [String] :baz Value for baz attribute
end
Run Code Online (Sandbox Code Playgroud)

(什么也没做)

class Bar < Foo
  # @param data [Hash]
  # @option data [String] :baz Value for baz attribute
  # @!parse def initialize(data); end
end …
Run Code Online (Sandbox Code Playgroud)

ruby yard

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

拯救类中所有方法的异常

基本上,这是正常的代码:

class Foo
   def hi
      # your code here....
   rescue => e
      # Raise error here
   end

   def hello
      # your code here...
   rescue => e
      # Raise error here
   end
end
Run Code Online (Sandbox Code Playgroud)

但在 PHP 中,我可以使用__call魔术方法创建抽象类,如下所示:

class FooAbstract {
    public function __call($name, $args) {
       # Try catch in here...
    }
}

class Foo extends FooAbstract {
   public function hi() {
     # Code with try catch...
   }
}
Run Code Online (Sandbox Code Playgroud)

我如何在 Ruby 类中使​​用 __call 方法???

ruby

0
推荐指数
1
解决办法
3369
查看次数

显示:不改变宽度

我想使用显示:无;但不影响宽度我这里有这个过滤器。当我按下 col-md-4 过滤器时我想要什么不改变它的宽度。这是图片以了解更多信息您可以看到两张图片中图像宽度之间的差异,您能帮我解决这个问题吗?看图片谢谢

      [![<div class="categories">
        <% @oferta.each do |o| %>
          <ul class="cat">
            <li class="pull-left"><h2><%= link_to o.offer,o %></h2><br><h4><%= o.description %></h4>
              <div class="main">
                <% if o.sigs.exists? %>
                  <div id="myBtnContainer">
                    <button class="btn active"  onclick="filterSelection('o')">All</button>
                      <% o.sigs.pluck(:name).uniq.each do |name| %>
                        <button class="btn"  onclick="filterSelection('<%= name %>')"><%= name %><br>
                        </button>
                      <% end %>
                  </div>
                  <div class="row">
                    <% for item in o.sigs %>
                      <div class="column <%= item.name %>">
                        <div class="content">
                          <%= link_to item do %><%= image_tag item.image.url(), skip_pipeline: true , style: "width:100%"%><% end %>
                          <h4><br><%=link_to …
Run Code Online (Sandbox Code Playgroud)

html css

0
推荐指数
1
解决办法
4005
查看次数

标签 统计

ruby ×6

carrierwave ×1

css ×1

csv ×1

html ×1

mongoid ×1

moving-average ×1

rest ×1

ruby-on-rails ×1

yaml ×1

yard ×1