小编Rob*_*udi的帖子

如何将子模块添加到子目录?

我有一个~/.janus/带有一堆子模块的git repo .我想添加一个子模块~/.janus/snipmate-snippets/snippets/,但是当我git submodule add <git@github.com:...>snipmate-snippets目录中运行时,我收到以下错误消息:

You need to run this command from the toplevel of the working tree.
Run Code Online (Sandbox Code Playgroud)

所以问题是:如何在snipmate-snippets目录中添加子模块?

git git-submodules

282
推荐指数
4
解决办法
20万
查看次数

在Objective-C中创建常量的最佳方法是什么

我正在创建一个用于学习目的的Reddit客户端.我需要一个包含常量的文件.我正在考虑在文件中导入文件,Reddit-Prefix.pch以使常量可用于所有文件.这是一种很好的做事方式吗?另外,我已经完成了我的研究并发现了几种创建常量的方法,但我不知道使用哪种方法:

  • #define
  • const
  • static const
  • extern const
  • enum

那么首选方式是哪种方式?惯例是什么?我知道"这取决于",但更具体地说,我的问题是:每个解决方案的用例什么?

此外,如果使用extern const,我是否需要导入文件,或者常量可以全局使用而无需导入文件?

我可以在逻辑上得出结论的一点enum是,在定义类似自定义错误域的东西时,这是最好的选择(我实际上是对吗?).但其他人呢?

constants objective-c

154
推荐指数
2
解决办法
7万
查看次数

如何用Ruby学习TDD?

我一直使用红宝石大约一个月,我真的很喜欢它.但是,我使用甚至学习TDD都非常困难.我的大脑不会那样运作......

我真的非常想学习TDD,但说实话我有点困惑.我在Google上找到的所有文章都主要针对Rails,这对我来说并不感兴趣,因为我想学习如何对任何ruby应用程序进行高效测试,从简单的单文件脚本到复杂的gem,而不是网络应用.此外,还有很多框架和很少的入门教程.

有人可以给我任何关于如何学习TDD的建议,这样我至少可以开始认为自己是一个有抱负的rubyist吗?

ruby testing tdd

25
推荐指数
3
解决办法
9577
查看次数

Symfony和CakePHP太慢而无法使用吗?

到现在为止,我总是说CakePHP过于膨胀和缓慢.我真的不知道,我只看到了"一些"基准.我真正想知道的是,如果这两个框架(Symfony和CakePHP)太慢而无法以用户会感到沮丧的方式使用.我已经知道那些框架比其他替代方案慢,但这不是问题.

我问这个问题,因为我想创建一个项目管理Web应用程序,我仍然在几个框架之间犹豫不决.我在学习Zend方面遇到了一些麻烦,但是我还没有努力学习.

总而言之,除了上面的第一个问题,我还想问另一个问题:

如果我想创建一个项目管理工具(这是一个非常大的项目),考虑到开发时间,最终应用程序的速度以及最终产品的稳健性,您应该建议以下哪一项:

  • Symfony的
  • CakePHP的
  • Zend框架

另外我应该提一下,我不知道任何这些框架,我想学习其中一个(至少).

php performance symfony1 zend-framework cakephp

17
推荐指数
3
解决办法
5637
查看次数

如何在jekyll中创建页面?

我知道如何在jekyll中创建帖子,但是如何在About不将其视为帖子的情况下创建页面(如)?

另外,我使用Github页面,所以我不能使用扩展.

ruby jekyll

16
推荐指数
2
解决办法
9245
查看次数

通过Sinatra应用程序将选项传递给rackup

我是红宝石的新手,学习Sinatra.虽然通过'sinatra'直接要求和设置路径来创建Sinatra站点非常简单并且有很好的文档记录,但通过要求'sinatra/base'和编写一个继承自'Sinatra::Base' 的类来创建应用程序,虽然仍然相对容易,但是文档记录很差(可能因为它是一个最近Sinatra的特色).

而这正是我在做的事情.我在Sinatra部分没有太多麻烦,但是我在rackup/thin/server部分遇到了一些麻烦.显然,有两种方法可以部署应用程序:使用Sinatra本身(使用该run!方法)和使用rackup文件(通常config.ru).

使用Sinatra的run!方法非常直观,就像一个魅力,但显然如果我想在heroku上部署我的应用程序它不起作用.事实上,我在GitHub上遇到的几乎所有Sinatra应用都使用了一个config.ru文件.

使用rackup文件可能同样直观,但我无法理解如何将选项从Sinatra应用程序传递到服务器(ir:端口).我尝试将选项合并到rackup的默认选项数组:

MyApp::App.default_options.merge!(
  :run  => false,
  :env  => :production,
  :port => 4567
)

run MyApp::App
Run Code Online (Sandbox Code Playgroud)

通过直接向应用添加选项:

MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production

run MyApp::App
Run Code Online (Sandbox Code Playgroud)

通过在应用程序类中设置选项:

module MyApp
  class App < Sinatra::Base
    set :port, 4567
    set :run, false
    set :env, :production

    # ...

  # config.ru
  require 'app'

  run MyApp::App
Run Code Online (Sandbox Code Playgroud)

上述所有方法都失败了,要么显示错误消息,要么不考虑任何选项.那么在使用rackup文件时,有没有办法通过Sinatra应用程序将选项传递给rackup/thin/the sever?或者问题中的选项应该通过命令行选项直接传递给rackup/thin/the sever?

作为问题的参考,这里是我正在构建的小型Sinatra应用程序:https://github.com/AzizLight/Wiki/

ruby rack thin sinatra rackup

12
推荐指数
1
解决办法
8635
查看次数

Sinatra和未设置的会话变量

