小编mig*_*igu的帖子

私人iOS应用

我们是一个将承包商与客户联系起来的市场.我们想为我们的承包商发布iOS应用程序(React Native),但我们不希望该应用程序位于公共App Store上.对于Android,我们使用Alpha通道功能,它为我们提供了一个链接,我们可以发送给人们下载应用程序.

我认为企业计划不适合我们,因为我们不能要求我们的承包商加入计划?

自定义B2B计划似乎不太适合,因为我们不销售或白标任何应用程序?

还有其他选择还是上述假设我错了?

app-store ios

39
推荐指数
2
解决办法
4万
查看次数

登录Sidekiq工作人员

我正在尝试记录我的sideqik工作者tail -f log/development.log在开发和heroku logs生产中使用的进度.

但是,工作人员内部的所有内容以及工作人员调用的所有内容都不会被记录.在下面的代码中,只记录了TEST 1.

如何记录worker中的所有内容以及worker调用的类?

# app/controllers/TasksController.rb
def import_data
  Rails.logger.info "TEST 1" # shows up in development.log
  DataImportWorker.perform_async
  render "done"           
end

# app/workers/DataImportWorker.rb
class DataImportWorker
  include Sidekiq::Worker

  def perform    
    Rails.logger.info "TEST 2" # does not show up in development.log

    importer = Importer.new
    importer.import_data
  end
end


# app/controllers/services/Importer.rb    
class Importer  
  def import_data
    Rails.logger.info "TEST 3" # does not show up in development.log
  end
end
Run Code Online (Sandbox Code Playgroud)

更新

我仍然不明白为什么Rails.logger.infoSidekiq.logger.info不登录日志流.通过替换来实现Rails.logger.infoputs.

ruby ruby-on-rails sidekiq

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

Bootstrap 4内联形式全宽

我有一个内联表单,旁边有一个搜索栏和一个搜索按钮.如何强制input-groupdiv跨越Bootstrap 4中的整个列,最好不使用自定义CSS?

<div class="container">
  <div class="row">
    <div class="col-md-12">
      <form class="form-inline" action="/search" accept-charset="UTF-8" method="get">
        <div class="input-group">
          <input type="text" name="search" id="search" value="test" placeholder="Search accounts, contracts and transactions" class="form-control">
          <span class="input-group-btn">
            <input type="submit" name="commit" value="Search" class="btn btn-primary" data-disable-with="Search">
          </span> 
        </div>
      </form>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

html css twitter-bootstrap bootstrap-4

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

RSpec:在每个上下文后刷新表/销毁对象

如何删除您创建的对象(在数据库和内存中)

  • 每次测试后
  • 和每个上下文后?(在上下文中,彼此构建测试是有意义的)

有自动执行此操作的方法吗?

我有以下问题:

每个测试都将条目保存到数据库中.然后,下一个测试取决于这些条目.即使我想构建依赖于其他测试的测试,我也不能,因为测试执行的顺序是不可控的.

factories.rb:

sequence(:name) { |n| "purchaser #{n}" }      
Run Code Online (Sandbox Code Playgroud)

organization_spec.rb:

context "when no supplier exists" do
  it "finds no associated suppliers" do
    purchaser = create(:organization_purchaser)                
    purchaser.partners.empty?.should == true
  end
end

context "when one supplier exists" do
  it "finds one associated suppliers" do
    purchaser = create(:organization_purchaser)      
    supplier = create(:organization_supplier)
    partnership = create(:partnership, organization: purchaser, partner: supplier)         
    purchaser.partners.last.name.should == "purchaser 1"
  end
end

context "when two suppliers exist" do        
  it "finds two associated suppliers" do
    purchaser = create(:organization_purchaser) …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails rspec2 rspec-rails

12
推荐指数
2
解决办法
6436
查看次数

Postgres hstore:GIN与GiST索引性能

我必须决定是否对hstore列使用GIN或GiST索引.

Postgres的文档状态:

  • GIN索引查找速度比GiST快三倍
  • GIN索引的构建时间比GiST长大约三倍
  • GIN索引的更新速度比GiST慢十倍
  • GIN索引比GiST大两到三倍

我解释它的方式,如果你需要查询很多,请使用GIN,如果你需要更新很多,请使用GiST.

在该测试中,证实了上述GIN相对于GiST的所有三个缺点.但是,除了Postgres文档中的建议外,GIN优于GiST(更快查找)的优势非常小.幻灯片53显示,在测试中,GIN仅比Postgres文档中建议的200%至300%快2%至3%.

哪种信息来源更可靠?为什么?

postgresql indexing gwt-gin gist-index

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

如何运行在Heroku上启用ES2017功能的Node.js应用程序?

我是Node的新手,并创建了一个具有async/await语法的应用程序,如下所示:

const express = require('express');
const app = express();

const someLibrary = require('someLibrary');

function asyncWrap(fn) {
  return (req, res, next) => {
    fn(req, res, next).catch(next);
  };
};

app.post('/getBlock', asyncWrap(async (req,res,next) => {
  let block = await someLibrary.getBlock(req.body.id);
  [some more code]
}));

app.listen(process.env.PORT || 8000);
Run Code Online (Sandbox Code Playgroud)

它在我的机器上工作正常,但是当我部署到Heroku时,我收到错误,因为语法不受支持:

