小编And*_*rao的帖子

为什么ruby scanf这么慢?

我正在研究一些文本转换例程,它们在Ruby中以不同的格式解析时间值.这个例程越来越复杂,我正在测试一个更好的解决这个问题的方法.

我正在测试一种使用方法scanf.为什么?我一直以为这比正则表达式更快,但Ruby中发生了什么?它慢得多!

我究竟做错了什么?

注意:我正在使用ruby-1.9.2-p290 [x86_64](MRI)

第一个Ruby测试:

require "scanf"
require 'benchmark'

def duration_in_seconds_regex(duration)
  if duration =~ /^\d{2,}\:\d{2}:\d{2}$/
    h, m, s = duration.split(":").map{ |n| n.to_i }
    h * 3600 + m * 60 + s
  end
end

def duration_in_seconds_scanf(duration)
  a = duration.scanf("%d:%d:%d")
  a[0] * 3600 + a[1] * 60 + a[2]
end

n = 500000
Benchmark.bm do |x|
  x.report { for i in 1..n; duration_in_seconds_scanf("00:10:30"); end }
end

Benchmark.bm do |x|
  x.report { for i in 1..n; duration_in_seconds_regex("00:10:30"); …
Run Code Online (Sandbox Code Playgroud)

c ruby regex scanf

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

在git索引中添加了一个修改过的文件,但该文件没有更改为暂存

我正在尝试将文件添加到索引以使用libgit2创建提交.

回购和索引是这样的:

git_repository *repo;
git_index *my_repo_index;
git_repository_open(&repo, ".");
git_repository_index(&my_repo_index, repo);
git_index_add_bypath(my_repo_index,"a.txt");
//all functions are returning 0, or success.
Run Code Online (Sandbox Code Playgroud)

"a.txt"文件已存在于索引中,并且是已修改的文件.

在提交之前,文件位于"未提交更改的更改"下,我认为在此之后文件将处于"暂存"状态,就像我执行"git add a.txt"之后但未发生这种情况.

我错过了什么吗?

c git libgit2

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

How to get the SUM of values on a JSONB column

I've got a 1-dimension JSONB on postgresql like this:

SELECT '{"a": 1, "b": 2, "c": 3}'::jsonb;
Run Code Online (Sandbox Code Playgroud)

How to get the SUM of values on a JSONB column? Like the sum of 1+2+3?

PostgreSQL具有jsonb_object_keys函数,但是我正在寻找类似“ jsonb_object_values”的东西(我知道此函数不存在)

# select jsonb_object_keys( '{"a": 1, "b": 2, "c": 3}'::jsonb );
 jsonb_object_keys 
-------------------
 a
 b
 c
(3 rows)
Run Code Online (Sandbox Code Playgroud)

postgresql

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

具有相同数量的0和1的二进制数

当我解决欧拉项目问题#15时,我意识到它可以通过从开始到结束的路径组合方式来解决.生成的路径始终具有相同大小的向右或向下选择(或0和1),而正确的路径始终具有相同的0和1的数量.因此,在二进制字中具有相同数量0和1的数字的数量是1比特长度的C(2,1)对于2比特是C(4,2),对于4比特是"C(6,3)"......

现在我的问题是:如果一个数字具有0和1的相同数量,是否有一个函数可以解决?我想它更像是一个逻辑函数,我不想迭代所有的数字或使用正则表达式(这将比迭代更糟).

**其他问题是关于这种"平衡"价值观之间的增长和空间?

algorithm math

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

在java中注入一个击键

我正在寻找一种方法将键击注入OS键盘输入缓冲区,就像当你单击一个按钮时程序插入一个(或多个)键盘敲击.我想在java中这样做,因为我想在(win,linux和osx)中运行它.我想我必须利用JNI,有人有想法吗?

谢谢所有stackoverflowers;)

java keyboard key keystroke

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

验证belongs_to关联

我正在尝试验证像这样的模型学生;

class Student < ActiveRecord::Base
  belongs_to :room
end
Run Code Online (Sandbox Code Playgroud)

我想确保Room是一个有效的模型,并且只有在房间有效的情况下我才能保存学生.

我试图将关联更改为:

belongs_to :room, :validate => true
Run Code Online (Sandbox Code Playgroud)

但它没有改变行为..API说:

:validate
  If false, don’t validate the associated objects when saving the parent object. false by default.
Run Code Online (Sandbox Code Playgroud)

所以我将验证更改为空间:

class Room < ActiveRecord::Base
  has_many :students, :validate => true
end
Run Code Online (Sandbox Code Playgroud)

但这两种选择都没有解决我

有任何想法吗???

validation model ruby-on-rails

2
推荐指数
1
解决办法
4587
查看次数

定义哪些模型将转换为activerecord timezone配置

我正在寻找一种仅在某些模型中使用ActiveRecord时区配置的方法,或者在某些我不需要的方法中禁用它的方法.

像这样的东西:

模型User,Access,Sale使用与application.rb相同的时区:config.time_zone ="xxxx"

但模型Lap,CheckIn不使用时区设置或UTC.

我想过使用一个after_initialize方法来清除time_zone配置,比如*after_free*(我知道它不存在)从旧的配置值中支持时区设置.

这不是一个简单的方法吗?

timezone ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
913
查看次数

应用樱桃酱

我给你一个简单的问题GIT大师:

在GIT手册页中,我有这个

man git-cherry-pick

...
git-cherry-pick - Apply the changes introduced by some existing commits
...
Run Code Online (Sandbox Code Playgroud)

我的疑问是:当我选择提交到另一个分支时,此提交被移动到另一个分支或复制(应用于两个分支)?

git cherry-pick

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

如何在没有nilcheck的情况下将nil值转换为true

我有一个变量val,其可以是nil,true,或false.我正在编写一个方法convert,它val根据以下内容转换输入并返回以下值val:

  • true - > true
  • false - > false
  • nil - > true

我可以用以下nil支票来做到这一点:

def convert
  val.nil? ? true : val
end
Run Code Online (Sandbox Code Playgroud)

如何在没有nil支票的情况下转换它?

ruby

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