由于某种原因,我的应用程序中没有设置会话变量.我正在使用Sinatra 1.2.1.

这是一段代码:

module GitWiki
  class App < Sinatra::Base

    configure do
      enable :sessions

      set :app_file, __FILE__
      set :root, File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))

      set :auth do |bool|
        condition do
          redirect '/login' unless logged_in?
        end
      end
    end

    helpers do
      def logged_in?
        not @user.nil?
      end
    end

    error PageNotFound do
      page = request.env["sinatra.error"].name
      redirect "/#{page}/edit"
    end

    before do
      content_type "text/html", :charset => "utf-8"
      @user = session[:user]
    end

    get "/login/?" do
      erb :login
    end

    post "/login" do
      user = User.get
      if user.authenticate(params[:username], params[:password])
        session[:user] = params[:username] …
Run Code Online (Sandbox Code Playgroud)

ruby session sinatra shotgun

11
推荐指数
1
解决办法
5748
查看次数

Rails:has_one和belongs_to,在两个外键上都有状态验证

我有一个users表和user_profiles表的应用程序.用户has_one用户配置文件和用户配置文件belongs_to.

我想确保关联方案始终为true,因此我对两个外键的存在进行了验证.问题是我遇到了"鸡蛋和鸡蛋"的情况.当我创建用户时,它不起作用,因为用户配置文件尚不存在,当我创建用户配置文件时,它也不起作用,因为用户尚不存在.所以我需要在创建用户的过程中创建用户配置文件.更复杂的是,当我创建客户端时,我还在after_create回调中创建了一个用户.足够的谈话(或阅读/写作),这里有一些代码:

class User < ActiveRecord::Base
    has_one :user_profile
    validates :user_profile_id, presence: true
end

class UserProfile < ActiveRecord::Base
  belongs_to :user
  validates :user_id, presence: true
end

class Client < ActiveRecord::Base
  after_create :create_client_user

  private

  def create_client_user
    User.create!(
      email: "admin@example.com",
      password: "admin",
      password_confirmation: "admin",
      client_id: self.id
      # I need to create a user profile dynamically here
    )
  end
end
Run Code Online (Sandbox Code Playgroud)

有可能做我想做的事吗?

更新

我尝试了@cdesrosiers建议的解决方案,但我不能让我的规格通过.我主要有三个错误.首先让我告诉你更新的模型:

class User < ActiveRecord::Base
  has_one :user_profile, inverse_of: :user
  before_create { build_user_profile } …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails associations has-one belongs-to

10
推荐指数
1
解决办法
7836
查看次数

为什么我不能改变我的UILabel的框架?

我已经尝试了两天来修改a的框架UILabel,这是荒谬的...这UILabel是一个IBOutlet,但这不是它不工作的原因:我试图以UILabel编程方式创建它仍然无法正常工作.我是这样做的:

self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;

CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
                                         constrainedToSize:CGSizeMake(self.descriptionLabel.frame.size.width, FLT_MAX)
                                             lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = self.descriptionLabel.frame;
frame.size.height = frameHeight;
self.descriptionLabel.frame = frame;

CGRect bounds = self.descriptionLabel.frame;
bounds.origin.x = self.descriptionLabel.frame.origin.x + 10.0;
bounds.size.width = self.descriptionLabel.frame.size.width - 20.0;
self.descriptionLabel.bounds = bounds;
self.descriptionLabel.numberOfLines = 0;
Run Code Online (Sandbox Code Playgroud)

我已经在IRC问过了,他们告诉我没有理由不改变框架......

我也尝试创建一个框架,CGRectMake并赋予它任意值,但这也没有做到这一点..

有谁知道这可能是什么问题吗?

编辑1:我之前和之后记录了帧,我得到了奇怪的结果:

Before: 0.000000 0.000000 0.000000 0.000000
After: 0.000000 0.000000 0.000000 33525.000000
Run Code Online (Sandbox Code Playgroud)

设置框架后的高度是唯一有意义的值(我故意在标签中有很多文本).

编辑2:我按如下方式更改了代码,日志显示框架已更改,但在模拟器上它没有更改; 我通过在图层中添加红色边框来证明这一点UILabel.

self.descriptionLabel.text …
Run Code Online (Sandbox Code Playgroud)

objective-c frame uilabel ios

10
推荐指数
1
解决办法
2万
查看次数

完成处理程序和返回值

我想调用一个方法,它将从其完成处理程序返回一个值.该方法异步执行,我不希望在执行该方法的所有主体之前返回一个值.这里有一些错误的代码来说明我想要实现的目标:

// This is the way I want to call the method
NSDictionary *account = [_accountModel getCurrentClient];

// This is the faulty method that I want to fix
- (NSDictionary *)getCurrentClient
{
    __block NSDictionary *currentClient = nil;
    NXOAuth2Account *currentAccount = [[[NXOAuth2AccountStore sharedStore] accounts] lastObject];

    [NXOAuth2Request performMethod:@"GET"
                        onResource:[NSURL URLWithString:[NSString stringWithFormat:@"%@/clients/%@", kCatapultHost, currentAccount.userData[@"account_name"]]]
                    usingParameters:nil
                        withAccount:currentAccount
                sendProgressHandler:nil
                    responseHandler:^ (NSURLResponse *response, NSData *responseData, NSError *error) {
                        NSError *jsonError;

                        currentClient = [NSJSONSerialization JSONObjectWithData:responseData
                                                                        options:kNilOptions
                                                                            error:&jsonError];
                    }];

    return currentClient;
}
Run Code Online (Sandbox Code Playgroud)

我不希望该getCurrentClient方法返回一个值,直到NXOAuth2Request …

asynchronous return objective-c ios objective-c-blocks

8
推荐指数
1
解决办法
8016
查看次数