小编Gil*_*zan的帖子

什么是Resteasy 3.X PreProcessInterceptor的正确替代品?

我正在使用本教程中描述的身份验证/授权机制构建休息服务:http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/

基本上它使用PreProcessInterceptor接口来扫描目标方法的注释(来自javax.annotation.security包),该方法描述了访问该方法所需的角色.由于此处的验证器是拦截器,它可以取消目标方法调用,如果需要则返回401(未授权).

这里的问题是在当前的RestEasy版本(3.0.1)中不推荐使用接口org.jboss.resteasy.spi.interception.PreProcessInterceptor,并且我在尝试使用标准JAX-RS接口实现相同的行为时遇到了问题.

我正在使用javax.ws.rs.ext.ReaderInterceptor接口来拦截调用.但不知何故,服务器从不调用它:拦截器只是被忽略了.

我正在使用与之前的PreProcessInterceptor相同的方式注册拦截器/资源,并使用相同的@Provider和@ServerInterceptor注释:

ServerApplication:

public class ServerApplication extends javax.ws.rs.core.Application {

     private final HashSet<Object> singletons = new LinkedHashSet<Object>();

     public ServerApplication() {
         singletons.add(new SecurityInterceptor());
         singletons.add( ... ); //add each of my rest resources
     }

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> set = new HashSet<Class<?>>();
        return set;
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}
Run Code Online (Sandbox Code Playgroud)

SecurityInterceptor:

