跳至主要内容

博文

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 来挑选不同的引擎实现。

Java 开发不可错过的 IntelliJ IDEA 2016.1 来了

手头在用的 IDE 更新到了 [IntelliJ 2016.1](https://blog.jetbrains.com/idea/2016/03/intellij-idea-2016-1-is-here/),发现多了不少好东东,包括: 1. 更好用的 VCS 合并界面 2. 可以直接 Alt + Enter 导入 static constants 3. 尊重 Gradle 的 SourceSets,直接导入为 IDEA Modules 4. 可以提示将 Guava API 转换为对应的 Java 8 API 5. 更丰富的语言支持,包括 Scala、JavaScript 和 TypeScript 等 6. 更高级的 Spring Framework 支持 7. 更漂亮的启动画面 …… ![Start splash of IDEA2016 Community Edition](http://blog.jetbrains.com/idea/files/2016/03/IntelliJIDEA_20161_blog@2x.png =600x400) 更多精彩请参考以上链接所指向的 INTELLIJ IDEA BLOG。

Windows 10 无法使用 Powershell 创建 NIC Team

主板上有两块网卡,一个是 Intel 的,另一个是 Killer 的。为了充分利用,将两个千兆口都连在了 Hub 上。 在网上看到 Windows 其实可以组建 `NIC Team`,将多块网卡绑定成一个 team,内部通过负载均衡算法来控制网卡的使用。这样整个操作系统的应用程序只通过 team 来发送和接收数据,具体分配到哪一块 NIC 则是由 Windows 来管理的。 这么美好的东西怎么可以错过呢,MSDN 告诉我可以[使用 Cmdlets 来创建 NIC Team](https://technet.microsoft.com/en-us/library/jj130849(v=wps.630).aspx),于是我激动的开始尝试使用 powershell 来执行一行行命令: PS C:\WINDOWS\system32> Get-NetAdapter -Name Nic* Name InterfaceDescription ifIndex Status ---- -------------------- ------- ------ NicIntel Intel(R) Ethernet Connection I217-V 16 Up NicKiller Killer e2200 PCI-E Gigabit Ethernet ... 11 Up PS C:\WINDOWS\system32> New-NetLbfoTeam -Name LinkNics -TeamingMode SwitchIndependent -TeamMembers NicIntel,NicKiller New-NetLbfoTeam : 参数错误。 所在位置 行:1 字符: 2 + New-NetLbfoTeam -Name LinkNics -TeamingMode SwitchIndependent -TeamM ... + ~~~~~~~~~~~~~~~~~...

单词汇:二十面体和蛋糕

在 Youtube 上看了一个影片是关于 Category Theory 有关的介绍,实际上也不是那么的有关,是介绍数学抽象的。 这是挺有趣的一段演讲,还学到了几个单词: + `icosahedron` 二十面体,一种有 12 个角顶、20 个面和 30 条棱的几何结构。在这个概念被发明的时候并没有找到自然界中与之对应的物体,直到近代医学研究某些病毒的时候才找到了与之对应的形态。 + `batternberg cake` 一种蛋糕,历史悠久(已经有一百多年了),从结构来看它是双色棋格海绵蛋糕。在影片中被引用来解释一种 pattern。 影片的名字是 ['How to Bake Pi': Reflections on Making Abstract Math](https://www.youtube.com/watch?v=h2p68JjSUH0)。

工具党:花园利器 Trimmers

房子前后的草地和灌木需要修剪,之前是人工用剪刀修剪边角,或者爬上梯子为灌木切割边界,感觉很累。所以考虑购入一些自动化工具。Line trimmer 适合用于修剪草地的边界,而 hedge trimmer 擅长处理 shrub。 传统的工具要么用电线或是汽油,但是前者不太安全,切着切着万一弄到电线就麻烦了;而后者维护起来挺烦,因为要专门备一汽油桶还有润滑油等。所以主要目标是用锂电池的工具。 [Ryobi One+ 18V 305mm Cut Cordless Line Trimmer](https://www.bunnings.com.au/ryobi-one-18v-305mm-cut-cordless-line-trimmer_p3380727) 的价格是 AUD 109.00,而同样的 Trimmer 但是附带电池和充电器的 [Kit](https://www.bunnings.com.au/ryobi-one-18v-1-5ah-li-ion-cordless-line-trimmer-kit_p3380967) 就要贵 40 刀,套装里的电池是 1.5Ah 的规格,切割范围是 30.5cm。 [Ryobi One+ 18V Cordless Hedge Trimmer Console](https://www.bunnings.com.au/ryobi-one-18v-cordless-hedge-trimmer-console_p3380840) 的价格是 AUD 149.00,这个工具可以切割最粗直径为 18mm 的灌木,最长可以切割 50cm的范围 如果仅仅购入这两个工具,为了包含电池模组总价就达到了 300 刀。可是由于电池仅 1.5安培,估计将来无法用到同品牌的其他工具上。所以考虑另一种配备——直接购买高安培数的电池组,bunnings 上的巨贵无比,[2.5Ah](http://www.bunnings.com.au/ryobi-one-18v-2-5ah-lithium-power-tool-battery-suits-ryobi-one-range_p6210602) 的要 85 刀,[5.0Ah](http://www.bunnings.com.au/ryobi-one-18v-5-0ah-lithium-high-capacit...

工具党:Routers

Router 是一种常见的木工工具,主要有两种—— plunge router 和 fixed router。 根据 [laopi 的博客](http://blog.wenxuecity.com/myblog/34276/200912/26860.html) 介绍, > 顾名思义,fix router就是router的bit在切割的过程中不能上下移动,plunger router可以, > fix router有一个可以微调的机构,固定在router table上以后,可以慢慢调节bit的高度, > plunge的虽然也可以用于router table,不过因为完全是靠手的压力来调节,实际用起来很困难, > 现在的很多都会带两种base,这样一个router可以当2个使用,不过我建议还是各买一个, > 一个功率大的固定在router table上,另一个用于其他的用途,这样减少了很多使用上的麻烦, > 因为plunge的可以在某种程度上替代fix的,而fix却不能代替plunge的,所以, > 如果你的预算只能买一个,那就只能买plunge的。 Router 的功率越大价格就越高。在使用直径大的 bit (钻头)的时候,功率越大效果就越好。 不过功率越大也就意味着手动控制难度越高,最好是安置在 Router Table 上使用。 Router 可以搭配很多 bits 来使用,不同的 bit 作用不一,而且尺寸也可能大不同——通常 使用 bit 的直径来衡量,术语是 shank。在使用直径较小的 bit 的时候,可以设定在较高的转速, 反之若是使用直径较大的 bit 那么应当配合较低的转速。大部分的 router 的转速都是可以调节的。 关于 router bits,laopi 建议开始买一套基本款,价格便宜量又足。此后如果发现缺少哪一种可以慢慢添置。以下还是摘录自 laopi 的文章: 市场上router bit的种类非常多,价格差别也大,买上几百个可能还会发现没有买全,router bit的区别除了牌子以外,还有 1. 材质 现在的可能至少都是号称carbide tipped,很少有high steel的了,有些还是全部carbide的,价格很贵,不过carbide本身很脆,掉到地上很可能就一分...