我有这个XML文件,我想从中计算它中引用的用户数.但它们可以出现在多个类别中,我希望这些重复项不被考虑在内.
在下面的示例中,查询应该返回3而不是4.在XPath中是否有办法这样做?用户根本没有排序.
<list>
<group name='QA'>
<user name='name1'>name1@email</user>
<user name='name2'>name2@email</user>
</group>
<group name='DEV'>
<user name='name3'>name3@email</user>
<user name='name2'>name2@email</user>
</group>
</list>
Run Code Online (Sandbox Code Playgroud) 我在IE11中对element.innerHTML有非常奇怪的行为.
正如您在那里看到的那样:http://pe281.s3.amazonaws.com/index.html,某些riotjs
表达式未被评估.
我已将其追踪到两件事:
- 欧元符号在它之上.它被编码为€
,但我和\u20AC
or 有相同的行为€
.它适用于货币符号范围内的所有字符以及其他一些范围.删除或使用标准字符不会导致问题.
- riotjs
创建自定义标记和模板的方式.基本上这样做:
var html = "{reward.amount.toLocaleString()}<span>€</span>{moment(expiracyDate).format('DD/MM/YYYY')}";
var e = document.createElement('div');
e.innerHTML = html;
Run Code Online (Sandbox Code Playgroud)
在结果e
节点中,e.childNodes
返回以下数组:
[0]: {reward.amount.toLocaleString()}
[1]: <span>€</span>
[2]: {
[3]: moment(expiracyDate).format('DD/MM/YYYY')}
Run Code Online (Sandbox Code Playgroud)
显然,节点2和3应该只有一个.让他们分裂让暴乱无法识别要评估的表达,因此问题.
但还有更多:问题不一致,例如无法在小提琴上复制:https://jsfiddle.net/5wg3zxk5/4/,其中html字符串被正确解析.
所以我想我的问题是一些特定字符如何改变element.innerHTML解析其输入的方式?怎么解决?
我想选择不存在特定属性的节点.我尝试过Not()函数,但它不起作用.有办法吗?
示例:以下Xpath查询:
group/msg[not(@owner)]
Run Code Online (Sandbox Code Playgroud)
应该检索第一个节点而不是第二个节点.但是,SketchPath(测试Xpath查询的工具)和我的C#代码都认为2个节点都可以.
<group>
<msg id="EVENTDATA_CCFLOADED_XMLCONTEXT" numericId="14026" translate="False" topicId="302" status="translated" >
<text>Context</text>
<comment></comment>
</msg>
<msg id="EVENTDATA_CCFLOADED_XMLCONTEXT_HELP" numericId="14027" translate="False" topicId="302" status="translated" owner="EVENTDATA_CCFLOADED_XMLCONTEXT" >
<text>Provides the new data displayed in the Object.</text>
<comment></comment>
</msg>
</group>
Run Code Online (Sandbox Code Playgroud)
事实上,Not()函数正常工作,只是我有其他条件和圆括号未正确设置.errare humanum est.
我想测试我的类的方法A,但是没有调用通常由A调用的实际方法B.那是因为B有很多外部交互,我现在不想测试.
我可以为B调用的所有服务创建模拟,但这是相当有用的.我宁愿只是模拟B并让它返回样本数据.
这可能与Moq框架有关吗?
我对包含类型列的表有这个简单的查询bigint
.
但是当我查询它时,pg-promise将此列的值作为字符串返回.我在文档中找不到相关信息.这是标准行为吗?
var ids = [180, 120];
db.any('SELECT id_brand, brand from catalog_brand WHERE id_brand in ($1:csv)', [ids])
.then((data) => {
// return results
});
Run Code Online (Sandbox Code Playgroud)
data
采用以下形式,id为string而不是int:
[{id_brand: "180", brand: "Ford"}, {id_brand: "120", brand: "Nike"}]
Run Code Online (Sandbox Code Playgroud)
有没有什么可以指示pg-promise返回实际类型?
我有一个Logstash实例作为服务运行,从Redis读取并输出到Elasticsearch.我刚刚注意到最近几天Elasticsearch没有什么新内容,但Redis列表正在增加.
Logstash日志中填充了重复数千行的2个错误:
:message=>"Got error to send bulk of actions"
:message=>"Failed to flush outgoing items"
Run Code Online (Sandbox Code Playgroud)
原因是:
{"error":"IllegalArgumentException[Malformed action/metadata line [107], expected a simple value for field [_type] but found [START_ARRAY]]","status":500},
Run Code Online (Sandbox Code Playgroud)
此外,尝试停止服务反复失败,我不得不杀死它.重新启动它会清空Redis列表并将所有内容导入Elasticsearch.现在似乎工作正常.
但我不知道如何防止再次发生这种情况.提到的type
字段被设置为每个输入指令的字符串,所以我不明白它如何成为一个数组.
我错过了什么?
我正在使用Elasticsearch 1.7.1和Logstash 1.5.3.该logstash.conf
文件如下所示:
input {
redis {
host => "127.0.0.1"
port => 6381
data_type => "list"
key => "b2c-web"
type => "b2c-web"
codec => "json"
}
redis {
host => "127.0.0.1"
port => 6381
data_type => "list"
key => "b2c-web-staging"
type => "b2c-web-staging"
codec …
Run Code Online (Sandbox Code Playgroud) 我有一个代表页面正文的字符串,我想解析一些元素.我相信(随意反驳我)最好的方法是创建一个空文档,然后添加正文并使用标准的JS方法来获得我想要的东西.
但我似乎无法将正文添加到文档中.在chrome中,以下代码在第2行失败NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
.
var dom = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
dom.firstChild.innerHTML = "<body><p>Hello world</p></body>";
Run Code Online (Sandbox Code Playgroud)
有没有办法实现我想要的?
我有一个名为Entree的模型,其中new
action需要一个参数,另一个名为Cave的模型的id .我不想在洞穴中嵌入Entree,因为Cave已经嵌套了.
我所做的是将资源Entree声明如下routes.rb
:
resources :entrees, :except => [:new]
match "/entrees/new/:id", :to => "Entrees#new", :as => 'new_entree'
Run Code Online (Sandbox Code Playgroud)
这是有效的,但问题是当操作中出现错误时create
,我想再次使用无效输入显示页面.但由于没有new
动作,我必须做一个redirect_to new_entree_path
,这不会保留用户输入.
我尝试过以下(最简单)的路线:
resources :entrees
Run Code Online (Sandbox Code Playgroud)
但是然后路径http://localhost:3000/entrees/new/32
返回一个错误:
No route matches [GET] "/entrees/new/32"
问题是,如何在路径文件中使用new
操作参数声明Entree资源?
我需要将p3p标头添加到标准Nodejs和Nginx Elastic Beanstalk上的静态资源位置.
我已经ebextension
按照这个问题的解释创建了一个脚本.该脚本使用sed add_header
在该alias
行下添加一个指令,该指令位于静态位置指令下.它运行在/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
文件上.
该脚本不仅修改了文件,还将其复制到"安全"位置,即/ home/ec2-user.根据/var/log/cfn-init.log
,脚本运行正常.作为证据,修改后的文件副本在正确的位置显示附加标题.但该/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
文件没有这个修改.
我只能推断出虽然我的脚本运行良好,但部署过程中的其他内容会覆盖它.这很奇怪,因为根据文档容器命令是在设置应用程序和Web服务器之后运行的,所以我看不出它是什么.
那么/什么覆盖这个文件,我该如何防止这种情况?
我有这个在 Elastic Beanstalk 中运行的 Nodejs 应用程序。我想在应用程序退出时进行一些清理(例如部署新版本,重新启动应用程序服务器)。为此,我正在收听一些事件和信号,但似乎没有一个被触发。这是来自app.js的代码:
process.on("SIGTERM", function() {
console.log("SIGTERM, clean");
process.exit(0);
});
process.on("exit", function(code) {
console.log("Process exiting with code " + code);
});
process.on("uncaughtException", function() {
console.log("Unhandled exception occurred);
process.exit(99);
});
Run Code Online (Sandbox Code Playgroud)
当我通过管理控制台重新启动应用程序时,我在日志中看不到任何内容,即使创建了一个新节点进程并杀死了旧节点进程。
如果我手动终止进程,我可以在输出中看到日志消息。这是否意味着 Beanstalk 触发的事件不会发送终止信号?如果是这样,如何优雅地退出?
编辑:这是更多调查的结果。Beanstalk 使用 Upstart 来管理应用程序。在 /etc/init/nodejs 中,有这一行:
exec su -s /bin/sh -c 'PATH=$PATH:$NODE_HOME/bin $EB_NODE_COMMAND 2>&1' nodejs >> /var/log/nodejs/nodejs.log
Run Code Online (Sandbox Code Playgroud)
哪个运行npm start
,它使用package.json配置启动应用程序。这是我拥有的进程树:
root 29155 su -s /bin/sh -c PATH=$PATH:$NODE_HOME/bin $EB_NODE_COMMAND 2>&1 nodejs
nodejs 29156 \_ sh -c PATH=$PATH:$NODE_HOME/bin $EB_NODE_COMMAND 2>&1 …
Run Code Online (Sandbox Code Playgroud) signals amazon-web-services node.js amazon-elastic-beanstalk