小编ndn*_*kov的帖子

如何对一组int和字符串进行排序?

我试图用一个int和字符串的混合排序一个数组.举个例子:

a = ["a", "b", 5, "c", 4, "d", "a1", "a12", 3, 13, 2, "13a", "12a"]
Run Code Online (Sandbox Code Playgroud)

我试过了:

a.sort do |x, y|
  if x.class == y.class
    x <=> y
  else
    x.class.to_s <=> y.class.to_s
  end
end
Run Code Online (Sandbox Code Playgroud)

哪个回报:

[2, 3, 4, 5, 13, "12a", "13a", "a", "a1", "a12", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

[2, 3, 4, 5, "12a", 13, "13a", "a", "a1", "a12", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

ruby arrays sorting natural-sort

9
推荐指数
1
解决办法
142
查看次数

Ruby的方法解绑机制有什么意义?

Method#unbind返回UnboundMethod对方法的引用,稍后可以使用该方法将其绑定到另一个对象UnboundMethod#bind.

class Foo
  attr_reader :baz

  def initialize(baz)
    @baz = baz
  end
end

class Bar
  def initialize(baz)
    @baz = baz
  end
end

f = Foo.new(:test1)
g = Foo.new(:test2)
h = Bar.new(:test3)
f.method(:baz).unbind.bind(g).call # => :test2
f.method(:baz).unbind.bind(h).call # => TypeError: bind argument must be an instance of Foo
Run Code Online (Sandbox Code Playgroud)

最初,我认为这非常棒,因为我预计它的工作方式与JavaScript的Function.prototype.call()/ 相似Function.prototype.apply().但是,要绑定方法的对象必须属于同一个类.

我能想到的唯一应用是,如果解除绑定方法,丢失原始实现(重新定义原始或单例类中的方法),然后重新绑定并调用它.

ruby methods metaprogramming

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

谷歌分析 - 不到三分钟前

Google Analytics Realtime提供了rt:minutesAgo可以过滤查询的功能.

但是,它不是维度,而是指标,<=不能在过滤器中使用.

假设我想rt:totalEvents在最后n分钟得到一些数字度量(如),那么最好的方法是什么?


目前,我唯一的想法是创建一个正则表达式,匹配数字<= n,使用=~然后rt:totalEvents在结果集中求和.在很多层面上听起来都是错误的.

google-analytics google-analytics-api

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

如何查询具有ActiveStorage附件的记录?

给定具有ActiveStorage的模型

class User 
  has_one_attached :avatar
end
Run Code Online (Sandbox Code Playgroud)

我可以检查一个用户是否有化身

@user.avatar.attached? 
Run Code Online (Sandbox Code Playgroud)

但是,如何返回具有附件(或没有附件)的所有用户的集合?

我尝试使用joins返回带有附件的所有Users,但这在blob或附件表上似乎都不起作用,或者我的语法不正确。

我确定我忽略了一些显而易见的事情。是否可以按照以下方式做一些事情:

User.where(attached_avatar: nil)
Run Code Online (Sandbox Code Playgroud)

如果是这样,在哪里记录?

ruby-on-rails rails-activestorage

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

不能做save​​_screenshot在Capybara/Poltergeist中给出NotSupportedByDriver

我和Poltergeist一起经营Capybara,我有一步:

Given(/^take a screenshot$/) do
  page.save_screenshot("/tmp/page.png", :full => true)
end
Run Code Online (Sandbox Code Playgroud)

它一直在说:

Capybara::Driver::Base#save_screenshot (Capybara::NotSupportedByDriverError)
./features/step_definitions/job_steps.rb:19:in `/^take a screenshot$/'
features/jobs_board/user_management.feature:9:in `And take a screenshot'
Run Code Online (Sandbox Code Playgroud)

任何想法在哪里看?我在env.rb中的配置如下所示:

Capybara.javascript_driver = :poltergeist
Capybara.current_driver = :poltergeist
Run Code Online (Sandbox Code Playgroud)

capybara poltergeist

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

如何从数组中删除相反的值?

我有一个问题,我正在尝试创建一个方向数组,其中每个方向都不是多余的.

plan = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,此计划中的大多数值都是多余的,您可以简单地告诉此人"WEST".

plan = ["NORTH", "WEST", "SOUTH", "EAST"]
Run Code Online (Sandbox Code Playgroud)

我还希望上面的计划返回一个空数组.

ruby arrays

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

我该如何进行稳定排序?

如何稳定排序数组?我想要排序的值可能有很多重复,我不确定ruby使用哪种排序算法.我认为插入排序对我来说效果最好.

例:

a = [[:a, 0], [:b, 1], [:c, 0], [:d, 0]]
a.sort_by { |x, y| y }  # => [[:a, 0], [:d, 0], [:c, 0], [:b, 1]]
Run Code Online (Sandbox Code Playgroud)

寻找

[[:a, 0], [:c, 0], [:d, 0], [:b, 1]]
Run Code Online (Sandbox Code Playgroud)

ruby sorting stable-sort

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

Capybara增加最大允许页面加载时间

我有一个页面,有时加载超过一分钟.假设这是预期的行为并且不会改变.在这些情况下,我明白了Net::ReadTimeout.

请注意,这是在通过单击上一页上的按钮而不是ajax请求导航到页面之后.因此Capybara.using_wait_time没有帮助.

我尝试了一些激进的东西(其中一些我知道不会起作用),如:

  • 设置page.driver.browser.manage.timeouts's implicit_wait,script_timeoutpage_load.
  • 在整个对象空间循环,并设置所有Selenium::WebDriver::Remote::Http::Defaulttimeout值.
  • 在整个对象空间循环,并设置所有 Net::HTTPread_timeout.
  • page.driver.browser.send(:bridge).http.instance_variable_get(:@http).read_timeout=

似乎没有工作.这应该是非常微不足道的,但我找不到办法.

如果你知道一个很棒的webdriver不可知解决方案.如果没有 - 我正在使用.

ruby page-load-time capybara net-http selenium-webdriver

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

Ruby的表现优于Java

我正在做一个针对Java人群的Ruby生态系统的演示.

虽然我会从生产力中获得关于时间收益的观点,并且速度仍然足够快,但如果我能提出一个基准测试表明Ruby在某种数字处理中表现优于Java,那么一旦问题出现就会很好,为了双关语.


不幸的是,经过数小时的搜索和实验,我仍然一无所获.

任何人都可以提出一个显示事物并非完全黑白的基准吗?

理想情况下,它应该将最新版本的java 1.6/1.8与最新版本的cruby进行比较.任何涉及rubinius/jruby的例子也很受欢迎.

ruby java performance benchmarking

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

用Clojure编写的阶乘函数的低性能

我是Clojure的新手.在试验它时,我写了一个函数来计算n!.我的Clojure代码如下:

(defn factorial
    [n]
    (reduce * (biginteger 1) (range 1 (inc n))))
Run Code Online (Sandbox Code Playgroud)

然后我在repl中运行以下内容.

(time (factorial 100))
Run Code Online (Sandbox Code Playgroud)

这就是结果:

"Elapsed time: 0.50832 msecs"
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000N
Run Code Online (Sandbox Code Playgroud)

然后我在Ruby中创建了一个类似的解决方案

def factorial(n)
  start = Time.now.to_f
  (2..n).inject(1) { |p, f| p * f }
  finish = Time.now.to_f
  time_taken = finish - start
  puts "It took: #{(time_taken * 1000)} msecs" 
end
Run Code Online (Sandbox Code Playgroud)

与irb我跑了factorial(100) 结果:

It took: 0.06556510925292969 msecs
 => 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

Ruby版本的性能似乎要大得多,尽管我见过大多数证据表明Clojure应该具有卓越的性能.有什么我误解的东西或我的Clojure解决方案的某些元素会减慢它的速度吗?

ruby performance clojure

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