我有一个控制器动作,为api目的返回JSON数据,还有很多.我希望能够在浏览器中检查它,并为观众提供良好的缩进.例如,如果我的数据是
data = { :person => { :id => 1, :name => "john doe", :age => 30 }, :person => ... }
Run Code Online (Sandbox Code Playgroud)
我想看看
{ "person" :
{
"id" : 1,
"name" : "john doe",
"age" : 30,
},
"person" :
{
"id" : 2,
"name" : "jane doe",
"age" : 31,
},
...etc
}
Run Code Online (Sandbox Code Playgroud)
在视图中.
我想过使用不同的路径来获取批量/漂亮的数据:
# GET /api/json
# ...
respond_to do |format|
format.html { render :json => data.to_json }
end
# GET /api/json/inspect
# ...
respond_to do |format| …Run Code Online (Sandbox Code Playgroud) 我正在玩 django 并构建了一个小应用程序,用户可以在其中通过 url http:///localhost:8000/username/info/访问他们的信息。我想添加通过http:///localhost:8000/username/info/edit/编辑该信息的功能,但还想确保当前登录的用户(使用 django.contrib.auth)只能访问他的信息。我通过在视图中执行以下操作来完成此操作(视图 args 中的用户名是从 url 中捕获的):
@login_required
def edit_info(request, username=''):
if request.user.username == username:
# allow accessing and editing the info..
else:
# redirect to some error page
Run Code Online (Sandbox Code Playgroud)
所以,显然,我不希望用户“johnny”通过简单地将他的浏览器指向/jimmy/info/edit/来编辑属于用户“jimmy”的信息。以上工作,但我担心的是,就安全而言,我在这里遗漏了一些东西。这是解决这个问题的正确方法吗?谢谢。
作为家庭作业的一部分,我试图从stdin读取一个字符,并根据它行事:
char choice;
while (1) {
printf("please enter [y]es, [n]o or [m]aybe: ");
scanf("%c", choice);
fflush(stdin);
// validate input
if (choice == 'y' || choice == 'n' || choice == 'm') {
break;
} else {
printf("Please enter only \'y\', \'n\' or \'m\'!\n");
}
}
// do something with the input
if (choice == 'y') {
printf("you selected yes!\n");
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,scanf捕获了char和line-feed之后,因此它继续对输入执行某些操作,然后还打印"请仅输入'y','n'或'm'!" 线.如果我在stdin上输入几个字符,它将为所有字符打印该行,同时也为第一个字符正确执行.所以,例如:
$ ./run
please enter [y]es, [n]o or [m]aybe: y<return>
you selected yes!
Please enter only 'y', 'n' or …Run Code Online (Sandbox Code Playgroud) 我有一个位于RAILS_ROOT/lib文件夹中的类,我在其中一个帮助器中使用它,它在开发中很有用.
当我切换到生产时,应用程序抛出一个NameError (uninitialized constant SomeHelper::SomeClass),我必须在帮助器中手动加载它:
load "#{Rails.root}/lib/some_class.rb"
module SomeHelper
def some_method
sc = SomeClass.new
# blah
end
end
Run Code Online (Sandbox Code Playgroud)
我的印象是RAILS_ROOT/lib/*里面的所有内容都应该可以在应用程序中使用 - 我需要配置什么才能在prod模式下实现这一点?谢谢.
我是Hadoop的新手,我只是运行wordCount示例:http://hadoop.apache.org/common/docs/r0.18.2/mapred_tutorial.html
假设我们有一个包含3个文件的文件夹.我希望每个文件都有一个映射器,这个映射器只计算行数并将其返回到reducer.
然后,reducer将输入每个映射器的行数作为输入,并将所有3个文件中存在的总行数作为输出.
所以,如果我们有以下3个文件
input1.txt
input2.txt
input3.txt
Run Code Online (Sandbox Code Playgroud)
并且映射器返回:
mapper1 -> [input1.txt, 3]
mapper2 -> [input2.txt, 4]
mapper3 -> [input3.txt, 9]
Run Code Online (Sandbox Code Playgroud)
减速器将输出
3+4+9 = 16
Run Code Online (Sandbox Code Playgroud)
我在一个简单的java应用程序中完成了这个,所以我想在Hadoop中完成它.我只有一台计算机,并希望尝试在伪分布式环境中运行.
我怎样才能实现这个目标?我应该采取什么适当的措施?
我的代码应该在apache的示例中看起来像那样吗?我将有两个静态类,一个用于mapper,一个用于reducer?或者我应该有3个类,每个映射器一个?
如果你能指导我完成这个,我不知道如何做到这一点,我相信如果我设法编写一些代码来做这些东西,那么我将来能够编写更复杂的应用程序.
谢谢!
我有一个白色背景的png图像,我想将其变为透明。这是相当简单的用这个命令:
$ convert image.png -transparent white image-trans.png
Run Code Online (Sandbox Code Playgroud)
但是,如果白色背景不完全是白色的(即#FFFFFF,rgb(255,255,255)等等),那么这并不能很好的工作。
有没有办法将所有颜色降低到一定阈值以下才能完成白色处理?谢谢。
我想构建一个表单的查询:
select * from some_table
where
(field1 = 'x' or field2 = 'y')
and
(field3 = 'z' or field4 = 'w')
Run Code Online (Sandbox Code Playgroud)
从阅读文档,我认为它应该看起来像这样Mongoid:
SomeTable.or({:field1 => 'x'}, {:field2 => 'y'})
.and # or is it .intersect?
.or({:field3 => 'z'}, {:field4 => 'w'})
Run Code Online (Sandbox Code Playgroud)
但那不起作用 - mongo选择器只是所有字段的"$或".这样做的正确方法是什么?谢谢.
我也很欣赏它的反转,例如 - 如何执行此查询:
select * from some_table
where
(field1 = 'x' and field2 = 'y')
or
(field3 = 'z' and field4 = 'w')
Run Code Online (Sandbox Code Playgroud) 我正在使用一个API,它强制我多次发送相同参数的名称以级联不同的过滤条件.所以示例api GET调用如下所示:
GET http://api.site.com/search?a=b1&a=b2&a=b3&a=c2
Run Code Online (Sandbox Code Playgroud)
我正在使用Faraday作为我的REST适配器,它将其URL参数作为哈希(因此 - 它具有唯一键).这意味着我不能做这样的事情:
response = Faraday.new({
url: 'http://api.site.com/search'
params: { a: 'b1', a: 'b2', a: 'b3', a: 'c2' } # => nay
}).get
Run Code Online (Sandbox Code Playgroud)
我在发送请求之前试图破解网址:
connection = Faraday.new(url: 'http://api.site.com/search')
url = connection.url_prefix.to_s
full_url = "#{ url }?a=b1&a=b2&a=b3&a=c2"
response = connection.get( full_url )
Run Code Online (Sandbox Code Playgroud)
哪个不起作用 - 当我调试响应时,我看到发送到API服务器的实际url是:
GET http://api.site.com/search?a[]=b1&a[]=b2&a[]=b3&a[]=c2
Run Code Online (Sandbox Code Playgroud)
我无法更改API.有没有办法继续与法拉第合作并以优雅的方式解决这个问题?谢谢.
在Backbone.js,可以使用预先存在的JSON数据来实例化模型
var user = new Backbone.Model({ name: "John Doe", age: 30 });
Run Code Online (Sandbox Code Playgroud)
然后通过一次调用执行更新
user.save({ age: 31 }, { success: successCallback, error: errorCallback });
Run Code Online (Sandbox Code Playgroud)
这在各种场景中都很方便,例如当客户端通过缓存或预先填充的模板(例如<%= raw @user.to_json %>在rails erb模板中使用)可以获得该数据时.
我很好奇,想知道使用时,如何做到这一点$resource用Angular.js.现在,我有一种情况,我的数据在$resource创建之前缓存在客户端上,并且我想更新它而不需要额外GET调用来填充对象:
app.factory('User', ['$resource', function($resource) {
return $resource('/users/:user_id.json', { user_id: '@id' }, {
get: { method: 'GET' },
save: { method: 'PUT' },
create: { method: 'POST' },
destroy: { method: 'DELETE' }
});
}]);
Run Code Online (Sandbox Code Playgroud)
在我的控制器中的某个地方,我只想更新现有用户而不从服务器获取它:
app.controller('UsersController', ['User', function(User) {
// …Run Code Online (Sandbox Code Playgroud) 我有一个场景,我需要非角度代码(在这种情况下Facebook和Twitter JS sdk)来广播角度控制器可以收听的事件.为什么?在初始页面加载后,我通过AJAX加载和修改页面中的内容.内容有多个喜欢/推特按钮(如博客/聚合器的首页).我想在Facebook"喜欢"按钮或Twitter"分享"按钮上发生点击时添加事件挂钩 - 页面中有一些,每当获取新内容时每个都在变化(再次,通过ajax ).
现在,SDK的处理方式不同:
twttr.events.bind('click', function(event){
// here I'd like to somehow
// $rootScope.$broadcast("twitter:clicked", event.currentTarget)
});
Run Code Online (Sandbox Code Playgroud)
FB.Event.subscribe("edge.create", function(resp) {
// here I'd like to somehow
// $rootScope.$broadcast("facebook:clicked", resp)
});
Run Code Online (Sandbox Code Playgroud)
app.controller("SomeController", ['$scope', function($scope) {
$scope.$on("facebook:clicked", function(event, resp) {
// do something with resp
});
$scope.$on("twitter:clicked", function(event, target) {
// do something target
});
}])
Run Code Online (Sandbox Code Playgroud)
我们的想法是绑定这些事件处理程序,然后处理相关控制器中的广播消息,即使每次获取新内容时都会重新创建这些控制器.
所以基本上,我正在寻找的是一种挂钩现有的已经初始化的角度应用程序$rootScope和$broadcast消息的方法,尽管它不是应用程序的一部分.希望这是有道理的.谢谢.