小编Con*_*nan的帖子

记住 WSL 中的 git 密码

我使用 WSL 运行 Windows 10。我在一台计算机上有所需的行为,但无法在其他地方复制。这是我所追求的:

  1. 我第一次使用 ssh 密钥运行远程 git 命令时,git 提示我输入密码
  2. 随后没有提示,包括在新的终端窗口中(我使用 ConEmu)
  3. 当所有控制台窗口都关闭时,回到#1

我尝试过的事情:

  • 使用eval $(ssh-agent), 后跟ssh-add; 它会记住密码,但如果我把它放在我的~/.bash_profile那么它会提示我输入每个新的控制台窗口,并且我打开了很多 - 其中许多我没有使用 git。
  • 设置git config --global credential.helpercachestore
  • 一切 这里的
  • 使用bash.exewsl.exe得到git-credentials-manager.exe工作

这是我放入我的内容的示例 ~/.gitconfig [credential] helper = "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

我已经安装了git credential manager这里并且还尝试了主要的 Git For Windows 安装作为替代。

我怎样才能鼓励它记住我的密码?

git ssh-agent windows-subsystem-for-linux

19
推荐指数
3
解决办法
5605
查看次数

Intellij中的链式方法和延续缩进

我从来没有弄清楚如何使Intellij正确处理链式方法的延续缩进,显然今天是让我烦恼的那一天,可以咨询你可爱的人.

我想要的是这个:

makeAThing(
  "with",  
  "params"
)
.setProperty("with some more params")
.start();
Run Code Online (Sandbox Code Playgroud)

我得到的是这个:

makeAThing(
  "with", 
  "params"
)
  .setProperty("with some more params")
  .start();
Run Code Online (Sandbox Code Playgroud)

我在Java,Groovy,JavaScript和其他一些地方得到这个.如何说服Intellij在链式方法调用后不添加延续缩进?

formatting indentation intellij-idea method-chaining

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

使用SuperCSV验证一次通过中的每个字段

我正在尝试使用SuperCSV将大量行(约200万)从数据库写入CSV文件.我需要在编写每个单元格时执行验证,内置的CellProcessors非常好.我想捕获CellProcessors抛出的所有异常,以便我可以返回源数据并进行更改.

问题是,当一行中存在多个错误时(例如,第一个值超出范围,第二个值为null但不应该是),只有第一个CellProcessor将执行,因此我只会看到一个的错误.我希望在一次传递中处理整个文件,并在其结尾处有一组完整的异常.

这是我正在尝试的方法:

