小编Sjo*_*ost的帖子

代码签名目标和项目之间的差异

我注意到在Xcode中我可以设置权利和代码签名设置:

  • 项目(双击组和文件中的顶部项目,其中包含项目的名称)
  • 目标(在目标下,双击您的项目名称).

这两者有什么区别?我知道,对于标题路径,一个人倾向于覆盖另一个(当然没有警告......).

iphone xcode code-signing ios-provisioning

28
推荐指数
1
解决办法
2899
查看次数

如何获得ActiveRecord验证中配置的最大长度?

鉴于一个模型:

class Person
  validates_lenght_of :name, :maximum => 50
end
Run Code Online (Sandbox Code Playgroud)

我有一些显示倒计时的视图代码并强制执行此最大值.但是我将数字50硬编码到该视图代码中.有没有办法从模型中提取这个数字?

就像是:

Person.maximum_length_of_name
Run Code Online (Sandbox Code Playgroud)

我试过这个:

Person.validators_on(:name)
 => [#<ActiveRecord::Validations::UniquenessValidator:0x000001067a9840 @attributes=[:name], @options={:case_sensitive=>true}, @klass=Trigger(id: integer, name: string, created_at: datetime, updated_at: datetime, user_id: integer, slug: string, last_update_by: integer)>, #<ActiveModel::Validations::PresenceValidator:0x000001067a6c30 @attributes=[:name], @options={}>, #<ActiveModel::Validations::LengthValidator:0x000001067a3f08 @attributes=[:name], @options={:tokenizer=>#<Proc:0x00000101343f08@/Users/sjors/.rvm/gems/ruby-1.9.2-p0/gems/activemodel-3.0.6/lib/active_model/validations/length.rb:9 (lambda)>, :maximum=>50}>]
Run Code Online (Sandbox Code Playgroud)

信息在那里,但我不知道如何提取它:

validation activerecord ruby-on-rails

19
推荐指数
4
解决办法
3775
查看次数

如何在Heroku上分析不一致的H12超时

我的用户在Heroku上偶尔会看到请求超时.不幸的是,我无法一致地重现它们,这使得它们很难调试.有很多机会来提高性能 - 例如通过减少每个请求的大量数据库查询以及添加更多缓存 - 但是没有分析这是一个黑暗的镜头.

根据我们的New Relic分析,许多请求在服务器上花费1到5秒.我知道这太慢了,但它远不及超时所需的30秒.

New Relic上的错误选项卡向我显示了几个不同的数据库查询,其中发生了超时,但这些查询并不是特别慢,并且每次崩溃都可能是不同的查询.同样对于相同的URL,它有时也会显示数据库查询.

我怎样才能知道这些特殊情况下发生了什么?例如,如何在超时发生时查看在数据库中花费的时间,而不是在没有错误时在数据库中花费的时间?

我的一个假设是数据库在某些情况下会被锁定; 也许是阅读和写作的结合.

performance ruby-on-rails heroku newrelic

11
推荐指数
2
解决办法
2009
查看次数

捆绑更新停留在"获取http://rubygems.org/的源索引"

截至昨天,我无法更新我的捆绑包.它被困在"获取http://rubygems.org/的源索引".我知道这通常需要一段时间,但我已经等了几个小时,并在最后一天尝试了几次.我有20 Mbit的互联网连接.

我在Macbook上使用gem 1.8.5,Bundler版本1.0.15,rvm 0.1.46,ruby-1.9.2-p0 [x86_64]和Rails 3.0.8.Gemfile:https://gist.github.com/1028832

我试图运行Bundle Update的原因是因为捆绑设置直到最近才设置为0.8.7(不确定原因),但是rake开始要求我升级到0.9.2.所以我改变了Gemfile.Bundle Install告诉我:

  bundle install
  Fetching source index for http://rubygems.org/
  You have requested:
  rake >= 0.9.2

  The bundle currently has rake locked at 0.8.7.
  Try running `bundle update rake`
Run Code Online (Sandbox Code Playgroud)

我的.bundle/config包含:

---
BUNDLE_DISABLE_SHARED_GEMS: "1"
BUNDLE_WITHOUT: production
Run Code Online (Sandbox Code Playgroud)

我不是代理人的背后.

我甚至尝试删除Gemfile.lock,在rvm中重新安装ruby版本并删除所有gem:

rm Gemfile.lock
rvm uninstall 1.9.2
rvm install 1.9.2
for x in `gem list --no-versions`;do gem uninstall $x -aIx;done
gem install bundle
bundle install
Run Code Online (Sandbox Code Playgroud)

rubygems ruby-on-rails bundler

9
推荐指数
1
解决办法
8167
查看次数

如何在Core Data中进行自定义验证(为了唯一性)?

我在Core Data中有一个实体,它有一个需要唯一的属性.没有办法在可视化界面中设置它.我假设我需要创建一个继承自NSManagedObject的自定义类,然后编写自己的验证方法.

我通过在可视化编辑器中选择实体并选择文件 - >新建 - >新建文件 - > NSManagedObject子类,成功创建了自定义类.我用它来添加创建时间戳,所以我知道它有效.

但现在呢?我需要哪些方法?

NSManagedObject参考指南告诉我"实现形式验证的方法:错误:"但没有提供一个例子.

类似的问题在这里这里,但我需要更多的帮助.

一个完整的例子很棒,但是非常感谢任何帮助.

validation core-data ios

8
推荐指数
2
解决办法
3639
查看次数

#<UserSession:{:unauthorized_record =>"<protected>"}>

我正在尝试使用auth_logic构建一个"只需点击你的名字登录"系统.我的用户模型有一个电子邮件和名称字段.要登录,我只需:

UserSession.create(@user, true)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会导致会话被创建.使用调试器我发现此消息:

#<UserSession: {:unauthorized_record=>"<protected>"}>
Run Code Online (Sandbox Code Playgroud)

我的用户模型只有一行:

acts_as_authentic
Run Code Online (Sandbox Code Playgroud)

用户会话行有这个,我在某处找到了.我不知道它做了什么,我尝试过和没有:

class UserSession < Authlogic::Session::Base
  def to_key
     new_record? ? nil : [ self.send(self.class.primary_key) ]
  end
end
Run Code Online (Sandbox Code Playgroud)

数据库(我也不确定是否需要user_sessions表):

create_table "sessions", :force => true do |t|
  t.string   "session_id", :null => false
  t.text     "data"
  t.datetime "created_at"
  t.datetime "updated_at"
end

add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"

create_table "user_sessions", :force => true do |t|
  t.datetime "created_at"
  t.datetime "updated_at"
end

create_table "users", :force => true do |t|
  t.datetime "created_at"
  t.datetime "updated_at"
  t.string …
Run Code Online (Sandbox Code Playgroud)

authlogic ruby-on-rails-3

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

为什么我们应该使用带有唯一指针的 std::move 语义?

概念问题

假设我们有这样的简单示例:

 void foo(std::unique_ptr<int> ptr)
 {
    std::cout << *ptr.get() << std::endl;
 }
 int main()
 {
    std::unique_ptr<int> uobj = std::make_unique<int>(4);
    foo(uobj );  // line-(1) Problem ,but Alternative -> foo(std::move(uobj ))
    std::unique_ptr<int> uobjAlt = uobj; // line-(2) Problem ,but Alternative -> std::unique_ptr<int> uobjAlt = std::move(uobj);        
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我们简单地知道std::unique_ptr与单一所有者拥有的资源概念绑定,并在多个所有者之间移动资源,而 shared_ptr 则具有相反的方面。如上面所示的示例,当您查看line-(1)line-(2)时 ,您会注意到违反了一些标准规则,因为 std::unique_ptr 没有定义复制构造函数和复制可赋值运算符,但在为了避免编译错误,我们必须使用std::move函数。

问题

为什么现代 C++ 编译器无法自动生成在line-(1)line-(2)中的唯一指针之间移动资源的指令?因为我们知道特意为此设计了独特的指针。为什么我们应该显式地使用 std::move 来指示机器移动资源的所有权?

std::unique_ptr 除了类模板之外什么都没有。我们知道,但是在第 1 行和第 -2 行中解决的情况存在问题,而编译器抱怨不允许复制 unique_pointers(已删除的函数)。为什么我们会出现此类错误,为什么 C++ 标准和编译器供应商不能重写这个概念吗? …

c++ smart-pointers unique-ptr c++11 c++14

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