我是Go的新手并试图编写一个读取RPM文件的应用程序.每个块的开头都有一个Magic char [4]byte.
这是我的结构
type Lead struct {
Magic [4]byte
Major, Minor byte
Type uint16
Arch uint16
Name string
OS uint16
SigType uint16
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行以下操作:
lead := Lead{}
lead.Magic = buffer[0:4]
Run Code Online (Sandbox Code Playgroud)
我在网上搜索,不知道如何从切片到数组(不复制).我可以随时制作魔法[]byte(甚至是魔法uint64),但我更好奇的是[]byte,[4]byte如果需要,我将如何从类型转到?
我正在开发一个开源库,并希望将发布内容发送到内部工件服务器.我一直在使用maven distributionManagement和overriding altDeploymentRepository指向内部服务器(因此它永远不会在pom中).我这样做很好,deploy:deploy但是当我使用maven release插件时,这似乎被忽略了.
mvn clean -DaltDeploymentRepository=central::default::internalhost deploy ## works
mvn clean -DaltDeploymentRepository=central::default::internalhost release:perform ## fails, doesn't pick up this setting
Run Code Online (Sandbox Code Playgroud)
当发布插件运行部署时,如何通过命令行覆盖存储库?
我正在使用与Asgard(来自netflix)集成的gradle插件(我不知道groovy,刚开始使用gradle).我希望我的扩展对象看起来像这样:
asgard {
url = "http://asgard"
regions {
"us-east-1" {
autoScaling {
{
devPhase = "test"
min = 3
max = 6
availabilityZones = ["us-east-1a", "us-east-1b", "us-east-1c"]
ami = "Base AMI 2013-07-11"
instanceType = "m3.xlarge"
securityGroups = ["base", "test-application"]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者接近那个.我已经能够通过使autoScaling成为一个List来接近这个,但是当我尝试从该类获取属性时,它似乎返回一个动态属性,而不是值.以下是入门插件:
import org.gradle.internal.reflect.Instantiator
class AsgardPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create("asgard", AsgardPluginExtension, project)
project.asgard.extensions.regions = project.container(AsgardRegion) {String name ->
AsgardRegion region = project.gradle.services.get(Instantiator).newInstance(AsgardRegion, name)
assert region instanceof ExtensionAware
region.extensions.add("autoScaling", project.container(AsgardAutoScaling))
return region
}
project.task('displayConfigs') …Run Code Online (Sandbox Code Playgroud) 我是Scala的新手,当我查看不同的项目时,我看到两种处理隐式参数的样式
scala]]>def sum[A](xs:List[A])(implicit m:Monoid[A]): A = xs.foldLeft(m.mzero)(m.mappend)
sum:[A](xs:List[A])(implicit m:Monoid[A])A
Run Code Online (Sandbox Code Playgroud)
和
scala]]>def sum[A:Monoid](xs:List[A]): A ={
val m = implicitly[Monoid[A]]
xs.foldLeft(m.mzero)(m.mappend)
}
sum:[A](xs:List[A])(implicit evidence$1:Monoid[A])A
Run Code Online (Sandbox Code Playgroud)
根据两种功能的类型,它们匹配.这两者有区别吗?为什么要隐式使用隐式参数?在这个简单的例子中,它感觉更加冗长.
当我在REPL中运行上面没有隐含的东西时,我得到以下错误
隐含的参数
<console>:11: error: could not find implicit value for parameter m: Monoid[String]
Run Code Online (Sandbox Code Playgroud)
和
隐式地和a:Monoid
<console>:11: error: could not find implicit value for evidence parameter of type Monoid[String]
Run Code Online (Sandbox Code Playgroud) 这是我的项目/ Build.scala:
package sutils
import sbt._
import Keys._
object SutilsBuild extends Build {
scalaVersion in ThisBuild := "2.10.0"
val scalazVersion = "7.0.6"
lazy val sutils = Project(
id = "sutils",
base = file(".")
).settings(
test := { },
publish := { }, // skip publishing for this root project.
publishLocal := { }
).aggregate(
core
)
lazy val core = Project(
id = "sutils-core",
base = file("sutils-core")
).settings(
libraryDependencies += "org.scalaz" % "scalaz-core_2.10" % scalazVersion
)
}
Run Code Online (Sandbox Code Playgroud)
这似乎正在编译我的项目就好了,但是当我进入控制台时,我无法导入任何刚刚编译的代码?! …
在OSX与JVM 7,我看到的是FileChannel.open与CREATE_NEW似乎并不符合文档.下面的代码,我希望创建一个新文件,只有在它不能(权限,磁盘问题)或文件已经存在时才会失败.
scala> FileChannel.open(new File("/tmp/doesnotexist").toPath, StandardOpenOption.CREATE_NEW)
java.nio.file.NoSuchFileException: /tmp/doesnotexist
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newFileChannel(UnixFileSystemProvider.java:177)
at java.nio.channels.FileChannel.open(FileChannel.java:287)
at java.nio.channels.FileChannel.open(FileChannel.java:334)
... 32 elided
scala> val path = new File("/tmp/doesnotexist")
path: java.io.File = /tmp/doesnotexist
scala> path.createNewFile()
res9: Boolean = true
scala> FileChannel.open(path.toPath, StandardOpenOption.CREATE_NEW)
res10: java.nio.channels.FileChannel = sun.nio.ch.FileChannelImpl@19fed8d0
scala> FileChannel.open(path.toPath, StandardOpenOption.CREATE_NEW)
res11: java.nio.channels.FileChannel = sun.nio.ch.FileChannelImpl@5c6ff75
scala> FileChannel.open(path.toPath, StandardOpenOption.CREATE_NEW)
res12: java.nio.channels.FileChannel = sun.nio.ch.FileChannelImpl@1fa547d1
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的Java
$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM …Run Code Online (Sandbox Code Playgroud) 我一直在寻找JavaScript中的GEDCOM解析器.目前是否存在?我发现它们有多种语言,但还没有用JavaScript.
我正试图让chroot在我的mac书上工作.我设置了jail目录以包含/ bin/sh和/ bin/bash的所有要求(递归地称为/ usr/bin/otool)
# ls /var/chroot/*/*
/var/chroot/bin/bash /var/chroot/bin/sh
/var/chroot/usr/lib:
libDiagnosticMessagesClient.dylib libauto.dylib
libc++abi.dylib libobjc.A.dylib
libSystem.B.dylib libc++.1.dylib
libncurses.5.4.dylib system
Run Code Online (Sandbox Code Playgroud)
当我尝试在/ var/chroot上使用chroot时,它一直说它无法找到/ bin/bash
# chroot /var/chroot/
chroot: /bin/sh: No such file or directory
$ sudo chroot /var/chroot/
chroot: /bin/bash: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有什么想法导致chroot无法在我的Mac上工作?
OSX版本10.8.4
编辑:在CentOS上,当我运行ldd/bin/bash时,我得到了所有需要的库.如果我不复制它们,它说/ bin/bash:没有这样的文件或目录.所以我认为这意味着在mac上我缺少libs; 只是不确定哪个.
我在maven中有一个多项目设置并试图切换到gradle.我试图弄清楚如何让一个项目的测试依赖包括另一个项目的测试jar.现在我在ProjectA中有以下内容:
packageTests = task packageTests(type: Jar) {
classifier = 'tests'
from sourceSets.test.output
}
tasks.getByPath(":ProjectA:jar").dependsOn(packageTests)
Run Code Online (Sandbox Code Playgroud)
在ProjectB我有:
testCompile project(path: ':ProjectA', classifier: 'tests')
Run Code Online (Sandbox Code Playgroud)
我看到我的测试无法编译.看起来他们缺少测试jar中定义的类.当我检查构建目录时,我看到ProjectA-0.1.56-SNAPSHOT-tests.jar存在.
在maven中,我有以下ProjectA:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这对于ProjectB来说:
<!-- Testing -->
<dependency>
<groupId>com.example</groupId>
<artifactId>ProjectA</artifactId>
<version>0.1.56-SNAPSHOT</version>
<type>test-jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它像maven一样工作?
有没有办法为tomcat中的不同war文件使用不同的环境变量?我正在使用第三方战争,因此需要对同一战争进行多次部署,但要使用不同的环境变量(因此它将加载不同的配置)。
我正在使用TestNg和Maven以及surefire插件来运行我的测试.我有几个不同的组件,我希望能够使用相同的pom在不同的时间运行.目前为了做到这一点,我有几个不同的XML文件定义测试套件,我有pom设置,所以我可以做mvn test -Dtestfile =/path并使用该套件.
我想知道是否有办法将XML文件合并到一个文件中并选择基于测试名或其他系统?
编辑:我已经使用Smoke,Sanity,Regression定义了所有测试,并且我希望能够为给定组件运行所有回归.如果我运行TestNG CLI,我可以给出-testnames comp1,comp2,comp3等.其中每个组件在一个包含多个tests()的xml套件中定义.我想知道是否有任何方法可以在maven中使用exec:java插件.