我一直在试验PostgreSQL和PL/V8,它将V8 JavaScript引擎嵌入到PostgreSQL中.使用这个,我可以查询数据库中的JSON数据,这非常棒.
基本方法如下:
CREATE or REPLACE FUNCTION
json_string(data json, key text) RETURNS TEXT AS $$
var data = JSON.parse(data);
return data[key];
$$ LANGUAGE plv8 IMMUTABLE STRICT;
SELECT id, data FROM things WHERE json_string(data,'name') LIKE 'Z%';
Run Code Online (Sandbox Code Playgroud)
使用,V8我可以将JSON数据解析为JS,然后返回一个字段,我可以将其用作常规的pg查询表达式.
但
在大型数据集上,性能可能是一个问题,因为我需要解析数据的每一行.解析器速度很快,但它肯定是过程中最慢的部分,每次都必须发生.
我试图制定出(到最后得到一个实际的问题)是,如果有一种方法可以缓存或预处理的JSON ......即使存储JSON表中的二进制表示,可以由V8使用自动作为JS对象可能是一个胜利.我已经看过使用替代格式,例如messagepack或protobuf,但我不认为它们在任何情况下都必须与原生JSON解析器一样快.
思想
PG有blob和二进制类型,因此数据可以以二进制形式存储,然后我们只需要一种方法将其编组到V8中.
我有一个带有悬停风格的可拖动div元素.这工作正常,但div包含一些表单元素(标签,输入).问题是,当鼠标悬停在这些子元素上时,将禁用悬停.
<div class="app_setting">
<label">Name</label>
<input type="text" name="name"/>
</div>
.app_setting:hover {
cursor:move;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何让悬停也适用于子元素?
在使用Rails 3.1 Asset Pipeline时,有没有办法强制每次请求重新生成资产?
当使用带有一系列partials和mixin文件的Less(less-rails)时,我在让系统获取文件更改时遇到问题.如果我可以强制系统在每个请求上生成,那么我的工作效率会更高.
我想开始使用带有node.js部署的Cassandra,但我找不到Node.js和/或JavaScript的Thrift或Cassandra客户端.
有吗?
有没有简单的方法来生成Thrift连接?
更新:对这个问题的简短回答结果证明是,没有与Thrift兼容的Cassandra的JS客户端.
进一步更新: Cassandra的下一个版本(撰写本文时为0.8)将支持Avro API.已有node.js模块用于Avro支持.
您是否建议使用任何工具来进行Web应用程序的安全性测试?
我使用过OWASP的WebScarab,但发现它使用起来有点困难和笨拙.
你还建议使用其他更好的东西吗?
任何人都有任何用于访问javascript对象的idiomatic clojurescript的文档(作为json返回,本质上是哈希)?
我有一个通过AJAX请求返回的JSON对象:
{
list: [1,2,3,4,5],
blah: "vtha",
o: { answer: 42 }
}
Run Code Online (Sandbox Code Playgroud)
如何使用clojurescript访问这些字段?
我可以:
(.-list data)
Run Code Online (Sandbox Code Playgroud)
但是当我有嵌套值和对象时,它是如何工作的?
(.-answer (.-o data))
Run Code Online (Sandbox Code Playgroud)
以上似乎非常笨拙,特别是考虑到良好的js语法:data.o.answer.
用clojurescript访问json对象的惯用方法是什么?
注意:
我意识到我实际上可以使用JS语法来引用元素,这实际上非常方便.所以以下内容将正常工作:
(str data.o.answer)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Cloud Formation在我的CloudFrontDistribution中设置证书.
我的证书已通过证书管理器发出.它已被批准,我已经验证证书可以通过CloudFront控制台直接手动配置.
在我的CloudFormation模板中,我尝试在IamCertificateId属性中使用与证书关联的标识符和ARN值:
"ViewerCertificate" : {
"IamCertificateId" : "********",
"SslSupportMethod": "sni-only"
}
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下我都收到以下错误:
The specified SSL certificate doesn't exist, isn't valid, or doesn't include a valid certificate chain.
Run Code Online (Sandbox Code Playgroud)
阅读DistributionConfig Complex Type的文档,看起来有一个'ACMCertificateArn'属性,但这似乎不适用于CloudFormation.
任何帮助,将不胜感激.
ssl ssl-certificate amazon-web-services amazon-cloudfront aws-cloudformation
是否存在使用某种Object Store的ActiveRecord的替代品?
我在想像Erlang的MNesia是理想的.
更新
我一直在调查CouchDB,我认为这是我要选择的选项.这是使用CouchRest和ActiveCouch之间的折腾.CouchRest非常成熟,并且在CouchDB peepcode插曲中使用,但它不是ActiveRecord的替代品,这有点不利.
我只想说CouchDB是非常惊人的.
更新(2009年11月10日)
CouchDB并没有真正为我工作.CouchDB并不真正支持任意查询(需要提前编写和编译查询).它还打破了非常大的数据集.
我一直在玩MongoDB,这真的很不可思议.具有查询和索引的无架构JSON数据存储.
我甚至开始为它建立一个名为Ming的管理工具.
我试图理解我在Clojure中注意到的一些行为.
可以使用重复多次的相同绑定名创建let绑定:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
Run Code Online (Sandbox Code Playgroud)
我明白让绑定进行评估,这一切都很有意义.
我对文档的理解是"用let创建的本地人不是变量.一旦创建,他们的价值观永远不会改变!"
上述语法是否实际更改了绑定的值?
这感觉它应该引发错误.
作为一种旁注:
有趣的是,您可以使用clojurescript输出上面的JS:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
Run Code Online (Sandbox Code Playgroud)
在这里我们可以看到,这些值实际上都是不同的变量,它们指向了封面下发生的事情,但是一些澄清将非常有用.
我有一个生产服务器和一个临时服务器,在将它们投入生产之前测试新功能.登台服务器在物理上与生产服务器不同(具有不同URL的不同主机),但它尽可能地模仿它(即相同的包,相同的宝石等).
Rails.env = 'production' 在两台服务器上.
我的问题是,在某些情况下,我需要不同于生产中的不同行为.
例如,新功能可能会在生产时向用户发送大量电子邮件; 但是当我测试它时,我宁愿将它们发送到"测试"电子邮件帐户.
检测我所在服务器的最佳方法是什么?
我想尽可能地"raily".
非常感谢.