我有一个包含大约100万个文档的MongoDB.这些文档都有一个字符串,表示一个1位和0位的256位bin,如:
0110101010101010110101010101
理想情况下,我想查询近二进制匹配.这意味着,如果两个文件具有以下数字.是的,这是汉明距离.
Mongo目前不支持此功能.所以,我不得不在应用程序层中这样做.
因此,鉴于此,我试图找到一种方法来避免在文档之间进行单独的汉明距离比较.这使得时间基本上不可能完成.
我有很多内存.并且,在ruby中,似乎有一个伟大的宝石(算法)可以创建许多树,我似乎没有任何工作(还)可以减少我需要做的查询数量.
理想情况下,我想制作100万个查询,找到接近重复的字符串,并能够更新它们以反映这一点.
任何人的想法将不胜感激.
我需要执行验证以确保公司内只有一个用户可以存在于给定类别中.
validates :user_id, :uniqueness => {:scope => [:category, :company_id], :message => "already exists"}
Run Code Online (Sandbox Code Playgroud)
除了在:user_id密钥上设置错误消息之外,这个工作正常.
我怎么能这样做但是在:user键上设置错误(validates :user给出错误)?
给定一个定义顶级类的gem,它与我编写的一些代码冲突,是否可以以这样的方式要求gem,使其所有类都分组在我可以定义的模块中?例如,如果unsafe_gem定义了一个类:
class Word
# ... some code
end
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:
class Word
# My word class.
end
module SafeContainer
# This obviously doesn't work
# (i.e. the gem still defines ::Word).
require 'unsafe_gem'
end
Run Code Online (Sandbox Code Playgroud)
这样我就可以区分:
Word.new # => The class I defined.
SafeContainer::Word.new # => The class defined by the gem.
Run Code Online (Sandbox Code Playgroud)
一些进一步的细节:我的代码(例如'Word'类)已经包装在它自己的命名空间中.但是,我希望能够为用户提供启用"语法糖"形式的选项,这使得某些类可以在顶级命名空间下直接访问.但是,这会与我正在使用的一个宝石创建一个名称冲突,它定义了一个顶级类.目前提出的解决方案都不起作用,因为宝石实际上依赖于其全球定义的类; 因此,取消定义课程打破了宝石.当然,gem有多个文件,单独要求将其文件放入模块似乎是一个非常脆弱的解决方案.目前,我发现的唯一解决方法是:
begin
# Require the faulty gem.
require 'rbtagger'
rescue
# If syntactic sugar is enabled...
if NAT.edulcorated?
# Temporarily remove the sugar for the clashing class.
Object.const_unset(:Word); …Run Code Online (Sandbox Code Playgroud) 除了JavaScript的^,并$等同于Ruby的\A和\z,还有什么其他细微的差别是有两个正则表达式引擎之间?
我正在寻找相同的正则表达式可能表现不同的细微差别,例如/^abc$/将在Ruby中匹配:
123
abc
def
Run Code Online (Sandbox Code Playgroud)
但它在Javascript中不匹配.
我是Rails,MVC和CRUD的新手,我正在尝试使用更新方法来更改帖子的投票数量.我的帖子控制器更新方法中有以下代码:
def update
@post = Post.find(params[:id])
if params[:vote] == 'up'
@post.update_column(:ups => @post[:ups] + 1)
elsif params[:vote] == 'down'
@post.update_column(:downs => @post[:downs] + 1)
end
flash[:notice] = "Thanks for voting! This helps us determine important issues in our schools."
redirect_to 'Posts#index'
end
Run Code Online (Sandbox Code Playgroud)
我的routes.rb中有以下代码:
OpenMCJC::Application.routes.draw do
root :to => 'posts#index'
resources :posts
match '/posts/:id/:vote', :to => 'posts#update'
end
Run Code Online (Sandbox Code Playgroud)
导航到"/ posts/3/up"后,会抛出以下错误:
ArgumentError in PostsController#update
wrong number of arguments (1 for 2)
Run Code Online (Sandbox Code Playgroud)
根据页面的请求参数是这样的:
{"id"=>"3",
"vote"=>"up"}
Run Code Online (Sandbox Code Playgroud)
你能帮我弄清楚出了什么问题吗?
是否有Ruby或Activerecord方法可以在数据库字段中写入和读取哈希值?
我需要编写一个Web实用程序来接受POST数据并将其保存到数据库中,然后再以原始哈希形式从数据库中提取它.但理想情况下,不要"了解"结构是什么.换句话说,我的数据存储需要独立于任何特定的散列键集.
例如,有一次外部应用程序可能会POST到我的应用程序:
"user" => "Bill",
"city" => "New York"
Run Code Online (Sandbox Code Playgroud)
但另一次外部应用程序可能会POST到我的应用程序:
"company" => "Foo Inc",
"telephone" => "555-5555"
Run Code Online (Sandbox Code Playgroud)
因此,我的实用程序需要将任意哈希保存到text数据库中的字段,然后,稍后从已保存的内容重新创建哈希.
我不知道Ruby,但我的应用程序遇到了这个问题.有人可以帮帮我吗?
第7行上的ActionView :: TemplateError(无法将nil转换为String)
4: <h3><span><%= opinion.opinion %></span>: <%= opinion.keywords.sort.join(' / ').upcase %> </h3>
5: <div class="original">Estado original: <span class="pos"><%= opinion.opinion %></span></div>
6: <%#= highlight(simple_format(highlight_ontology(opinion)), opinion.keywords, :highlighter => '<em>\1</em>') %>
7: <%= simple_format(highlight_ontology(opinion)) %>
8: <%= button_to_remote('POSITIVO', {:url => url_for(opinion), :method => :put, :with => '"opinion[opinion]=POSITIVE"' }, :class => :positive) %>
9: <%= button_to_remote('OBJETIVO', {:url => url_for(opinion), :method => :put, :with => '"opinion[opinion]=OBJECTIVE"' }, :class => :objective) %>
10: <%= button_to_remote('NEGATIVO', {:url => url_for(opinion), :method => :put, :with => '"opinion[opinion]=NEGATIVE"' …Run Code Online (Sandbox Code Playgroud) 我被要求对两个ETL框架进行原型设计.要求如下:
原始文件可以是任何东西(excel,csv,html页面等).目标数据库是MySQL.
不要只是删除名称,请根据您的经验说明优缺点.
谢谢!
使用如下的Rails.cache.fetch甚至在我的开发环境中缓存(关闭缓存):
@boat_features = Rails.cache.fetch("boat_features", expires_in: 10.minutes) do
BoatFeature.all
end
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个?
我刚刚进入Ruby并且来自Java和C/C++环境.
在编写Ruby中的第一个小项目时,我不知何故习惯了让所有局部变量以下划线开头.我想我的主要动机是更好的可读性和方法调用的区别.
原则上只有三种类型的变量($global,@instance和local),绝大多数变量都以下划线开头.我不确定,这是好还是坏.此外,在很多其他语言中,下划线将被替换为其他一些字符.
有没有关于变量命名的最佳实践,除了通常的CamelCase和/或下划线分开?专业"红宝石"的习惯是什么?当我选择领先的下划线时,我是否忽略了一些常规的Ruby惯例?
编辑
感谢所有的答案和建议.这对我帮助很大.
以下答案和评论的简短摘要
(适用于短期访客)
领先的下划线与:
def my_method(_my_arg)my_array.each { |_x| puts _x}所有其他局部变量没有前导下划线,因为来自JavaScript的程序员可能会对变量的预期行为感到困惑.
对于变量名和方法调用之间的视觉分离,强制自己在所有方法调用中使用" ("括号" )" 可能会显着提高可读性.
ruby ×10
activerecord ×2
caching ×1
crud ×1
etl ×1
gem ×1
hash ×1
java ×1
javascript ×1
kdtree ×1
mongodb ×1
namespaces ×1
null ×1
perl ×1
python ×1
regex ×1
routing ×1
string ×1
validation ×1