小编ech*_*hen的帖子

在Spark SQL中自动且优雅地展平DataFrame

所有,

是否有一种优雅且可接受的方式来使用嵌套的列展平Spark SQL表(Parquet) StructType

例如

如果我的架构是:

foo
 |_bar
 |_baz
x
y
z
Run Code Online (Sandbox Code Playgroud)

如何在不依靠手动运行的情况下将其选择为展平的表格形式

df.select("foo.bar","foo.baz","x","y","z")
Run Code Online (Sandbox Code Playgroud)

换句话说,如何在a StructType和a下以编程方式获得上述代码的结果DataFrame

scala apache-spark apache-spark-sql

37
推荐指数
4
解决办法
3万
查看次数

通用密码的 Java 中 Mac OS X 钥匙串访问

仅使用 Java 在 OS X 的钥匙串中检索通用密码的标准方法是什么?Apple Developer Pages提供了一些很好的背景,但不幸的是,实现和示例是用 C 或本机代码编写的。

Java KeyStore OS X 实现似乎只适用于公钥/私钥对和证书,但不适用于通用用户名/密码组合。

在这里看到一个项目开始了:但它相对较旧并且没有积极维护。

是否有更先进的解决方案来解决在 Mac OS X 中使用 Java 保护凭据的问题?

编辑:OAuth 不是我正在操作的问题和环境类别的选项...

java security macos credentials

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

Mockito计算存根作为调用

尝试使用自定义匹配器来存储具有2个可能的调用/返回路径的类...遇到了兴趣问题.

这是我写的一个测试来说明......

这可能很难实现,但我希望ArgumentMatcher在第二个存根时不会调用1stwhen(...).thenReturn(...)

但运行下面的代码打印foobar在stdout上.我们可以做些什么来防止这种行为?或者我通过尝试使用多个自定义来存储单个模拟来使用错误的模式ArgumentMatcher

仅供参考 - powermock我的类路径用于其他测试(不确定是否重要,但我确实在堆栈跟踪中看到它)

import org.junit.Test;
import org.mockito.ArgumentMatcher;

import java.io.File;
import java.io.FilenameFilter;

