小编Nei*_*ett的帖子

Nix中的构建与运行时依赖关系

我刚刚开始接触Nix,如果我在文档中错过了我的问题的答案,那么道歉.

我想使用Nix来设置一个安全的生产机器,其中包含最少的库和可执行文件.我不希望出现任何编译器或其他构建工具,因为这些可能存在安全风险.

当我安装一些软件包时,它们似乎只依赖于最小的运行时依赖项集.例如,如果我安装,apache-tomcat-8.0.23那么我得到一个Java运行时(JRE)和包含Tomcat的预构建JAR文件.

另一方面,一些软件包似乎包含一个完整的构建工具链作为依赖项.以另一个基于Java的示例为例,当我安装spark-1.4.0Nix 时,请下载包含编译器的Java开发工具包(JDK),它还会提取Maven构建工具等.

所以,我的问题如下:

  1. Nix包是否在构建和运行时依赖关系之间做出了区分?
  2. 为什么有些软件包似乎依赖于构建工具而其他软件包只需要运行时?这完全取决于包作者如何包装应用程序?
  3. 如果一个软件包包含我不想要的构建依赖项,除了为同一个应用程序设计我自己的替代包装之外,我作为运营商可以做些什么吗?

非常感谢.

nixos nix nixpkgs

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

具有Shake的多输入多输出编译器

我正在尝试使用Shake来构建Java代码,由于javac编译器的不寻常特性,我有点卡住了.通常,对于大型项目的每个模块,将使用该模块的所有源文件作为输入调用编译器,并在一次传递中生成所有输出文件.随后我们通常采用编译器生成的.class文件并将它们组装成JAR(基本上只是一个ZIP).

例如,典型的Java模块项目安排如下:

  • 一个src包含多个.java文件的目录,其中一些嵌套在树的深层.
  • bin包含编译器输出的目录.典型地,这输出遵循相同的目录结构和文件名,以.class取代对每个java文件,但该映射是必然一到一种:单java文件可以产生零到许多.class文件!

因此,我想在Shake中定义的规则如下:

1)如果下面的任何文件src任何文件更新,bin则擦除所有内容bin并重新创建:

javac -d bin <recursive list of .java files under src>

我知道这个规则似乎过多,但是如果不调用编译器,我们就无法知道输出的变化程度,即使是单个输入文件中的一个小变化也是如此.

2)如果任何文件bin比新文件更新,module.jar则重新创建module.jar:

jar cf module.jar -C bin .

非常感谢!

PS响应"只使用Ant/Maven/Gradle /"将不胜感激!我知道这些工具提供开箱即用的Java编译,但它们更难以编写和聚合.这就是为什么我想试验一个基于Haskell/Shake的工具.

haskell shake-build-system

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

Polymer 1.0:多次调用iron-request的send()方法

我有一个组件,它使用一个实例<iron-ajax>从后端检索数据,我想<iron-request>用来发送更新,如POST/DELETE请求.

第一次一切都很完美.但是,如果再次调用请求,我会收到错误:

未捕获的TypeError:无法读取未定义的属性'then'

我的模板定义如下所示:

...
<iron-ajax id="ajax" auto verbose
    url="/cart-api/"
    last-response="{{ajaxResponse}}"
    handle-as="json">
</iron-ajax>

<iron-request id="xhr"></iron-request>
...
Run Code Online (Sandbox Code Playgroud)

在我的组件脚本中,我使用发送POST 的send()方法<iron-request>:

var me = this;
this.$.xhr.send({
    url: "/cart-api",
    method: "POST",
    body: JSON.stringify(entry)
}).then(function() {
    me._refresh();
}, function() {
    console.error("POST failed");
});
Run Code Online (Sandbox Code Playgroud)

错误消息表明send已返回undefined而不是有效的Promise对象.

所以我的问题是:一个<iron-request>元素实际上是可重用的吗?我是否需要做任何事情来刷新或重新初始化它?

UPDATE

感谢@Zikes我更新了我的代码如下:

<iron-ajax id="ajaxGet" auto
    url="/cart-api/"
    last-response="{{ajaxResponse}}"
    handle-as="json">
</iron-ajax>

<iron-ajax id="ajaxPost" url="/cart-api" method="POST" on-response="_refresh"></iron-ajax>

<iron-ajax id="ajaxDelete" method="DELETE" on-response="_refresh"></iron-ajax>
Run Code Online (Sandbox Code Playgroud)
insertEntry: function(entry) {
    this.$.ajaxPost.body = JSON.stringify(entry);
    this.$.ajaxPost.generateRequest();
}, …
Run Code Online (Sandbox Code Playgroud)

javascript ajax polymer polymer-1.0

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

Java Concurrency:具有共享访问权限的成对锁

我正在寻找以下并发语义的Java实现.我想要ReadWriteLock除了对称之外的类似的东西,即读取和写入两个端口可以在许多线程之间共享,但是read不包括写入,反之亦然.

  1. 有两个锁,让我们称它们为A和B.
  2. 锁A是共享的,即可能有多个线程同时保存它.锁B也是共享的,可能有多个线程同时保存它.
  3. 如果任何线程持有锁A,则没有线程可能占用B - 尝试取B的线程将阻塞,直到持有A的所有线程都释放A.
  4. 如果任何线程持有锁B,则没有线程可能需要A - 尝试取A的线程将阻塞,直到所有持有B的线程都释放B.

是否有现成的库类可以实现这一目标?目前我用a近似了所需的功能,ReadWriteLock因为幸运的是在锁B的上下文中完成的任务有点罕见.虽然它感觉像是一个黑客,它可能会影响我的程序在重负载下的性能.

java concurrency

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

cabal sandbox安装仍然失败,因为"重新安装可能会破坏软件包"

