小编Con*_*ion的帖子

为给定域指定git push的SSH密钥

我有以下用例:我希望能够推送git@git.company.com:gitolite-admin使用用户的私钥gitolite-admin,而我想推送git@git.company.com:some_repo使用"我自己的"私钥.AFAIK,我无法解决这个问题~/.ssh/config,因为在这两种情况下用户名和服务器名都是相同的.由于我主要使用自己的私钥,因此我已将其定义~/.ssh/configgit@git.company.com.有没有人知道一种方法来覆盖用于单个git调用的密钥?

(旁白:gitolite基于密钥来区分谁在进行推送,因此在访问,所有权和审计方面,用户@服务器字符串对于不同的用户来说是相同的.)

git ssh gitolite

322
推荐指数
15
解决办法
22万
查看次数

测试Ruby类是否是另一个类的子类

我想测试一个类是否继承自另一个类,但似乎没有一个方法.

class A
end

class B < A
end

B.is_a? A 
=> false

B.superclass == A
=> true
Run Code Online (Sandbox Code Playgroud)

我想要的一个微不足道的实现是:

class Class
  def is_subclass_of?(clazz)
    return true if superclass == clazz
    return false if self == Object
    superclass.is_subclass_of?(clazz)
  end
end
Run Code Online (Sandbox Code Playgroud)

但我希望这已经存在了.

ruby inheritance subclass superclass

175
推荐指数
2
解决办法
3万
查看次数

Python脚本循环遍历目录中的所有文件,删除任何小于200 kB的文件

我想删除文件夹中大小小于200 kB的所有文件.

只是想在这里确定,当我在我的macbook上执行ls -la时,文件大小为171或143,我假设这是kb正确吗?

python

31
推荐指数
3
解决办法
5万
查看次数

将merge转换为rebase,而无需再次执行合并

我犯了一个错误:我应该使用git pull --rebase,但我发布了一个简单的git pull,合并的所有内容,现在在我的分支的HEAD中有一个合并提交.

我想摆脱那个合并提交,我想我只是发出一个git rebase -i HEAD~3,将我的最后一个本地提交移到顶部并将合并提交压缩到它中.唉,合并提交不适用于压缩.如果我这样做,我进入中间状态,我需要再次进行合并,这是很多工作.

有没有办法解决这个问题而不必再次执行合并?似乎应该可以以某种方式使用合并提交?

git git-pull git-merge git-rebase

22
推荐指数
1
解决办法
6819
查看次数

如何使用remote_function使用Rails 3进行Ajax调用?

我试图在选择框上进行onchange调用.对于我的应用程序,我使用jquery.js和rails.js来提及UJS.但是生成的代码仍然是Prototype而不是jquery ajax调用.我的代码如下所示:

<%= select_tag :category, 
       options_for_select(
           Category.find(:all,:select=>"name,id").collect{|c| [c.name,c.id]}),
       :onchange => remote_function(:url => {:controller => "posts", 
                                             :action => "filter_post",
                                             :filter =>"category"}, 
                                    :with=>"'category_id=' + $('#category').val()") %>
Run Code Online (Sandbox Code Playgroud)

由此生成的代码是:

new Ajax.Request('/posts/filter_posts?filter=category', {asynchronous:true, evalScripts:true,
parameters:'category_id=' + $('#category').val() + '&authenticity_token=' +
encodeURIComponent('CCyYj1wqXtddK6pUV6bAxw0CqZ4lbBxDGQHp13Y/jMY=')})
Run Code Online (Sandbox Code Playgroud)

jquery ruby-on-rails-3

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

是否存在匹配哈希的RSpec2匹配器?

未来读者请注意:认为RSpec不认为您的哈希值相等?一个可能是OrderedHash,但是从常规RSpec输出你无法分辨.这是提示这篇文章的问题.

原始问题:

假设我有一个规范,我想测试一个方法生成适当的哈希.

it 'should generate the Hash correctly' do
  expected = {:foo => 1, 'baz' => 2}
  subject.some_method_that_should_generate_the_hash.should == expected
end
Run Code Online (Sandbox Code Playgroud)

这通常会失败,因为具有相同键值对的不同哈希可能会以不同的顺序返回它们的对.结果如下:

Failure/Error: subject.some_method_that_should_generate_the_hash.should == expected
expected: {:foo => 1, 'baz' => 2},
     got: {'baz' => 2, :foo => 1}
Run Code Online (Sandbox Code Playgroud)

对于数组,使用=〜运算符求解.但是,这对Hashes不起作用.现在,我已经诉诸

it 'should generate the Hash correctly' do
  expected = {:foo => 1, 'baz' => 2}
  subject.some_method_that_should_generate_the_hash.each {|k,v|
    v.should == expected[k]
  }
end
Run Code Online (Sandbox Code Playgroud)

但这似乎不必要地冗长.我希望有一个明显的解决方案.我是否忽略了文档中的某些内容,或者RSpec没有适当的Matcher来进行无序的Hash平等?

ruby hash matcher rspec2

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

是否可以在不诉诸任意精度数据类型的情况下删除浮点错误?

我想知道,在特定条件下,是否可以在不使用任意精度数据类型的情况下删除浮点错误.

问题是通常的问题.语言是Ruby,但它包含在任何语言中:

f = 1829.82
=> 1829.82

f / 12.0
=> 152.485

(f / 12.0).round(2)
=> 152.48
Run Code Online (Sandbox Code Playgroud)

为什么不是152.49?因为浮点的精度有限:

format("%18.14f", f)
=> "1829.81999999999994"

format("%18.14f", f / 12.0)
=> "152.48499999999999"
Run Code Online (Sandbox Code Playgroud)

