我想知道当用户关闭产生工作线程的选项卡时会发生什么,而线程仍在工作.它会阻止一切吗?如果是这样,即使关闭选项卡,有没有办法在后台运行线程?
我们都知道Devise是在基于rails的应用程序上实现身份验证的事实标准.
默认情况下,它使用电子邮件作为ID,但也允许您使用用户名.它还具有"可确认"模块,您可以通过发送电子邮件并单击链接来验证电子邮件来确认电子邮件地址.
我正在寻找类似的电话号码 - 基本上接受电话号码作为主要ID而不是电子邮件,然后通过像Twilio这样的用户的号码发送作为短信的验证码来确认电话号码,然后让用户通过输入代码确认它(甚至让用户点击生成的链接来验证就像他们对电子邮件一样进行验证)
我之所以希望有一个流行的设计模块用于此功能,是因为它似乎大多数移动社交应用程序接受电话号码并确认现在的数字.必须有人认为这是一个问题,并为此开源了一个模块.但是我找不到任何受欢迎的.实际上,确切地说,这里是我发现的唯一三个相关链接:
它们都没有导致工作解决方案(我已经尝试过devise_sms_activable但它不适用于rails 4,而且我对低数量的星星很警惕)所以我想问一下是否有任何可行的解决方案.我错过了什么吗?这个主题是在Devise开发者社区中提出的吗?我对解决方案很好奇,但如果没有,我至少会理解为什么这个问题不容易获得.
[UPDATE]
我认为这个问题可能有点误导.虽然我可以自己制作它,但我不喜欢重新发明轮子.基本上我对这个问题的意图是:
当我得到#1或#2的回答时,我会很乐意接受.谢谢!
如果我理解正确,Juggernaut建立在socket.io之上,而Faye则与Juggernaut layer和socket.io层结合.最近Ryan Bates提出了一个名为PrivatePub的Faye包装器,这使得运行Faye非常容易.
但是我已经有了一个在Heroku上运行的rails应用程序,而我想做的就是在它上面构建一个简单的聊天功能.
在研究时我发现很多人使用Pusher.似乎pusher在Heroku上得到了很好的支持,所以我正在考虑使用Pusher.
在我开始之前,我只是想确保我理解正确的事情.Pusher是否像推送请求的Heroku一样?我的选择是在Heroku上托管所有内容(包括Juggernaut或Faye模块),或者只是在Heroku上托管网站的静态部分,并将推送通知处理委托给推送器.
据我所知,从以下情况来看,这感觉就像一种更有效的方法:1.如果我使用推杆,我不必为了在Heroku上运行juggernaut/faye模块而跳过所有的箍.2.实时流量将委托给Pusher,这意味着我不会浪费我的Heroku服务器资源.
现在我只是一个初学者,对很多事情可能是错的,但请赐教.上述两个因素是否正确?我对Juggernaut/Faye/Pusher的理解是否正确?
我正在研究一个使用核心数据的iPhone项目,并尝试找到一种方法来轻松浏览数据的存储方式.具体来说,我将图像存储在核心数据中,并希望看到它们占用了多少空间等.
我找到了一个名为"核心数据编辑器"的应用程序,可以让你在iPhone模拟器上浏览核心数据,但在我的情况下它并不是真的有用,因为我存储了从相机中获取的图像.有没有办法轻松浏览我的应用程序中存储的内容?
我一直在使用setTimeout(function(){ ... }, 0)一种方法将函数调用延迟一个刻度。
通常,当我尝试直接操作事件循环以确保事物按特定顺序执行时,我一直在使用此方法,并且在大多数情况下它与 UI 相关。
有时我能感觉到那个“滴答”,尤其是当我使用它在一个元素上运行一些 3rd 方 JS 库时。
但我最近发现requestAnimationFrame。这几乎实现了同样的事情,但以更优雅的方式。
现在我很好奇,是否有任何地方它更利于使用的情况下,setTimeout(function(){ ... }, 0)过requestAnimationFrame(function(){ ... })?
我正在阅读Devise gem的初始化文件(config/initializers/deviser.rb),并且很难理解这一部分.
# By default Devise will store the user in session. You can skip storage for
# :http_auth and :token_auth by adding those symbols to the array below.
# Notice that if you are skipping storage for all authentication paths, you
# may want to disable generating routes to Devise's sessions controller by
# passing :skip => :sessions to `devise_for` in your config/routes.rb
config.skip_session_storage = [:http_auth]
Run Code Online (Sandbox Code Playgroud)
我之所以看这个是因为我正在尝试使用基于api的令牌认证,在这种情况下我需要将该配置行更改为:
config.skip_session_storage = [:http_auth, :token_auth]
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释评论的内容吗?
我知道通常你使用NSStrings的副本,这样你的属性就像你分配它时一样保持相同的价值,即使试图在其他地方重新设置它.
但我很难完全理解这个概念.这不适用于任何类型的对象(不仅仅是NSStrings)吗?
所以我的问题是,"我应该将什么样的属性设置为'复制',为什么?"
嗨,我正在尝试使用node.js和socket.io构建实时多人游戏.
现在,在编码方面实现自身并不是一个问题,但是来自传统的http请求 - 响应Web编程模型,我不知道这在流量和服务器负载方面会有多昂贵.基本上在游戏期间,玩家的浏览器应该跟踪实时鼠标输入事件并且将它们广播到同一游戏中的所有其他玩家.
这是一个例子,假设我的化身跟随我的鼠标指针在屏幕上,它应该实时广播到屏幕上的其余玩家.我会做的事情如下:
// client side
$(document).on("mousemove", function(event){
io.emit("coordinate", {x: event.pageX, y: event.pageY});
});
Run Code Online (Sandbox Code Playgroud)
并在服务器上:
// server side
io.sockets.on("connection", function(socket){
...
socket.on("coordinate", function(coordinate){
socket.get("username", function(err, username){
socket.broadcast.emit("move", {username: username, coordinate:coordinate});
});
});
...
});
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效,但这需要浏览器每秒向服务器发送几个事件,随后应该将它们广播给同一游戏中的其余玩家,我担心这个含义.但有一件事是传输的每个数据片段的大小并不大(基本上它只是一个x和y坐标).如果这太贵了,无论这场比赛有多棒,我都不认为我能发货.谁能开导我?谢谢.
[编辑]为了澄清,我不是在问如何提高这种架构的效率.我只是想知道这种类型的系统在系统负载(和维护成本)方面是否足够现实对于普通的Web服务我只能通过查看页面视图数来估算成本,但websocket是一个全新的领域,我不知道的,所以我想问.
我正在使用UIDatePicker的倒数计时器模式(UIDatePickerModeCountDownTimer)来处理倒计时.但是,默认选取器最多只能达到24小时.
有办法解决这个问题吗?或者是否有任何现有的库可以做这样的事情?
我正在尝试编写一个拦截所有XMLHttpRequest调用的库,并在最终发送请求之前通过覆盖其原型来执行某些操作,例如:
var original_open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
// my own override logic here before running the original function
original_open.apply(this, arguments);
};
Run Code Online (Sandbox Code Playgroud)
问题是,我想保证当有人使用这个库时,网页上的任何其他代码都不可能重新覆盖这种效果.
因为否则,使用这个库的网站可以动态加载另一段JS代码,它只是XMLHttpRequest.prototype.open再次覆盖它,而这个库的整个目的是禁止它.
我想Object.freeze()在覆盖之后立即使用冻结原型,这样其他代码就无法覆盖我自己的覆盖.代码看起来像这样:
var original_open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
// my own override logic here before running the original function
original_open.apply(this, arguments);
};
Object.freeze(XMLHttpRequest.prototype);
Run Code Online (Sandbox Code Playgroud)
我的期望是,如果同一页面上的另一段代码试图重新覆盖我自己的覆盖,它将失败,因为原型已被冻结.
ios ×3
javascript ×3
devise ×2
iphone ×2
socket.io ×2
browser ×1
core-data ×1
datepicker ×1
faye ×1
html5 ×1
ios5 ×1
ios7 ×1
juggernaut ×1
multiplayer ×1
node.js ×1
objective-c ×1
push ×1
setter ×1
sqlite ×1
twilio ×1
web-worker ×1
websocket ×1
xcode ×1