import static org.mockito.Matchers.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class MyTest {
    @Test
    public void name() throws Exception {
        File file = mock(File.class);
        when(file.list(argThat(new ArgumentMatcher<FilenameFilter>() {
            @Override
            public boolean matches(Object argument) {
                System.out.println("foobar");
                return 1 + 1 >2;
            }
        }))).thenReturn(null);
        // at this point, mockito will attempt to run the previous matcher, treating this stub code as …
Run Code Online (Sandbox Code Playgroud)

java unit-testing junit4 mockito powermock

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

处理嵌套弹出窗口中的事件冒泡(门户)语义用户界面

想象以下设置

<Popup closeOnDocumentClick={true}>
    <Popup><button onClick={e=> e.stopPropagation()}>Click Me!</button></Popup>
</Popup>
Run Code Online (Sandbox Code Playgroud)

点击内部弹出窗口算作一次文档点击,因此关闭第一个弹出窗口。这是因为即使它们在逻辑上嵌套在 React Virtual DOM 中,在呈现的页面上它们也是平行的div(s)

我们如何防止这种行为?即防止对内部弹出窗口的点击被视为外部弹出窗口关闭点击?

解决方案1

closeOnDocumentClick如果内部弹出窗口打开,则有条件地关闭

我不喜欢这个解决方案,因为内部 Popup 可以被抽象为一个组件,我不想创建额外的耦合

解决方案2

我没有解决方案 2

javascript popup reactjs semantic-ui

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

千分尺和普罗米修斯定时器作为速率

根据Micrometer的文档https://micrometer.io/docs/concepts#_server_side,框架(Micrometer)应该处理将计时器度量转换为绝对量的速率

下面的代码模拟了一个虚拟计时器:

@Service
public class AppService {
    private Timer timer = Metrics.timer("foobar");

    public String test() {
        timer.record(() -> {
            try {
                Thread.sleep((long) (Math.random() * 1000));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        return "foo";
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,在普罗米修斯,我只看到单调增加的指标foobar_seconds_sumfoobar_seconds_count不是将它们视为利率

在此输入图像描述

也许我误解或忽略了文档中的某些内容?

spring-boot-actuator prometheus micrometer

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

将简单的 Java 库发布到 Maven

我可能在这里遗漏了一些重要的东西。但是,我正在努力将一个简单的库发布到 Maven 存储库(该库将由组织中其他基于 Maven 的项目使用)

我找到的最好的指南是在 Gradle 官方网站上:https ://docs.gradle.org/current/userguide/publishing_maven.html

然而,仍有许多问题没有得到解答:

  • 除了手动包含 if-else 语句之外,是否没有其他方法可以区分 SNAPSHOT 和发布版本?

  • 什么是from components.java?IDEA 没有提供关于大多数 DSL 的自动完成或文档(与 Maven 不同,Maven 的代码智能效果很好)

  • 如何发布到需要身份验证的私有存储库?我知道某处必须有一个块使用:

        username = "${artifactory_user}"
        password = "${artifactory_password}"
    
    Run Code Online (Sandbox Code Playgroud)

读取值~/.gradle/gradle.properties

但我该把这个块放在哪里呢?

总的来说,我觉得我在这里遗漏了一些东西,也许是一些被广泛阅读的文档...使用 Maven 本身,该过程相当简单,官方文档使该过程相对轻松

使用 Gradle,我觉得最简单的发布到存储库需要相当多的定制逻辑,因为我的直觉告诉我,如此常见的东西必须已经封装在具有合理默认值的插件中

java build artifactory gradle maven

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

打字稿不正确的推论永远不会打字

打字稿版本:2.8.3,请考虑以下代码段

import axios from "axios";
import { Component } from "react";
import * as React from "react";

interface ICustomer {
    id: number
    firstName: string
    lastName: string
}
interface IState {
    customers: ICustomer[]
}

class AllCustomers extends Component<{}, IState> {
    public state = {
        customers: []
    }
    public componentDidMount() {
        axios.get<ICustomer[]>(`http://localhost:8080/customers`)
        .then(resp => this.setState({customers: resp.data}))
    }
    public render() {
        const {customers}  = this.state;
        return (
            <table>
                {
                    customers.map(customer => (
                        <tr key={customer.id}>
                            <td>{customer.firstName}</td>
                            <td>{customer.lastName}</td>
                        </tr>
                    ))
                }
            </table>
        )
    }
} …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs

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

TypeScript从ES5与ES6编写的库中导入

在运行依赖于外部库的转换后的 TypeScript代码时,我会遇到奇怪的错误

Uncaught TypeError: es5_lib_1.default is not a function

怎么了?

commonjs typescript ecmascript-6

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

在同一个域上组织和部署多个 SPA

想象一下,公司ABC有两个团队开发两种SPA应用:app1app2

每个应用程序都有自己index.html和关联的静态资产,例如:build/index.html main.js

这是从运行:host1。应用程序遵循相同的约定

我们想:

  • abc.com/app1 路由到 host1
  • abc.com/app2 路由到 host2

假设有一个负载平衡器设置来正确执行路由。对于这种情况,我有什么解决方案?

我尝试使用https://github.com/zeit/serve(由create-react-app建议),但有很多问题。

首先,rewritePath功能不起作用(完全没有做任何有用的事情)

其次,我尝试将我的静态资产在主机上更深一层,请求host1/app1是目录列表而不是index.html页面

即使通过配置解决了这些问题,React Router(SPA 路由器)和身份验证回调仍然存在大量问题

这种情况的实际最佳实践是什么?我想这是一个非常常见的场景。正如我所看到的,AWS 的 Web 控制台使用类似的方法来路由应用程序

router single-page-application reactjs

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