小编qqi*_*ihq的帖子

分布式基础架构中的OSGi

我们正在开发基于OSGi的基础设施来处理基于流的数据流.具体的处理任务由各个OSGi组件执行.我们现在需要在不同的机器上分发这些组件的可能性,这意味着我们需要OSGi组件/容器之间的某种通信机制.

在我的研究中,我遇到了不同的潜在解决方案:R-OSGi,用于分布式OSGi的Apache CXF,Eclipse通信框架.

ECF似乎特别有趣,因为它支持不同的传输格式,并为服务发现等内容提供支持.

我的核心问题:

  • 在Felix中设置ECF基础设施是否有详细的教程/演练?(根据我的研究,我发现最近添加了Felix支持)
  • 除了上面列出的三个我可能错过的解决方案之外还有其他方案吗?
  • 是否有理由采用Apache CXF而不是ECF?

distributed osgi dosgi

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

NavigationService删除完整的后退导航

使用NavigationService.RemoveBackEntry()我可以从导航堆栈中删除一个条目.是否有一种方便的方法来删除我的应用程序中的所有后退导航项目(方案:我有一个由多个页面组成的注册过程,并且在成功注册后,我不希望用户导航回注册步骤).

windows-phone-8

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

Flickr API:什么是"视觉"标签?

在查询Flickr API并检查返回的标签时,我注意到我收到了Web界面上未显示的其他标签.例如,对于此图片:

http://www.flickr.com/photos/77060598@N08/12078886973

除了网页上显示的标签(尼康F2AS,尼康,黑白,B&W,山脉,德国,雪景,风景,天空,云),JSON响应包含标签vision:outdoor=0949vision:sky=051.

我假设,Flickr应用了一些计算机视觉处理来自动分配这些标签.我对这个假设是对的吗?我找不到有关这些标签的任何文档.是否有关于它们采用的算法和/或标签类型以及它们分配的数字含义的描述?

tags flickr asp.net-web-api

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

Jersey:使用百分比编码解码QueryParam

对于以下示例(使用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)

有没有理由,为什么只有+被自动转义?是否有一种简单的方法,可以使所有查询参数完全解码,而不必在每个方法的开头都这样做?

java jersey jersey-2.0

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

Pug / Jade获取给定模板中的所有变量

对于给定的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)

是否有可用的现成产品?优选地,一种解决方案将考虑所有特定于语言的特征,例如包括,扩展等。

templates locals pug

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

调用PGPOnePassSignature.verify时,签名长度不正确

我们正在使用一个名为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中.

我知道这是一个非常特殊的问题,一个库显然不是很有名.因此,我感谢任何一点反馈或输入.

java cryptography bouncycastle gnupg

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

动态设置清单时 PWA 安装提示

我们有一个满足 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 提示。然而,清单文件显然会被解释,例如当我尝试将应用程序添加到主屏幕时,iconstart_url被正确设置。

这里的任何经验是否manifest.json可以为 PWA 设置?我可能会错过什么吗?

javascript android progressive-web-apps manifest.json

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

将 Tycho“pomless”项目导入 Eclipse

我们有一个基于 Maven Tycho 的项目,最近我们删除了所有这些看似多余的pom.xml文件。命令行构建工作正常,因此这似乎是一个很好的改进,可以消除无用的混乱。

\n

后来我们发现这些项目不再能够轻松地导入到 Eclipse 中——至少不能像我们以前习惯的那样。到目前为止,我们使用了 import \xe2\x80\x9cExisting Maven Projects\xe2\x80\x9d 命令并pom.xml导入了包含 a 的所有目录。由于不再有pom.xml文件,因此这不起作用。D\xe2\x80\x99哦!

\n

将 pomless Tycho 项目导入 Eclipse 的推荐方法是什么\xe2\x80\x99?

\n

eclipse pom.xml tycho maven

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

Lucene:完全禁用加权,评分,排名,

我使用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需要很多时间。现在,我不需要对结果进行任何评分或排名,因为我只对绝对文件计数感兴趣。

是否有一种方便的方法(例如,预先存在的类)完全禁用计分和加权?如果没有,是否有任何提示需要针对用例扩展哪些类?

lucene

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

Typescript 自定义类型定义在导入类上中断

我有一个自定义的类型定义扩展现有接口(快递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语句,我实际上变成了一个“模块” 。尽管如此,我还不清楚如何克服我的问题。

module interface typescript

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

使用lodash递归收集属性的值

对于嵌套的复杂对象或数组,我想收集给定属性名称的所有值.例:

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)

javascript recursion lodash

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

使用iPOJO注释自定义Felix命令

我目前正在尝试使用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)

还有什么需要考虑的问题吗?

osgi annotations apache-felix

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

BitSet,没有containsAll,最好的解决方法?

我只是惊讶地发现,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 bitset

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