小编dim*_*roc的帖子

在Swift中传递空闭包的优雅方式

在Swift中,我经常必须将noop闭包传递给方法,以符合方法的预期参数(arity).在Obj C的旧时代,人们可以通过nil一个noop回调并完成它.在没有像下面那样传递空块的情况下,在Swift中有更快更优雅的方法吗?

UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (UIAlertAction) -> Void in }) // do nothing in callback

完整的例子:

import UIKit

class UIAlertControllerFactory {
    class func ok(title: String, message: String) -> UIAlertController {
        var alertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
        var okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (UIAlertAction) -> Void in
        })
        alertController.addAction(okAction)
        return alertController
    }
}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch ios swift

22
推荐指数
3
解决办法
1万
查看次数

需要LRU缓存时,Memcached vs Redis为Rails.cache

我目前使用Redis作为Sidekiq的工作队列.我也有兴趣将它用作Rails.cache的缓存机制.

推荐的Rails缓存机制永远不会使项目过期,并依赖于驱逐最近最少使用(LRU)的项目.不幸的是,默认情况下,Redis不配置为驱逐最近最少使用的项目,而推荐的缓存存储是memcached.

此外,驱逐项目不是我想要的工作队列行为,并且配置相同的Redis实例来执行此操作可能会导致不良结果.我也不希望我的队列与我的缓存共享周期.

在这种情况下你会推荐什么?第二个redis存储充当缓存并配置了LRU?或者只使用rails推荐的memcached缓存存储并且仅使用redis作为队列?

我倾向于使用Redis和Memcached,尽管有大量的堆栈溢出文章推荐否则.memcached默认支持LRU驱逐是赢得我的.

一些文章:

在评论中隐藏得更深,海报提到memcached的LRU驱逐是将其用作缓存的一个很好的理由.

ruby memcached caching ruby-on-rails redis

9
推荐指数
1
解决办法
2551
查看次数

Phoenix Channel的广播如何击中其他节点上的客户端?

在使用WebSockets时,我正在尝试将Phoenix Channels与新的Rails ActionCable进行比较.

对于某些上下文,ActionCable在向所有客户端广播消息时使用Redis来处理PubSub.示例场景:单独节点上的3个rails进程中的1个将能够广播到所有Web服务器上连接的客户端.这是通过点击Redis完成的,Redis又发布到所有rails服务器,然后推送到所有连接的客户端.

我最近读到了关于Phoenix websocket连接实现200万个 websocket连接.

还发现了这个宝石:Phoenix 1.0发行说明提到了有关频道的信息:

即使在一组计算机上,您的消息也会自动在节点间广播

Phoenix如何能够跨节点向客户端广播?它是否在引擎盖下使用邮箱和/或其他一些进程间通信?

这类似于在这个问题2)职位.

谢谢!

elixir phoenix-framework actioncable

8
推荐指数
1
解决办法
1387
查看次数

Stream.into + Stream.run与Enum.into完全相同?

Elixir允许您使用Streams而不是Enums来阻止集合的中间副本.但是当你迈出最后一步时,它会不会重要?

即使你得到最小的细节也不是这个

Stream.concat(header, rows)
|> CSV.encode
|> Stream.into(output)
|> Stream.run
Run Code Online (Sandbox Code Playgroud)

这个一样吗?

Stream.concat(header, rows)
|> CSV.encode
|> Enum.into(output)
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么甚至提倡Stream.into + Stream.run配对而不仅仅是说Enum.into? http://elixir-lang.org/docs/v1.0/elixir/Stream.html#into/3

也许这很简单,因为它更具可读性和可发现性.

elixir

3
推荐指数
1
解决办法
329
查看次数