在尝试访问https
URL 时,如何在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.
我正在尝试迁移到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) 我正在用 Gradle 进行一些实验,但作为主要的 Maven 用户,一些依赖范围让我感到困惑……
有些与 Maven 相同:
compile -> compile
runtime -> runtime
compileOnly -> provided
Run Code Online (Sandbox Code Playgroud)
但我也遇到了implementation
这听起来像parent
Maven POM的元素,但又不是。
有人可以向我解释一下是什么implementation
以及其他一些,如果它们存在而我没有在这里提到(上面的测试版本很明显不需要解释)?
如果implementation
不像Maven上的父级,我们如何在Gradle中具有Maven的父级POM效果?
有没有办法利用新功能withSourcesJar()
和withJavadocJar()
Android 库项目?目前,当我尝试使用它时,我得到:
> SourceSet with name 'main' not found.
Run Code Online (Sandbox Code Playgroud) 我已经开始学习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) 如何使用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) 我需要替换字符串缓冲区中的多个单词。所以我正在寻找一种replaceAll
方法StringBuffer
。
那么我们有StringBuffer
吗?
字符串方法:
str2 = str1.replaceAll(regex, substr);
// (This is String method, I need like this in StringBuffer)
Run Code Online (Sandbox Code Playgroud) 在一个Gradle任务的配置中,如何引用另一个任务的输入?
\n\n考虑以下(人为的)示例build.gradle
文件(存储在/tmp/foo
),其中 I\xe2\x80\x99d 喜欢在两个不同的任务中使用相同的任务输入值:
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
我得到:
> 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.kts 设置,我想重用一个函数,例如。
fun doSomethingWithString(string: String) { return string }
Run Code Online (Sandbox Code Playgroud)
然后我在dependencies {}
块中使用该函数。
我想:
fun
在根内定义build.gradle.kts
fun
在我可以在每个子项目中导入的其他文件中定义这可行吗?
假设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()
更新编写示例吗?
我们根据自述文件将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-format和https://plugins.jetbrains.com/plugin/7642-save-actions插件来解决这个问题,启用google-java-format 插件,并配置 save-actions 插件以在保存时格式化。
但这是开发人员必须记住要经历的许多额外配置,而且这意味着他们无法在处理代码时按照他们想要的方式格式化代码,只能在构建或提交时重新格式化。
我们更喜欢全 Gradle 解决方案,以便goJF
任务在build
任务之前运行(并且在verGJF
任务之前运行,该任务已经build
通过 google-java-format Gradle 插件绑定到任务)。
我们无法弄清楚如何做到这一点。别人知道吗?
我想异步处理来自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) 在同一文件系统上的多个开发人员之间共享 Gradle 用户主页有什么缺点吗?
我们的目标是通过本地 Gradle 缓存节省磁盘空间。Gradle 用户指南建议缓存对于并发访问是安全的。目前似乎没有任何方法可以独立于 Gradle 用户主页配置缓存位置,因此问题本质上归结为共享 Gradle 用户主页(默认为~/.gradle/
)。在一个快速测试中,我们可以验证同一用户的多个并发进程确实可以在单个 Gradle 用户主页上完美运行。
但是多个用户会不会有任何问题?我可以想象权限问题可能会成为一个问题。有没有人有这样的设置的经验?Gradle 用户主页中是否有任何不应共享的文件?
很明显,对于共享用户主目录(如个性化的init 脚本或gradle.properties
),某些特定于用户的配置将不再可能。对于使用本地 Gradle 缓存节省磁盘空间,您是否有更好的建议?这样的建议可能是以某种方式自动修剪每个用户的缓存,如在这个 SO question 中所问的那样。
我们使用 Gradle 来处理更大的二进制文件(目前每个大约 500M 并且还在增长)。这包括从其他大型二进制工件构建它们作为输入依赖项。我们将构建工件存储在 Artifactory 中;上传和下载非常顺利。但是,由于我们有大约 50 名开发人员每周都在混合和匹配许多文件,因此每个开发人员的本地 Gradle 缓存增长相当快。由于所有开发人员都在同一个文件系统上工作,我们正在考虑为所有开发人员提供一个共享的 Gradle 缓存以节省磁盘空间。
gradle ×7
java ×4
android ×1
jooq ×1
jvm ×1
maven ×1
mongoengine ×1
mysql ×1
parent-pom ×1
php ×1
share ×1
spring ×1
spring-amqp ×1
ssl ×1
stringbuffer ×1