我试图用一个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) 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().但是,要绑定方法的对象必须属于同一个类.
我能想到的唯一应用是,如果解除绑定方法,丢失原始实现(重新定义原始或单例类中的方法),然后重新绑定并调用它.
Google Analytics Realtime提供了rt:minutesAgo可以过滤查询的功能.
但是,它不是维度,而是指标,<=不能在过滤器中使用.
假设我想rt:totalEvents在最后n分钟得到一些数字度量(如),那么最好的方法是什么?
目前,我唯一的想法是创建一个正则表达式,匹配数字<= n,使用=~然后rt:totalEvents在结果集中求和.在很多层面上听起来都是错误的.
给定具有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)
如果是这样,在哪里记录?
我和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) 我有一个问题,我正在尝试创建一个方向数组,其中每个方向都不是多余的.
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使用哪种排序算法.我认为插入排序对我来说效果最好.
例:
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) 我有一个页面,有时加载超过一分钟.假设这是预期的行为并且不会改变.在这些情况下,我明白了Net::ReadTimeout.
请注意,这是在通过单击上一页上的按钮而不是ajax请求导航到页面之后.因此Capybara.using_wait_time没有帮助.
我尝试了一些激进的东西(其中一些我知道不会起作用),如:
page.driver.browser.manage.timeouts's implicit_wait,script_timeout和page_load.Selenium::WebDriver::Remote::Http::Default的timeout值.Net::HTTP的read_timeout.page.driver.browser.send(:bridge).http.instance_variable_get(:@http).read_timeout=似乎没有工作.这应该是非常微不足道的,但我找不到办法.
如果你知道一个很棒的webdriver不可知解决方案.如果没有 - 我正在使用硒.
我正在做一个针对Java人群的Ruby生态系统的演示.
虽然我会从生产力中获得关于时间收益的观点,并且速度仍然足够快,但如果我能提出一个基准测试表明Ruby在某种数字处理中表现优于Java,那么一旦问题出现就会很好,为了双关语.
任何人都可以提出一个显示事物并非完全黑白的基准吗?
理想情况下,它应该将最新版本的java 1.6/1.8与最新版本的cruby进行比较.任何涉及rubinius/jruby的例子也很受欢迎.
我是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 ×7
arrays ×2
capybara ×2
performance ×2
sorting ×2
benchmarking ×1
clojure ×1
java ×1
methods ×1
natural-sort ×1
net-http ×1
poltergeist ×1
stable-sort ×1