小编And*_*ick的帖子

在elixir中定义匿名函数后显示的数字是多少?

在elixir中定义匿名函数时,会得到这样的结果.

#Function<6.90072148/1 in :erl_eval.expr/5>

我注意到的是这个数字是基于函数的arity.所以总是有1个arg函数

#Function<6.90072148/1 in :erl_eval.expr/5>

总是有两个arg函数

#Function<12.90072148/2 in :erl_eval.expr/5>

总是有三个arg功能

#Function<18.90072148/3 in :erl_eval.expr/5>

返回的数字是多少,它是如何派生的?

elixir

16
推荐指数
1
解决办法
252
查看次数

玩Iteratee节流

我正在使用scala和Play编写流式网络广播框架.我依靠Iteratees进行实际的流式传输,但是我遇到了一个问题,试图阻止贪婪的客户端过快下载数据,并为所有客户端使用流.为此,我一直在尝试创建一个Enumeratee,它将限制Enumerator生成数据的速度.这是我的Enumeratee的样子

val throttlingIteratee = Iteratee.foldM[Array[Byte], Array[Byte]](new Array[Byte](0)) {
(result, chunk) => 
  val prom = Promise[Array[Byte]]()
  timer.schedule(new TimerTask{
    def run() = prom.success(result ++ chunk)
    },1000)
  prom.future    
}

private val chunker = Enumeratee.grouped(  
    Traversable.take[Array[Byte]](31792) &>> throttlingIteratee  
)
Run Code Online (Sandbox Code Playgroud)

我的想法是,我使用计时器任务来创建一个限制程序,并将其与Enumeratee.grouped函数配对.这似乎工作得相当好,但我无法弄清楚用于块大小的值.我希望这个产生的块与音频播放的速率大致相同.我的音频文件编码为82kpbs,我试图用字节计算,但我提出的值似乎太小,音频播放速度比数据流速快.

我的问题是双重的.我的基本方法是不是很好?如果是,如何根据音频文件的比特率设置块大小.

scala iterate playframework-2.0

6
推荐指数
1
解决办法
413
查看次数

kafka 是否适合小型微服务环境,或者我应该寻找轻量级替代方案

我正在开发一系列将部署为微服务的应用程序。每个数据库都有一个单独的数据库,我希望通过单个统一的事件存储/日志(如 Apache Kafka)来协调数据。我已经开始尝试使用 Kafka,大多数用户似乎都在相当大规模地使用 Kafka,具有集群和相当复杂的容错设置。我们预计最初​​的数量不会特别大,所以我想知道 Kafka 是否是正确的选择?这是否适合卡夫卡,或者考虑到我们目前的规模,我是否应该寻找更轻量级的替代方案。

apache-kafka microservices

6
推荐指数
1
解决办法
2565
查看次数

在docker容器中访问vagrant/virtual box上的其他计算机仅托管网络

我有一个使用vagrant设置的实验室环境.它由3台机器,两台安装了docker 1.4.1的应用服务器和一台安装了postgres 9.3的数据库服务器组成.所有机器都运行Centos 6.6.

使用仅主机专用网络设置环境.这是流浪文件

Vagrant.configure('2') do |config|
  config.vm.box = "centos-6.0-updated"

  {
    'db'    => '10.17.33.10',
    'app1'   => '10.17.33.11',
    'app2' => '10.17.33.12',
  }.each do |short_name, ip|
    config.vm.define short_name do |host|
      host.vm.network 'private_network', ip: ip
      host.vm.hostname = "#{short_name}.my.dev"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我发现当我在app1或app2上的容器内时,我无法访问数据库服务器.我认为问题是vagrant/virtualbox的主机专用网络使用127.0.0.x范围内的地址.在主机上,vagrant配置环回接口以处理向网络上的每台机器发送请求.但是在容器中,由于未配置此接口,容器会将所有127.0.0.x请求视为对localhost的请求,并将它们发送回自身.

是否有任何替代配置我可以设置在流浪者方面,或者码头方可以缓解这个问题?简而言之,我希望有一个流浪的环境,我的应用服务器上的容器可以与数据库服务器通信.请注意,db直接安装在db-host上,而不是在docker容器中运行.此外,这是为了模仿不使用vagrant的生产环境,所以我希望任何docker更改也能在更正常的网络方案中工作.

networking vagrant docker

5
推荐指数
1
解决办法
4724
查看次数

多行参数后跟块的 Ruby 风格实践

当您有一个方法调用、多行参数和一个块时,ruby 中样式和缩进的一般建议是什么?例如

collection :available_surveys,
  exec_context: :decorator,
  class: Survey,
  skip_render: lambda {|object, opts| opts[:show_all_surveys] != true } do
    property :name, as: :survey_name
    property :id
  end
Run Code Online (Sandbox Code Playgroud)

该方法是集合,它有 4 个参数分布在多行中,然后是一个块参数。我的一位同事觉得上面的缩进样式使块看起来像是绑定到最后一个参数,而不是集合方法。我在互联网上找不到任何明确的风格建议。

ruby coding-style

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