小编Sas*_*ota的帖子

PrestoDB:选择两个日期之间的所有日期

我需要形成一个报告,在日期间隔内为每个日期提供一些信息。

我需要在单个查询中使用它(不能创建任何函数或支持表)。

我怎样才能在 PrestoDB 中实现这一点?

注意:这里这里甚至这里有很多特定于供应商的解决方案。但是它们都不能满足我的需要,因为它们要么不能在 Presto 中工作,要么不能使用表/函数。

更准确地说,这里是一个查询示例:

WITH ( query to select all dates between 2017.01.01 and 2018.01.01 ) AS dates
SELECT 
  date     date, 
  count(*) number_of_orders
FROM dates dates
LEFT JOIN order order
  ON order.created_at = dates.date
Run Code Online (Sandbox Code Playgroud)

sql presto

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

Go:当没有对包进行测试时错误的覆盖范围

我有一个具有以下结构的 Go 项目:

foo/foo.go
foo/foo_test.go
main.go
Run Code Online (Sandbox Code Playgroud)

如您所见,没有针对main.go.

我使用以下命令收集覆盖率报告:

go test ./foo ./ -coverprofile=coverage.txt -covermode=atomic
Run Code Online (Sandbox Code Playgroud)

在这里./foo./显示在哪里寻找包裹。

问题:我将覆盖率报告发送到 codecov.io,它显示我的代码 100% 被测试覆盖。但这不是真的,因为我main.go根本没有测试。

系统似乎只计算那些明确指定测试文件的包。

问题:如何修复覆盖率报告以计算有关未测试包的信息?

注意:你可以在GitHub 上找到我的项目,真正的统计数据在这里。该项目具有不同的结构,但问题仍然存在(错误的覆盖范围)。

code-coverage go codecov go-testing

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

Angular:自动填充字段在删除项目后更改焦点

我有一个使用PrimeNG组件的Angular 2应用程序.

UI具有自动完成组件,其中multi-select(p-autoComplete)类似于文档中的那个:

<p-autoComplete [(ngModel)]="countries" 
                [suggestions]="filteredCountriesMultiple" 
                (completeMethod)="filterCountryMultiple($event)" 
                [minLength]="1" 
                placeholder="Countries" 
                field="name" 
                [multiple]="true">
</p-autoComplete>
Run Code Online (Sandbox Code Playgroud)

唯一的区别是,在我的情况下,输入字段具有固定的尺寸和滚动条.

问题:

每当我从自动完成列表的中间删除一个元素时,它会将焦点移动到输入字段的底部.它看起来像这样:

在此输入图像描述

这对用户来说非常烦人,特别是当有几个字段需要删除时.

问题:如何在删除元素后强制滚动停留在同一位置?

如何重现:

更具体地说,您可以通过添加下一个css来重现该问题

max-width: 150px;
max-height: 100px;
overflow-y: auto;
Run Code Online (Sandbox Code Playgroud)

直接在文档页面上ui-autocomplete-multiple-container.ui-inputtext使用浏览器控制台进入css类.

更新: 我设法通过onUnselect使用如下代码在组件中设置方法来获取滚动条位置:

onUnselect(event: any) {
    document.querySelector("div.my-input-class").scrollTop
}
Run Code Online (Sandbox Code Playgroud)

更新2:我设法让它工作

解决方案是组合onUnselectonFocus事件处理程序.

第一.我将最后一个滚动条位置保存到onUnselect调用中的字段中.

第二.我在onFocus调用期间将此值设置为指定的元素.

相应的代码如下所示:

scrollPosition: number = 0;

onUnselect(event: any) {
    let input = document.querySelector("div.my-input-class");
    this.scrollPosition = input.scrollTop;
}

onFocus(event: any) {
    let input = document.querySelector("div.my-input-class");
    input.scrollTop = …
Run Code Online (Sandbox Code Playgroud)

javascript css autocomplete primeng angular

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

Gradle:Spring Boot 依赖管理插件中的访问版本声明

我有 spring boot 项目,我尝试使用spring boot 依赖管理插件来使用提供的依赖版本。

该插件“模拟”mavens BOM 行为,这意味着它以某种方式从 maven 父项目中检索 libs 版本(我不确定这是如何实现的,但通常版本取自pom.xml)。它确实具有jackson.version用于为com.fasterxml.jackson.dataformat组内的工件设置版本的属性。

我的项目使用来自同一组的工件,但它不包含在 BOM ( jackson-dataformat-yaml) 中,但我想使用相同的 jackson 版本。

我尝试添加这样的编译依赖项:

compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson.version}"
Run Code Online (Sandbox Code Playgroud)

但构建失败:

无法为 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象获取未知属性“jackson”。

问:有没有办法访问该属性?或者我还能如何重用 lib 版本?

更新 我不知道为什么我不从一开始就尝试这个,但它有效:

compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml"
Run Code Online (Sandbox Code Playgroud)

