小编Gal*_*eño的帖子

摆脱'...并没有指向旧git分支的有效对象'

我有一个Git仓库的分支,我的克隆似乎有一个旧的,不再存在的分支的问题.我一直看到这个消息:

error: refs/heads/t_1140 does not point to a valid object!

我没有任何其他消息,回购工作正常.没有任何操作阻止我在其他分支上工作,推动变革,拉动等等.

我环顾四周,关于如何解决这个问题的指示并不明确.我试图执行,git fsck --full但我没有看到任何错误.只是加载dangling ...消息.

我也检查了我.git/config的,没有对这个分支的引用,也检查过.git/refs/heads,没有引用t_1140

知道如何摆脱这个错误吗?

ps我试图再次克隆我的回购,似乎错误也是我的Github回购.所以,我现在唯一能想到的就是放弃我的回购和再次分配.

git version-control github

47
推荐指数
5
解决办法
4万
查看次数

使用配置文件来控制构建哪些Maven模块

我在maven POM.xml中有以下XML:

<profiles>
  <profile>
     <id>default</id>
     <activation>
        <activeByDefault>true</activeByDefault>
        <property>
           <name>default</name>
           <value>!disabled</value>
        </property>
     </activation>
     <modules>
        <module>m1</module>
        <module>m2</module>
        <module>m3</module>
     </modules>
  </profile>
  <profile>
     <id>x</id>
     <modules>
        <module>m1</module>
     </modules>
  </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

我想要实现的是:

  1. 当我跑步时mvn install,我希望它能够建立m1,m2和m3项目.

  2. 当我跑步时mvn install -Px,我希望它只能构建m1.

我目前的问题是,使用上面的代码,选项2构建所有m1,m2和m3.

profiles maven

34
推荐指数
2
解决办法
3万
查看次数

将Scala varargs转换为Java Object ... varargs

我有一个Java类,它记录的东西有这样的方法:

void info(Object message, Object... params);
Run Code Online (Sandbox Code Playgroud)

在Scala中,我创建了一个围绕这样调用的包装器,如下所示:

def info(msg: => String, params: Any*) {
  log.info(msg, params);
}
Run Code Online (Sandbox Code Playgroud)

我打电话的时候:

val host = "127.0.0.1"
val port = "1234"
info("Start on {0}:{1}", host, port)
Run Code Online (Sandbox Code Playgroud)

我明白了:

"Started on WrappedArray(127.0.0.1, 1234):{1}"
Run Code Online (Sandbox Code Playgroud)

现在,有没有人现在如何将params转换为可以正确使用的Object []?

我试着这样做:

def info(msg: => String, params: Any*)
  log.info(msg, params.toList.toArray);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

"Started on [Ljava.lang.Object;@14a18d:{1}"
Run Code Online (Sandbox Code Playgroud)

你做的时候会发生类似的事情:

params.asInstanceOf[WrappedArray[Object]].array
Run Code Online (Sandbox Code Playgroud)

scala scala-2.8

13
推荐指数
2
解决办法
2980
查看次数

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

使用JUnit 4在Gradle Scala单元测试中进行神奇的`classMethod`测试

我在Vert.x的Scala语言扩展中遇到了Gradle,JUnit和Scala测试执行的问题.最近我们从Vert.x 2.1.RC1升级到2.1.RC2,我们开始看到在某些环境中,例如我们的Cloudbees实例,测试执行会查找classMethod在测试类中调用的幻像方法,该方法不存在,测试时间出.结果,其余的测试失败了.

在此控制台实例中,您可以看到:

org.vertx.scala.tests.core.http.HttpTest > classMethod FAILED
    java.lang.AssertionError: Timed out waiting for test to complete
Run Code Online (Sandbox Code Playgroud)

我们不知道这classMethod是什么,它来自哪里等等.更糟糕的是,我无法在我的OSX和Linux(RHEL7)环境中复制它,无论是使用JDK 1.7u45还是1.7u51.

