小编Dav*_*ner的帖子

在AWS ECS中的任务定义之间链接容器?

我正在尝试在AWS ECS中设置一个具有关联数据库的基本Web应用程序.在本地我将这些设置放在不同的容器中,在ECS上,我希望有单独的任务定义,以便我可以单独扩展它们.

  1. david_mongodb在ECS中成功注册了我的第一个任务定义.它有一个名为的容器david_mongodb.
  2. 然后我尝试将我的第二个任务定义注册为david_web,其中有一个名为david_web链接数据库的容器david_mongodb:db.
  3. 单击"创建"时,会返回错误:

    Unable to create Task Definition
    Linked container 'david_mongodb:db' doesn't exist.
    
    Run Code Online (Sandbox Code Playgroud)

似乎任务定义无法在其他任务定义中看到容器名称?我正在考虑将两个容器david_webdavid_mongodb容器放在同一个任务定义中会起作用,但我不想这样做:它会阻止我单独扩展Web应用程序或数据库.这个概述似乎证实我的架构是推荐的......

那么如何链接生活在不同任务定义中的容器?还是有另一种聪明的方法来处理这个问题?

amazon-web-services amazon-ecs docker

50
推荐指数
1
解决办法
3万
查看次数

用户注册时设计"确认令牌无效"

在我的网络应用程序上使用Rails 4和Devise 3.1.0.我写了一个Cucumber测试来测试用户注册; 从电子邮件中单击"确认我的帐户"链接时失败.

Scenario: User signs up with valid data                                                           # features/users/sign_up.feature:9
    When I sign up with valid user data                                                             # features/step_definitions/user_steps.rb:87
    Then I should receive an email                                                                  # features/step_definitions/email_steps.rb:51
    When I open the email                                                                           # features/step_definitions/email_steps.rb:76
    Then I should see the email delivered from "no-reply@mysite.com"                                # features/step_definitions/email_steps.rb:116
    And I should see "You can confirm your account email through the link below:" in the email body # features/step_definitions/email_steps.rb:108
    When I follow "Confirm my account" in the email                                                 # features/step_definitions/email_steps.rb:178 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise devise-confirmable

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

Google AnalyticsAPI:"用户对此帐户没有足够的权限."

我正在编写一个访问Google AnalyticsAPI的Ruby应用程序来提取一些实验信息.

该应用通过以下功能使用Google服务帐户进行连接和身份验证:

def connect
  ...
  @@client = Google::APIClient.new(:application_name => 'My Service App', 
                                    :application_version => '1.0.0')
  key_file = Rails.root.join('config', 'privatekey.p12').to_s
  key_secret = 'somesecret'
  key = Google::APIClient::PKCS12.load_key(key_file, key_secret)
  asserter = Google::APIClient::JWTAsserter.new(
    SECRETS[:google_service_account_email],
    ['https://www.googleapis.com/auth/yt-analytics.readonly',
     'https://www.googleapis.com/auth/analytics.readonly'
    ],
    key
  )
  @@client.authorization = asserter.authorize()
  ...
end
Run Code Online (Sandbox Code Playgroud)

...对API进行身份验证和发现,没有问题.

针对YouTube Analytics API使用客户端可以正常运行.使用相同的帐户通过...访问Analytics API

response = @@client.execute({
  # 'analytics is the API object retrieved via discover_api()
  :api_method => analytics.management.experiments.list, 
  :parameters => {
    'accountId' => 'AAAAAAAA',
    'profileId' => 'PPPPPPPP',
    'webPropertyId' => 'UA-WWWWWWWW-#'
  }
})
Run Code Online (Sandbox Code Playgroud)

结果出现403错误响应:

