我正在研究一些文本转换例程,它们在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) 我正在尝试将文件添加到索引以使用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"之后但未发生这种情况.
我错过了什么吗?
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) 当我解决欧拉项目问题#15时,我意识到它可以通过从开始到结束的路径组合方式来解决.生成的路径始终具有相同大小的向右或向下选择(或0和1),而正确的路径始终具有相同的0和1的数量.因此,在二进制字中具有相同数量0和1的数字的数量是1比特长度的C(2,1)对于2比特是C(4,2),对于4比特是"C(6,3)"......
现在我的问题是:如果一个数字具有0和1的相同数量,是否有一个函数可以解决?我想它更像是一个逻辑函数,我不想迭代所有的数字或使用正则表达式(这将比迭代更糟).
**其他问题是关于这种"平衡"价值观之间的增长和空间?
我正在寻找一种方法将键击注入OS键盘输入缓冲区,就像当你单击一个按钮时程序插入一个(或多个)键盘敲击.我想在java中这样做,因为我想在(win,linux和osx)中运行它.我想我必须利用JNI,有人有想法吗?
谢谢所有stackoverflowers;)
我正在尝试验证像这样的模型学生;
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)
但这两种选择都没有解决我
有任何想法吗???
我正在寻找一种仅在某些模型中使用ActiveRecord时区配置的方法,或者在某些我不需要的方法中禁用它的方法.
像这样的东西:
模型User,Access,Sale使用与application.rb相同的时区:config.time_zone ="xxxx"
但模型Lap,CheckIn不使用时区设置或UTC.
我想过使用一个after_initialize方法来清除time_zone配置,比如*after_free*(我知道它不存在)从旧的配置值中支持时区设置.
这不是一个简单的方法吗?
我给你一个简单的问题GIT大师:
在GIT手册页中,我有这个
man git-cherry-pick
...
git-cherry-pick - Apply the changes introduced by some existing commits
...
Run Code Online (Sandbox Code Playgroud)
我的疑问是:当我选择提交到另一个分支时,此提交被移动到另一个分支或复制(应用于两个分支)?
我有一个变量val,其可以是nil,true,或false.我正在编写一个方法convert,它val根据以下内容转换输入并返回以下值val:
true - > truefalse - > falsenil - > true我可以用以下nil支票来做到这一点:
def convert
val.nil? ? true : val
end
Run Code Online (Sandbox Code Playgroud)
如何在没有nil支票的情况下转换它?