但是我不知道为什么会这样(工件没有在任何地方声明)。

gradle build.gradle spring-boot maven-bom

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

JAX-RS 服务的集成测试

我最近实现了简单的 JAX-RS REST 端点。我想知道是否有任何透明的集成测试方式?

我在 stackowerflow 上搜索了一下,发现了这些问题:firstsecond。它们有点过时了,我希望已经有一些更好的测试方法。那里提出的解决方案并没有解决我的问题,因为它们提供了特定于供应商的方法或一些复杂的第三方方法。

问:测试 JAX-RS 服务的现代方法是什么?Java EE 是否为此提供了解决方案?或者一般来说,在 Java EE 生态系统中编写控制器测试的最佳方式是什么?

更具体地说,我正在寻找某种可以轻松测试 REST 调用的方法。在 spring 框架中,它通常是这样的:

@Autowired
MockMvc mvc;
@MockBean
MyService service;

@Test
public void shouldGetMyDto() {
    MyDto dto = new MyDto("test-id", "test-name");
    given(service.getMyDto("test-id")).willReturn(dto);

    mvc.perform(get("/api/my-entities/test-id"))
            .andExpect(status().isOk())
            .andExpect(content().contentType(APPLICATION_JSON_UTF8_VALUE))
            .andExpect(jsonPath("$.id", is("test-id")))
            .andExpect(jsonPath("$.name", is("test-name")));

    verify(service).getMyDto("test-id");
}
Run Code Online (Sandbox Code Playgroud)

java rest junit jax-rs jakarta-ee

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

TypeScript:使用枚举元素而不指定枚举名称

我有一个枚举,我想在几个地方使用它。让我们这样说枚举:

export enum MyEnum {
    MY_VALUE,
    MY_SECOND_VALUE
}
Run Code Online (Sandbox Code Playgroud)

每次使用它时,我都必须在值前指定枚举名称,例如:

MyEnum.MY_VALUE
Run Code Online (Sandbox Code Playgroud)

问:是否可以以不需要指定名称的方式导入枚举?

我想直接使用该值:

MY_VALUE
Run Code Online (Sandbox Code Playgroud)

在 Java 世界中,它被称为静态导入。但我还没有找到像 TypeScript 这样的东西。

我的 TypeScript 版本是 2.5.3。

javascript import enums typescript

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

@PersistenceContext 不适用于参数。如何通过构造函数注入EntityManager?

使用构造函数注入是最佳实践。但是我无法实现这一点@PersistenceContext

我想要以下构造函数:

private final EntityManager entityManager;

@Autowired
public MyService(@PersistenceContext EntityManager entityManager) {
    this.entityManager = entityManager;
}
Run Code Online (Sandbox Code Playgroud)

但我不能,因为@PersistenceContext仅适用于TYPE,METHODFIELD

问:如何通过构造函数注入来注入容器管理的容器? EntityManager

java spring hibernate jpa spring-boot

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

如何使用 JUnit 5 测试调用 Instant.now() 的代码?

我有一个看起来像这样的代码:

MyObject getMyObject() {
    Instant now = Instant.now();
    return myService.doSomething(now);
}
Run Code Online (Sandbox Code Playgroud)

我知道 JUnit 5 不支持 PowerMock,但我想知道至少对于日期等标准 API 是否有一个解决方案。

现在我正在嘲笑不正确的Instant实例Mockito.any(),因为如果我通过了错误,我的测试就不会失败Instant

java junit mockito powermock junit5

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

如何在 Quarkus 中使用不同的数据源进行读写查询?

我需要分离读取器/写入器 PostgreSQL 实例。我有一个写入副本和多个读取副本。

Quarkus 支持添加多个数据源,但是尚不清楚如何让 Panache/Hibernate 为不同的查询选择正确的数据源。

问题:如何配置 Quarkus 使用不同的数据源进行读/写访问?

java sql hibernate quarkus quarkus-panache

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

如何让 GitHub Actions 安全地访问从分叉创建的 PR 的 Secrets?

我有一个运行端到端测试的公共存储库。这些测试需要存储在 GitHub 中的机密。

相应的工作流程yaml文件有如下pull_request条目:

on:
  pull_request:
  ....
Run Code Online (Sandbox Code Playgroud)

问题:如果我(所有者)自己创建拉取请求,工作流程将正确运行并访问机密。如果有人从分叉创建 PR,GitHub 会要求我批准运行,但是一旦我批准,工作流程将看不到这些秘密的值,并且测试将失败。

如果我更改pull_requestpull_request_target,它将正确访问秘密。然而,这样,在运行工作流程之前它不会征求我的批准(因此秘密很容易泄露)。

pull_request_target:
  branches:
    - main
Run Code Online (Sandbox Code Playgroud)

问题:当从分叉上运行 PR 时,如何使 GitHub 操作访问机密,同时仍需要批准运行?

continuous-integration github github-actions github-secret cicd

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