{"domain":"global","reason":"insufficientPermissions","message":"User does not have …
Run Code Online (Sandbox Code Playgroud)

google-analytics google-api google-analytics-api google-api-client

35
推荐指数
2
解决办法
5万
查看次数

docker service update:"无法在注册表上访问图像以记录它的摘要"

我在亚马逊的弹性容器注册表(ECR)上有一个图像,我希望在我的Docker单节点群中部署为Docker服务.目前该服务正在运行图像latest标签的旧版本,但我已经将更新版本的latest标签上传到ECR.

docker service update --force my_service在我的使用image的swarm节点上运行会XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest导致:

无法在注册表上访问XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest以记录其摘要.每个节点将独立访问XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest,可能导致运行不同版本映像的不同节点.

这似乎阻止节点从latest注册表中提取标签的新副本,并使服务正确更新.

我已正确登录docker loginECR,并且运行docker pull XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest正常(并返回摘要).

docker service update尽管图像可用,为什么无法从ECR注册表中读取摘要?

amazon-web-services docker docker-swarm

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

Form.ShowDialog()不显示启用调试的窗口

我在单元测试项目中创建了一个测试,我希望在其中使用它的函数弹出一个FormShowDialog():

[TestMethod]
public void TestDialog()
{
  // This class inherits from Form
  TestForm serviceTestForm = new TestForm("My test form"); 
  serviceTestForm.ShowDialog();

  return;
}
Run Code Online (Sandbox Code Playgroud)

我希望这个测试能够到达ShowDialog()并且无限期地运行,直到我关闭窗口.但是,当我"使用调试"运行此测试时,测试到达ShowDialog(),并且不显示任何表单.奇怪的是,如果我运行"没有调试" ,这个完全相同的测试就可以工作.

我需要能够"通过调试"运行测试并显示窗口.

其他说明:

  • Show()是不可取的,因为它不等待窗口关闭继续.(除此之外......它不起作用.)
  • 这个代码之前曾在另一个使用.NET 3.5的项目中运行过.这只是说ShowDialog()战略以前肯定有效.(是的,我直接复制了那个工作代码.)
  • 我的问题与类似,但是,我的表单不是另一个对话框的子项,并且不在父UI线程中.

.net c# testing winforms

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

Rails 4/Devise/MongoDB:使用自定义属性和强参数的"未允许的参数"

尝试将嵌套的自定义属性Profile(一个Mongoid文档)添加到我的设计用户类.提交Devise注册表单时,它还应创建用户和相应的Profile对象.

我希望最终结果在我的MongoDB中看起来像这样:

用户:

{
  # Devise fields:
  "email": "my@email.com",
  ...
  # Custom field
  "profile" : "<object_id>"
}
Run Code Online (Sandbox Code Playgroud)

轮廓:

{
  "first_name": "Dave",
  ....
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,每当我提交注册时,我都会在控制台中收到此消息.它成功创建了一个用户,但无法创建关联的配置文件.

Started POST "/" for 127.0.0.1 at 2013-04-20 23:37:10 -0400
Processing by Users::RegistrationsController#create as HTML
Parameters:
   {"utf8"=>"?",
   "authenticity_token"=>"awN2GU8EYEfisU0",
   "user"=>
       {"profile_attributes"=>
           {"first_name"=>"Dave",
           "birthday(2i)"=>"4",
           "birthday(3i)"=>"21",
           "birthday(1i)"=>"1933",
           "occupation_title"=>"Software Developer"},
        "password"=>"[FILTERED]",
        "password_confirmation"=>"[FILTERED]",
        "email"=>"my@email.com"}}
Unpermitted parameters: profile_attributes
Run Code Online (Sandbox Code Playgroud)

我有设置:

  • Rails 4.0.0beta1,Ruby 2.0.0-p0
  • 设计('rails4'分支),Mongoid(来自git)
  • 自定义Devise注册控制器,用于添加强参数的定义.

车型/ user.rb:

class User
  include Mongoid::Document

  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongodb devise strong-parameters ruby-on-rails-4

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

Firefox getBoundingClientRect()不考虑转换

我正在向我的网页添加一些SVG路径,但是我对Firefox 43.0有困难.看来,当我申请transform: scale(0.1)我的路径时,Firefox不会更新边界客户端矩形(通过getBoundingClientRect())

这是变换前路径的截图,以及正确的边界矩形:

没有变换的路径

这里应用了变换,视觉清晰地位于边界框之外:

路径与变换

相比之下,Chrome是按预期更新其边界框.(注意约束比例.)

Chrome中的转换路径

Chrome或Edge上不存在此问题.我确实从2012年发现了这个旧版本的bug,该版本说明问题已在版本12.0中修复,文档说明:

从Gecko 12.0(Firefox 12.0/Thunderbird 12.0/SeaMonkey 2.9)开始,在计算元素的边界矩形时会考虑CSS变换的效果.

......似乎不是真的.对于其他浏览器,我将我的圆圈缩小到其原始大小的10%,然后计算客户端矩形的坐标偏移量,使其居中于原始的100%比例位置.但是,由于在Firefox中进行转换后客户端矩形没有更新,因此它会搞乱计算.

我如何解决这个问题?

html css firefox svg css-transforms

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

节点如何加入分布式哈希表(DHT)群集?

我正在尝试了解分布式哈希表(DHT)范例,因为它适用于P2P或完全分布式计算架构.从理论的角度来看,一旦集群建立起来,它就会对如何设计群集数据和分配工作有所了解.

对我来说最有趣的部分是架构从不需要某种集中控制器或协调器(没有单点故障).但是,我仍然在努力理解概念的实际执行,特别是集群是如何形成的.如果它是一个完全分布式系统,节点如何知道如何"加入"已经建立的集群?

在一个简单的例子中:

  • 假设我正在基于DHT模型创建P2P应用程序
  • 应用程序分布在Internet上(也就是不在同一网络中),任何公共客户端都可以连接到群集
  • 连接到群集的客户端可以看到群集中的某些(但不一定是所有)其他客户端
  • 未连接的客户端在群集中没有任何客户端的地址或名称.

那么,如果没有任何集中式服务器充当信标,或者提供将新客户端引入集群的方法,新客户端如何"连接"?

architecture theory p2p distributed-computing

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

jQuery .ajax() 请求未触发

我正在尝试对我的 Web 服务器进行 AJAX 调用以获取有关城市的信息。

  • 我在页面上有一个选择下拉列表,填充了 3 个值:[空白]、“纽约,纽约”和“密歇根州安阿伯”
  • 当一个项目被选中时,城市名称被重新格式化:空格变成“-”
  • 然后.ajax()被触发到“/data/[ city ]”
  • 当服务器响应时,它alert()使用它检索到的 JSON 对象进行调用。

代码:

$( document ).ready(function() {
  $('#city').change(function () {
    var city = $.trim($(this).val()).replace(/ /g,"-");
    if(city.length > 0)
    {
      var url = "/data/cities/" + city;
      $.ajax({
        url: url,
        context: document.body,
        dataType: 'json'
      }).done(function(data) {
        alert(data);
      });
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

出于某种原因,该.ajax()调用有时会拒绝触发。当url等于时,永远不会发出传出的 HTTP 请求:

  • /data/cities/New-York,-NY

但是,它在url等于时成功触发:

  • /data/cities/New-York-NY (没有逗号)
  • /data/cities/New-York,NY (没有破折号)
  • /data/cities/New-York,-NYC (附加字符)
  • /data/cities/Ann-Arbor,-MI (类似格式)

我已经验证:

  • 浏览器在“失败”时不发出 HTTP …

javascript ajax jquery

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

使用 ActiveModel::Validations 验证嵌套模型

我的应用程序使用带有 的普通 Ruby 类ActiveModel::Validations,而没有实现ActiveRecord

class Car
  include ::ActiveModel::Validations

  attr_accessor :engine
end

class Engine
  include ::ActiveModel::Validations

  attr_accessor :cylinders
  validates_presence_of :cylinders
end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想Car检查 的嵌套属性。ActiveModel::Validationsengine

car = Car.new
car.engine = Engine.new

car.engine.valid? # => false
car.valid?        # => true
                  # It should return 'false',
                  # because 'engine.cylinders' is 'nil'
Run Code Online (Sandbox Code Playgroud)

获得这种行为的最简单方法是什么?

ruby validation ruby-on-rails activemodel

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

MongoDB:对数组元素进行匹配和排序?

我有一些“产品”对象:

{ name: 'ProductA',
  social_stats: [
    { name: 'facebook',
      shares: 60
    },
    { name: 'twitter',
      shares: 0
    }
  ]
}

{ name: 'ProductB',
  social_stats: [
    { name: 'facebook',
      shares: 0
    },
    { name: 'twitter',
      shares: 30
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想查询“Facebook 上分享最多的产品”和“Twitter 上分享最多的产品”,总是按分享次数从多到少排序。

所以我对 Facebook 的第一个查询如下所示:

db.videos.find({
  _id: {
    social_stats: {
      $elemMatch: {
        name: 'facebook'
      }
    }
  }
).sort( {
  social_stats: {
    shares: -1
  }
})
Run Code Online (Sandbox Code Playgroud)

产量:

{ name: 'ProductA' }
{ name: 'ProductB' }
Run Code Online (Sandbox Code Playgroud)

这是“正确的”,但是当我对“twitter”运行相同的查询时,我期望 B->A,但收到与上面相同的输出。它似乎没有按照我的意图将 where 和排序逻辑一起应用,即“按与‘twitter’匹配的social_stat 元素排序”。

我在寻找什么 …

mongodb mongoid

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

simple_form分组选择关联给出"未定义的方法`map'"

在我的应用程序中,用户描述建筑物 用户应该能够使用分组选择来指定建筑物存在于哪个邻域中.模型看起来像:

class Building
  include Mongoid::Document
  belongs_to :neighborhood
end

class Neighborhood
  include Mongoid::Document
  field :name,         type: String, default: nil
  field :borough,      type: String, default: nil
  field :city,         type: String, default: nil
end
Run Code Online (Sandbox Code Playgroud)

使用simple_form,我试图生成一个分组选择表示建筑物可能属于的邻域列表.

= building_form.association :neighborhood, as: :grouped_select, collection: Neighborhood.where(city: city), group_method: :borough
Run Code Online (Sandbox Code Playgroud)

理想情况下,这样可以创建:

Borough #1
  Downtown
  Uptown
Borough #2
  Suburbs
  ...
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

undefined method `map' for "Borough #1":String
Run Code Online (Sandbox Code Playgroud)

看起来它正在调用Neighborhood.borough.map,并且因为String没有map函数,所以它会出错.我该如何解决?

forms ruby-on-rails simple-form

3
推荐指数
1
解决办法
2771
查看次数