跳至主要内容

博文

目前显示的是标签为“Scala”的博文

Pazzled by Observables

如果创建两个 `Observable`,分别用 `foldLeft` 计数和求和。 val summingObservable = Observable(1 to 64).foldLeft(0)((v, i) => v + i) val countingObservable = Observable(1 to 100).foldLeft(0)((v, _) => v + 1) 结果需要一个字符串,将这两个计算结果报告出来。 尝试了一些不同的方式,有的可以工作 // Solution 1 - OK val finalObservable: Observable[(Int, Int)] = summingObservable.zip(countingObservable) finalObservable.foreach(println(_)) // Solution 2 - OK val sum: Seq[Int] = Await.result(summingObservable.toFuture(), Duration.Inf) val count: Seq[Int] = Await.result(countingObservable.toFuture(), Duration.Inf) println(s"sum = ${sum.head}, count = ${count.head}") 而另一些则不行: // Solution 3.a - KO val finalObservable: Observable[String] = for { sum countingObservable.map((count: Int) => s"sum = $sum, count = $count" ) ) result.println(result) 实际上 for-comprehension 会被翻译为 `f...

技术视频观后小结:Akka HTTP

在YouTube上看了[一个视频](https://www.youtube.com/watch?v=y_slPbktLr0),是介绍Akka HTTP的,学到如下内容: + Akka Http可以被看作是 Spray 2.0,它复用了部分 case class 模型来表达 model。 + Akka Http 慢慢的在摆脱对于actor的直接依赖,它是基于 Reactive Stream 来构建的,Request 和 Response 均被视作为流,甚至 body 的 chunk 也是。 + 原先的 Play framework 是使用 Netty 作为引擎的,由于语言不同他们希望最终可以提供 Akka Http作为引擎,用户可以通过 driver 来挑选不同的引擎实现。

My CentOS in VirtualBox

1. Install JDK8 on CentOS - follow [this post](http://www.if-not-true-then-false.com/2014/install-oracle-java-8-on-fedora-centos-rhel/) 2. Download Scala from [Scala-lang.org](http://www.scala-lang.org/download/), and run the following commands tar xvf scala-2.11.5.tgz sudo mv ~/Downloads/scala-2.11.5 /usr/scala/ sudo ln -s /usr/scala/scala-2.11.5 /usr/scala/latest sudo alternatives --install /usr/bin/scala scala /usr/scala/latest/bin/scala 100 sudo alternatives --install /usr/bin/scalac scalac /usr/scala/latest/bin/scalac 100 sudo alternatives --install /usr/bin/scalap scalap /usr/scala/latest/bin/scalap 100

Learning Scala (Ref)

接触 Scala 有一段时间了,一开始的时候是因为 Scala 支持 strong type 的缘故感兴趣的,后来慢慢的看了 traits, pattern matching, generics 等语法特性,觉得这个语言夹杂了很多其它语言的特征。不过,就像 C++ 从 C 发源后加入了 OO、 Meta-Programming 等不同性质的语法特性之后整个语言的学习曲线陡增,Scala 对于 Java developers 来说可能也不算是容易上手的 JVM Language。 最近拜读了一篇讨论 Scala 优缺点的文章,颇有想法—— Scala: Sink or Swim Part 1 , Part 2 , Part 3 。之前玩了一阵子的 sbt,最近项目上在用 Gradle (这是用 Groovy 语言编写的一个具有 Ant 和 Maven 二者之长的构件系统),很能体会作者谈到的 sbt 的不爽……

Learning Scala

Scala 是一种多范式的编程语言,设计初衷是要整合面向对象编程和函数式编程的各种特性。Scala 运行于 Java 平台(Java 虚拟机),并兼容现有的 Java 程序。它也能运行于 Java ME, CLDC 上。 Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive. Code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application. Scala 解释器类似于 Unix Shell,它允许用户以交互的方式输入表达式。在命令行中执行 `scala` 命令可以进入 Scala 解释器。 Welcome to Scala version 2.9.2 (Java HotSpot(TM) Client VM). Type in expressions to have them evaluated. Type :help for more information. 如果想要在解释器中跨行输入语句,只要一行行键入。如果输入到一行的结尾还没有结束,解释器将会在下一行自动回显一个 `|` 符号提示等待输入。用户如果发现一些错误而希望终止输入,可以连续键入两次回车取消当前的输入。如果需要离开解释器,只需要输入 `:quit` 或是 `:q` 即可。 有的时候,如果需要在命令行交互中得到更为详尽的提示信息,例如对过期函数调用的提示,或是对于未检查警告的解释,可以在启动 scala 的时候传入参数。 scala -unchecked -deprecation tag: scala