for (Row row : rows) {
    try {
        csvBeanWriter.write(row, HEADER_MAPPINGS, CELL_PROCESSORS);
    } catch (SuperCsvCellProcessorException e) {
        log(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢!

编辑:这是我写的代码类似于猎犬的代码,以防它帮助任何人:

import java.util.List;

import org.supercsv.cellprocessor.CellProcessorAdaptor;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.exception.SuperCsvCellProcessorException;
import org.supercsv.util.CsvContext;

public class ExceptionCapturingCellProcessor extends CellProcessorAdaptor {

    private final List<Exception> exceptions;

    private final CellProcessor current;

    public ExceptionCapturingCellProcessor(CellProcessor current, CellProcessor next, List<Exception> exceptions) {
        super(next);
        this.exceptions = exceptions;
        this.current = current;
    }

    @Override
    public Object execute(Object value, CsvContext context) {
        // Check input is not null
        try { …
Run Code Online (Sandbox Code Playgroud)

java csv supercsv

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

Maven Release Plugin不在dependencyManagement中更新SNAPSHOT

我有一个公司范围的父pom,<dependencyManagement>其中有一个部分定义了应该在我的应用程序中使用的项目版本,其中一些是SNAPSHOT,有点像这样:

<dependencyManagement>
  <dependencies>
    ...
    <dependency>
      <groupId>my.group</groupId>
      <artifactId>myArtifact</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    ...
  <dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

当我release:prepare在父pom上运行时,不会删除这些SNAPSHOT.结果是从父级继承的项目在被释放时不能使用它的版本.<dependencyManagement>当我发布时,如何确保更新父pom 的部分?

我看到了这个问题:为什么maven发布插件允许SNAPSHOT版本的依赖管理?,但提到的门票声称在早期版本的插件中修复.

Maven Release Plugin 2.3.1
Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)
Java version: 1.6.0_31, vendor: Sun Microsystems Inc.
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Run Code Online (Sandbox Code Playgroud)

java maven maven-release-plugin

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

JPA使用任意字段(不是主键)加入

我有两个实体,我想使用他们共同的字段连接在一起,称为shared_id.该字段不是任一实体的主键.shared_id是唯一的 - 每个Hipster都有一个唯一的shared_id.

表格如下:

Hipster    Fixie
=========  ========
id         id
shared_id  shared_id
Run Code Online (Sandbox Code Playgroud)

Hipsters和他们的Fixies之间存在OneToMany关系.我尝试过这样的事情:

@Entity
public class Hipster {

    @Id
    @Column(name = "id")
    private Integer id;

    @Column(name = "shared_id")
    private Integer sharedId;

    @OneToMany(mappedBy = "hipster")
    private List<Fixie> fixies;
}

@Entity
public class Fixie {

    @Id
    @Column(name = "id")
    private Integer id;

    @ManyToOne
    @JoinColumn(name = "shared_id", referencedColumnName = "shared_id")
    private Hipster hipster;
}

@Repository
public class HipsterDAO {

    @PersistenceContext
    private EntityManager entityManager;

    public Hipster getHipsterBySharedId(Integer sharedId) {

        String queryString = "SELECT h …
Run Code Online (Sandbox Code Playgroud)

java jpa one-to-many java-ee

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

Amazon RedShift Drop默认

我想在RedShift的表中添加NOT NULL列。为此,我指定了一个默认值,以便现有行知道要在新列中放置什么。但是我不想在此列上使用默认值-如果我的COPY命令中没有提供任何数据,我希望它失败。在Postgres中,我可以这样做:

ALTER TABLE my_table ALTER COLUMN my_column DROP DEFAULT;
Run Code Online (Sandbox Code Playgroud)

但是Redshift给我一个错误的说法ERROR: ALTER COLUMN SET/DROP DEFAULT is not supported

添加非空列,更新现有行并且没有默认值的正确方法是什么?

更新:看来Redshift 不允许任何ALTER COLUMN语句。这使这不可能吗?

sql amazon-redshift

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

使用Korma在Clojure中清理数据库输入

我在RESTful API后面使用Korma,我发现我将用户提交的值传递给我的(insert)调用.在Clojure中有一种很好的方法可以防止SQL注入攻击吗?Korma以非常简单的方式生成SQL,所以如果有人告诉我他们的名字是小Bobby Tables,我担心它会受到伤害.

sql clojure korma sqlkorma

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

JPA:EntityManager.find()是否始终为同一个键返回相同的对象引用?

我有一个DAO的集成测试,我在其中使用共享的EntityManager(通过Spring,使用SharedEntityManagerCreator).测试类标记为@Transactional,测试中的DAO方法也是如此.

在测试类和DAO中,我正在检索User实体,如下所示:

User user = em.find(User.class, "test");
Run Code Online (Sandbox Code Playgroud)

在我的测试设置中,我修改了用户对象,但是当测试开始运行时,我没有看到DAO中的修改.原来,这两个引用没有引用同一个对象; 我在我的测试类中证明了这一点:

System.out.println("User objects equal = " + (user == dao.getUser()));
Run Code Online (Sandbox Code Playgroud)

这打印出来的是假的.我希望每次使用相同密钥对EntityManager的调用都会返回相同的对象引用,并且很惊讶(并且有点惊慌!)发现情况并非如此.任何人都可以对此有所了解吗?我已经重构了我的代码,所以它实际上并不是一个问题(DAO不应该在其中包含User对象)但我仍然希望更好地理解它.

谢谢!

Java 1.6u22,Toplink Essentials 2.0.1,Spring 2.5.6

java orm jpa toplink-essentials

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

使用 clj-http 在 Clojure 中进行基本身份验证

我们使用clj-http进行 HTTP 基本身份验证。我想用这个标头发送一个请求:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)

所有的例子我发现说做这样的

(clj-http.client/get "http://my.domain.com" 
                     {:headers {:basic-auth [username password]}})
Run Code Online (Sandbox Code Playgroud)

这似乎发送只含有一种叫头的请求basic-auth,与未编码值usernamepassword。我必须像这样手动生成基本身份验证标头:

(clj-http.client/get "http://my.domain.com"
                     {:headers {:Authorization "Basic dXNlcm5hbWU6cGFzc3dvcmQ="}})
Run Code Online (Sandbox Code Playgroud)

当然,这要困难得多,因为我必须正确编码用户名和密码并在前面贴上“基本”一词。clj-http 可以为我做这个吗?

clojure basic-authentication

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

从Clojure中的嵌套结构获取的惯用法

哪一个更具惯用性Clojure?

(def book {:title "Joy of Clojure" 
           :authors ["Michael Fogus" "Chris Houser"]})

(get-in book [:authors 0])
;; => "Michael Fogus"

(-> book :authors first)
;; => "Michael Fogus"
Run Code Online (Sandbox Code Playgroud)

当我有更复杂的数据结构时,这变得更加相关.据推测,两者之间没有技术差异?

clojure

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

我应该告诉Intellij我的WSL文件系统区分大小写吗?

我与Windows Linux子系统共享Windows 10文件系统。我将编码项目保留dev在用户目录下的文件夹中,并/mnt/c/Users/Conan/dev在WSL中共享。Intellij从Windows文件系统运行项目,但是我使用了许多命令行工具来java从WSL的共享中运行内容(例如)。

当我启动Intellij时,它说:

文件系统区分大小写不匹配
项目似乎位于区分大小写的文件系统上。
这与IDE设置不匹配(由属性“ idea.case.sensitive.fs”控制)

它是否正确?我的Windows文件系统不区分大小写,但是文件是从WSL中的bash创建的。我应该使用哪个设置?

filesystems intellij-idea windows-subsystem-for-linux

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

在Groovy中使用JUnit @Before方法排序

我习惯于JUnit在子类中的@Before方法之前在超类中运行@Before方法.但是,我有一个继承自另一个Groovy类的Groovy测试类,它们都包含@Before方法; 我遇到的问题是测试类中的@Before方法在其超类中的方法之前运行,并且我从未初始化的变量获得NPE(超类应该处理它).

超类是这样的:

import groovyx.net.http.RESTClient
import org.junit.Before

abstract class BaseTestClass {
    def client

    @Before
    void setUp() {
        client = new RESTClient()
    }
}
Run Code Online (Sandbox Code Playgroud)

子类是这样的:

import org.junit.Before

class TestClass extends BaseTestClass {

    @Before
    void setUp() {
        client.post(path: '/entity', body: '{"id":"test"}')
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

这是一个简化版本,但是我得到了错误:java.lang.NullPointerException: Cannot invoke method post() on null object在子类的setUp()方法中.什么可能导致这种行为?所有的文档都说它应该是反过来的,我以前从未经历过任何不同的事情.

我正在使用maven-failsafe-plugin,junit-4.10和jdk-1.6.0_31运行.有趣的是,我有其他Groovy测试类在同一个地方(相同的包,相同的项目,相同的目录)没有遇到这个问题 - @Before方法的顺序是正确的; 此外,它似乎是确定性的 - 它始终是具有问题的相同测试类.

谢谢!

groovy junit annotations

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

在Clojure中创建对象

在Clojure中有两种实现对象的方法,包括new函数或.宏:

(new Object)
(Object.)
Run Code Online (Sandbox Code Playgroud)

我见过的大多数代码都使用后一个宏.我意识到它更短,但前者对我来说似乎更具可读性.这只是一个偏好问题,但有技术原因使用后者的宏吗?

macros clojure

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