我正在浏览关于canvas应用程序的Facebook文档,我遇到了一个示例应用程序:http://developers.facebook.com/docs/samples/canvas.然而,当我阅读他们的例子时,我对他们在iframe应用程序中使用cookie感到非常困惑.
一个小背景...
我已经玩过使用iframes嵌入式小部件(与Facebook无关),我发现一些浏览器(Chrome,Safari等)有严格的cookie策略,不允许在iframe中设置跨域cookie(Firefox,另一方面,允许iframe在iframe中设置跨域cookie).例如,如果foo.com具有src="http://bar.com/widget"iframe小部件的iframe将无法为bar.com设置任何cookie,因此将无法在iframe中保持状态:bar.com将解释来自的每个请求(包括ajax请求)窗口小部件作为没有建立会话的新请求.我挣扎了,通过使用JSONP和javascript为foo.com设置cookie来找到解决方法......
... 所以?
好吧,我正在查看示例画布iframe Facebook应用程序,我注意到他们的应用程序(托管在runwithfriends.appspot.com上)能够设置一个cookie u,其中包含当前用户的id以及runwithfriends的一些其他参数. appspot.com域名.它会在每个请求中发送此cookie ...它可以在Chrome和Firefox中运行!WTF?Facebook如何解决Chrome上的跨域cookie限制?
(我现在已经知道了答案,但我认为这可能对那些努力弄清楚同样事情的人有所帮助 - 我将在下面发布答案.)
任何人都可以帮助解释这是怎么回事用tmux,bash和exec?我正在尝试使用4窗格窗口设置tmux会话.理想情况下,我想在3个窗格中运行命令:例如Ruby Thin服务器和几个Ruby守护进程.这是我到目前为止:
~/.bin/tmux-foo:
#!/bin/sh
tmux new-session -d -s foo 'exec pfoo "bundle exec thin start"'
tmux rename-window 'Foo'
tmux select-window -t foo:0
tmux split-window -h 'exec pfoo "bundle exec compass watch"'
tmux split-window -v -t 0 'exec pfoo "rake ts:start"'
tmux split-window -v -t 1 'exec pfoo'
tmux -2 attach-session -t foo
Run Code Online (Sandbox Code Playgroud)
~/.bin/pfoo:
#!/bin/bash
cd ~/projects/foo
rvm use ree
# here I want to execute command1 2 3 or 4...
exec $SHELL …Run Code Online (Sandbox Code Playgroud) 我只是好奇人们在编写RSpec规范时倾向于使用FactoryGirl.build_stubbed和使用的地方double.也就是说,是否有最佳实践,例如"仅在相应的模型规范中使用FactoryGirl方法?"
当您发现自己FactoryGirl.create(:foo)在spec/models/bar_spec.rb中使用时,它是代码味道吗?
如果你FactoryGirl.build_stubbed(:foo)在spec/models/bar_spec.rb中使用它是不是代码味道?
如果你FactoryGirl.create(:foo)在foos_controller_spec.rb中使用它是代码味道吗?
如果你FactoryGirl.build_stubbed(:foo)在foos_controller_spec.rb中使用它是不是代码味道?
如果你FactoryGirl.build_stubbed(:foo)在spec/decorators/foo_decorator_spec.rb中使用它是代码味道吗?
抱歉这么多问题!我只是想知道其他人如何在单元测试隔离和面向对象设计最佳实践中划清界限.
谢谢!
我知道Chrome让你通过下拉菜单选择控制台执行的上下文,Firebug允许你cd()进入iframe.我无法弄清楚如何在Safari的控制台中更改上下文.有谁知道如何做到这一点?
我想善意和优雅地告诉那些使用Internet Explorer 6的人,当他们来到我的网站时,要么升级他们的浏览器,要么将他们的计算机粉碎成小块.
比方说,javascript标记的src属性指向重定向:
<script src="http://foo.com/foo.js"></script>
Run Code Online (Sandbox Code Playgroud)
其中http://foo.com/foo.js是301重定向到https://foo.com/foo.js ...
所有浏览器都会成功加载JS文件吗?我注意到它似乎可以在Chrome,Firefox,Safari和IE9中运行......但我只是好奇这是否属于规范或随机...
我试图在Ruby中用更长的字符串创建短的非碰撞字符串.最好的方法是什么?Base64编码MD5哈希?
这是用例:
loop do
key = short_hash("#{user_id}-#{timestamp}")
break if $redis.setnx(key, "0")
end
Run Code Online (Sandbox Code Playgroud)
我不希望钥匙太长.
所以我正在尝试将Graph API与Facebook JS SDK一起使用,我在Safari中遇到以下错误:
"OAuthException:必须使用活动访问令牌来查询有关当前用户的信息."
我怀疑它与Safari对x-domain cookie设置非常严格的事实有关,所以我在Firefox中尝试了它,cookie选项设置为false FB.init().我确实发现我的FB.api()请求得到了同样的错误.
FB.init({
appId: "<%= app_id %>",
status: true, // check login status
// We cannot rely on this cookie being set in an iframe. I found this
// out because the Graph API was not working in Safari.
// cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse XFBML
channelUrl: window.location.protocol + '//' + window.location.host + '/fb/canvas/channel.html'
});
Run Code Online (Sandbox Code Playgroud)
所以我想知道......有没有一种access_token …
javascript safari facebook-iframe facebook-graph-api facebook-javascript-sdk
我无法弄清楚如何让我的独角兽工人在他们真正"准备好"处理请求时才接受连接.我发现前几个请求很慢,然后它们会急剧加速(从几秒到几百毫秒).这个问题似乎更加复杂,因为独角兽似乎在一段时间后杀死了工人,这意味着我经常面临缓慢的第一次请求的性能损失.有没有人看过这个或者知道我能做些什么?
假设我有一个STI设置如下:
class User < ActiveRecord::Base
scope :busy, -> { where('busy_factor > 1') }
end
class HeroUser < User
scope :busy, -> { where('busy_factor > 5') }
end
Run Code Online (Sandbox Code Playgroud)
因此,英雄用户对繁忙范围具有不同的阈值.
现在,如果我这样做,我会收到警告:
Creating scope :busy. Overwriting existing method HeroUser.busy.
Run Code Online (Sandbox Code Playgroud)
一切似乎都正常运行,但我想知道是否有更好的方法来做到这一点.
假设我正在输出一个帖子标题,在我们的数据库中,它是Hello Y’all- 我可以不使用输出它.html_safe,但是这样的方式它不能在html中输出Hello Y&#8217;all吗?
也就是说,如果用户从使用印刷正确的撇号的文字处理器复制帖子标题,我会得到乱码输出,因为它&在数据库中逃脱了&.当然,我想要Bonnie & Clyde输出数据库中的标题,Bonnie & Clyde因为这是正确的HTML ...
有安全的方法吗?
我用jQuery构造一个iframe和form:
iframe = $("<iframe>", {name : "foo"});
form = $("<form>", {
target : $iframe.attr("name"),
action : "/foobar",
method : "POST"
}).append($("<input>", {
type : "submit",
name : "amifully",
value : "dressed"
}).hide());
$("body").append(iframe).append(form);
form.submit();
Run Code Online (Sandbox Code Playgroud)
出于某种原因,在Chrome/Safari/Firefox/IE8 +中,它运行良好,但在IE7中,它会在弹出窗口中打开表单.
任何人都知道发生了什么事吗?
javascript ×4
html ×3
ruby ×3
iframe ×2
safari ×2
actionview ×1
activerecord ×1
bash ×1
console ×1
cookies ×1
css ×1
digest ×1
exec ×1
facebook ×1
factory-bot ×1
http ×1
jquery ×1
rspec ×1
sti ×1
tmux ×1
unicorn ×1
unit-testing ×1