小编Rob*_*ley的帖子

如何在Scala中覆盖`org.elasticsearch.client.FilterClient#doExecute()`?

特别是"org.elasticsearch" % "elasticsearch" % "2.4.x"(它确实适用ActionRequest不再采用参数类型的ElasticSearch的更高版本,但我们无法更新到那些!).

我们试图覆盖的Java方法定义如下(source):

protected <Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder>> void doExecute(Action<Request, Response, RequestBuilder> action, Request request, ActionListener<Response> listener) {
    in().execute(action, request, listener);
}
Run Code Online (Sandbox Code Playgroud)

天真的企图覆盖它......

import org.elasticsearch.action._
import org.elasticsearch.client.{Client, FilterClient}

class DemoFilterClient(underlyingClient: Client) extends FilterClient(underlyingClient) {
  override def doExecute[
    Request <: ActionRequest[_],
    Response <: ActionResponse,
    RequestBuilder <: ActionRequestBuilder[Request, Response, RequestBuilder]
  ](
    action: Action[Request, Response, RequestBuilder],
    request: Request,
    listener: ActionListener[Response]
  ) = super.doExecute(action, request, listener) …
Run Code Online (Sandbox Code Playgroud)

scala scala-java-interop elasticsearch-2.4

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

无限的力量Jce和Android

我正在使用SpongyCastle(完全实现BouncyCastle的Android加密功能),我有一个包含大小为384的密钥的bks.我正在尝试使用KeyStore.getKey(别名,密码)方法提取该密钥.密钥库中的任何密钥.但我遇到的是错误

java.security.UnrecoverableKeyException: no match.

做一些研究表明,这可能是因为密钥大小太大而Android无法处理,这是有道理的,因为我的程序获得大小128和256的其他密钥没问题.通常在Java中,这可以通过将"Unlimited Strength"JCE导入Java安全文件夹来解决,但是android呢?我可以将无限强度JCE导入android(我的直觉本能是否)如果没有,是否有任何关于如何提取密钥的建议?SpongyCastle解决了我的很多其他问题,我希望这里也有SpongyCastle解决方案.

谢谢!

android bouncycastle spongycastle

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

从历史记录中删除不需要的文件,包括带有filter-branch的所有引用

我最近克隆了一个SVN存储库,它曾经有一些二进制文件,不再需要它们了.不幸的是,我已经把它推到了Github,其中包含了二进制文件.我现在想要使用'git filter-branch'删除它们,但是当涉及到标签和分支时我遇到了一些问题.

基本上,我创建了一个简单的shell脚本来删除已由以下命令确定的文件列表:

git rev-list --objects --all | grep .jar > files.txt
Run Code Online (Sandbox Code Playgroud)

删除脚本如下所示:

#!/bin/sh
while read file_hash file_to_remove
do
    echo "Removing "$file_to_remove;
    git filter-branch --index-filter "git rm --cached --ignore-unmatch $file_to_remove"
    rm -rf .git/refs/original/;
    git reflog expire --all --expire-unreachable=0;
    git repack -A -d;
    git prune
done < $1
Run Code Online (Sandbox Code Playgroud)

我有一些标签(全部列在.git/packed-refs中),一个.git/refs/remotes/origin(指向Github repo).使用上面的脚本删除文件没有想要的效果('du -cm'仍然输出相同的大小;'git rev-list'仍然列出文件),直到我手动删除.git/packed中的所有引用-refs和.git/refs/remotes/origin目录.

当然,我正在丢失所有标签以及使用这种方法将我的本地更改推回给Github的可能性.有什么我错过了或有没有其他方法从所有分支/标签中删除文件而不破坏我的历史记录?

非常感谢,Matthes

git git-svn git-filter-branch git-rewrite-history

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

如何更改所有 git 消息提交中的特定字符串?

我想 grep 并更改推送到 Github 的所有消息中的特定字符串。是否可以?如何?我知道如何更改最后一条消息git commit --amend,但我想更改所有提交的所有消息。

git version-control github rebase git-rewrite-history

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

如何使用FastParse准确匹配'n'给定的字符

FastParse解析器组合子Scala库给你的.rep(n)"重复"的方法,让您创建一个新的解析器,试图解析givenParser n 或更多次.如果我想完全 n匹配,那么规范的方法是什么?

在我的情况下,我想解析一个40个字符的Git提交ID - 如果它超过40个字符,那不是一个提交ID,它不应该是匹配.

到目前为止,我在docs中找到的最接近的例子是:

val unicodeEscape = P( "u" ~ hexDigit ~ hexDigit ~ hexDigit ~ hexDigit )
Run Code Online (Sandbox Code Playgroud)

...通过简单的重复匹配4个字符(40个字符的提交ID详细).

这些是解析器组合器,而不是正则表达式,答案就是这样的\p{XDigit}{40}.

scala parser-combinators fastparse

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

隐式值的隐式转换是否可以满足隐式参数?

我正在定义一些Scala implicits,以便更轻松地使用特定的不可更改的Java类集.下面的Scala代码是一个简单的例子,显然看起来很疯狂,在现实世界中,我试图从Monkey,Tree&Duck中隐含地获取特定资源(而不是数字时代),以便在各种方法中使用purchaseCandles():

// actually 3 Java classes I can not change:
case class Monkey(bananas: Int) 
case class Tree(rings: Int)
case class Duck(quacks: Seq[String])

// implicits I created to make my life easier...
implicit def monkey2Age(monkey: Monkey): Int = monkey.bananas / 1000
implicit def tree2Age(tree: Tree): Int = tree.rings
implicit def duck2Age(duck: Duck): Int = duck.quacks.size / 100000

// one of several helper methods that I would like to define only once,
// only useful if they can use …
Run Code Online (Sandbox Code Playgroud)

scala implicit-conversion implicit-parameters

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

如何使用git filter-branch通过blob SHA1删除文件?

我见过的大多数git过滤器分支示例都是删除文件,它们是基于文件名删除文件的.我不一定想那样做.相反,我已经确定了要删除的文件的一些blob(不提交)SHA1,无论它们在存储库中的位置如何.(由于我们的回购历史,文件往往会在不改变的情况下移动.)

告诉git filter-branch根据blob SHA1删除文件的最佳方法是什么?

git git-filter-branch git-rewrite-history

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

Git:如何永久删除已提交的文件?

我已经提交了一个不应该在git存储库中的文件.我删除了它并提交删除,但我仍然可以通过git历史记录访​​问该文件.

如何永久删除已提交的文件,以便没有它的痕迹?

git git-rewrite-history

0
推荐指数
1
解决办法
585
查看次数