到目前为止,我们发现修复它的唯一方法是恢复到Vert.x 2.1.RC1(请参阅使用RC1 运行的控制台),但我们真的无法看到这个和这个神秘之间的联系classMethod.

我们已经尝试升级到Gradle 1.11,以防Gradle本身出现问题,但没有运气.我们目前正在使用JUnit 4.11.

唯一看起来有点可疑的是,即使该项目使用Scala 2.10.4,Gradle Scala插件似乎引入了Zinc,它似乎需要Scala 2.9.2.当我.gradle/在本地删除我的文件夹时,我没有看到任何Scala 2.9.2被下载.我想知道这是不是搞乱了?

最后,对于HttpCompressionTest似乎有这个的最后一次运行classMethod,我将本地javap输出与Cloudbees中的输出进行了比较,它们看起来完全相同.

我没有想法,有什么建议吗?

更新:作为最后的手段,我决定升级到Vert.x 2.1.RC3-SNAPSHOT,这一切都恢复正常.我完全不知道为什么,但我会接受它:)

junit unit-testing scala junit4 gradle

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

迭代Promise迭代器的非递归方法

我开发了一个客户端库,它公开了一个名为的方法iterator().此方法返回使用require('promise')库创建的Promise实例,该实例使用迭代器对象完成.

该对象包含一个调用的方法next(),该方法返回一个Promise,它使用如下复杂对象完成:{done: [true|false], key: _, value: _}

虽然iterator()可能预先获取一些元素,next()但是如果它导致远程调用,则需要返回Promise.

现在,假设用户想要迭代所有元素,直到返回的Promise返回next()包含的对象done: true.

我已经设法使用以下递归方法实现了这一点(我最初在这个答案中找到了这个解决方案):

var iterate = client.iterator();

iterateTeams.then(function(it) {

  function loop(promise, fn) {
    // Simple recursive loop over iterator's next() call
    return promise.then(fn).then(function (entry) {
      return !entry.done ? loop(it.next(), fn) : entry;
    });
  }

  return loop(it.next(), function (entry) {
    console.log('entry is: ' + entry);
    return entry;
  });

});
Run Code Online (Sandbox Code Playgroud)

问题是,是否可以使用require('promise')库来构建非递归解决方案?我对非递归方法感兴趣的原因是,如果要迭代的条目数太大,就要避免爆炸.

干杯,高尔德

javascript promise

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

Java编译因方法引用而失败,但与lambda一起使用

我们正在尝试向collect我们目前定义的扩展Java Stream API 添加重载方法:

interface ExtendedStream<R> extends Stream<R> {

   <R1> R1 collect(SerializableSupplier<Collector<? super R, ?, R1>> supplier);

}
Run Code Online (Sandbox Code Playgroud)

SerializableSupplier 被定义为:

interface SerializableSupplier<T> extends Serializable, Supplier<T> {
}
Run Code Online (Sandbox Code Playgroud)

使用lambda调用此collect方法工作正常,但使用方法引用调用它无法编译时出现以下错误:

Error:(50, 72) java: incompatible types: cannot infer type-variable(s) R1,capture#1 of ?,T
    (argument mismatch; bad return type in method reference
      java.util.stream.Collector<T,capture#1 of ?,java.util.List<T>> cannot be converted to java.util.stream.Collector<? super java.util.Map.Entry<java.lang.Integer,java.lang.String>,?,R1>)
Run Code Online (Sandbox Code Playgroud)

我在这里创建了一个独立的Java类,您可以将其加载到编译器中以进行尝试.

我目前正在使用Java版本:

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed …
Run Code Online (Sandbox Code Playgroud)

java generics java-8 method-reference

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

离线时OSX Lion上的InetAddress.getLocalHost()解析

在脱机工作(即没有连接到互联网)时,是否有人在使用OSX Lion的Java中解决Java的InetAddress.getLocalHost()问题?

似乎localhost:127.0.0.1根本没有得到解决:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at java.net.InetAddress.getLocalHost(InetAddress.java:1356)
Run Code Online (Sandbox Code Playgroud)

我的/ etc/hosts没什么特别之处:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
Run Code Online (Sandbox Code Playgroud)

我怀疑这不是Java问题,而是OSX Lion DNS解决问题.

有人可以帮忙吗?

如果这不是正确的论坛,我可以在哪里询问这个问题?

有关如何在OSX级别进一步调试的任何提示?

更新26/10/2011 - 这可能是JDK bug,以下测试:

InetAddress addr;
try {
   addr = InetAddress.getLocalHost();
   System.out.println("With localhost access: " + addr);
} catch (ArrayIndexOutOfBoundsException e) {
   addr = InetAddress.getByName(null);
   System.out.println("With reverse lookup: " …
Run Code Online (Sandbox Code Playgroud)

java dns macos localhost osx-lion

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

在子类中扩展 Scala 模式匹配,同时保持复杂性

我有一个 Scala 问题。想象一下您正在构建代码来处理不同的操作,即

operation match {
   case A => doA()
   case B => doB()
   case _ => throw new Exception("Unknown op: " + operation)
}
Run Code Online (Sandbox Code Playgroud)

现在,想象一下,稍后您想要构建一个新版本,并且想要扩展操作 C 的模式匹配。如何以操作分辨率仍然为 O(1) 的方式做到这一点?

我的意思是,我可以修改上面的代码来执行以下操作:

   case _ => handleUnknownOperation(operation)
Run Code Online (Sandbox Code Playgroud)

子类可以实现handleUnknownOperation来执行以下操作:

operation match {
   case C => doC()
}
Run Code Online (Sandbox Code Playgroud)

但这很糟糕,因为这意味着 C 操作需要 O(2)。

扩展这种模式匹配结构的任何其他想法或最佳实践?

干杯,高尔德

complexity-theory scala pattern-matching

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

HSpec没有任何期望未能编译

我正在学习Haskell并且我已经编写了这个函数:

safeHead :: [a] -> Maybe a
safeHead [] = Nothing
safeHead (x:xs) = Just x
Run Code Online (Sandbox Code Playgroud)

我现在正尝试用HSpec测试它:

import Test.Hspec

main :: IO ()
main = hspec spec

spec :: Spec
spec =

  describe "safeHead" $
    it "should return Nothing for empty list" $
      safeHead [] `shouldBe` Nothing
Run Code Online (Sandbox Code Playgroud)

但是无法编译:

Error:(14, 19) ghc: No instance for (Eq a0) arising from a use of ‘shouldBe’
    The type variable ‘a0’ is ambiguous
    Note: there are several potential instances:
      instance Eq a => Eq (Maybe …
Run Code Online (Sandbox Code Playgroud)

haskell hspec

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

Promise.all从.then()回调返回时不能正常工作

我正在使用Promise Node.js库,我想做以下事情:

  1. 执行返回Promise的异步操作.
  2. 该操作完成后,返回两个并行异步操作完成时完成的Promise.

我正在使用的代码如下:

var Promise = require('promise');

var resolved1 = Promise.resolve(1);

var resolvedAll = resolved1.then(function() {
  return Promise.all(Promise.resolve(2), Promise.resolve(3));
});

var print = resolvedAll.then(function(values) {
  console.log(values);
});

print.done(function () {
  console.log('done');
});
Run Code Online (Sandbox Code Playgroud)

但是这段代码没有按预期工作,因为它打印:

[]
done
Run Code Online (Sandbox Code Playgroud)

从docu开始,Promise.all返回一个promise,它在iterable参数中的所有promise都已解析时解析.所以在理论上已经解决了所有承诺在完成所有承诺之前不应该Promise.all完成,但这不是这里发生的事情.

知道为什么Promise.all没有按预期工作?这可能是个错误吗?任何人都知道在.then()回调中返回多个承诺的替代方案?

干杯,高尔德

javascript node.js promise

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