小编Ale*_*rio的帖子

在Intellij中未选择任何内容时禁用复制整行

使用的是IntelliJ我最近开始和我注意到,在默认情况下,当你复制的东西时,你什么都没有做选择CTRL + C,它会将整个行到剪贴板中压倒一切的我有什么在那里.

这真的很烦人但我似乎无法弄清楚如何禁用它.我知道你可以使用粘贴历史,但这不是我所追求的,我只是想像你可以用sublime文本那样禁用它.

有没有办法禁用此行为,以便当我按ctrl + c并且没有选择任何内容时它只是单独留下剪贴板?

copy-paste intellij-idea intellij-14

35
推荐指数
2
解决办法
3075
查看次数

如何在 Golang 中只模拟特定方法

我对 golang 还很陌生,我正在为一项简单的任务而苦苦挣扎。

我在 golang 有以下课程

type struct A {
}

func (s *A) GetFirst() {
    s.getSecond()
}

func (s *A) getSecond() {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

我想为它编写一些测试,但是我需要覆盖getSecond(). 我试图在我的测试文件中执行以下操作

type Ai interface {
    getSecond()
}

type testA struct {
    A
}

func (s *testA) getSecond() {
     // do nothing
}

func TestA(t *testing.T) {
   a := &A{}
   t := &testA{A: a}
   t.GetFirst()  
}
Run Code Online (Sandbox Code Playgroud)

这里的想法是将 AgetSecond()方法公开给接口并通过使用嵌入来覆盖,但这似乎不起作用。测试仍然调用原始实现getSecond()而不是我的模拟实现。

一个解决方案当然是为 A 创建一个适当的接口,其中包含getFirst()getSecond()然后在测试中创建一个结构,实现 wheregetFirst() …

unit-testing overriding interface go

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

maven汇编,避免zip文件中的完整路径?

我有一个多模块项目,其中包含2个模块(每个模块都有自己的pom.xml)和一个指向这些模块的父pom.xml.

当我在父pom上运行"mvn clean package"时,每个项目最终都会在它自己的目标文件夹下面有一个zip文件.我想在zip文件的根文件夹下打包一个包含每个模块zip文件的zip文件,但是我遇到了一些问题.

我在父pom.xml文件夹中创建了一个程序集文件:

<!-- Release distribution -->
<assembly>
<id>release</id>
<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<fileSets>
    <fileSet>
        <directory>${basedir}/projectA/target/</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>*.tar.gz</include>
        </includes>
    </fileSet>
    <fileSet>
        <directory>${basedir}/projectB/target/</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>*.tar.gz</include>
        </includes>
    </fileSet>
</fileSets>
</assembly>
Run Code Online (Sandbox Code Playgroud)

虽然上述工作,如果我们开始向这个项目添加越来越多的模块,那么必须不断更新这个程序集会非常烦人.

理想情况下,我希望它能自动进入模块的每个目标文件夹并在那里获得一个zip文件.

这可以通过这样做来完成

...
<fileSet>
        <directory>${basedir}</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>**/target/*.tar.gz</include>
        </includes>
    </fileSet>
Run Code Online (Sandbox Code Playgroud)

但是这里的问题是zip文件将包含完整路径,所以不是在根文件夹中有zip文件,zip文件将有projectA/target/xxxx.zip和projectB/target/xxxx.zip这正是我做的不想.

有没有办法在maven中进行简单的程序集,所以每次添加新模块时都不需要更新它,而且zip中没有完整的路径?

编辑1

看起来这根本不可能.要么你得到一个结构良好的zip文件与一个难以维护的程序集,或者你得到一个易于维护但令人讨厌的结构化zip文件.在我能找到合适的解决方案之前,我将不予回答

编辑2

回来为此寻找解决方案.关于下面发布的khmarbaise解决方案,它有一些问题: - 它依赖于依赖的程序集,在我的情况下我只想要一个程序集的程序集(更像是fileSets而不是依赖集) - 它依赖于我手动的事实指定我想要包含在程序集中的项目.我已经在父pom中有这个信息,它指定了应该构建哪些模块,所以如果我从父pom中删除一个模块以便它不再构建,程序集应该已经知道并跳过选择该项目(原因fileset似乎工作得很好,除了程序集zip中的shitty,不可控制的路径).

没有人真的遇到过类似的问题吗?

maven-3 maven maven-assembly-plugin

10
推荐指数
1
解决办法
8313
查看次数

通过Jenkins API获取SubProject构建

我有一个Jenkins项目配置(我在这里称之为SuperJob),只需按顺序调用几个不同的其他jenkins项目.

我希望能够通过Jenkins API找到这个SuperJob的特定内部版本号的所有子项目的结果

查看此处发布的代码,我可以从每个构建中获取SuperJob项目中配置的特定项目的列表,但是我无法找到一种方法来查询从特定项目运行的每个项目的具体构建号SuperJob的构建.

例如,我想知道"SuperJob build#5"触发了"MyJob build#3"和"OtherJob build#20",所以我可以汇总并检查所有这些的结果.

我已经尝试了所有的上游和下游API,包括使用子项目作为关系的参数,但它们都返回空或null.

我猜这是可能的,因为詹金斯本身能够在网络ui中显示来自插件的信息,但我还没有找到方法.

continuous-integration jenkins jenkins-plugins

8
推荐指数
1
解决办法
2239
查看次数

如何仅签署XML的特定部分

我试图通过只签署部分xml来做一些XML签名但是经过多次搜索后我找不到解决方案.

我使用java使用Xpath2转换和EXCLUSIVE规范化来签署XML.如果我有以下XML

<?xml version="1.0" encoding="UTF-8"?>
<msg xmlns="http://someaddress/ad/m1" xmlns:ns1="http://someotheraddres/ad/m2" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
<header>
    <id>wsfrwerwerwer</id>
    <name>addr</name>
    <somenode>
        <trace>ND</trace>
    </somenode>
</header>
<payload><ns0:addr xmlns:ns0="http://someaddres/ad/m3"><ns2:data xmlns:ns2="http://someaddres/ad/m3">
            <ns2:name>somevalue</ns2:name>
            <ns2:value>354</ns2:value>
        </ns2:data>
    </ns0:addr>
</payload>
</msg>
Run Code Online (Sandbox Code Playgroud)

并签名,我得到以下输出(真实数据替换为虚拟)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<msg xmlns="http://someaddress/ad/m1" xmlns:ns1="http://someotheraddres/ad/m2" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
<header>
    <id>wsfrwerwerwer</id>
    <name>addr</name>
    <somenode>
        <trace>ND</trace>
    </somenode>
</header>
<payload>
    <ns0:addr xmlns:ns0="http://someaddres/ad/m3">
        <ns2:data xmlns:ns2="http://someaddres/ad/m3">
            <ns2:name>somevalue</ns2:name>
            <ns2:value>354</ns2:value>
        </ns2:data>
    </ns0:addr>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
            <Reference URI="">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
                        <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" xmlns:ns0="http://someaddres/ad/m3" Filter="intersect">//*[local-name()='addr']/*</XPath>
                    </Transform>
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                <DigestValue>sdlfjdeklsdfngf</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>femhjgklnlkl</SignatureValue>
        <KeyInfo>
            <X509Data>
                <X509Certificate>swerwerwrwerwerwe</X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature> …
Run Code Online (Sandbox Code Playgroud)

java xml xpath xml-signature xml-dsig

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

在bash中列出文件中的所有变量

在编写bash脚本时,我喜欢编写自包含函数,这些函数接受参数并基于那些/那些参数执行操作,而不是在代码中的几个不同位置声明全局变量,从而降低可读性.

当您有一个需要使用多个变量的函数时,就会出现问题.将10个变量之类的函数传递给函数只是简单的丑陋,因此可以使用简单的关联数组.

如果我们想在外部文件上声明这些变量,那么"source"命令允许您将它们全部导入.

然后问题变成了,如何列出在此文件中仅声明的变量,以便我可以用它们构建我的关联数组?我已经能够使用"compgen"和循环的组合来构建变量列表中的关联数组,但是如何只列出文件中找到的变量,无论它们被调用什么,所以我可以循环他们并建立我的阵列?

bash shell associative-array compgen

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

在spring-cloud环境中分布式Rabbitmq

我正在尝试使用以下组件基于当前的spring-cloud发布(主要是Netflix OSS)来设置分布式系统

  • 1个或多个云配置服务器
  • 1个或更多Eureka服务器
  • 使用Eureka和Config Server客户端的一项或多项服务

上面的设置很容易开始,但是一旦你开始研究设置,以便云配置服务器中的配置更改自动触发实际客户端的值的变化,事情开始变得更加复杂.

我的理解是,要使这样的功能工作,应该将spring-cloud-bus客户端引入服务,这些服务反过来将使用,目前唯一支持的实现,rabbitmq服务器(实际的rabbitmq二进制文件,而不是一些spring-boot应用程序,如eureka或Config服务器)允许Config服务器中的更改事件自动传播到客户端.

设置这样的系统听起来违反直觉,并且必须将地址硬编码到客户端中的rabbitmq服务器(即使一个人将保持Rabbitmq服务器的数量或多或少是静态的).

如何在Eureka服务发现服务器中注册rabbitmq服务器实例,以允许客户端在启动之前无需了解其位置即可找到它们?

鉴于rabbitmq不是spring-cloud组件,我似乎无法找到有关如何完成此操作的任何文档.实际上,关于如何将rabbitmq + eureka + spring-cloud-bus设置在一起的文档似乎很少.

rabbitmq spring-amqp spring-cloud netflix-eureka

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

Keycloak 流程仅允许授权的 IDP 帐户

我想使用 Keycloak 设置 Google 联盟,但仅限我公司的授权用户。

设置 Google 联盟允许任何 Google 帐户登录。

我查看了 Keycloak 上的身份验证流程,但无法找到设置它的方法。我可以想到一些我希望 Keycloak 开箱即用的简单场景

  1. 当有人尝试登录时,不要自动创建帐户,而是要求已经存在具有完全相同的电子邮件/用户名的帐户,并在特定用户尝试登录时根据电子邮件链接它们。

  2. 用户第一次使用 Google 登录时自动创建帐户,但需要管理员手动激活帐户才能使用

  3. 前 2. 启用注册的组合,允许用户注册帐户并要求管理员激活帐户,此时用户可以链接它们。

尽管我尽力了,但我似乎无法配置它。似乎没有办法让 Keycloak 创建一个需要激活的帐户,如果我尝试创建一个不包含“唯一帐户创建”验证器的流程,它会立即将用户抛出“无效的用户名/密码”屏幕。

我错过了什么?除了手动创建帐户并将其链接到每个用户(或者编写我自己的身份验证器(我试图避免))之外,是否没有其他选择?

keycloak idp

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

如何通过微服务链端到端跟踪请求?

我正在 Go 中使用 OpenCensus 将跟踪数据推送到 Stackdriver,以进行涉及 2 个或更多微服务链的调用,我注意到我得到的许多跟踪仅包含某些服务的范围,而不包含整个端到端调用。

目前,我将此归因于以下事实:并非所有调用都被跟踪(仅跟踪某个样本),并且每个服务决定是否跟踪其当前范围。

这是它的工作方式吗?有没有什么方法可以确保调用链中的所有服务在对跟踪进行采样时都这样做?

go google-cloud-trace stackdriver distributed-tracing opencensus

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

使用Nginx Ingress在GKE上使用静态全局IP?

我正在尝试在我的GKE集群中设置一个Nginx入口控制器,我想使用一个静态的全局IP地址,但是我正在努力弄清楚它的方式。

经过大量研究,大多数指南/ stackoverflow / blog都只说“ kubernetes.io/ingress.global-static-ip-name在入口资源上使用注释”,但这无济于事。

以下是我的Ingress资源示例

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: my-namespace
  annotations:
    kubernetes.io/tls-acme: "true"
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/ingress.allow-http: "false"
    nginx.org/websocket-services: "ws-svc"
    kubernetes.io/ingress.global-static-ip-name: my-global-gce-ip
spec:
  tls:
  - secretName: my-secret
    hosts:
    - mysite.com
  rules:
  - host: mysite.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

该服务始终获得一个临时IP地址,每当我重新创建控制器时,该IP地址都会被丢弃。我怀疑这里的问题是注解仅适用于GCE类型的Ingress,而不适用于nginx(即使未在任何地方说明)

接下来,我尝试按照本指南中的说明在我的入口资源中手动设置IP,但是当我查看创建的服务时,外部IP地址仅显示了pending某些github问题似乎是由于它是全局的,不是区域性IP。

考虑到所有这些,是否有任何方法可以使用Nginx入口控制器在GKE群集上具有静态全局 IP ?

static-ip-address google-kubernetes-engine kubernetes-ingress

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