我很好奇是否通过创建获取请求模板而不是以编程方式创建NSFetchRequest来获得性能提升,因此我编写了一些测试来测量它.这是github上的源代码.
Simulator和iPhone上的差异顺序相同(测量一堆提取的时间间隔):
just creating an NSFetchRequest: 4.399674
creating a Fetch Request Template: 0.501369
NSFetchRequest with field indexed: 0.407068
Fetch Request Template and field indexed: 0.281876
Run Code Online (Sandbox Code Playgroud)
事实证明,创建获取请求模板的性能提升约为7~9倍.我想也许它正在创建下面的正确索引但是当我创建一个匹配索引字段的获取请求模板时,甚至还有一个性能优势.
好的,很高兴知道这种情况,但我非常想知道在获取性能增益的获取请求模板下发生了什么?
该文档提到了四种与时间相关的字段类型(http://mongoid.org/en/mongoid/docs/documents.html#fields).在其他数据库中,我可以看到这些字段将如何成为数据库中的差异类型,但对于MongoDB而言,它们都不是日期类型?这只是为了与ActiveRecord保持一致吗?
使用:
所以我有一个模板,我已经连接到一个从REST API接收信息的控制器.只是打印出文字,这很好,但这些把手表达......
<img src="{{ imageUrl }}"/>
Run Code Online (Sandbox Code Playgroud)
......当插入dom时看起来像:
<img src="<script id='metamorph-28-start' type='text/x-placeholder'></script>http://asdf.com/image.jpg<script id='metamorph-28-end' type='text/x-placeholder'></script>">
Run Code Online (Sandbox Code Playgroud)
我显然对Ember.js和Handlebars很新.
我曾尝试搜索"在ember模板中渲染网址"和"在ember胡子模板中打印出html".Ack,可能很明显,但我很想念它.
使用rspec和capybara处理新的Rails 3.2.9应用程序.
我在Gemfile中有以下内容:
gem 'rspec-rails'
gem 'capybara'
Run Code Online (Sandbox Code Playgroud)
以及spec/spec_helper.rb中的以下内容:
require 'rspec/rails'
require 'capybara/rspec'
Run Code Online (Sandbox Code Playgroud)
并在spec/requests/asdf_spec.rb中:
require 'spec_helper'
describe 'Asdf' do
describe "GET /asdfs" do
it "should list asdfs" do
visit asdfs_path
end
end
end
Run Code Online (Sandbox Code Playgroud)
此测试失败:
Failure/Error: visit asdfs_path
NoMethodError:
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_1:0x007fa7b68961a0>
# ./spec/requests/asdfs_spec.rb:19:in `block (4 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
所以看起来Capybara没有装满.伙计,为什么不呢?我觉得我之前已经做了十几次同样的事情......可能会对一些愚蠢的东西进行消隐.
在AppDelegate中didFinishLaunchingWithOptions:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(contextChanged:)
name:NSManagedObjectContextDidSaveNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
这样我就可以将更改合并到其他线程的数据中.
问题:我是否需要在applicationWillResignActive或中删除此侦听器applicationWillTerminate?看起来似乎没有意义.我想我问的是,在主循环中有这样的监听器是否正常,从来没有被删除过.
我想要一个 sbt 任务,我可以运行它来生成一些代码。我不想在每次运行时都生成这个,只是偶尔手动运行一次这个任务。我创建了一个骨架项目来解释(https://github.com/jinyk/sbtmanagedsrc)。
构建.sbt:
lazy val root = (project in file("."))
.settings(scalaVersion := "2.11.8")
.settings(gensomecode := genSomeCodeTask.value)
/////////////////////////////////////////////////////////////
// fugly way to get managed sources compiled along with main
.settings(unmanagedSourceDirectories in Compile += baseDirectory.value / "target/scala-2.11/src_managed/")
/////////////////////////////////////////////////////////////
lazy val gensomecode = taskKey[Seq[File]]("gen-code")
lazy val genSomeCodeTask = Def.task {
val file = (sourceManaged in Compile).value / "SomeGenCode.scala"
println("file: " + file)
IO.write(file, """object SomeGenCode {
| def doSomething() {
| println("Hi!")
| }
|}""".stripMargin)
Seq(file)
}
Run Code Online (Sandbox Code Playgroud)
因此,使用上面的 build.sbt,我可以运行sbt …
正如您在下面所看到的,Objective-C中的对象都有一个isa字段,指向它所属的类.最终,一切都指向NSObject,而NSObject又指向Class.为什么这个班级有一个指向自己的isa?也许为Class对象提供这个自引用字段甚至是有意义的,但是Xcode在观察窗口中显示的是什么?Xcode在这里是不是超文字,还是有意为一个Class对象显示isa字段?
我对Xcode的观察窗口的作用并不了解,我真的很好奇,因为我怀疑这种混乱意味着我不理解某些东西.

我有一个充满来自第三方的ID的字段.id是数字,但是作为字符串写入db.
我想在整数的值上对这个id排序的提取进行排序.所以我把它添加NSSortDescriptor到了NSFetchRequest.
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSSortDescriptor *sortBy = [[NSSortDescriptor alloc] initWithKey:@"someId" ascending:YES comparator:^(id a, id b) {
return [[numFormatter numberFromString:a] compare:[numFormatter numberFromString:b]];
}];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortBy]];
Run Code Online (Sandbox Code Playgroud)
但我得到的结果如下.这些仍然按字母顺序排序为字符串.
730275292
73900038
730172867
7350727
830138437
835164
837287901
8338804
930274
9324376
Run Code Online (Sandbox Code Playgroud)
我对使用这个比较器块有什么不了解?
编辑2012年5月1日美国东部时间上午9:20
为了测试是否正在使用比较器块,我尝试了以下内容,根据字段的长度进行排序.
NSSortDescriptor *sortBy = [[NSSortDescriptor alloc] initWithKey:@"fbId" ascending:YES comparator:^(id a, id b) {
if ([a length] < [b length]) {
return NSOrderedAscending;
} else if ([a length] > [b length]) {
return …Run Code Online (Sandbox Code Playgroud) 使用capybara 1.0.0和selenium-webdriver 0.2.0并在测试中我有类似下面的东西从下拉列表中选择.
select 'Food & Dining', :from => 'category_id'
Run Code Online (Sandbox Code Playgroud)
测试通过,但我收到以下投诉:
Selenium::WebDriver::Element#select is deprecated. Please use Selenium::WebDriver::Element#click ...
Run Code Online (Sandbox Code Playgroud)
我在网上搜索过,文档稀疏,有人知道如何使用click来选择select元素的选项吗?
最后,我想使用Inflector.parameterize为文章标题创建slug,其中包含一堆unicode字符(例如"ḤellẒno"=>"hellz-no").根据http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-transliterate,它说它们将它们放在locales/en.yml文件中.
# Store the transliterations in locales/en.yml
i18n:
transliterate:
rule:
?: "h"
?: "z"
Run Code Online (Sandbox Code Playgroud)
我试过了,但以下不起作用:
"?ell? no".parameterize
# => "ell-no"
Run Code Online (Sandbox Code Playgroud)
但是,当我像第二段建议的那样在Ruby中更改它时,它可以工作.
I18n.backend.store_translations(:en, :i18n => {
:transliterate => {
:rule => {
"?" => "H",
"?" => "Z"
}
}
})
"?ell? no".parameterize
# => "hellz-no"
Run Code Online (Sandbox Code Playgroud)
我想我想知道为什么在locales/en.yml中放置自定义音译不起作用.
即使有人给出答案,作为一个Rails noob,我也想知道通常把代码放在第二个块的位置来手动设置I18n.backend.store_translations?
作为一个新手,我可能错过了一些关于Ruby的东西,但对于我的生活,我不明白这个结果.所以我有这个简单的功能:
def crazyfunc(s)
s.gsub!('a', 'b')
#return has not purpose here
end
Run Code Online (Sandbox Code Playgroud)
现在我有这么简单的几套.
s1 = 'abc'
s2 = s1
s2 = crazyfunc(str2)
puts s1
=> bbc
Run Code Online (Sandbox Code Playgroud)
为什么世界上的s1受到crazyfunc的影响?所以这样做:
def crazyfunc(s)
return s.gsub('a', 'b')
end
Run Code Online (Sandbox Code Playgroud)
不会改变str1,所以我认为它与inplace gsub正在做的事情有关.但我仍然没有得到为什么str1会被改变的逻辑.