我正在尝试使用cabal沙箱构建Elm平台.然而,安装失败,并显示消息"重新安装可能会破坏软件包".在我看来,这与沙盒的整个目的相矛盾,我认为沙盒应该避免这种错误.

任何人都可以为我解释这个错误,甚至更好地帮助我继续安装Elm?添加是否安全--force-reinstalls

以下是我执行的命令序列:

cabal sandbox init
cabal update
cabal install -j elm-compiler-0.14 elm-package-0.2 elm-make-0.1 elm-reactor-0.2 elm-repl-0.4
Run Code Online (Sandbox Code Playgroud)

我在Mac OS 10.10上使用了cabal 1.22.0.0和GHC 7.8.2.完整输出如下:

Resolving dependencies...
In order, the following would be installed:
Diff-0.3.0 (new package)
HUnit-1.2.5.2 (new package)
ansi-terminal-0.6.2.1 (new package)
ansi-wl-pprint-0.6.7.1 (new package)
async-2.0.2 (new package)
blaze-markup-0.6.2.0 (new package)
blaze-html-0.7.0.3 (new package)
byteable-0.1.1 (new package)
bytestring-mmap-0.2.2 (new package)
bytestring-trie-0.2.4 (new package)
cereal-0.4.1.1 (new package)
cmdargs-0.10.12 (new package)
concatenative-1.0.1 (new package)
cookie-0.4.1.4 (new package)
cryptohash-0.11.6 (new package)
enumerator-0.4.20 …
Run Code Online (Sandbox Code Playgroud)

haskell cabal elm

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

在SCR运行时中首先调用哪一个激活函数或绑定函数

我对组件变为活动时调用哪个函数Activate函数或绑定函数的顺序感到困惑.在我看来,首先会调用activate函数函数,因为Bind函数用于绑定服务.但是,正如我们所知,所有目标服务首先进入组件上下文,然后组件被激活.

请清除我的怀疑.

osgi equinox knopflerfish apache-felix

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

如何测试jar是否是OSGi jar?

也许这是一个愚蠢的问题,但是测试Java Archive(jar)文件是否是OSGi包的最佳方法是什么?也就是说,jar完全兼容的最低要求是什么?是仅仅存在META-INF/MANIFEST.MF(我不这么认为)?如果没有,该文件必须提供的最小字段是什么?

实际上,我应该如何测试jar是否是OSGi jar?

osgi

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

BACnet PC应用程序:如何查询BACnet TCP/IP对象列表

我有一项任务是通过BACnet TCP/IP从Trane Tracer summitBCU通信和读取BACnet对象列表及其属性.但是,我不知道从BCU获取BACnet对象列表的BACnet服务.每个人都可以教我如何做到这一点!

c java bacnet

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

从嵌入式OSGi框架中消费服务

我有可嵌入的菲利克斯.我有一些API包和Impl.API导出接口C.Impl导入该接口并在激活器中注册impl.现在我想得到C impl otside OSGi

  FrameworkFactory ff = new FrameworkFactory();
  ...
  BundleContext bc = fwk.getBundleContext();
  ...
  final ServiceReference[] serviceReferences = bc.getServiceReferences(C.class.getName(), "(objectclass=" + C.class.getName() + ")");
  for(ServiceReference serviceReference : serviceReferences){
     final Object service = bc.getService(serviceReference);
     ...
  }
Run Code Online (Sandbox Code Playgroud)

现在我想与它互动.我可以用反射来做

     System.out.println(service.getClass().getMethod("some").invoke(service)); //using 
Run Code Online (Sandbox Code Playgroud)

但我无法施展它

     System.out.println(service instanceof C); //prints false
Run Code Online (Sandbox Code Playgroud)

我想这来自不同的ClassLoaders.但我怎么解决呢?我们如何从外部与OSGi环境相互作用?或者我们可以将它全部放入OSGi容器中?

java osgi

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

Karaf 功能安装抛出不支持的“Bundle-ManifestVersion”值:1

大家好,我在 karaf 中使用 feature install 时遇到以下错误

org.apache.karaf.features.internal.util.MultiException: Error
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader.<init>(MavenDownloadManager.java:84)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager.createDownloader(MavenDownloadManager.java:72)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:358)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:355)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:191)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1079)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:975)[9:org.apache.karaf.features.core:4.0.3]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_79]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_79]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_79]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_79]
Caused by: java.lang.Exception: Unable to create resource for bundle mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT
    at org.apache.karaf.features.internal.region.Subsystem.createResource(Subsystem.java:567)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem$1.downloaded(Subsystem.java:376)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader$1.operationComplete(MavenDownloadManager.java:133)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader$1.operationComplete(MavenDownloadManager.java:127)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.DefaultFuture.notifyListener(DefaultFuture.java:344)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.DefaultFuture.notifyListeners(DefaultFuture.java:329)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.DefaultFuture.setValue(DefaultFuture.java:255)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.AbstractDownloadTask.setFile(AbstractDownloadTask.java:61)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:59)[9:org.apache.karaf.features.core:4.0.3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_79]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_79]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_79]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_79]
    ... 3 more
Caused by: org.osgi.framework.BundleException: Unable to build resource for mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT: …
Run Code Online (Sandbox Code Playgroud)

osgi apache-karaf blueprint-osgi pax-exam karaf

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

OSGI与Apache Felix

我必须为学校创建一个项目.我们想要创建一个监控传感器的系统.由于传感器发展很快,他们有可能在几年内使用其他传感器.要捕获该问题,我们希望创建一个允许用户编写插件来监控传感器的系统.

我正在寻找不同的框架,主要是OSGI.

有人能告诉我Apache Felix和OSGI之间的区别吗?OSGI还活跃吗?

谢谢!

java osgi modularity apache-felix

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