小编awe*_*ndt的帖子

AWS S3中的预签名URL有多安全?

我打算将用户重定向到存储在S3中的敏感资源的预签名URL.这些是在检查用户权限后产生的,并且具有激进的超时(30秒).但我担心的是,我的客户端计算机上的某些恶意软件是否可能捕获该URL并仍然在URL的过期时间内下载该文件.或者我只是太偏执了?

如果之前已经回答过,请指出我的方向.感谢您的帮助.

security url amazon-s3

9
推荐指数
2
解决办法
5054
查看次数

如何并行处理大多数作业但序列化子集?

我们从供应商那里获得了对我们的Web应用程序的并发回调,我们怀疑它导致我们丢失更新,因为它们在不同的机器上同时处理.

当且仅当它们影响同一用户记录时,我们需要序列化这些调用的处理.

我的一位同事提出了一个AWS Kinesis流,我们使用用户ID作为分区密钥.这个想法是相同的分区键将记录放在同一个分片中.每个分片仅由一个工作程序处理,并且不会出现并发问题.通过设计,可以保证不会并行处理属于同一用户的记录.这个解决方案可以扩展并解决问题,但它至少会让我们回到冲刺阶段.

我们正试图找到一种可以更快部署的解决方案.

到目前为止我们讨论的其他解决方案

  1. 只需延迟处理回调,可能会随机延迟一段时间.在这种情况下,几个工作人员仍然可以(尽管不太可能)同时为同一个用户处理作业.
  2. 任何排队系统都有缺陷,我们要么限制在一个工人身上,要么冒险并行处理,或者与(1)中概述的相同.

我们使用MySQL进行Rails堆栈,并且更喜欢AWS作为我们的解决方案.

有没有解决这个问题的方法,比切换到Kinesis会产生更快的结果?

architecture parallel-processing concurrency asynchronous ruby-on-rails

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

git重用blob吗?

假设我提交了一个二进制文件,然后稍后将其更改为几次提交,现在我在新提交中将其更改回来.

出于好奇,我想知道git是否为它创建了一个新的blob?或者它是否在历史中检测到并重复使用它?如果是这样,它如何检测到?校验?

git version-control

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

为什么Thor采用no_tasks方法?

或者,更具体一点:我不能只使用私有方法吗?

ruby thor

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

当集合发生变化时,ng-repeat是否会保留DOM元素或创建所有新元素?

我已经看到很多关于ng-repeat完成的顺序与其他指令或Angular上发生的事情相比的问题,但是我还没有找到答案来确定它是如何完成的.

我有两个关于它如何工作的想法.

第一种方式: 当ng-repeat的观察者触发时,它会删除它从DOM创建的所有元素,然后在它们的位置创建所有新元素,即使这些元素中的许多元素是相同的(例如,在支持数组中添加了1个项目的情况) ).

第二种方式:由于ng-repeat已经跟踪哪些元素与其后备集合中的哪些项目相关,因此它只删除集合中不再存在的项目,并为集合中新增的项目创建新元素.


这是为什么?为什么?

angularjs angularjs-ng-repeat

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

如何让Mercury Editor重定向到新资源?

在观看关于Mercury Editor的RailsCast#296后,我试图让编辑器重定向到新创建的资源.

我已经可以使用JS和window.location.href=.在客户端重定向.但是对于新资源,我不能在客户端"猜测"它的URL.我需要它在服务器响应中.

但是,问题是我没有看到在编辑器中使用服务器响应的可能性.无论控制器呈现什么,Mercury 都会丢弃服务器响应,而不是将其用作我的函数的参数mercury:saved.

有办法解决这个问题吗?

javascript ruby-on-rails mercury-editor

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

为什么Minitest的assert_raises在这种情况下不能按预期工作?

我正在尝试使用Action Controller错误报告模板在Rails中解决一个奇怪的行为.

对于记录,这是模板中的控制器:

class TestController < ActionController::Base
  include Rails.application.routes.url_helpers

  def index
    render text: 'Home'
  end
end
Run Code Online (Sandbox Code Playgroud)

我添加了一个缺少动作的路线:

routes.draw do
  get '/' => 'test#index'
  get '/missing' => 'test#missing'
end
Run Code Online (Sandbox Code Playgroud)

并且我试图断言AbstractController::ActionNotFound在遵循该路线时引发:

class BugTest < Minitest::Test
  include Rack::Test::Methods

  def test_missing
    assert_raises(AbstractController::ActionNotFound) { get '/missing' }
  end

  private
    def app
      Rails.application
    end
end
Run Code Online (Sandbox Code Playgroud)

预期行为:绿色测试.

实际行为:

# Running tests:

D, [2014-04-24T09:17:41.948985 #4497] DEBUG -- :
D, [2014-04-24T09:17:41.949029 #4497] DEBUG -- :
I, [2014-04-24T09:17:41.949094 #4497]  INFO -- : Started GET "/missing" for …
Run Code Online (Sandbox Code Playgroud)

ruby unit-testing minitest ruby-on-rails-4

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

为什么Passenger 将passenger-error-*.html 文件保存在/tmp 中?

我们其中一台服务器上的磁盘已满。分析表明,大部分空间都浪费在了/tmp.

罪魁祸首是那里的 25,000 多个文件占用了超过 3 个演出,所有这些文件都以模式命名passenger-error-xxxxxx.html。快速检查表明,这是Passenger 在无法启动应用程序时提供的标准错误页面。

根据其中一个文件中的消息,Passenger 无法启动应用程序,因为mysql2gem 丢失并且无法连接到数据库。

从粗略估计,似乎乘客至少为每个请求保留这些文件这是由于 ELB 的健康检查(每 30 秒请求 = 2880reqs/天,Gemfile 在 5 天后修复,应该少于 15,000reqs) .

是否记录了乘客将这些 HTML 文件保存在的任何地方/tmp

为什么这样做?我们的配置有问题吗?

diskspace ruby-on-rails passenger

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

如何在设置环境变量的情况下启动Rails服务器?

我有以下命令。我在启动时将其插入rails server

VARIABLE=development rails s
Run Code Online (Sandbox Code Playgroud)

如何使此变量自动启动,而不必每次都自己修改它?

所以我会这样做

rails s
Run Code Online (Sandbox Code Playgroud)

它将与该变量一起自动运行。

ruby ruby-on-rails environment-variables

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

我可以在自定义匹配器中使用内置的RSpec匹配器吗?

我对功能规格有以下期望(相当低级,但仍然有必要):

expect(Addressable::URI.parse(current_url).query_values).to include(
  'some => 'value',
  'some_other' => String
)
Run Code Online (Sandbox Code Playgroud)

请注意,第二个查询值是模糊匹配,因为我只想确保它在那里,但是我不能更具体地说明它。

我想将其提取到自定义匹配器中。我开始于:

RSpec::Matchers.define :have_query_params do |expected_params|
  match do |url|
    Addressable::URI.parse(url).query_values == expected_params
  end
end
Run Code Online (Sandbox Code Playgroud)

但这意味着我无法通过{'some_other' => String}那里。为了继续使用模糊匹配,我必须include在自定义匹配器中使用匹配器。

但是,其中的所有内容RSpec::Matchers::BuiltIn都标记为专用API,Include具体记录为:

# Provides the implementation for `include`.
# Not intended to be instantiated directly.
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:RSpec支持在自定义匹配器中使用内置匹配器吗?我该怎么做?

ruby rspec rspec-expectations

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