我查看了超过10页试图找到范围的好处,而不是任何其他返回ActiveRecord :: Relation的ActiveRecord类方法.
在下面的例子中,为什么范围比它下面的替代方案更好,它们做同样的事情:
#scope :pat1, lambda {{:conditions => ["name like ?", 'J%']}}
#scope :pat2, lambda {{:conditions => ["id > 5"]}}
def self.pat1
where("name like ?", 'J%')
end
def self.pat2
where("id > 5")
end
def patx
self.class.pat1.pat2.first
end
Run Code Online (Sandbox Code Playgroud)
文档一遍又一遍地说,范围是有益的,因为它们可以被链接......
"所有范围方法都将返回一个ActiveRecord :: Relation对象,该对象将允许在其上调用更多方法(例如其他范围)." - guides.rubyonrails.org
"范围比普通类方法更好的主要原因是它们可以与其他方法链接" http://ruby.railstutorial.org
......但上面的替代方案也可以链接产生相同的结果.
试图弄清楚皇帝的新衣服是否会在这里发生.即使从句法角度来看,似乎也没有任何好处.它们是否更快 - 一些消息来源含糊地暗示这一点.
我在使用格式函数时遇到问题boost::regex_replace
.我可以调用它的一个参数版本,但不能调用两个参数:
e = "(^|>)([^<>]+)";
h_str = regex_replace(h_str, e, repl_quot, boost::match_default);
Run Code Online (Sandbox Code Playgroud)
在哪里repl_quot
定义为
std::string const &repl_quot(boost::smatch const &what) {
boost::regex e("\"");
std::string repl(""");
static std::string;
str = regex_replace(what[0].str(), e, repl, boost::match_default);
return str;
}
Run Code Online (Sandbox Code Playgroud)
上面的工作,但我真的不想使用那个静态变量,所以我尝试了我认为是一个可接受的两个参数替代版本:
std::string const &repl_quot2(boost::smatch const &what, std::string &out) {
boost::regex e("\"");
std::string repl(""");
out = regex_replace(what[0].str(), e, repl, boost::match_default);
return out;
}
Run Code Online (Sandbox Code Playgroud)
但是regex_replace不会接受这个(一个错综复杂的编译器错误).我正在尝试使用基于以下Boost::Regex
文档的两个参数版本:
template basic_string regex_replace(const basic_string&s,const basic_regex&e,Formatter fmt,match_flag_type flags = match_default);
要求类型Formatter必须是......一元,二元或三元函子,它从函数调用计算替换字符串:fmt(what)必须返回char_type的容器以用作替换文本,或者fmt (what,out)或fmt(what,out,flags),两者都将替换文本写入*out,然后返回新的OutputIterator位置.在每种情况下,match_results对象是什么,表示找到的匹配项.
已经多次请求编译器错误消息,所以这里(小心你要求的):
c:\ boost\boost\regex\v4\regex_format.hpp在成员函数`OutputIter boost :: re_detail :: format_functor_container …
我试图了解有关网站开发的最新技术,并提出了几个问题.也许我最终会找到自己的大部分答案.我来自C++和Windows开发的背景,通常我对Web开发的特殊性质感到困惑.
在对它进行在线研究和Ruby(在Rails上)之后,我专注于Django.从我读到的内容来看,ROR试图在幕后为你做所有事情,因此是缓慢且不可扩展的(并且过度使用并且没有为黄金时间做好准备).所以我已经进入了Django - 下载了Python和Django,来自一个完整的Django站点的源代码,让它运行,等等.
关于Django的第一件令我惊讶的事情是,关于实际演示似乎没有任何创新.所有创新都涉及数据库问题,业务逻辑,代码的可重用性等 - 但实际上并不是关于网站的创新视觉控制或图形的任何新内容.当你构建一个Django视图或模板时,它仍然会从我能看到的内容中广泛引用html(并且可能也是Javascript - 但我实际上还没有在Django模板中看到任何Javascript.)
我以前认为html可能与汇编程序类似,所以过去几年的传统应用程序开发人员可能知道甚至偶尔使用一个小的汇编程序,但通常几乎不会使用它,而从我所看到的,html(和还有CSS和javascript)仍然必须由每个Web开发人员持续掌握和编写,无论他们是使用Django还是其他任何东西.这是真实的陈述吗?
特别是有一个网站对我来说作为最终用户代表了网站的最新技术水平,我很想知道这样一个网站的基础是什么.该网站是chess.com,并且有各种各样的设施可以与其他用户在线下棋,用户可以通过各种图形效果自定义帐户等等.它们最有可能是用于这样的网站的Java小程序吗?Django与这样一个网站的相关性如何.Django会与Flash甚至Java applets一起使用吗?此外,当像chess.com这样的网站被移植到移动设备上时,用什么来编写它 - 与桌面相同的开发工具或完全不同的东西(是的,我有很多事要做.)
实际上是否有完全用Java编写的网站,也许使用非常高级的Java API?为什么有人会说(因为我在某处读到)他们鄙视Java,这就是他们进入Ruby on Rails和Django的原因.
关于Python(以及PHP),它们存在的理由是什么?首先,Python比解释C++慢得多.为什么用Python或PHP编写的网站 - 平台独立性是这里唯一的问题.我不相信Python中的应用程序开发比C++快得多(除了垃圾收集问题 - Python的主要原因是 - 垃圾收集.)
所以无论如何,一堆新手问题 - 如果他们在这里没有回答的话,可能最终会自己回答大部分问题.也许他们与其他人有关.
请帮助解释维基百科中描述的生日效果:
生日攻击的工作原理如下:
- 选择任何消息m并计算h(m).
- 更新清单L.检查h(m)是否在列表L中.
- 如果(h(m),m)已经在L中,则找到了冲突消息对.否则将对(h(m),m)保存在列表L中并返回步骤1.
从生日悖论我们知道,在执行大约2 ^(n/2)个哈希评估之后,我们可以期望找到匹配的条目.
以上是否意味着通过上述整个循环的2 ^(n/2)次迭代(即2 ^(n/2)返回到步骤1),或者它是否意味着对已经在L中的各个项目的2 ^(n/2)次比较?
最好的情况:只需修改其中一个的 urlpatterns 以包含另一个的 urlpatterns。
但到目前为止,它们都有单独的 settings.py、单独的数据库、单独的目录。我想我可能必须以某种方式合并它们的两个 settings.py,将其中一个包含在另一个的 INSTALLED_APPS 中,并解决一堆目录问题。我可以以某种方式让一个通过 urls.py 调用另一个并放弃上述所有内容吗?任何网站文档都详细介绍了这一切,这是主要的事情。抱歉,如果有人问这个问题。问题是现有的 Django 项目正在服务器上的一个 uwsgi 进程下运行,添加另一个 uwsgi 进程会将其提升到另一个帐户级别。
它有效,没有崩溃.可以吗?
编辑:我问的原因是std::string s = "a" + "b" + "c";
产生编译器错误,并(std::string)"a"
告诉编译器,"只是假定一个"指向的是一个std :: string".我实际上并不知道如何实现std :: string.
感谢大家的反馈.
class Person < ActiveRecord::Base
validates :terms_of_service, :acceptance => true
end
Run Code Online (Sandbox Code Playgroud)
在上面,validates
从Ruby的角度来看是什么?它不是方法定义,它不是数据定义或声明,所以显然它是一个方法调用,就在类的主体中.我从未在类中直接调用过这样的方法(即在方法定义之外),甚至在我现在经历的Ruby编程教程中也没有:http://ruby-doc.org/docs/ProgrammingRuby/.
因此,如果它是一个方法调用,它在什么时候被调用.我尝试了以下测试:
class Person
print "cat"
end
#p = Person.new
#q = Person.new
Run Code Online (Sandbox Code Playgroud)
print "cat"
正在被执行一次,无论是否有任何实际的Person对象被声明,所以显然只是在解析类定义时,Ruby会看到方法print并说:"好的我会继续执行此操作"但是从来没有再一次.
那么Ruby文档在哪里可以帮助我理解validates
上面发生的事情
谢谢.
如果你只使用MD5哈希的前4个字节,理论上这意味着只有1/255 ^ 4的碰撞机会?也就是说,被散列设计,使得你只需要使用返回的哈希值的一小部分(说哈希是一些大小的文件)?
所以,iow,一些基于二进制文件内容生成唯一,合理长度文件名的算法.具有相同二进制内容的两个文件应具有相同的名称.显然,这将是有限的,因为大概你不能为一大组大文件中的每一个都有唯一合理长度的文件名,只有少数位位置不同.但据推测,有一些启发式,最佳近似,例如利用典型图像文件的已知属性.如果我有一些算法的名称,我可以google它,并找到其他方法.