小编pat*_*ick的帖子

为什么javascript中的for-in速度慢?

我曾在几个地方,对于-in循环比遍历数组......虽然我明白,在的sizeof前进相比,后面的场景无论发生什么事来遍历一个对象的关键点(类型)块是几乎不费吹灰之力慢阅读,我仍然很好奇,究竟是什么原因,它是如此缓慢......

它是否必须执行反向哈希函数来获取密钥,而且该过程是什么慢?

javascript

7
推荐指数
1
解决办法
1642
查看次数

有没有办法用轨道引用yaml中的常量?

有没有办法让我的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)

ruby yaml localization ruby-on-rails internationalization

6
推荐指数
1
解决办法
3834
查看次数

rails expire_page不会删除缓存的文件

我有一个具有页面缓存的控制器操作,我制作了一个清扫器,它使用控制器调用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什么也没做......

ruby ruby-on-rails

6
推荐指数
1
解决办法
1396
查看次数

如何在Xcode"pbxproj"文件中处理合并冲突?

每次我拉动时,我的其他团队成员都会发生合并冲突.我试图手动删除====和>>>>但是Xcode在此之后永远不会打开文件.

我只是很好奇,这是一个团队中每个iOS人都要处理的问题吗?是否有任何提示或技巧来避免这种废话?它严重降低了我的生产力.

version-control xcode ios

6
推荐指数
1
解决办法
2314
查看次数

编码许多小方法是否会对Objective-C产生性能影响?

我来自Ruby,并且采用了单一责任原则,封装,松耦合,小可测试方法等方法,因此我的代码往往会频繁地从一个方法跳到另一个方法.这就是我习惯在Ruby世界中工作的方式.我认为这是最好的工作方式,主要用于BDD,因为一旦你开始使用"大"方法做多件事,测试变得非常困难.

我想知道这种方法是否有任何缺点,只要性能有显着差异?

performance objective-c dynamic-dispatch

6
推荐指数
1
解决办法
272
查看次数

显式typeof =="undefined"检查vs只是检查它的存在?

假设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')?

javascript

5
推荐指数
1
解决办法
1935
查看次数

任何人都可以向我解释一下主键实际上做了什么?

我正在阅读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键吗?

mysql primary-key

5
推荐指数
1
解决办法
980
查看次数

试图在rails源代码中运行"rake test"

我刚从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)

ruby-on-rails-3

5
推荐指数
1
解决办法
656
查看次数

尝试在后台线程中加载/设置场景导致"OpenGL错误0x0502 in - [CCSprite draw] 530"

我有一个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)

opengl-es cocos2d-iphone

5
推荐指数
1
解决办法
238
查看次数

你如何从dataTaskWithURL的NSURLResponse获取状态代码?

我正在使用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,但这似乎是不行的!

objective-c nshttpurlresponse nsurlsession

4
推荐指数
1
解决办法
6367
查看次数