我正在使用本教程中描述的身份验证/授权机制构建休息服务: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) 我正在尝试使用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) 考虑一个用 vanilla JS 编写的单页应用程序(以避免特定于框架的答案)。
我有一个默认加载 Intercom 的应用程序,但我想在特定页面中隐藏小部件。
这应该可以从 Intercom 本身实现,如帮助中心的这篇文章所示,但它在单页应用程序中并不真正起作用 - 无论在 Intercom 中配置什么,都会显示小部件。
一种选择是在页面上找到小部件并为给定页面手动隐藏它,但这感觉、听起来和味道都像是一种黑客攻击(当返回小部件应该出现的页面时,它需要重新启用小部件) .
那么,关于如何为 SPA 做到这一点,有什么好的做法吗?
我的表中有两个 TIMESTAMP 列:customer_birthday 和purchase_date。我想创建一个查询来显示按客户年龄划分的购买数量,以创建图表。
但如何使用 BigQuery 计算年龄(以年为单位)?换句话说,如何获得两个 TIMESTAMP 之间的年份差异?由于闰年,无法使用天或小时进行年龄计算,因此该函数DATEDIFF(<timestamp1>,<timestamp2>)
不合适。
谢谢。
我正在尝试创建一个正则表达式的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) 我需要做的是从我的内部存储库(当前是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
不存在.
那么,有什么想法吗?
谢谢.
考虑这个架构:
key: REQUIRED INTEGER
description: NULLABLE STRING
field: REPEATED RECORD {
field.names: REQUIRED STRING
field.value: NULLABLE FLOAT
}
Run Code Online (Sandbox Code Playgroud)
其中:key
table是唯一的,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) 我有以下架构:
[
{
'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中的所有列值
那可能吗?
谢谢.
我看了几个答案和论坛的解决方案,但我找不到一个有效的.
我有这种情况:
~/.ssh
文件夹上有两个ssh键我创建了一个~/.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在单个项目中使用我的二级密钥?