小编sni*_*tko的帖子

Rails架构?

我希望能够阅读Rails源代码,但我认为我不能真正做到这一点,因为我不知道是不是要开始以及如何连接代码的不同部分.例如,很明显ActiveModel做了什么,我可以读取代码,但是我不明白Rails应用程序通常是如何加载的,以及何时正好运行ActiveModel以及rails的哪一部分调用它.

我不是在谈论人们在第一个Rack加载的手册中说的一般内容,然后Rails是一个机架应用程序...不.我想要更详细的东西,以便我可以实际查找代码中的每一步.所以我想某种图表解释了rails应用程序是如何加载的,并且可能是每个子文件的注释,说明这些文件的使用位置,他们做了什么以及加载图表上加载的位置都很好.

有什么提示吗?

architecture ruby-on-rails

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

如何在linux中轻松接收邮件并将其提供给Rails?

我一直在谷歌搜索postfix howto's,但我仍然无法弄清楚如何设法在linux-server上接收电子邮件(更具体的 - Ubuntu).

我需要的只是一个全能邮箱,它可以获取所有电子邮件并将它们提供给ruby脚本(当然,然后将其传递给Rails).我之前能够设置postfix用于发送电子邮件,我不得不说 - 它根本没有痛苦,除了实际安装它之外几乎什么都没做.

你能建议一个好的howto,或者一个配方,或者一个可以解决这个问题的替代易于设置的邮件服务器吗?

email postfix-mta ruby-on-rails mail-server

6
推荐指数
2
解决办法
8540
查看次数

返回指向C中char数组的指针

我已经在StackOverflow上看到了很多关于它的问题,但是阅读答案并没有为我清楚,可能是因为我是C编程的新手.这是代码:

#include <stdio.h>

char* squeeze(char s[], char c);

main()
{
  printf("%s", squeeze("hello", 'o'));
}

char* squeeze(char s[], char c)
{
  int i, j;

  for(i = j = 0; s[i] != '\0'; i++)
    if(s[i] != c)
      s[j++] = s[i];
    s[j] = '\0';

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

它编译,我运行它时会出现分段错误.我读过有关返回数组常见问题和尝试,建议有"静态"的技术,但还是没能拿到计划工作.任何人都可以指出它究竟出了什么问题,将来我应该注意什么?

c arrays chars

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

如何知道滚动条是否出现在浏览器(jQuery)中?

我需要知道,浏览器窗口中是否出现了垂直滚动条.是否可以使用jQuery或任何其他方式?

html browser jquery scrollbars

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

mongoid中的索引:我应该运行rake db的时间和频率:mongoid:create_indexes?

从文档中可以清楚地看出:我应该在何时以及何时运行rake db:mongoid:create_indexes.假设我已经为模型添加了一些索引宏,并且将来不会添加新的.这是否意味着我可以只运行一次rake任务,或者我应该每天运行一次?

mongodb mongoid

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

将随机网址参数传递给OmniAuth

我正在使用omniauth和devise,我想知道如何传递url params并访问它们.

这是一个链接示例:/accounts/auth/facebook?do_something_after_return=1 现在我希望能够do_something_after_return在回调中检索它.我不在乎它是否在会话或其他地方保存.问题是,我不知道在哪里可以拦截这个参数.

什么是控制器和链接/accounts/auth/facebook指向的操作?路线什么也没告诉我,它根本就不存在.我在路线上的所有/accounts/auth/:provider(.:format {:controller=>"accounts/omniauth_callbacks", :action=>"passthru"}内容都是回调.

ruby-on-rails devise omniauth

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

我可以将.gitmodules文件放在子目录中吗?

假设我的repo index root在/projectdir中.应该.gitmodules也是这个目录里面,我也可以把它放到,说/project/subdir

我想这样做的原因是因为我有多个贡献者,我希望每个人都负责他自己的一组子模块.

git version-control git-submodules

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

定义一个在Dart中获取参数的getter

我想定义一个可以选择接受参数的getter.我设法实现了这个目标,但只有()在通话结束后我才能使用强制性功能.这是代码:

get children => ([role=null]) {
  if(role == null || role == 'any') { return _children;               }
  else                              { return _children_by_role[role]; }
};
Run Code Online (Sandbox Code Playgroud)

所以现在我可以说

obj.children('something').length;
Run Code Online (Sandbox Code Playgroud)

要么

obj.children().length;
Run Code Online (Sandbox Code Playgroud)

但我不能说

obj.children; // this doesn't work
Run Code Online (Sandbox Code Playgroud)

因为它会导致以下错误:

Caught Closure call with mismatched arguments: function 'length' NoSuchMethodError : method not found: 'length' Receiver: Closure: ([dynamic])
Run Code Online (Sandbox Code Playgroud)

getter dart

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

设计edit_account_password操作会将我重定向到根目录

这是我的设计路线:

devise_for :accounts, :path_names => { :sign_up => "new" } do
  get "sign_in",           :to => "devise/sessions#new"
  get "sign_out",          :to => "devise/sessions#destroy"
  get "/change_password",  :to => "devise/passwords#edit"
end
Run Code Online (Sandbox Code Playgroud)

而我的输出rake routes:

       account_password POST   /accounts/password(.:format)                {:controller=>"devise/passwords", :action=>"create"}
   new_account_password GET    /accounts/password/new(.:format)            {:controller=>"devise/passwords", :action=>"new"}
  edit_account_password GET    /accounts/password/edit(.:format)           {:controller=>"devise/passwords", :action=>"edit"}
                        PUT    /accounts/password(.:format)                {:controller=>"devise/passwords", :action=>"update"}
Run Code Online (Sandbox Code Playgroud)

所以change_password路由不到位,/change_password只是将我重定向到root_path.请帮助我理解为什么或者我会伤害自己.谢谢.

ruby-on-rails devise

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

有哪些好的数据结构可以存储大型订单簿?

我正在编写一个从交易所获取订单簿的比特币交易应用程序。一个典型的订单簿看起来像这样:https : //www.bitstamp.net/api/order_book/(它有两部分,“bids”和“asks”,它们应该分开存储,但使用相同的数据结构)。一个解决方案是只存储这个大订单的一部分,这将解决访问效率问题,但它引入了一组与一致性和更新限制有关的其他问题。所以现在,似乎更好的解决方案是获取订单并不断更新它。

现在,此交易者应用程序稍后会使用新订单和已删除订单更新此获取的订单簿。例如,如果您在订单簿中以 900 美元的价格购买 1.5BTC 的订单,它可能会被完全取消,或者可能会更新为包含更多或更少的 BTC。此外,可以在低于或高于该价格的情况下添加新订单。

有两个关键操作:

  1. 快速找到价格完全相同的订单(在更新或取消的情况下)

  2. 快速找到与提供的价格最接近但低于该价格的订单

在更新的情况下,我们可能实际上并不知道它是一个更新,因此我们可能会开始执行(2)并最终执行(1)。

我不是数据结构方面的专家,所以我开始查看最常见的数据结构,现在我觉得它应该是某种树,但我不确定是哪一种。我最没有根据的猜测是这样一种数据结构,其中每个节点都是价格中的一个数字,因此,例如,我们要快速找到价格为 900 美元的所有节点,items['9']['0']然后查找叶节点。现在我的脑子里还是一团糟,所以请不要对我评价太苛刻。任何建议都会很棒。

trading financial data-structures

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