我正在寻找一个git命令来帮助我准备好进入Master时使用我的功能分支.这个git命令会将我在分支上的所有更改压缩到master之上的单个提交中.我今天这样做:
git rebase origin/master
git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)
其中4是壁球的提交次数.但是,这需要我知道我有多少提交.我今天这样做是通过运行:
git log HEAD...origin/master
Run Code Online (Sandbox Code Playgroud)
然后计算提交.
我觉得应该有更好的方法来做到这一点.或者这也是其他人如何做到的?
假设我有一个数据数组,2个线程可以安全地同时写入同一个数组的不同索引吗?我关心写入速度,我想同步'get index to write at'位与实际写入.
我正在编写代码,让我假设2个线程不会获得相同的索引.
我想使用2个缓存 - 内存默认值为1,内存缓存为1,尽管抽象地说它应该不重要(我认为)哪两个.
内存默认值是我想要加载小而很少更改数据的地方.我一直在使用记忆库.我从那里的数据库中保留了一堆"域数据"类型的东西,我也有一些来自外部源的小数据,我每15分钟刷新一次 - 1小时.
我最近添加了memcache,因为我现在正在提供一些更大的资产.我是如何进入这个复杂的,但这些是更大的〜千字节,数量相对较少(数百),并且可高度缓存 - 它们会发生变化,但每小时刷新一次可能太多了.这个集合可能会增长,但它会在所有主机上共享.刷新很昂贵.
第一组数据现在已经使用默认的内存缓存一段时间了,并且表现良好.Memcache非常适合第二组数据.
我调整了memcache,它对第二组数据非常有用.问题在于,由于我现有的代码是"思考"它是在本地内存中,我每次请求都要多次访问memcache,这会增加我的延迟.
所以,我想使用2个缓存.思考?
(注意:memcache运行在不同于我的服务器的机器上.即使我在本地运行它,我也有一组主机,所以它不是本地的.所以,我想避免需要变大虽然我可能通过使内存更大并且只使用内存来解决这个问题(数据确实不是那么大),但这并不能解决问题,因为我会扩展,所以它只会踢能够.)
在Rails 3.0.10中
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Run Code Online (Sandbox Code Playgroud)
和
ruby-1.9.2-p180 :011 > Date.today
=> Mon, 10 Oct 2011
ruby-1.9.2-p180 :012 > Date.today.wday
=> 1
Run Code Online (Sandbox Code Playgroud)
因此,星期一在时间映射中为0,在日期映射中为1.
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/time/calculations.rb
我觉得从星期日开始,零是更安全,更常见,更有可能被别人的方式去理解.我希望了解历史/推理,以防我忽视某些事情.
我的用例:我在我的数据库中明确地存储了星期几.我认为存储为整数比存储"星期一","星期二"等更有效,更容易使用.
PS我有一个好主意做类似以下的事情.从平日字符串里面来回映射方法(隐藏整数).
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Time::DAYS_INTO_WEEK[day_of_week.downcase.to_sym]
Time::DAYS_INTO_WEEK.to_a.select{|k, v| v == start_day }.first.first.to_s.capitalize
Run Code Online (Sandbox Code Playgroud) 很抱歉这是一个广泛的问题,但我真的很想知道人们用来为他们的应用程序提供良好监控的服务组合.现在,我正在考虑使用Pingdom + Hoptoad(+ PagerDuty),但我想知道其他人正在使用什么,因为几乎所有我决定的东西都有几个竞争对手.
我想知道我的应用何时无法访问,不稳定或无法访问
我想做一个基本的健全性检查,我的应用程序是好的(呈现一些东西),但不必深入(不需要模拟登录'ping')
我希望能够便宜地,轻松地添加新的东西来监控
我希望能够生成我自己的通知(现在看起来非常标准,但值得一试)
我想知道什么时候我得到了很多例外(这里和那里奇怪的我早上都愿意检查,但每隔几分钟就有1个值得起床)
我想报道
它需要与多个应用程序,跨多个节点运行的应用程序以及同一项目中的多个用户进行扩展.
我见过Hoptoad与Exceptional的讨论.我对人们组成整个监控套件的兴趣更感兴趣.你在用什么?你喜欢它什么?你不喜欢什么?
真的很想获得建议!
我想知道是否有一个slf4j的实现登录到JSON格式.每个日志消息都是JSON对象,每行1个.
例如,日志文件的每一行看起来像这样:
{"severity":"WARN", "ts":12345678, "host":"myhostname.com", "message":"Failed to do something"}
Run Code Online (Sandbox Code Playgroud) 我无法获取rails来为我的任何CSS或JS资产设置max-age值.我们正在运行rails 3.1,但我们升级了所以我很可能错过了一些明显的配置.在这一点上,我已经把我能找到的大部分配置从真实转为假,然后又没有运气.
这是我目前的环境/ production.rb
Ventura::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Configure static asset server for tests with Cache-Control for performance
config.serve_static_assets = false
config.static_cache_control = "public, max-age=3600"
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset …Run Code Online (Sandbox Code Playgroud) 有没有办法指示Hive将数据拆分成多个输出文件?或者可能限制输出文件的大小.
我打算使用Redshift,它建议将数据拆分成多个文件以允许并行加载http://docs.aws.amazon.com/redshift/latest/dg/t_splitting-data-files.html
我们预先处理hive中的所有数据,我想知道是否有一种方法可以创建,例如10个1GB文件可能会使复制速度更快.
我正在查看https://cwiki.apache.org/Hive/adminmanual-configuration.html和https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties但我找不到任何东西
我似乎遇到过文献暗示使用 RSpec 的any_instance_of方法是不好的做法(例如expect_any_instance_of)。津津乐道的文档甚至在“使用遗留代码”部分(http://www.relishapp.com/rspec/rspec-mocks/v/3-4/docs/working-with-legacy-code/any -instance ) 这意味着我不应该利用它编写新代码。
我觉得我经常编写依赖此功能的新规范。一个很好的例子是任何创建一个新实例然后调用它的方法的方法。(在 Rails 中,MyModel 是一个 ActiveRecord)我经常编写执行以下操作的方法:
def my_method
my_active_record_model = MyModel.create(my_param: my_val)
my_active_record_model.do_something_productive
end
Run Code Online (Sandbox Code Playgroud)
我通常会写我的规范来寻找do_something_productive使用expect_any_instance_of. 例如:
expect_any_instance_of(MyModel).to receive(:do_something_productive)
subject.my_method
Run Code Online (Sandbox Code Playgroud)
我可以看到的唯一另一种方式是使用一堆这样的存根:
my_double = double('my_model')
expect(MyModel).to receive(:create).and_return(my_double)
expect(my_double).to receive(:do_something_productive)
subject.my_method
Run Code Online (Sandbox Code Playgroud)
但是,我认为这更糟糕,因为 a) 它的书写时间更长且速度更慢,并且 b) 它比第一种方式更脆弱和更白盒。为了说明第二点,如果我改为my_method以下内容:
def my_method
my_active_record_model = MyModel.new(my_param: my_val)
my_active_record_model.save
my_active_record_model.do_something_productive
end
Run Code Online (Sandbox Code Playgroud)
然后规范的双重版本中断了,但any_instance_of版本工作得很好。
所以我的问题是,其他开发人员是如何做到这一点的?我的使用方法是否any_instance_of令人不悦?如果是这样,为什么?
一直在乱砍几个库,并遇到一个字符串被"双重逃脱"的问题.
例如: 固定示例
> x = ['a']
=> ["a"]
> x.to_s
=> "[\"a\"]"
>
Run Code Online (Sandbox Code Playgroud)
然后再来
\"\[\\\"s\\\"\]\"
Run Code Online (Sandbox Code Playgroud)
在处理http标头时发生了这种情况.我有一个标题,它将是一个数组,但http库正在对array.to_s值进行自己的字符转义.
我发现的解决方法是将数组转换为字符串,然后"撤消"to_s.像这样:formatted_value = value.to_s
if value.instance_of?(Array)
formatted_value = formatted_value.gsub(/\\/,"") #remove backslash
formatted_value = formatted_value.gsub(/"/,"") #remove single quote
formatted_value = formatted_value.gsub(/\[/,"") #remove [
formatted_value = formatted_value.gsub(/\]/,"") #remove ]
end
value = formatted_value
Run Code Online (Sandbox Code Playgroud)
......有一个更好的方法......(不需要修补我正在使用的宝石).(是的,如果我的字符串实际上包含那些字符串,那么这个休息.)
建议?
**更新2**
好的.在这个街区仍然有麻烦,但现在我想我已经找到了核心问题.在to_s调用之后,它将我的数组序列化为json.至少,这似乎正在复制我所看到的.
[ 'A'].to_s.to_json
我正在调用一个返回to_s结果的gem中的方法,然后我在它上面调用to_json.
我今天在一些代码中看到了这个.
class Foo
def self.bar
@myvar = 'x'
end
end
Run Code Online (Sandbox Code Playgroud)
究竟是什么访问?据我所知,这是实例方法无法访问的.这叫什么(google-able),因为我似乎无法在其他任何地方找到这样的例子.
我在调试客户端时遇到问题,而我正试图在服务器上获取原始URL.我想知道如何转储触及rails的原始URL/http消息.
如果找到query_string,哪个适合获取.但是如果用户发帖,我似乎无法在任何地方找到原始字符串.
我能找到的只是哈希与原始URL中的解析后参数.
救命?
我们的数据库上有一个监视器,用于检查接近max-int或max-bigint的ID.我们刚刚离开MySQL,我很难在PostgreSQL上进行类似的检查.我希望有人可以提供帮助.
这是MySQL中的查询
SELECT table_name, auto_increment FROM information_schema.tables WHERE table_schema = DATABASE();
我试图从PostgreSQL获得相同的结果.我们通过对数据库的一系列调用找到了一种方法,分别检查每个表.
我只想打电话给数据库.这是我到目前为止所拥有的:
CREATE OR REPLACE FUNCTION getAllSeqId() RETURNS SETOF record AS
$body$
DECLARE
sequence_name varchar(255);
BEGIN
FOR sequence_name in SELECT relname FROM pg_class WHERE (relkind = 'S')
LOOP
RETURN QUERY EXECUTE 'SELECT last_value FROM ' || sequence_name;
END LOOP;
RETURN;
END
$body$
LANGUAGE 'plpgsql';
SELECT last_value from getAllSeqId() as(last_value bigint);
Run Code Online (Sandbox Code Playgroud)
但是,我需要以某种方式将sequence_name添加到每个记录,以便在[table_name,last_value]或[sequence_name,last_value]的记录中输出.
所以我想把我的函数称为:
SELECT sequence_name, last_value from getAllSeqId() as(sequence_name varchar(255), last_value bigint);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
编辑:在ruby中,这会创建我们正在寻找的输出.正如您所看到的,我们正在进行1次调用以获取所有索引,然后每次调用1次调用以获取最后一个值.必须是一个更好的方式.
def perform
find_auto_inc_tables.each do |auto_inc_table| …Run Code Online (Sandbox Code Playgroud) ruby ×5
caching ×2
java ×2
concurrency ×1
git ×1
git-merge ×1
git-squash ×1
heroku ×1
hive ×1
http ×1
http-headers ×1
logging ×1
monitoring ×1
mysql ×1
ping ×1
postgresql ×1
rspec ×1
slf4j ×1
string ×1
testing ×1
time ×1
unit-testing ×1