小编Chr*_*iki的帖子

如何在ssl:// transport的PHP流上下文中强制某个TLS版本?

在尝试访问httpsURL 时,如何在PHP流上下文中强制使用TLSv1.0 ?

我正在寻找类似的东西:

$context = stream_context_create(
  array(
    'ssl' => array(
      'protocol_version' => 'tls1',
    ),
  ));
file_get_contents('https://example.com/test', false, $context);
Run Code Online (Sandbox Code Playgroud)

背景

实际上,在使用PHP时,我在Ubuntu 12.04中遇到了一个问题SoapClient.不幸的是,我正在尝试连接的服务器仅支持SSLv3.0/TLSv1.0,并且在默认的TLSv1.1协商时失败.因此,我想明确将ssl://传输协议设置为TLSv1.0.

php ssl

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

Gradle 集成测试套件取决于 testImplementation 依赖项

我正在尝试迁移到Gradle 7.3 中引入的测试套件。我想做的是将testImplementation依赖项添加到我的集成测试中。

testing {
    suites { 
        val test by getting(JvmTestSuite::class) { 
            useJUnitJupiter() 
        }

        val integrationTest by registering(JvmTestSuite::class) { 
            dependencies {
                implementation(project) // This adds dependencies to the prod code
                // What to add to automatically use testImplementation deps?
            }
            ...
 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

jvm gradle

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

Gradle 依赖范围

我正在用 Gradle 进行一些实验,但作为主要的 Maven 用户,一些依赖范围让我感到困惑……

有些与 Maven 相同:

compile -> compile
runtime -> runtime
compileOnly -> provided
Run Code Online (Sandbox Code Playgroud)

但我也遇到了implementation这听起来像parentMaven POM的元素,但又不是。

有人可以向我解释一下是什么implementation以及其他一些,如果它们存在而我没有在这里提到(上面的测试版本很明显不需要解释)?

如果implementation不像Maven上的父级,我们如何在Gradle中具有Maven的父级POM效果?

gradle maven parent-pom

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

android 库的 withJavadocJar() 和 withSourcesJar() gradle

有没有办法利用新功能withSourcesJar()withJavadocJar()Android 库项目?目前,当我尝试使用它时,我得到:

> SourceSet with name 'main' not found.
Run Code Online (Sandbox Code Playgroud)

android gradle

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

读取注释时出错播放框架2.2

我已经开始学习Play框架,遵循Java指南(教程"ZenTasks").一切顺利,直到我发现这个错误:Error reading annotations for models.Task

package models;

import java.util.*;
import javax.persistence.*;
import play.db.ebean.*;

@Entity
public class Task extends Model {

    @Id
    public Long id;
    public String title;
    public boolean done = false;
    public Date dueDate;
    @ManyToOne
    public User assignedTo;
    public String folder;
    @ManyToOne
    public Project project;

    public static Model.Finder<Long,Task> find = new Model.Finder(Long.class, Task.class);


    public static List<Task> findTodoInvolving(String user) {
        return find.fetch("project").where()
                .eq("done", false)
                .eq("project.members.email", user)
                .findList();
    }

    public static Task create(Task task, Long project, String folder) { …
Run Code Online (Sandbox Code Playgroud)

java playframework-2.2

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

jOOQ:如何使用 MySQL 的“BINARY”运算符创建选择查询?

如何使用jOOQ创建以下两个(等效)MySQL 语句中的任何一个?

SELECT * FROM `tbl` WHERE `col` = BINARY 'foobar   ';
SELECT * FROM `tbl` WHERE `col` = CAST('foobar   ' AS BINARY);
Run Code Online (Sandbox Code Playgroud)

背景

我想比较任意字符串,可能包括(重要的)尾随空格。不幸的是,在与=. 就我从这个问题中看到的而言,这种比较只能使用MySQL 中BINARY运算符

我已经尝试过的

我尝试DSL.cast()在 jOOQ 中使用该方法

myDb.selectFrom(TBL)
  .where(TBL.COL
     .eq(DSL.cast("foobar   ", MySQLDataType.BINARY)))
  .fetchOne();
// ? compiler error: “The method eq(String) in the type Field<String> is not
//   applicable for the arguments (Field<byte[]>)”

myDb.selectFrom(TBL)
  .where(DSL.cast(TBL.COL, MySQLDataType.BINARY)
     .eq("foobar   "))
  .fetchOne();
// …
Run Code Online (Sandbox Code Playgroud)

java mysql jooq

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

如何在StringBuffer中使用replaceAll()方法?

我需要替换字符串缓冲区中的多个单词。所以我正在寻找一种replaceAll方法StringBuffer

那么我们有StringBuffer吗?

字符串方法:

str2 = str1.replaceAll(regex, substr);
// (This is String method, I need like this in StringBuffer)
Run Code Online (Sandbox Code Playgroud)

java stringbuffer

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

Gradle:如何引用另一个任务的输入?

问题简述

\n\n

在一个Gradle任务的配置中,如何引用另一个任务的输入?

\n\n

我\xe2\x80\x99尝试过什么

\n\n

考虑以下(人为的)示例build.gradle文件(存储在/tmp/foo),其中 I\xe2\x80\x99d 喜欢在两个不同的任务中使用相同的任务输入值:

\n\n
task task1 {\n  def myInput = projectDir  // (or any other directory)\n  inputs.dir(myInput).withPropertyName(\'t1Input\')\n  doLast {\n    println myInput\n  }\n}\n\ntask task2 {\n  dependsOn task1\n  def myInput = task1.inputs.properties[\'t1Input\']\n  inputs.dir(myInput).withPropertyName(\'t2Input\')\n  doLast {\n    println myInput\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

task2我想使用与在中相同的输入task1。但是,当我运行这个构建时./gradlew --console=verbose --warning-mode=all task2我得到:

\n\n
> Task :task1 \n/tmp/foo\n> Task :task2 \nA problem was found with the configuration of task \':task2\'. Registering invalid inputs and outputs via …
Run Code Online (Sandbox Code Playgroud)

gradle

5
推荐指数
0
解决办法
787
查看次数

重用 gradle.kts 函数

我有一个多项目 gradle.kts 设置,我想重用一个函数,例如。

fun doSomethingWithString(string: String) { return string }
Run Code Online (Sandbox Code Playgroud)

然后我在dependencies {}块中使用该函数。

我想:

  • fun在根内定义build.gradle.kts
  • fun在我可以在每个子项目中导入的其他文件中定义

这可行吗?

gradle gradle-kotlin-dsl

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

Mongoengine Document.update()示例

假设Venue是:

from mongoengine import *
from mongoengine_extras.fields import  AutoSlugField
class Venue(Document):
    name = StringField(required=True)
    venue_slug = AutoSlugField()
Run Code Online (Sandbox Code Playgroud)

我想根据名称更新所有的venue_slug字段.我尝试:

for v in Venue.objects():
    v(venue_slug = str(v.name)).update()
Run Code Online (Sandbox Code Playgroud)

但我得到:

v(venue_slug = str(v.name)).update()
TypeError: Error when calling the metaclass bases
'Venue' object is not callable
Run Code Online (Sandbox Code Playgroud)

我的更新功能是否正确?如果您不熟悉,AutoSlugField()可以为StringField()更新编写示例吗?

mongoengine

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

如何在构建步骤中配置 Gradle google-java-format 插件以运行 goJF?

我们根据自述文件将https://github.com/sherter/google-java-format-gradle-plugin连接到我们的项目中。

我们还连接了一个 pre-commit 钩子来在提交之前运行插件,这确保了更改列表中的所有代码在推送之前都已格式化,这避免了在我们运行verGJF任务时 Jenkins 中的错误。

但是我们必须记住在运行goJF之前在本地运行./gradlew build,否则构建会因格式错误而失败。

我们通过为 IntelliJ添加https://plugins.jetbrains.com/plugin/8527-google-java-formathttps://plugins.jetbrains.com/plugin/7642-save-actions插件来解决这个问题,启用google-java-format 插件,并配置 save-actions 插件以在保存时格式化。

但这是开发人员必须记住要经历的许多额外配置,而且这意味着他们无法在处理代码时按照他们想要的方式格式化代码,只能在构建或提交时重新格式化。

我们更喜欢全 Gradle 解决方案,以便goJF任务在build任务之前运行(并且在verGJF任务之前运行,该任务已经build通过 google-java-format Gradle 插件绑定到任务)。

我们无法弄清楚如何做到这一点。别人知道吗?

intellij-idea gradle google-java-format

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

Spring AMQP - 在引擎盖下是@RabbitListener轮询吗?

摘要

我想异步处理来自AMQP/RabbitMQ队列的消息.我@RabbitListener为此实现了一个方法(来自spring-rabbit),但似乎这个监听器实际上是在我的队列中轮询我的队列.这是预料之中的吗?我本以为RabbitMQ会以某种方式通知监听器,而不必轮询.

如果可以预料到,我可以以某种方式使用Spring AMQP异步消费消息而不进行轮询吗?

我观察到了什么

当我发送消息时,听众正确地选择了它.我仍然看到连续的日志消息流,表明侦听器继续轮询空队列:

…
15:41:10.543 [pool-1-thread-3] DEBUG o.s.a.r.l.BlockingQueueConsumer - ConsumeOK : Consumer: tags=[{amq.ctag-bUsK4KQN6_QHzf8DoDC_ww=myQueue}], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.1.1:5672/,1), acknowledgeMode=MANUAL local queue size=0
15:41:10.544 [main] DEBUG o.s.a.r.c.CachingConnectionFactory - Creating cached Rabbit Channel from AMQChannel(amqp://guest@127.0.1.1:5672/,2)
15:41:10.545 [main] DEBUG o.s.amqp.rabbit.core.RabbitTemplate - Executing callback on RabbitMQ Channel: Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.1.1:5672/,2)
15:41:10.545 [main] DEBUG o.s.amqp.rabbit.core.RabbitTemplate - Publishing message on exchange [], routingKey = [myQueue]
Sent: Hello World
15:41:10.559 [pool-1-thread-4] DEBUG o.s.a.r.l.BlockingQueueConsumer - Storing delivery for Consumer: tags=[{amq.ctag-bUsK4KQN6_QHzf8DoDC_ww=myQueue}], channel=Cached Rabbit Channel: …
Run Code Online (Sandbox Code Playgroud)

java spring spring-rabbit spring-amqp

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

与许多开发人员共享 Gradle 用户主页有什么缺点吗?

简而言之

在同一文件系统上的多个开发人员之间共享 Gradle 用户主页有什么缺点吗?

更详细

我们的目标是通过本地 Gradle 缓存节省磁盘空间。Gradle 用户指南建议缓存对于并发访问是安全的。目前似乎没有任何方法可以独立于 Gradle 用户主页配置缓存位置,因此问题本质上归结为共享 Gradle 用户主页(默认为~/.gradle/)。在一个快速测试中,我们可以验证同一用户的多个并发进程确实可以在单个 Gradle 用户主页上完美运行。

但是多个用户会不会有任何问题?我可以想象权限问题可能会成为一个问题。有没有人有这样的设置的经验?Gradle 用户主页中是否有任何不应共享的文件?

很明显,对于共享用户主目录(如个性化的init 脚本gradle.properties),某些特定于用户的配置将不再可能。对于使用本地 Gradle 缓存节省磁盘空间,您是否有更好的建议?这样的建议可能是以某种方式自动修剪每个用户的缓存,如在这个 SO question 中问的那样

背景

我们使用 Gradle 来处理更大的二进制文件(目前每个大约 500M 并且还在增长)。这包括从其他大型二进制工件构建它们作为输入依赖项。我们将构建工件存储在 Artifactory 中;上传和下载非常顺利。但是,由于我们有大约 50 名开发人员每周都在混合和匹配许多文件,因此每个开发人员的本地 Gradle 缓存增长相当快。由于所有开发人员都在同一个文件系统上工作,我们正在考虑为所有开发人员提供一个共享的 Gradle 缓存以节省磁盘空间。

share gradle

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