@Provider
@ServerInterceptor
public class SecurityInterceptor implements javax.ws.rs.ext.ReaderInterceptor {
     @Override
     public Object aroundReadFrom(ReaderInterceptorContext context){
            //code that is …
Run Code Online (Sandbox Code Playgroud)

java rest jax-rs resteasy

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

从Linux 64位访问javax.smartcardio

我正在尝试使用javax.smartcardio API加载智能卡终端,代码如下:

public CardTerminal getReadyCardTerminal() throws CardException {

    TerminalFactory factory = TerminalFactory.getDefault();
    CardTerminals terminals = factory.terminals();
    List<CardTerminal> list = terminals.list(State.CARD_PRESENT);

    while (list.isEmpty()) {
        terminals.waitForChange(1000);
        list = terminals.list(State.CARD_PRESENT);
    }
    CardTerminal cardTerminal = list.get(0);
    return cardTerminal;
}
Run Code Online (Sandbox Code Playgroud)

...而且我总是得到以下异常:

java.lang.IllegalStateException: no terminals
at javax.smartcardio.TerminalFactory$NoneCardTerminals.waitForChange(TerminalFactory.java:145)
Run Code Online (Sandbox Code Playgroud)

在Windows Vista/7上一切正常,但我不能让它在Linux上运行.我正在使用Ubuntu 12.04 64位.

我使用以下命令安装了pcscd服务:

sudo apt-get install libccid pcscd libpcsclite-dev libpcsclite1
sudo service pcscd start
Run Code Online (Sandbox Code Playgroud)

pcsc_scan命令打印出来:

PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.7.4
Using reader plug'n play mechanism
Scanning …
Run Code Online (Sandbox Code Playgroud)

java smartcard pcsc

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

如何在单页应用程序 (SPA) 的特定页面中隐藏对讲机聊天小部件?

考虑一个用 vanilla JS 编写的单页应用程序(以避免特定于框架的答案)。

我有一个默认加载 Intercom 的应用程序,但我想在特定页面中隐藏小部件。

这应该可以从 Intercom 本身实现,如帮助中心的这篇文章所示,但它在单页应用程序中并不真正起作用 - 无论在 Intercom 中配置什么,都会显示小部件。

一种选择是在页面上找到小部件并为给定页面手动隐藏它,但这感觉、听起来和味道都像是一种黑客攻击(当返回小部件应该出现的页面时,它需要重新启用小部件) .

那么,关于如何为 SPA 做到这一点,有什么好的做法吗?

javascript single-page-application intercom

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

如何在 BigQuery 中计算年龄?

我的表中有两个 TIMESTAMP 列:customer_birthday 和purchase_date。我想创建一个查询来显示按客户年龄划分的购买数量,以创建图表。

但如何使用 BigQuery 计算年龄(以年为单位)?换句话说,如何获得两个 TIMESTAMP 之间的年份差异?由于闰年,无法使用天或小时进行年龄计算,因此该函数DATEDIFF(<timestamp1>,<timestamp2>)不合适。

谢谢。

google-bigquery

8
推荐指数
2
解决办法
8958
查看次数

正则表达式javascript拆分

我正在尝试创建一个正则表达式的javascript拆分,但我完全卡住了.这是我的意见:

9:30 pm
The user did action A.

10:30 pm
Welcome, user John Doe.

***This is a comment

11:30 am
This is some more input.
Run Code Online (Sandbox Code Playgroud)

我希望split()之后的输出数组是(\n为了便于阅读,我删除了它):

["9:30 pm The user did action A.", "10:30 pm Welcome, user John Doe.", "***This is a comment", "11:30 am This is some more input." ];
Run Code Online (Sandbox Code Playgroud)

我目前的正则表达式是:

var split = text.split(/\s*(?=(\b\d+:\d+|\*\*\*))/);
Run Code Online (Sandbox Code Playgroud)

这有效,但有一个问题:时间戳在额外的元素中重复.所以我得到:

["9:30", "9:30 pm The user did action A.", "10:30",  "10:30 pm Welcome, user John Doe.", "***This is a comment", "11:30", "11:30 …
Run Code Online (Sandbox Code Playgroud)

javascript regex split

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

如何使用Maven将具有依赖关系的工件下载到指定目录(没有pom.xml)?

我需要做的是从我的内部存储库(当前是Nexus)及其所有依赖项下载一个工件到指定的目录.而且没有实际下载源代码(并使用它pom.xml):我需要从shell运行一个普通的maven命令并访问我的存储库中的二进制文件.

我不需要将依赖项下载到我的本地存储库(依赖项的行为:get/dependency:copy plugins),我希望将工件AND及其所有依赖项复制到指定的目录.

像这样的东西:

mvn super-downloader:download-everything -Dartifact=my.group:myArtifact:version -Ddirectory=.
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

依赖:get依赖:复制插件将依赖项复制到我的本地存储库(在〜/ .m2下),这不是我想要的.

依赖:copy-dependencies需要maven项目.我需要在没有pom.xml的情况下运行该命令.

com.googlecode.maven-download-plugin:maven-download-plugin:artifact plugin应该可以使用-DdependencyDepth=<some high value>,但它无法尝试解析依赖关系xerces:xerces-impl:2.6.2.我手动将其上传到我的Nexus,但后来尝试查找失败,但xml-apis:xml-apis:2.6.2不存在.

那么,有什么想法吗?

谢谢.

java maven

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

从多个重复字段中获取数据时,是否自行加入BigQuery的方式?

考虑这个架构:

key: REQUIRED INTEGER
description: NULLABLE STRING
field: REPEATED RECORD {
    field.names: REQUIRED STRING
    field.value: NULLABLE FLOAT
}
Run Code Online (Sandbox Code Playgroud)

其中:keytable是唯一的,field.names实际上是以逗号分隔的属性列表("property1","property2","property3"......).

样本数据集(不注意实际值,它们仅用于演示结构):

{"key":1,"description":"Cool","field":[{"names":"\"Nice\",\"Wonderful\",\"Woohoo\"", "value":1.2},{"names":"\"Everything\",\"is\",\"Awesome\"", "value":20}]}
{"key":2,"description":"Stack","field":[{"names":"\"Overflow\",\"Exchange\",\"Nice\"", "value":2.0}]}
{"key":3,"description":"Iron","field":[{"names":"\"The\",\"Trooper\"", "value":666},{"names":"\"Aces\",\"High\",\"Awesome\"", "value":333}]}
Run Code Online (Sandbox Code Playgroud)

我需要的是一种查询多次值的方法field.names.输出应该是这样的:

+-----+--------+-------+-------+-------+-------+
| key |  desc  | prop1 | prop2 | prop3 | prop4 |
+-----+--------+-------+-------+-------+-------+
| 1   | Desc 1 | 1.0   | 2.0   | 3.0   | 4.0   |
| 2   | Desc 2 | 4.0   | 3.0   | 2.0   | 1.0   |
| ... …
Run Code Online (Sandbox Code Playgroud)

google-bigquery

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

在BigQuery上连接嵌套字段的值

我有以下架构:

[
   {
        'name': 'id',
        'type': 'INTEGER' 
   }
   {
        'name': 'record',
        'type': 'RECORD',
        'fields': [
            {
                'name': 'repeated',
                'type': 'STRING',
                'mode': 'REPEATED'
            }
         ]
   }
]
Run Code Online (Sandbox Code Playgroud)

以下数据:

+--------------------+
|id??|record.repeated|
+--------------------+
|1???|'a'????????????|
|????|'b'????????????|
|????|'c'????????????|
+--------------------+
|2???|'a'????????????|
|????|'c'????????????|
+--------------------+
|3???|'d'????????????|
+--------------------+
Run Code Online (Sandbox Code Playgroud)

我需要的是创建一个返回此的查询:

+--------------------+
|id??|record.repeated|
+--------------------+
|1???|'a,b,c'????????|
+--------------------+
|2???|'a,c'??????????|
+--------------------+
|3???|'d'????????????|
+--------------------+
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要查询,允许我使用分隔符(在本例中为逗号)连接嵌套字段的值.类似于MySQL 的GROUP_CONCAT函数,但是在BigQuery上.

相关的想法:concat在sql中的所有列值

那可能吗?

谢谢.

google-bigquery

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

如何在Eclipse上使用多个Git SSH密钥?

我看了几个答案和论坛的解决方案,但我找不到一个有效的.

我有这种情况:

  • Eclipse Luna Service Release 2(4.4.2)
  • Ubuntu 14.04 x64
  • 我的~/.ssh文件夹上有两个ssh键
  • 两个bitbucket帐户(一个用于个人项目,一个用于企业)
  • 只能使用我的主键访问的git存储库(〜/ .ssh/id_rsa)
  • 只能使用我的辅助密钥访问的git存储库(〜/ .ssh/other)

我创建了一个~/.ssh/config包含以下内容的文件:

Host bitbucket bitbucket.org
    Hostname bitbucket.org
    IdentityFile ~/.ssh/id_rsa
    IdentityFile ~/.ssh/other
    User git
Run Code Online (Sandbox Code Playgroud)

为了理智,我还添加了第二个密钥ssh-add.运行ssh-add -l列出两个键.

使用命令行时,所有git命令都像魅力一样,具有两个存储库.但是在使用Eclipse时,我总是Invalid remote: origin在尝试使用辅助密钥克隆或从存储库中提取时出错:

Caused by: org.eclipse.jgit.errors.NoRemoteRepositoryException: git@bitbucket.org:myuser/myrepository.git: conq: repository access denied.
Run Code Online (Sandbox Code Playgroud)

我添加了二级密钥Window > Preferences > Network Connections > SSH2 > Private keys,并将GIT_SSH环境变量设置为指向我的ssh可执行文件:

$echo $GIT_SSH
/usr/bin/ssh
Run Code Online (Sandbox Code Playgroud)

我已经多次重启Eclipse甚至操作系统,没有运气.

由于我可以毫无问题地从命令行使用git,我倾向于认为Eclipse存在问题.

如何在Eclipse上使用多个Git SSH密钥?或者如何强制Eclipse在单个项目中使用我的二级密钥?

eclipse git ssh

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