我曾在几个地方,对于-in循环比遍历数组......虽然我明白,在的sizeof前进相比,后面的场景无论发生什么事来遍历一个对象的关键点(类型)块是几乎不费吹灰之力慢阅读,我仍然很好奇,究竟是什么原因,它是如此缓慢......
它是否必须执行反向哈希函数来获取密钥,而且该过程是什么慢?
有没有办法让我的en.yml文件包含一个常量?
# en.yml
foo:
bar:
I love BAZ so much!
# initializers/constants.rb
BAZ = "stackoverflow.com"
I18n.t("foo.bar")
-> "I love stackoverflow.com so much!"
Run Code Online (Sandbox Code Playgroud)
?
如果没有,有没有办法自我引用yaml文件?
foo:
bar:
I love *baz* so much!
baz:
stackoverflow.com
I18n.t("foo.bar")
-> "I love stackoverflow.com so much!"
Run Code Online (Sandbox Code Playgroud) 我有一个具有页面缓存的控制器操作,我制作了一个清扫器,它使用控制器调用expire_page并指定了操作...
控制器操作呈现js.erb模板,所以我试图确保expire_page删除public/javascripts中的.js文件,它没有这样做.
class JavascriptsController < ApplicationController
caches_page :lol
def lol
@lol = Lol.all
end
end
class LolSweeper < ActionController::Caching::Sweeper
observe Lol
def after_create(lol)
puts "lol!!!!!!!"
expire_page(:controller => "javascripts", :action => "lol", :format => 'js')
end
end
Run Code Online (Sandbox Code Playgroud)
...所以,我访问javascripts/lol.js,我得到了我的模板...我验证了public/javascripts/lol.js存在......然后我创建了一个新的Lol记录,我看到了"哈哈!" !!!!!!" 意味着触发了after_create观察者方法,但是expire_page什么也没做......
每次我拉动时,我的其他团队成员都会发生合并冲突.我试图手动删除====和>>>>但是Xcode在此之后永远不会打开文件.
我只是很好奇,这是一个团队中每个iOS人都要处理的问题吗?是否有任何提示或技巧来避免这种废话?它严重降低了我的生产力.
我来自Ruby,并且采用了单一责任原则,封装,松耦合,小可测试方法等方法,因此我的代码往往会频繁地从一个方法跳到另一个方法.这就是我习惯在Ruby世界中工作的方式.我认为这是最好的工作方式,主要用于BDD,因为一旦你开始使用"大"方法做多件事,测试变得非常困难.
我想知道这种方法是否有任何缺点,只要性能有显着差异?
假设x是一个对象......有什么好处:
if (typeof x.foo != "undefined")
Run Code Online (Sandbox Code Playgroud)
与做
if (x.foo)
Run Code Online (Sandbox Code Playgroud)
?
我在阅读这篇博文时提出了这个问题:http: //www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/
在他的例子中,他做了:
function EventTarget(){
this._listeners = {};
}
EventTarget.prototype = {
constructor: EventTarget,
addListener: function(type, listener){
if (typeof this._listeners[type] == "undefined"){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,this._listeners [type]将永远不会是除数组之外的任何东西 - 所以在这种情况下它只是做得更干净
addListener: function(type, listener){
if (!this._listeners[type]){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
Run Code Online (Sandbox Code Playgroud)
?
另外,作为一个附带问题,我不知道他为什么这样做:
EventTarget.prototype = {
constructor: EventTarget
Run Code Online (Sandbox Code Playgroud)
调用new EventTarget()时,默认情况下构造函数是否已设置为EventTarget('this')?
我正在阅读Paul DuBois撰写的一本名为"MySQL开发者库"的书,他在书中说:
CREATE TABLE score
(
student_id INT UNSIGNED NOT NULL,
event_id INT UNSIGNED NOT NULL,
score INT NOT NULL,
PRIMARY KEY (event_id, student_id),
INDEX (student_id),
FOREIGN KEY (event_id) REFERENCES grade_event (event_id),
FOREIGN KEY (student_id) REFERENCES student (student_id)
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)
我们将两列的组合作为PRIMARY KEY.这确保了我们不会为给定测验或测试的学生提供重复分数.请注意,event_id和student_id的组合是唯一的.在分数表中,这两个值本身都不是唯一的.每个event_id值将有多个分数行(每个学生一个),并且学生每个student_id值(每个测验和测试一个)有多行
我不清楚的是将两列合并为一个主键......意思是,我很难想象底下实际发生了什么......它正在收集数字[95,210]示例并将其用作"密钥"...将主键视为哈希的关键是否合适?
以前我一直认为主键只不过是表的唯一ID.但是现在在这种情况下,我发现自己实际上是一个主键.任何人都可以给我低调的SQL键吗?
我刚从github克隆了rails源代码,并试图运行测试套件......我遇到了重大故障:
patrick@vincent:~/coding/rails/rails(master)>bundle exec rake test --trace
** Invoke test (first_time)
** Execute test
/Users/patrick/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -w -I"lib:test" -I"/Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib" "/Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb" "test/**/*_test.rb"
/Users/patrick/coding/rails/rails/activesupport/lib/active_support/test_case.rb:20:in `<class:TestCase>': undefined method `register_spec_type' for ActiveSupport::TestCase:Class (NoMethodError)
from /Users/patrick/coding/rails/rails/activesupport/lib/active_support/test_case.rb:11:in `<module:ActiveSupport>'
from /Users/patrick/coding/rails/rails/activesupport/lib/active_support/test_case.rb:10:in `<top (required)>'
from /Users/patrick/coding/rails/rails/activesupport/test/benchmarkable_test.rb:3:in `<top (required)>'
from /Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:10:in `require'
from /Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:10:in `block (2 levels) in <main>'
from /Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:9:in `each'
from /Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:9:in `block in <main>'
from /Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:4:in `select'
from /Users/patrick/.rvm/gems/ruby-1.9.2-p180@rails_patch/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:4:in `<main>'
rake aborted!
Command failed with status (1): [/Users/patrick/.rvm/rubies/ruby-1.9.2-p180...]
Tasks: TOP => test
(See full trace by running task …Run Code Online (Sandbox Code Playgroud) 我有一个cocos2d v2.x应用程序,它有一个场景,有很多精灵,节点,配置,数据等......加载非常昂贵,以至于当将场景添加到导演时,有一个暂停1/2到1秒,导致当前运行的动画冻结,直到加载场景.我描述了最慢的方法,并尝试在后台线程中异步执行它们,并在加载时显示进度微调器.
我的实现是这样的:
-(void)performAsyncLoad {
self.progressSpinner.visible = YES;
self.containerForLoadedStuff.visible = NO;
self.mainContext = [EAGLContext currentContext];
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(loadDependencies)
object:nil];
[queue addOperation:operation];
}
-(void)loadDependencies {
@autoreleasepool {
glFlush();
EAGLSharegroup *shareGroup = [[(CCGLView*)[[CCDirector sharedDirector] view] context] sharegroup];
EAGLContext *context = [[EAGLContext alloc] initWithAPI:[[EAGLContext currentContext] API] sharegroup:shareGroup];
[EAGLContext setCurrentContext:context];
// ... expensive stuff here
// [self.containerForLoadedStuff addChild:sprites, etc...]
[self performSelectorOnMainThread:@selector(done) withObject:nil waitUntilDone:NO];
}
}
-(void)done {
glFlush();
[EAGLContext setCurrentContext:self.mainContext];
self.progressSpinner.visible = NO;
self.containerForLoadedStuff.visible = …Run Code Online (Sandbox Code Playgroud) 我正在使用Apple的NSURLSession#dataTaskWithURL方法执行一个简单的get请求
[[mySession dataTaskWithURL:myUrl completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// fancy code goes here...
}] resume];
Run Code Online (Sandbox Code Playgroud)
如果我想有条件做某事,如果状态代码成功,似乎我必须将NSURLResponse转换为NSHTTPURLResponse .....
NSUInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;
if (!error && statusCode == 200) {
// even fancier code goes here
} else {
// omg!!!!!!!!!
}
Run Code Online (Sandbox Code Playgroud)
...
但是----------我的问题是:为什么!?!?!?!?!?!?!?
为什么Apple会将响应对象传递给一个不知道自己状态的类型?!我必须编写这段代码的事实让我觉得我做的事情非常错误,必须有一个更好的方法来知道它是200,404还是500 ......
我希望我可以将completionHandler的块参数类型更改为NSHTTPURLResponse,但这似乎是不行的!
javascript ×2
objective-c ×2
ruby ×2
ios ×1
localization ×1
mysql ×1
nsurlsession ×1
opengl-es ×1
performance ×1
primary-key ×1
xcode ×1
yaml ×1