小编Eri*_*ire的帖子

为什么Jenkinsfile中的每个循环在第一次迭代时停止

这是我的内容Jenkinsfile:

node {
    // prints only the first element 'a'
    [ 'a', 'b', 'c' ].each {
        echo it
    }
}
Run Code Online (Sandbox Code Playgroud)

在Jenkins中执行作业时(使用Pipeline插件),仅打印列表中的第一个项目.

有人能解释我这种奇怪的行为吗?这是一个错误吗?或者只是我不理解Groovy语法?

编辑:for (i in items)按预期工作:

node {
    // prints 'a', 'b' and 'c'
    for (i in [ 'a', 'b', 'c' ]) {
        echo i
    }
}
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline

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

使用Apache HttpComponents Client签署AWS HTTP请求

我正在尝试向受IAM访问策略保护的AWS Elasticsearch域发出HTTP请求.我需要签署这些请求,以便AWS授权这些请求.我正在使用Jest,后者又使用Apache HttpComponents Client.

这似乎是一个常见的用例,我想知道是否有某种类型的库,我可以在Apache HttpComponents客户端上使用它来签署所有请求.

java amazon-web-services elasticsearch apache-httpcomponents jest

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

使用正则表达式过滤列表

我认为这是一项简单的任务,但我是 regex 的新手,所以无法弄清楚。我想过滤一个包含以下内容的列表:“ANY”-“ANY”-“ANY”

输入:

List1 = ["AB.22-01-01", "AB.33-01-44", "--4", "AA.44--05", "--"]
Run Code Online (Sandbox Code Playgroud)

输出:

List2 = ["AB.22-01-01", "AB.33-01-44"]
Run Code Online (Sandbox Code Playgroud)

每个项目将包含两个“-”,但我只想获取“-”两侧带有文本的项目。

python regex python-2.7

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

Guava是否提供了一种解除字符串的方法?

我需要逃避一个特殊字符String.

Guava提供了这个Escaper类,它正是这样做的:

Escaper escaper = Escapers.builder()
        .addEscape('[', "\\[")
        .addEscape(']', "\\]")
        .build();

String escapedStr = escaper.escape("This is a [test]");

System.out.println(escapedStr);
// -> prints "This is a \[test\]"
Run Code Online (Sandbox Code Playgroud)

现在我有一个逃脱String,我需要解除它,我在番石榴找不到任何东西来做这件事.

我期待Escaper有一种unescape()方法,但事实并非如此.

编辑:我知道在一些非意义的情况下,取消内容可能很棘手,甚至是不可能的.

例如,这种Escaper用法可能导致含糊不清:

Escaper escaper = Escapers.builder()
        .addEscape('@', " at ")
        .addEscape('.', " dot ")
        .build();
Run Code Online (Sandbox Code Playgroud)

除非转义的数据仅包含电子邮件地址,否则您无法通过取消它来安全地获取数据.

EscaperHTML实体安全使用的一个很好的例子:

Escaper escaper = Escapers.builder()
        .addEscape('&', "&")
        .addEscape('<', "&lt;")
        .addEscape('>', "&gt;")
        .build();
Run Code Online (Sandbox Code Playgroud)

在这里,您可以安全地转义任何文本,将其合并到HTML页面中并随时取消它以显示它,因为您涵盖了所有可能的含糊之处.

总之,我不明白为什么unescaping是如此有争议.我认为开发者有责任正确使用这个类,了解他的数据并避免含糊不清.根据定义,转义意味着您最终需要进行转换.否则,它是混淆或其他一些概念.

java guava

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

使用RxJava获取GroupedObservable的第一个元素

我是RxJava的新手.

我正在尝试按给定键对元素进行分组,并获取每个键的第一个值.

例如,按照第一个字母对这些名称进行分组,并为每个组打印第一个名称:

Observable<String> names = Observable.just(
                             "John", "Steve", "Ruth",
                             "Sam", "Jane", "James");
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

第一次尝试:

names.groupBy(s -> s.charAt(0))
     .flatMap(grp -> grp.first())
     .subscribe(s -> System.out.println(s));
Run Code Online (Sandbox Code Playgroud)

失败!:打印所有名称.

第二次尝试:

names.groupBy(s -> s.charAt(0))
     .subscribe(grp -> grp
                         .first()
                         .subscribe(System.out::println));
Run Code Online (Sandbox Code Playgroud)

再次失败!:所有名字仍然印有......

我设法通过减少每个GroupedObservable来获得预期的结果:

第一次尝试,减少:

names.groupBy(s -> s.charAt(0))
     .flatMap(grp -> grp.reduce((a, b) -> a))
     .subscribe(s -> System.out.println(s));
Run Code Online (Sandbox Code Playgroud)

第二次尝试,减少:

names.groupBy(s -> s.charAt(0))
     .subscribe(grp -> grp
                         .reduce((a, b) -> a)
                         .subscribe(System.out::println));
Run Code Online (Sandbox Code Playgroud)

但这种解决方案并不理想.在现实世界中,这将涉及一些昂贵的计算,并且reduce()操作员将比first()操作员(通过键仅计算1个值)花费更长的时间来计算(计算所有值).

rx-java

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

android应用程序中的ArrayIndexOutOfBoundsException

我的应用程序中有一个ArrayIndexOutofBounds异常.我想在我的应用程序中放置一个前一个按钮.我的数组中有5个元素按钮循环.如何在用户点击元素[0]时这样做,它将循环回元素[4]而不是转到[-1]导致异常?

我的代码如下:

mPrevButton = (ImageButton)findViewById(R.id.prev_button);
mPrevButton.setOnClickListener (new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
        mIsCheater = false;
        updateQuestion();
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么:

mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
Run Code Online (Sandbox Code Playgroud)

java eclipse android imagebutton indexoutofboundsexception

0
推荐指数
2
解决办法
354
查看次数