小编elm*_*lto的帖子

Chain Scala期货回归类型

我试图在Scala中链接Futures,但它给了我错误的返回类型.

我有以下方法:

  def getOneRecordByModel(x:DirectFlight): Future[Option[FlightByDetailModel]] = {
    select.allowFiltering().where(_.from eqs x.from).and(_.to eqs x.to).and(_.departure eqs x.departure).and(_.arrival eqs x.arrival).and(_.carrier eqs x.airline).and(_.code eqs x.flightCode).one()
  }
  def getRecordByUUID(x:FlightByDetailModel): Future[Option[FlightByUUIDModel]] = {
    select.allowFiltering().where(_.uuid eqs x.uuid).one()
  }

  def getUUIDRecordByModel(x:DirectFlight): Future[Option[FlightByUUIDModel]] = {
      getOneRecordByModel(x) andThen {
        case Success(Some(flight)) => getRecordByUUID(flight)
        case Success(x) => Success(x)
        case Failure(x) => Failure(x)
      }
    }
Run Code Online (Sandbox Code Playgroud)

但现在我得到了getUUIDRecordByModel返回类型的错误Future[Option[FlightByDetailModel]]

我如何正确链接它们?

scala future

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

播放Json Reads和String

我在Play 2.3中有以下JSON阅读器:

import play.api.libs.json._
import play.api.libs.json.Reads._
val airportSearchReads: Reads[String] = (JsPath \ "search").read[String](minLength(3))
Run Code Online (Sandbox Code Playgroud)

并且编译器给了我错误

diverging implicit expansion for type play.api.libs.json.Reads[M]
starting with method ArrayReads in trait DefaultReads
Run Code Online (Sandbox Code Playgroud)

如果我使用implicit val我得到的

 ambiguous implicit values:
 both value uuidReads in trait DefaultReads of type => play.api.libs.json.Reads[java.util.UUID]
 and value airportSearchReads in object AirportSearch of type => play.api.libs.json.Reads[String]
 match expected type play.api.libs.json.Reads[M]
Run Code Online (Sandbox Code Playgroud)

我如何让它工作?

json scala playframework playframework-2.0 playframework-json

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

具有自己的证书颁发机构的Cassandra SSL

我想设置自己的CA以与cassandra集群一起使用,这样我每次添加新节点时都不必复制所有证书.我已经阅读了一些Cassandra和SSL的教程,但它们都可以复制证书.我在CA流程中有点迷失

这是我认为我需要做的

  • 创建一次CA.
  • 为每个节点创建一个CSR,然后使用我的CA对每个节点进行签名( - >另存为nodeX.crt)
  • 将node0.crt导入我的cassandra node0密钥库,将node1.crt导入node1密钥库等

现在:

  • 我是否需要向信任库添加任何内容?
  • 我是否需要对CA文件执行任何操作?将其复制到每个客户端/节点服务器?
  • 我需要什么文件来提供我的Java客户端?cqlsh客户端?

优点:不再在节点之间复制ssl证书.每个节点只需一个,然后就可以了.

编辑:

好的,我就这样做了.如果我犯了任何错误,请告诉我.我遗漏了像JCE文件和适当的cassandra.yaml配置之类的东西.这些需要出现在服务器上!

openssl genrsa -out clusterCA.key 2048
openssl req -x509 -new -key clusterCA.key -days <DAYS> -out clusterCA.pem

keytool -importcert -alias clusterCA -file clusterCA.pem -keystore clustertruststore -storepass <PASS>

#on each cassandra host for clients. for client replace nodename with clientname
keytool -genkeypair -alias <NODENAME> -keyalg RSA -keysize 2048 -dname "CN=<NODENAME>,OU=<UNITNAME>,O=<ORGANISATION>" -keypass <PASS> -keystore <NODENAME>.keystore -storepass <PASS> -validity <DAYS>

keytool -keystore <NODENAME>.keystore -alias <NODENAME> -certreq -file <NODENAME>.cert -storepass <PASS> …
Run Code Online (Sandbox Code Playgroud)

java ssl cassandra

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

node.js async.eachSeries太早调用最终回调

这就是我想要的:我有一个叫做结果的大数组.我希望将该数组中的每个项放入我的迭代函数中并将其保存到我的mongoDB中(我在这里省略了一些不重要的步骤).在将这些项目中的每一项保存到数据库(或拒绝)之后,我希望console.log显示"All done".不幸的是,所有完成都会在调用系列后立即显示,而其他所有内容仍在处理中.我该怎么做?

我正在使用mongoose和一个名为'light'的模型,为了便于阅读,我省略了代码中的所有错误消息.我对eachSeries部分使用node-async

var async = require('async');    
var results = [very big array]
var iteration = function(row,callbackDone) {
  light.find({data: row.data}, function (err,entry) {
    if(entry.length) {
      callbackDone();
      return console.log(entry + ' already exists');
    }
    var newEntry = new light(row);
    newEntry.save(function (err,doc) {
      console.log(entry + ' saved');
      callbackDone();
    });
  });
};

async.eachSeries(results,iteration, function (err) {
  console.log('All done');
});
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous mongodb node.js

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

在apache spark中访问以下划线开头的文件

我正在尝试访问 s3 上_以 Apache Spark开头的 gz 文件。不幸的是,spark 认为这些文件不可见并返回Input path does not exist: s3n:.../_1013.gz. 如果我删除下划线,它会发现该文件就好了。

我尝试向 hadoopConfig 添加自定义 PathFilter:

package CustomReader

import org.apache.hadoop.fs.{Path, PathFilter}

class GFilterZip extends PathFilter {
  override def accept(path: Path): Boolean = {
    true
  }
}
// in spark settings
sc.hadoopConfiguration.setClass("mapreduce.input.pathFilter.class", classOf[CustomReader.GFilterZip], classOf[org.apache.hadoop.fs.PathFilter])
Run Code Online (Sandbox Code Playgroud)

但我仍然有同样的问题。有任何想法吗?

系统:Apache Spark 1.6.0 和 Hadoop 2.3

hadoop apache-spark

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

带有对象的单元测试特征

我有以下构造,在那里我有一个

trait DataServiceLocalImpl extends DataService {
  override lazy val dataService = DataComponentLocalImpl
}

object DataComponentLocalImpl extends DataComponent {
  def getData(element:String):String = GetStuffFromFile(element)
}

trait DataService {
  val dataService: DataComponent
}

trait DataComponent {
  def getData(element:String):String
}
Run Code Online (Sandbox Code Playgroud)

GetStuffFromFile 从磁盘读取文件一次(我只想要一次,因此是对象),创建一个映射,然后返回元素的值。

这一切都是在 Play Framework 2.3 周围完成的,该应用程序也能正常工作,但是当我在测试中将其作为隐式使用时,我收到以下错误:

java.lang.NoClassDefFoundError: Could not initialize class DataComponentLocalImpl

测试套件:

class AutoCompleteSpec extends PlaySpec with Mockito with OneAppPerSuite {
  val resource = new DataServiceLocalImpl {}
  implicit val dataService = resource.dataService
}
Run Code Online (Sandbox Code Playgroud)

如果我删除隐式它会起作用......

unit-testing scala playframework-2.0

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