我正在使用C#和Json.NET.如果我有一个JObject,我想要一个对象内的键列表,类似于object.Keys()
返回对象中的键的方式.这似乎很明显,但我很难找到一种方法来做到这一点.
编辑: 我正在遍历对象,我想在我经历时吐出对象中的所有键.我意识到这个例子会导致多次看到相同的密钥,这对我的需求是可以的.
public void SomeMethod(JObject parent) {
foreach (JObject child in parent.Children()) {
if (child.HasValues) {
//
// Code to get the keys here
//
SomeMethod(child);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我希望我能以正确的方式提出这个问题.我正在学习Elastic MapReduce的方法,并且我看到了许多对"Aggregate"减速器的引用,它可以与"Streaming"作业流程一起使用.
在亚马逊的"Amazon Elastic MapReduce简介"PDF中,它声明"Amazon Elastic MapReduce有一个名为aggregrate的默认缩减器"
我想知道的是:还有其他默认减速机可用吗?
我知道我可以编写自己的减速机,但我不想写完已经存在的东西并"重新发明轮子",因为我确信我的轮子不会像原来那样好.
说我有以下任何一个数字:
230957或83487或4785
在Ruby中有什么方法我可以分别返回300000或90000或5000?
我有一个看起来像这样的函数:
private Timer timer = new Timer();
private void doSomething() {
timer.schedule(new TimerTask() {
public void run() {
doSomethingElse();
}
},
(1000));
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试为我的代码编写JUnit测试,并且特别是在测试此代码时,它们的行为并不像预期的那样.通过使用EclEmma,我能够看到我的测试从未触及过该doSomethingElse()
功能.
如何在JUnit中编写测试,TimerTask
在继续测试之前等待足够长的时间才能完成测试?
这是我的要求:
我需要使用AES加密(包括随机iv)在PHP中加密字符串,对其进行Base64编码,然后对其进行URL编码,以便将其作为URL参数传递.
我试图在PHP和Ruby中获得相同的结果,但我不能使它工作.
这是我的PHP代码:
function encryptData($data,$iv){
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$iv_size = mcrypt_enc_get_iv_size($cipher);
if (mcrypt_generic_init($cipher, 'g6zys8dlvvut6b1omxc5w15gnfad3jhb', $iv) != -1){
$cipherText = mcrypt_generic($cipher,$data );
mcrypt_generic_deinit($cipher);
return $cipherText;
}
else {
return false;
}
}
$data = 'Mary had a little lamb';
$iv = '96b88a5f0b9efb43';
$crypted_base64 = base64_encode(encryptData($data, $iv));
Run Code Online (Sandbox Code Playgroud)
这是我的Ruby代码:
module AESCrypt
def AESCrypt.encrypt(data, key, iv)
aes = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
aes.encrypt
aes.key = key
aes.iv = iv
aes.update(data) + aes.final
end
end
plaintext = "Mary had a little lamb"
iv = …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个Rails应用程序中使用Devise,我想让用户在登录或注册后回到原来的位置.
例如,如果我有一个"评论"控制器受以下保护:
before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)
然后我希望点击"立即评论"的用户!按钮(因此重定向到CommentsController中的新操作)登录,然后让Devise将它们重定向到CommentsController中的新操作(或者它们在哪里),而不是应用程序的通用根,或者通用的after_sign_in_path.
通过RDOC for Devise,我发现这个方法看起来好像Devise至少有能力独自完成这样的事情,但我无法找到方法.
我有一个Rails 3.0应用程序(工作在3.2升级),每当有人请求一个不存在的模板时,它会在生产中产生500错误.例如,mysite.com/blog_posts/532将ID为532的帖子作为HTML发送回来没有问题,但如果由于某种原因请求mysite.com/blog_posts/532.txt,该应用程序会引发500 ActionView :: MissingTemplate错误.
这不应该发生,因为模板首先不应该存在.它应该更恰当地是404错误,或者只是显示HTML模板.
如何让应用程序显示所有缺失模板错误的404错误,或显示默认的HTML模板而不是500?
日志:
Started GET "/blog_posts/73.txt" for 127.0.0.1 at 2013-05-20 21:22:51 -0400
Processing by BlogPostsController#show as TEXT
Parameters: {"id"=>"73"}
PK and serial sequence (2.0ms) SELECT attr.attname, seq.relname
FROM pg_class seq,
pg_attribute attr,
pg_depend dep,
pg_namespace name,
pg_constraint cons
WHERE seq.oid = dep.objid
AND seq.relkind = 'S'
AND attr.attrelid = dep.refobjid
AND attr.attnum = dep.refobjsubid
AND attr.attrelid = cons.conrelid
AND attr.attnum = cons.conkey[1]
AND cons.contype = 'p'
AND dep.refobjid = '"blog_posts_blog_tags"'::regclass
PK and custom sequence (1.0ms) …
Run Code Online (Sandbox Code Playgroud) Eclipse允许我编写这样的代码,并且不会显示任何错误:
for (SomeClass c : listOfSomeClass) if (c.someBoolean) {
// actions to take if someBoolean is true
}
Run Code Online (Sandbox Code Playgroud)
这会表现得如预期,还是这不是有效的Java?
我想要做的是使用'button_to'和朋友在linux服务器上启动不同的脚本.并非所有脚本都需要是root用户,但有些脚本将会运行"apt-get dist-upgrade"等等.
PassengerDefaultUser在apache2.conf中设置为www-data
我已经尝试从控制器运行脚本,这些脚本可以执行诸如写入文本文件之类的操作,以便我知道我正在让Rails正确执行脚本.(换句话说,我知道如何从控制器运行脚本)但我无法弄清楚如何运行需要root访问权限的脚本.有人能给我带头吗?
关于安全性的说明:感谢所有针对黑客行为的警告.但是,您不需要放松任何睡眠,因为A)无法从公共互联网访问webapp,它只能在私有内部网上访问,B)应用程序受密码保护,而C)因为用户不会能够提供自定义输入,只从表单中进行选择,该表单将作为变量传递给脚本.但是,因为我说这并不意味着我无视您的安全建议 - 我将在我的设计中非常仔细地考虑它们.
我现在正在学习Java,我在其中一个函数中有计时器,如下所示:
public class SomeClass {
private Timer timer = new Timer();
private void someFunction() {
timer.schedule(new TimerTask() {
public void run() {
// here lies the problem
}
},
1000);
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是调用另一个函数someOtherFunction(SomeClass c)
,该函数将参数作为参数SomeClass
.在计时器之外,我可以简单地说someOtherFunction(this)
,但在计时器内部不起作用,因为this
是TimerTask
.
我该怎么做才能获得SomeClass
计时器内部的实例?
我这里有一个非常简单的问题.我只想知道是否有现成的Rails方法来实现这一目标,因为我不想重新编写已经在框架中的东西.
想想一个像"this_is_an_example"这样的下划线变量名.有没有一种快速的方法可以使用Rails将其转换为"这是一个例子"甚至"这是一个例子"?我知道ActiveRecord打印表列名如"first_name"作为"First Name",它是如何做到的?
谢谢!
我正在使用will_paginate与博客帖子和标签之间的HABTM关系.每当我应用分页时,我都会显示重复的帖子,因为Rails中的HABTM不会保持数据库的唯一性,它会在进行查询时应用唯一性.
blog_posts.rb
has_and_belongs_to_many :tags, :uniq => true
tag.rb
has_and_belongs_to_many :blog_posts, :uniq => true
根据ActiveRecord 的文档,:uniq不会阻止存储重复的关系,它只是在构建查询时忽略它们.
这是问题:
tag = Tag.find(1)
tag.blog_posts.count
等于1,但是:
tag.blog_posts.page(nil).count
等于3,并且所有3都是同一帖子的重复.正确的行为应该只显示1,而不是重复.
我知道我可以复制这里生成的SQL查询并以这种方式修复它,但这似乎不是一个好的解决方案.有人可以帮我解决潜在的问题吗?(虽然我担心这是will_paginate中的一个错误)
编辑:这似乎也是Kaminari的一个问题.