我们正在开发基于OSGi的基础设施来处理基于流的数据流.具体的处理任务由各个OSGi组件执行.我们现在需要在不同的机器上分发这些组件的可能性,这意味着我们需要OSGi组件/容器之间的某种通信机制.
在我的研究中,我遇到了不同的潜在解决方案:R-OSGi,用于分布式OSGi的Apache CXF,Eclipse通信框架.
ECF似乎特别有趣,因为它支持不同的传输格式,并为服务发现等内容提供支持.
我的核心问题:
使用NavigationService.RemoveBackEntry()我可以从导航堆栈中删除一个条目.是否有一种方便的方法来删除我的应用程序中的所有后退导航项目(方案:我有一个由多个页面组成的注册过程,并且在成功注册后,我不希望用户导航回注册步骤).
在查询Flickr API并检查返回的标签时,我注意到我收到了Web界面上未显示的其他标签.例如,对于此图片:
http://www.flickr.com/photos/77060598@N08/12078886973
除了网页上显示的标签(尼康F2AS,尼康,黑白,B&W,山脉,德国,雪景,风景,天空,云),JSON响应包含标签vision:outdoor=0949和vision:sky=051.
我假设,Flickr应用了一些计算机视觉处理来自动分配这些标签.我对这个假设是对的吗?我找不到有关这些标签的任何文档.是否有关于它们采用的算法和/或标签类型以及它们分配的数字含义的描述?
对于以下示例(使用Jersey 2.6),未解码百分比编码的查询参数,相反,a +由空格替换.
@Path("test")
public class TestResource {
@Path("/")
@GET
public void test(@QueryParam("param") String param) {
System.out.println(param);
}
}
// http://localhost:8080/test?param=hello+world // prints "hello world"
// http://localhost:8080/test?param=hello%20world // prints "hello%20world"
Run Code Online (Sandbox Code Playgroud)
有没有理由,为什么只有+被自动转义?是否有一种简单的方法,可以使所有查询参数完全解码,而不必在每个方法的开头都这样做?
对于给定的Jade / Pug模板,我想获取模板中出现的所有变量的列表。
我的动机如下:在我的软件中,使用了不同的模板来生成一些HTML代码段。根据给定的上下文(即,给出了某些变量的值),我只建议那些模板,其中可以分配模板中的所有变量。
示例:对于这样的模板myTemplate:
html
head
title= myTitle
body
h1 #{value.headline}
p #{paragraph.text}
Run Code Online (Sandbox Code Playgroud)
我想得到一些这样的输出:
var variableNames = extractVariableNamesFromTemplate('myTemplate');
// variableNames = [ 'myTitle', 'value.headline', 'paragraph.text' ]
Run Code Online (Sandbox Code Playgroud)
是否有可用的现成产品?优选地,一种解决方案将考虑所有特定于语言的特征,例如包括,扩展等。
我们正在使用一个名为license3j许可证管理的Java库.该库使用非对称加密,并依赖于Bouncycastle.我们使用简单的gpg命令创建许可证文件,并使用我们的公钥验证软件中的许可证.到目前为止一切正常.但是:在1,000个生成的许可证中,有一小部分无法正确验证,尽管它们实际上是有效的(大约5/1000).
在这种情况下会发生什么:当要验证许可证时com.verhas.licensor.License.setLicenseEncoded(InputStream),会org.bouncycastle.openpgp.PGPOnePassSignature.verify(PGPSignature)抛出以下异常:
org.bouncycastle.openpgp.PGPRuntimeOperationException: unable to verify signature: Signature length not correct: got 511 but was expecting 512
听起来相当模糊,只有基本的密码学知识.花几个小时谷歌搜索,给了我线索,有一些关于"领先的零".因此,在给定的示例中,显然一个前导零被剥离到某处(哪里?),并且要比较的签名数据的长度不匹配.说得通.
现在,我不知道问题可能在哪里.是在创建许可证文件期间吗?基本上,我们只是做以下事情:
gpg --armor --local-user=name.of.software --sign
Run Code Online (Sandbox Code Playgroud)
哪个会给我们许可文件.
或者验证期间是否发生错误?我是否必须修改任何Bouncycastle配置才能正确解决前导零问题?他们的FAQ提供了一些提示,但是License3j 源代码显然从未使用过任何Cipher实例,所以我完全迷失了如何将它集成到给定的API中.
我知道这是一个非常特殊的问题,一个库显然不是很有名.因此,我感谢任何一点反馈或输入.
我们有一个满足 PWA 标准的网络应用程序。至此,在安卓设备上打开该应用程序时,我们收到了 PWA 安装提示。
现在,如果可能,我们希望manifest.json在客户端动态生成。我正在遵循以下文章中概述的步骤,这些步骤看起来很有希望:
如何使用 Javascript 动态设置您的 Web 应用程序清单
我们生成 JSON 并通过客户端 JS 将其设置为 blob URL:
const stringManifest = JSON.stringify(manifest);
const blob = new Blob([stringManifest], { type: 'application/json' });
const manifestUrl = URL.createObjectURL(blob);
document.querySelector('#manifest-placeholder').setAttribute('href', manifestUrl);
Run Code Online (Sandbox Code Playgroud)
但是现在,当我在 Android 设备上打开该应用程序时,我不再看到 PWA 提示。然而,清单文件显然会被解释,例如当我尝试将应用程序添加到主屏幕时,icon和start_url被正确设置。
这里的任何经验是否manifest.json可以为 PWA 设置?我可能会错过什么吗?
我们有一个基于 Maven Tycho 的项目,最近我们删除了所有这些看似多余的pom.xml文件。命令行构建工作正常,因此这似乎是一个很好的改进,可以消除无用的混乱。
后来我们发现这些项目不再能够轻松地导入到 Eclipse 中——至少不能像我们以前习惯的那样。到目前为止,我们使用了 import \xe2\x80\x9cExisting Maven Projects\xe2\x80\x9d 命令并pom.xml导入了包含 a 的所有目录。由于不再有pom.xml文件,因此这不起作用。D\xe2\x80\x99哦!
将 pomless Tycho 项目导入 Eclipse 的推荐方法是什么\xe2\x80\x99?
\n我使用Lucene来建立令牌共同出现次数的一大指标(例如[elephant,animal],[melon,fruit],[bmw,car],...)。我使用a查询索引以获取这些共现,BooleanQuery以获取绝对计数,这两个标记在索引中共现的频率如下:
// search for documents which contain word+category
BooleanQuery query = new BooleanQuery();
query.add(new TermQuery(new Term("word", word)), Occur.MUST);
query.add(new TermQuery(new Term("category", category)), Occur.MUST);
// only care about the total number of hits
TotalHitCountCollector collector = new TotalHitCountCollector();
searcher.search(query, collector);
int count = collector.getTotalHits();
Run Code Online (Sandbox Code Playgroud)
这些查询非常频繁地运行,我目前对性能不满意。我发现,该方法BooleanQuery#createWeight需要很多时间。现在,我不需要对结果进行任何评分或排名,因为我只对绝对文件计数感兴趣。
是否有一种方便的方法(例如,预先存在的类)完全禁用计分和加权?如果没有,是否有任何提示需要针对用例扩展哪些类?
我有一个自定义的类型定义扩展现有接口(快递Request如图所示这里)。内容express.d.ts:
declare namespace Express {
export interface Request {
name: string
}
}
Run Code Online (Sandbox Code Playgroud)
工作正常。但现在name我需要它成为一个自定义类,而不是一个字符串MyClass。类定义如下所示:
export class MyClass {
first: string;
last: string;
}
Run Code Online (Sandbox Code Playgroud)
我将界面增强更改为:
import { MyClass } from "../routes/myClass";
declare namespace Express {
export interface Request {
name: MyClass
}
}
Run Code Online (Sandbox Code Playgroud)
现在访问时出现以下错误req.name:
error TS2339: Property 'name' does not exist on type 'Request'.
Run Code Online (Sandbox Code Playgroud)
我发现,express.d.ts由于添加了import语句,我实际上变成了一个“模块” 。尽管如此,我还不清楚如何克服我的问题。
对于嵌套的复杂对象或数组,我想收集给定属性名称的所有值.例:
var structure = {
name: 'alpha',
array: [
{ name: 'beta' },
{ name: 'gamma' }
],
object: {
name: 'delta',
array: [
{ name: 'epsilon' }
]
}
};
// expected result: [ 'alpha', 'beta', 'gamma', 'delta', 'epsilon' ]
Run Code Online (Sandbox Code Playgroud)
很明显如何使用普通的JS实现这一点,但是:使用lodash是否有任何优雅,简洁的方法?
[编辑]下面的当前变体.更好的解决方案欢迎!
function getPropertyRecursive(obj, property) {
var values = [];
_.each(obj, function(value, key) {
if (key === property) {
values.push(value);
} else if (_.isObject(value)) {
values = values.concat(getPropertyRecursive(value, property));
}
});
return values;
}
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用iPOJO为Felix实现自定义shell命令.我的示例实现如下:
import java.io.PrintStream;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Provides;
import org.apache.felix.shell.Command;
@Component(immediate = true)
@Provides
public class SampleCommand implements Command {
@Override
public String getName() {
return "testcmd";
}
@Override
public String getUsage() {
return "testcmd";
}
@Override
public String getShortDescription() {
return "test command";
}
@Override
public void execute(String line, PrintStream out, PrintStream err) {
out.println("execute testcmd!");
}
}
Run Code Online (Sandbox Code Playgroud)
当我在Felix上部署Bundle时,我的SampleCommand被实例化并且getName()被调用.但是当我尝试在shell上执行"testcmd"时,我得到:
gogo: CommandNotFoundException: Command not found: testcmd
Run Code Online (Sandbox Code Playgroud)
还有什么需要考虑的问题吗?
我只是惊讶地发现,java.util.BitSet没有containsAll方法.我需要的是以下内容:
BitSet s1 = newBitSet(1, 2, 3, 4, 6);
BitSet s2 = newBitSet(1, 2, 3, 4);
BitSet s3 = newBitSet(1, 2, 3, 4, 5);
assertTrue(containsAll(s1, s2));
assertFalse(containsAll(s1, s3));
private static BitSet newBitSet(int... values) {
BitSet bitSet = new BitSet();
for (int value : values) {
bitSet.set(value);
}
return bitSet;
}
Run Code Online (Sandbox Code Playgroud)
实现containsAll方法的最佳变体是什么?有没有比这样迭代更优雅的方式?(从JavaDoc获取的wird迭代代码)
private static boolean containsAll(BitSet s1, BitSet s2) {
for (int i = s2.nextSetBit(0); i >= 0; i = s2.nextSetBit(i + 1)) {
if …Run Code Online (Sandbox Code Playgroud) java ×3
javascript ×2
osgi ×2
android ×1
annotations ×1
apache-felix ×1
bitset ×1
bouncycastle ×1
cryptography ×1
distributed ×1
dosgi ×1
eclipse ×1
flickr ×1
gnupg ×1
interface ×1
jersey ×1
jersey-2.0 ×1
locals ×1
lodash ×1
lucene ×1
maven ×1
module ×1
pom.xml ×1
pug ×1
recursion ×1
tags ×1
templates ×1
tycho ×1
typescript ×1