小编Luc*_*ano的帖子

RX vs消息队列如rabbitmq或zeromq?

我对这些高级并发范例很陌生,我已经开始使用scala RX绑定了.所以我试图理解RX与RabbitMQ或ZeroMQ等消息队列的区别?

他们似乎都使用订阅/发布范例.在某个地方,我看到一条关于RX在RabbitMQ上运行的推文.

有人可以解释RX和消息队列之间的差异吗?为什么我会选择一个而不是另一个?可以用一个替代另一个,还是互相排斥?它们在哪些区域重叠?

rabbitmq zeromq reactive-programming system.reactive

24
推荐指数
2
解决办法
9810
查看次数

将RX Observable传递给actor(scala)是否安全?

我一直在为RX Java使用scala绑定一段时间了,我正在考虑将它与Akka Actors结合起来.我想知道Observable在Akka Actors 之间传递RX是否安全/可能.例如,一个程序可以打印最多20个(每秒)整数的正方形:

/* producer creates an observable and sends it to the worker */
object Producer extends Actor {
  val toTwenty : Observable[Int] = Observable.interval(1 second).take(20)

  def receive = {
    case o : Observable[Int] =>
      o.subscribe( onNext => println )
  }

  worker ! toTwenty
}


/* worker which returns squares of even numbers */
object Worker extends Actor {
  def receive = {
    case o : Observable[Int] => 
       sender ! o filter …
Run Code Online (Sandbox Code Playgroud)

scala akka rx-java

7
推荐指数
2
解决办法
2490
查看次数

使用非美国(欧洲)日内数据的zipline回测

我正试图让zipline与非美国的日内数据一起使用,我已将其加载到pandas DataFrame中:

                        BARC    HSBA     LLOY     STAN
Date                                                  
2014-07-01 08:30:00  321.250  894.55  112.105  1777.25
2014-07-01 08:32:00  321.150  894.70  112.095  1777.00
2014-07-01 08:34:00  321.075  894.80  112.140  1776.50
2014-07-01 08:36:00  321.725  894.80  112.255  1777.00
2014-07-01 08:38:00  321.675  894.70  112.290  1777.00
Run Code Online (Sandbox Code Playgroud)

我在这里遵循移动平均线教程,用我自己的符号代码替换"AAPL",用"1m"数据代替"1d"代替历史调用.

然后,我用做最后一次通知algo_obj.run(DataFrameSource(mydf)),其中mydf高于数据帧.

然而,与TradingEnvironment相关的各种问题都出现了.根据源代码:

# This module maintains a global variable, environment, which is
# subsequently referenced directly by zipline financial
# components. To set the environment, you can set the property on
# the module …
Run Code Online (Sandbox Code Playgroud)

hft zipline

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

在笔记本中结合 jupyter/ipython 内核

有许多可用的Jupyter 内核。我也知道一些项目用于运行嵌入在另一种语言中的一种语言,例如rpy2。但是,我很想知道是否有可能(或是否有计划)将不同的内核组合到一个笔记本中?

所以说我在 python 代码中有一个单元格,在 Scala 代码中有另一个单元格,就像我目前可以有一个代码单元格(按下y一个单元格)以及一个降价单元格一样m

理想情况下,一个人应该能够来回传递变量,但是对于这个问题,我只是希望能够拥有两种不同的“代码单元”类型,而它们彼此不知道(所以我可以有例如python变量赋值x = 1和scala val x : Int = 2,他们不会知道彼此)。

ipython-notebook jupyter-notebook

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

在递归方案中组合非分配单子

关于 Haskell 中的递归方案,我最喜欢的事情之一是广义态射(gcata等),它允许使用 monad 转换器库将(共)monadic 计算与递归交错。例如,如这篇很棒的博客文章中所述。

但是,我遇到了一个问题;为了能够使用这些函数,我们需要(co-)monads 是(co-)可排序的。考虑一个类型签名gana

gana : Monad m => (forall z . m (f z) -> f (m z)) -> (a -> f (m a)) -> a -> b
Run Code Online (Sandbox Code Playgroud)

第一个参数本质上说m必须有一个sequence运算符。

不幸的是,我发现在实践中,有些 monad不是分布式的。例如:

  • 代表数据库事务的 monad。中止时,事务可以回滚;如果已排序,则只能回滚到排序的点。
  • 并发 monad,表示对资源的锁定或原子计算。排序后,锁定会暂时丢失。

在这种情况下,仍然可以编写一个专门的递归方案来交错 monadic 执行;但是你失去了使用 monad 变压器融合它的能力。即,如果您想将此类非分配 monad 组合在一起,则不能使用转换器将它们与 f-(co) 代数中的 monad/comonad 融合。具体来说,我不能使用 monad 转换器将DBTransactionmonad 与 apomorphism ( ExceptT/EitherT)结合起来;我需要从头开始编写自定义递归方案。

我的问题是是否有人有解决此限制的建议。

haskell recursion-schemes

5
推荐指数
0
解决办法
69
查看次数

Java Void 到 Scala 单元

我有一个 java 库方法需要一个类Void作为参数。例如,在com.mongodb.async.client.MongoCollection

void insertOne(TDocument document, SingleResultCallback<Void> callback);
Run Code Online (Sandbox Code Playgroud)

我正在从 Scala 访问此方法。Scala 使用该类型Unit作为等价物Void(如果我错了请纠正我)

如何将 a SingleResultCallback[Unit](而不是SingleResultCallback[Void])传递给此方法?编译器不允许这样做。不应该捡这个吗?

java scala void scalac scala-compiler

4
推荐指数
1
解决办法
1795
查看次数

微软时区的 java.time.zone.ZoneRulesProvider

我正在针对外部 API 进行编码,该 API 将似乎是 Windows 时区描述的内容返回为字符串,例如“浪漫标准时间”,我需要将它们解析为 javaZoneId或偏移量。此处提供了这些值的列表。

java.time.ZoneId文件指出:

时区规则由政府定义并经常更改。有许多组织(此处称为组)监视时区更改并对其进行整理。默认组是 IANA 时区数据库 (TZDB)。其他组织包括 IATA(航空业机构)和微软

所以我的问题是,是否存在java.time.zone.ZoneRulesProviderjavadoc 中提到的来自 Microsoft的公共实现?

我知道 Microsoft 时区和标准 IANA TZDB 之间存在关系,例如参见这个问题。但我想知道的是,是否存在ZoneRulesProvider我可以作为属性传入的标准实现,如 javadoc 中所述:

如果定义了系统属性 java.time.zone.DefaultZoneRulesProvider ,则它被视为要作为默认提供程序加载的具体 ZoneRulesProvider 类的完全限定名称,使用系统类加载器。

java timezone iana java-8

4
推荐指数
1
解决办法
614
查看次数