我想知道时间是属于某个时间表还是其他时间.
在我的情况下是计算时间是在夜间时间表或正常时间表.
我已经达成了这个解决方案:
NIGHT = ["21:00", "06:00"]
def night?( date )
date_str = date.strftime( "%H:%M" )
date_str > NIGHT[0] || date_str < NIGHT[1]
end
Run Code Online (Sandbox Code Playgroud)
但我认为不是很优雅,也只适用于这个具体案例而不是每个时间范围.
(我发现几个类似的问题是SO,但他们都参考了日期范围没有时间范围)
解决方案必须适用于随机时间范围,不仅适用于具体的时间范围.让我们说:
"05:00"-"10:00"
"23:00"-"01:00"
"01:00"-"01:10"
Run Code Online (Sandbox Code Playgroud) 我已经使用PHP和JS编写了一个webapp,它现在正在工作,并决定我应该学习单元测试并在清理我的代码时实现它.
我对应该进行单元测试的内容感到困惑.每个PHPUnit教程我都见过测试getter,setters,计算数组中的项目.我正在处理的网站上有一个显示照片的页面.用户可以像照片或将其添加到他的收藏夹.PHP主要用于站点作为运行backbone.js的客户端的API层.
我该如何为这些功能编写单元测试?函数(如下所示)抓取通过AJAX发送给它的$ _GET数据,并将一些行插入数据库.它不包含任何setter,getters或计数任何东西,也不是一个类.它甚至应该进行单元测试吗?
我可以为这些函数编写的单元测试的一个例子真的很棒!:)
/**
* Create new Set and add item to it
* @return void
*/
public function action_create_set() {
// Get data from user
$user_id = Input::get('user_id');
$post_id = Input::get('post_id');
$set_name = Input::get('set_name');
// Create new set
$data = array(
'user_id' => $user_id,
'name' => $set_name
);
$set_id = DB::table('sets')->insert_get_id($data);
// Add item to newly created set
DB::query("INSERT IGNORE INTO posts_sets (post_id, set_id, user_id)
VALUES ($post_id, $set_id, $user_id)");
// Change `created_at` & `updated_at` col of 'sets' …Run Code Online (Sandbox Code Playgroud) 有这个:
class Event < ActiveRecord::Base
belongs_to :historizable, :polymorphic => true
end
user = User.create!
Run Code Online (Sandbox Code Playgroud)
我可以:
Event.create!(:historizable => user)
Run Code Online (Sandbox Code Playgroud)
但我不能:
Event.where(:historizable => user)
# Mysql2::Error: Unknown column 'events.historizable' in 'where clause'
Run Code Online (Sandbox Code Playgroud)
我必须这样做:
Event.where(:historizable_id => user.id, :historizable_type => user.class.name)
Run Code Online (Sandbox Code Playgroud)
重现问题的代码:https://gist.github.com/fguillen/4732177#file-polymorphic_where_test-rb
我正在尝试监控DS模型上的状态更改.
我在文档中找到了有趣的标志:
并且它们在模板中正常工作{{#if model.isLoading}}Is Loading{{/if}},例如,我可以使用它.
但令人不安的是,这些旗帜中的观察者具有非常随机的行为.例如,我发现公寓的观察者isSaving根本不起作用.但是国旗上的观察者isReloading完美无缺.
在这里,我有一个完整的例子,说明我迄今为止所尝试过的事情.我把这个Mixin包含在我的模型中:
// app/models/mixins/loading-monitoring
import Ember from 'ember';
export default Ember.Mixin.create({
isReloadingDidChange: Ember.observer('isReloading', function() {
console.log('LOG: isReloadingDidChange', this.get('id'), this.get('isReloading'));
}),
isSavingDidChange: Ember.observer('isSaving', function() {
console.log('LOG: isSavingDidChange', this.get('id'), this.get('isSaving'));
}),
isLoadingDidChange: Ember.observer('isLoading', function() {
console.log('LOG: isLoadingDidChange', this.get('id'), this.get('isLoading'));
}),
isLoadedDidChange: Ember.observer('isLoaded', function() {
console.log('LOG: isLoadedDidChange', this.get('id'), this.get('isLoaded'));
}),
onInit: Ember.on('init', function() {
console.log('LOG: init', this.get('id'));
}),
onDidLoad: Ember.on('didLoad', function() …Run Code Online (Sandbox Code Playgroud) 当请求的URL没有响应状态时,200Elastic Beanstalk会将任务再次放入队列中.
如何配置号码或重试?
我知道解释什么地方隐藏在背后ErrorVisibilityTimeout,InactivityTimeout,Dead Letter Queues...但这些概念还没有在我的脑海低效增长的绿色.
例如,我只想配置最大重试次数0,因此尝试但不重试.
worker amazon-sqs amazon-web-services amazon-elastic-beanstalk
我想将此额外配置添加到我的 nginx.conf 中:
server {
listen 0.0.0.0:8081;
rewrite ^ https://$host$request_uri? redirect;
}
Run Code Online (Sandbox Code Playgroud)
但是当我的应用程序部署在托管服务中时,我不想修改已经存在的nginx.conf. 它可能有问题。
有什么办法可以在不修改 nginx.conf 的情况下添加这个额外的配置吗?
我正在使用backbone.js来实现一个名为Roster的好友列表.我对名册收集和个人的主干观点rosterEntry如下:
Slx.Roster.Views.RosterEntry = Backbone.View.extend({
tagName: "li",
className : "rosterEntry clearfix",
templateSelector: '#rosterEntryTemplate',
initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
this.model.bind('remove', this.remove);
this.template = _.template($("#rosterEntryTemplate").html());
},
remove: function () {
debug.log("Called remove event on model");
$(this.el).remove();
},
render: function() {
var renderedContent = this.template(this.model.toJSON());
this.id = this.model.Id;
$(this.el).attr('id', "friendid-" + this.model.get("id")).html(renderedContent);
return this;
}
});
Slx.Roster.Views.Roster = Backbone.View.extend({
el: "div#roster-container",
initialize: function () {
_.bindAll(this, 'render', 'add', 'remove');
this.template = _.template($("#rosterTemplate").html());
this.collection.bind('reset', this.render);
this.collection.bind('add', this.add);
this.collection.bind('remove', this.remove);
},
add: …Run Code Online (Sandbox Code Playgroud) 我有几个CSS文件使用相对路径来引用图像url( "../img/my_image.jpg" ).
一切都development在production环境中工作,因为所有CSS文件都打包在一个文件中并且结构丢失,亲戚路径也丢失了,并且找不到图像.
我有这样的资产结构:
/app
/assets
/plugins
/my_plugin
/img
my_image.jpg
/css
my_css.css
Run Code Online (Sandbox Code Playgroud)
(/my_plugin可以是任何一组插件css,js以及images任何其他的Twitter Bootstrap文件)
进入/app/assets/plugins/my_plugin/my_css.css我有类似的东西:
background-image: url("../img/my_image.jpg");
Run Code Online (Sandbox Code Playgroud)
在/app/assets/stylesheets/application.css:
*= require css/my_css.css
Run Code Online (Sandbox Code Playgroud)
最后在head我的html文件中:
<%= stylesheet_link_tag "application" %>
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
Mini应用程序重现问题,在README中有安装和重现问题的指令.
我有一个像这样的对象:
// app/services/my-service.js
import Ember from 'ember';
export default Ember.Service.extend({
counters: Ember.Object.create()
})
Run Code Online (Sandbox Code Playgroud)
myService.counters是一个散列,如:
{
clocks: 3,
diamons: 2
}
Run Code Online (Sandbox Code Playgroud)
我想为这个对象添加一个计算属性,返回myService.counters.clocks加上的和myService.counters.diamons
// app/services/my-service.js
...
count: Ember.computed('counters.@each', function(){
return _.reduce(this.get('counters'), function(memo, num){ return memo + num; }, 0);
})
...
Run Code Online (Sandbox Code Playgroud)
但观察者配置不被接受,我有错误:
Uncaught Error: Assertion Failed: Depending on arrays using a dependent key ending with `@each` is no longer supported. Please refactor from `Ember.computed('counters.@each', function() {});` to `Ember.computed('counters.[]', function() {})`.
Run Code Online (Sandbox Code Playgroud)
但如果我提出改变建议:
// app/services/my-service.js
... …Run Code Online (Sandbox Code Playgroud) 我想测量每个Sinatra路由的执行时间,包括完整的请求/响应周期持续时间,然后将此指标发送到Graphite服务器。
我的第一种方法是使用Rack::Runtime,然后从Sinatra after过滤器的响应标头中获取所需的值,但我发现此过滤器实际上是在将响应完全发送到客户端之前执行的。
因此,不仅我无法访问该after块中的许多响应信息,而且也无法使用该块以任何其他方式将指标发送给Graphite,因为它们无法反映实际的响应时间。
我在其他主题中读到,一种可能的方法是创建一个Rack中间件来包装应用程序并执行基准测试,结果如下:
class GraphiteRoutesReporter
def initialize(app)
@app = app
end
def call(env)
start_time = Time.now
status, headers, body = @app.call(env)
time_taken = (1000 * (Time.now - start_time))
# send #{time_taken} to my stats server
[status, headers, body]
end
end
Run Code Online (Sandbox Code Playgroud)
我可以加入其中,config.ru并且看起来工作正常。
但是我担心此代码会与核心的Rack请求链混淆,并且我担心我没有正确使用Sinatra公共API。
哪种方法可以获取Sinatra请求的完整响应时间?
ruby ×3
ember.js ×2
activerecord ×1
amazon-sqs ×1
backbone.js ×1
ember-data ×1
javascript ×1
nginx ×1
php ×1
phpunit ×1
rack ×1
sinatra ×1
tdd ×1
time ×1
unit-testing ×1
worker ×1