所以四舍五入是正确的.现在的问题是:有没有办法让我想反正答案,给出的下列情况:有上(数)业务强劲限制使用浮动进行的,所需要的精确度是有限的到小数点后两位(最多8个位数总共)和少量剩余的"错误"圆形答案是可以接受的吗?

用户可以输入有效的Ruby字符串,例如:

"foo / 12.0"
Run Code Online (Sandbox Code Playgroud)

其中foo是在执行字符串的上下文中提供的数字,但其中'12 .0'是用户输入的内容.想象一下带有一些免费公式字段的电子表格.字符串简单地被评估为Ruby,因此12.0变为Float.我可以使用ruby_parser + ruby​​2ruby gems构建一个解析树,将数据类型转换为Bignum,Rational,来自Flt库的东西,十进制浮点表示或者你有什么,但这很棘手,因为实际的字符串可以变成有点复杂,所以我不想这样做.如果没有其他可能的话,我会这样做,但这个问题是专门在这里看看我是否可以避开这条道路.因此,12.0的数据类型是严格Float和结果严格Float和我能做的唯一的事情是解释片段的最终答案,并试图"纠正"它,如果它四舍五入"错误"的方式.

用户唯一的计算涉及精度为两位小数的数字(总共最多8位).使用'simple'我的意思是浮点错误没有机会累积:我可以添加其中两个数字并将一个除以整数,但随后计算完成,结果舍入并存储并随后进行计算基于该舍入数字.通常只有一个浮点错误都会涉及,但我认为问题并不显著改变,如果两者可以积累,但残留的错误率可能是通过定义较大.

首先想到的是首先舍入到3位小数,然后是2位.但是,这不起作用.这将导致

152.48499999999999 => 152.485 => 152.49
Run Code Online (Sandbox Code Playgroud)

但是也

152.4846 => 152.485 => 152.49
Run Code Online (Sandbox Code Playgroud)

这不是你想要的.

接下来我想到的是将最小可能的增量(如人们已经指出的,取决于所考虑的浮点值)添加到浮点数(如果它在.5边界上轻推它).我主要想知道这可能导致"误报"的频率:添加最小增量的数字,即使它刚好低于.5边界的事实不是由于浮点错误,但是因为这只是计算的结果?

第二个选择是:只要永远的最小增量增加的数字,因为.5地区是唯一一个在那里也无妨重要.

编辑:我刚刚重写了问题,将我的部分答案纳入评论中,正如cdiggins建议的那样.我将奖励给了Ira Baxter积极参与讨论,尽管我还不确定他是对的:Mark Ransom和Emilio M Bumachar似乎支持我的观点,即在实践中,可能会进行修正相对大多数情况下,会产生"正确"的结果.

我仍然需要进行实验,看看结果是多么频繁,我完全打算这样做,但是我可以花在这上面的时间有点受限,所以我还没有完成它.这个实验并非无足轻重.

floating-point precision rounding

10
推荐指数
2
解决办法
3013
查看次数

使git分支再次等于master

精简版

使分支master再次等同的最简单方法是什么,抛弃任何差异?到目前为止,我只是使用git branch -D wip,然后git checkout -b wip,但这似乎有点傻.

动机

我经常wip在我的分支旁边有一个分支master,用于"正在进行的工作".有时,这样一个分支上的工作会"落后",当我重新发现它时,我发现我不再需要它了.当我想使用分支存储一组新的"正在进行的工作"并且我发现我只想放弃任何差异时master,这种重新发现经常发生,因此新的"正在进行的工作"最重要.弄清楚差异是不值得的:上面描述的解决方案对我来说很好.有没有更好的解决方案来解决这个用例?

git branch

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

使用lazy-seq而不吹栈:是否可以将懒惰与尾递归结合起来?

为了学习Clojure,我正在4clojure解决问题.我目前正在问题164,在那里你要枚举(部分)DFA接受的语言.一个有趣的条件是语言可能是无限的,因此解决方案必须是懒惰的(在这种情况下,解决方案的测试用例)(take 2000 ....

我有一个可以在我的机器上运行的解决方案,但是当我在网站上提交它时,它会炸掉堆栈(如果我增加可接受的字符串数量,从2000到20000确定,我也在本地吹掉堆栈,所以这是一个我解决方案的不足之处).

我的解决方案[1]是:

(fn [dfa]
  (let [start-state (dfa :start)
        accept-states (dfa :accepts)
        transitions (dfa :transitions)]
    (letfn [
      (accept-state? [state] (contains? accept-states state))

      (follow-transitions-from [state prefix]
          (lazy-seq (mapcat 
            (fn [pair] (enumerate-language (val pair) (str prefix (key pair))))
            (transitions state))))

      (enumerate-language [state prefix]
        (if (accept-state? state) 
          (cons prefix (follow-transitions-from state prefix))
          (follow-transitions-from state prefix)))
      ]   
      (enumerate-language start-state ""))
  )
)
Run Code Online (Sandbox Code Playgroud)

它接受DFA

'{:states #{q0 q1 q2 q3}
              :alphabet #{a b c} …
Run Code Online (Sandbox Code Playgroud)

stack-overflow clojure lazy-evaluation

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

如何从列表中删除整数?

我需要从整数arraylist中删除整数.我对字符串和其他对象没有任何问题.但是当我删除时,整数被视为索引而不是对象.

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(300);
list.remove(300);
Run Code Online (Sandbox Code Playgroud)

当我试图删除300我得到: 06-11 06:05:48.576: E/AndroidRuntime(856): java.lang.IndexOutOfBoundsException: Invalid index 300, size is 3

java arraylist

9
推荐指数
3
解决办法
7323
查看次数