2017-03-23T10:11:13.953797+00:00 app[web.1]: app.post('/getBlock', asyncWrap(async (req,res,next) => {
2017-03-23T10:11:13.953799+00:00 app[web.1]: SyntaxError: Unexpected token (
Run Code Online (Sandbox Code Playgroud)

让Heroku支持这种语法的最简单方法是什么?

heroku node.js async-await babeljs ecmascript-2017

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

Demeter法则视图:创建委托来访问相关对象的属性吗?

德米特定律似乎是一个非常强大的概念.我可以理解它如何帮助编写良好且可维护的面向对象的代码.

有些人建议每次需要访问视图中关联对象的属性时编写委托方法.而不是在视图中写这样的东西

@order.customer.name
Run Code Online (Sandbox Code Playgroud)

你会写这段代码:

# model
class Order < ActiveRecord::Base
  belongs_to :customer
  delegate :name, :to => :customer, :prefix => true
end

#view
@order.customer_name
Run Code Online (Sandbox Code Playgroud)

另一方面,人们认为你的观点不应该指示模型,你不应该只为了在视图中交换下划线的点而向模型添加委托等方法.

如果在视图中违反Demeter法则,在模型中编写委托方法是否被认为是最佳实践?

oop ruby-on-rails law-of-demeter

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

AngularJS:在组成韩文字符时触发ng-change,ng-keyup或$ scope.$ watch

我正在建立一个韩语词汇训练师,我想比较人们输入的用户输入.

在韩语和其他一些亚洲语言中,您可以使用多个键盘事件撰写字母.在Chrome中,$ scope.$ watch,ng-keyup和ng-change仅在字母完全合成并且输入了新字母或空格后触发.我不介意AngularJS在最后一个字母完全合成之前没有触发任何东西,但是一旦字母完成,它应该触发而不必添加空格或开始下一个单词.

HTML:

<form name="forms.vocabularyForm">
  <input name="answer" id="answer" ng-model="vocabularyCtrl.answer" ng-change="vocabularyCtrl.checkChange()" ng-keyup="vocabularyCtrl.checkKeyUp($event)" type="text" />
</form>
Run Code Online (Sandbox Code Playgroud)

控制器:

.controller('VocabularyCtrl', [
  '$scope',
  '$location',
  function($scope, $location) {

    this.checkChange = function () {
      console.log("answer change: " + this.answer); 
    };

    this.checkKeyUp = function ($event) {
      console.log("answer keyUp: " + this.answer);
    };

    $scope.$watch('vocabularyCtrl.answer', function (answerNew, answerOld) {        
      console.log('answerOld: ' + answerOld + ', answerNew: ' + answerNew);         
    }, true);        

  };     
]);        
Run Code Online (Sandbox Code Playgroud)

例:

Input: ? 
Console:
answerOld: , answerNew:
answer keyUp:

Input: ?
Console:
answerOld: , answerNew: …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

运行时间Array#unshift vs Array #shift

我期待Array#shiftArray#unshift两者的运行时间?(n).原因是机器需要遍历每个阵列成员并将其分配给左侧或右侧的键.

Array#unshift假设只有一个值作为参数传递并且有大量数组成员的情况下,我假设值赋值array[0]不会对运行时间产生重大影响.换句话说,当数组成员的数量很高并且传入的变量数量Array#unshift很少时,我预计Array#shift并且Array#unshift具有相同的运行时间.

在Ruby 2.1.2上运行基准测试时,这些假设并不成立.为什么?

码:

require 'benchmark'

GC.disable    

number_of_elements = 25_600_000

a1 =[]
a2 = []
a3 = []
a4 = []
q1 = Queue.new
q2 = Queue.new

puts number_of_elements

number_of_elements.times do
  q1.enq(true)
  q2.enq(true)
  a1 << true
  a2 << true
  a3 << true
  a4 << true
end

number_of_operations = 1

Benchmark.bm do |bm|
  puts "Queue#enq('test')"
  bm.report do    
    number_of_operations.times { q1.enq('test') }
  end

  puts "Queue#deq" …
Run Code Online (Sandbox Code Playgroud)

ruby arrays performance

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

Virtus:将空数组与未设置的属性区分开来

我有几个提交给 Virtus 对象的表单(通过控制器)。有些表单包含extras属性,有些则不包含。

我目前无法区分是否extras已设置为空数组(即用户取消选择表单上的所有复选框)或是否从未提交过附加内容。在任何一种情况下,extras都将是一个空数组。

我需要这种区别,因为如果用户取消选择所有extras我需要更新它们。另一方面,如果额外内容不是表单的一部分(即不在参数中),我不应该更新它们。

class UpdateForm
  include Virtus.model(nullify_blank: true)
  include ActiveModel::Model
  attribute :extras, Array
  attribute :booking_time, Time

  def save
    updatable_attributes = self.attributes.delete_if { |key, value| value.blank? }
    some_object.update(updatable_attributes)
  end
end
Run Code Online (Sandbox Code Playgroud)

extras如果我这样称呼它,我怎么能让 Virtus 给我一个零:

UpdateForm.new(booking_time: Time.current)
Run Code Online (Sandbox Code Playgroud)

或者有没有更好的模式来做到这一点?

ruby ruby-on-rails

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