小编Jac*_*ack的帖子

使用PostgreSQL和Slick的自动递增字段

如何使用带有Slick映射表的AutoInc键将记录插入PostgreSQL?如果我在我的case类中使用和选择id并将其设置为None,那么PostgreSQL会在插入时抱怨该字段不能为null.这适用于H2,但不适用于PostgreSQL:

//import scala.slick.driver.H2Driver.simple._
//import scala.slick.driver.BasicProfile.SimpleQL.Table
import scala.slick.driver.PostgresDriver.simple._
import Database.threadLocalSession

object TestMappedTable extends App{

    case class User(id: Option[Int], first: String, last: String)

    object Users extends Table[User]("users") {
        def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
        def first = column[String]("first")
        def last = column[String]("last")
        def * = id.? ~ first ~ last <> (User, User.unapply _)
        def ins1 = first ~ last returning id
        val findByID = createFinderBy(_.id)
        def autoInc = id.? ~ first ~ last <> (User, User.unapply _) returning id
    }

 // …
Run Code Online (Sandbox Code Playgroud)

scala typesafe-stack slick

21
推荐指数
2
解决办法
9780
查看次数

为什么Scala中的groupBy会更改列表项的顺序?

此代码来自Scala工作表:

case class E(a: Int, b: String)

val l = List(
    E(1, "One"),
    E(1, "Another One"),
    E(2, "Two"),
    E(2, "Another Two"),
    E(3, "Three")
)

l.groupBy(x => x.a)                             
// res11: scala.collection.immutable.Map[Int,List[com.dci.ScratchPatch.E]] =
//    Map(
//      2 -> List(E(2,Two), E(2,Another Two)),
//      1 -> List(E(1,One), E(1,Another One)),
//      3 -> List(E(3,Three))
//    )
Run Code Online (Sandbox Code Playgroud)

您会注意到groupBy返回一个映射,但是元素的排序现在与之前的顺序不同.知道为什么会这样,最好的方法是避免这种情况吗?

scala

21
推荐指数
2
解决办法
6481
查看次数

如何在集合内部进行隐式转换?

说我有一个隐含的转换:

implicit def aToB(a: A):B={
...
}
Run Code Online (Sandbox Code Playgroud)

如何才能将此隐式转换用于List的元素?

如果我有:

val listOfA: List[A] ...
Run Code Online (Sandbox Code Playgroud)

我有一个带B列表的函数,是否可以让Scala隐式地将所有元素从A转换为B?

如果没有隐式转换,转换可能如下所示:

lisftOfA.map(a => new B(a.someValue, a.anotherValue))
Run Code Online (Sandbox Code Playgroud)

但是,我希望这种情况像'魔术'一样发生......这太难以问了.

scala

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

使用Scala中的Slick库获取自动增量值

如何获取使用Slick插入的记录的自动递增值?下面的代码打印1111.我原本预计它会打印1234

import scala.slick.driver.H2Driver.simple._

object TestMappedTable extends App{
    case class User(id: Option[Int], first: String, last: String)

    object Users extends Table[User]("users") {
        def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
        def first = column[String]("first")
        def last = column[String]("last")
        def * = id.? ~ first ~ last <> (User, User.unapply _)
    }

  implicit val session = Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver").createSession()
  session.withTransaction{
    Users.ddl.create

    print(Users.insert(User(None, "Jack", "Green" )))
    print(Users.insert(User(None, "Joe", "Blue" )))
    print(Users.insert(User(None, "John", "Purple" )))
    print(Users.insert(User(None, "Jim", "Yellow" )))
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Slick 0.11.2 for Scala 2.10.0-RC1

scala slick

17
推荐指数
2
解决办法
9738
查看次数

如何使用ScalaQuery或SLICK的链接表呈现多对多关系?

我最近问了一个类似的问题,并得到了一个很好的回答,解决了与Lift Mapper的多对多关系问题.我查看了ScalaQuery/SLICK文档,但没有记录持久化数据的方法,其中涉及链接表.如果有人知道如何使用SLICK进行多对多映射,那么如果你可以分享它就会很棒.

scalaquery

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

如何使用SBT仅运行单个Spec2规范?

如果您在SBT项目中定义了2个测试:

class Spec1 extends Specification {
  def is =
    "Tests for specification 1" ^
      p ^
      "Test case 1" ! todo ^
      end
}
Run Code Online (Sandbox Code Playgroud)

class Spec2 extends Specification {
  def is =
    "Tests for specification 2" ^
      p ^
      "Test case 2" ! todo ^
      end
}
Run Code Online (Sandbox Code Playgroud)

然后test从SBT内部运行将执行这两个测试.只运行其中一个测试的最简单方法是什么?

scala specs2

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

从字符串中删除多个字符类型

这是从字符串中删除多个字符类型的可接受方法还是有更好的(更有效的方法)?该"ilr".contains(_)位感觉有点像作弊考虑它会为每一个角色来完成,但话又说回来,也许这是正确的方式.有没有更快或更有效的方法来做到这一点?

val sentence = "Twinkle twinkle little star, oh I wander what you are"

val words = sentence.filter(!"ilr".contains(_))   

// Result: "Twnke twnke tte sta, oh I wande what you ae"
Run Code Online (Sandbox Code Playgroud)

scala

14
推荐指数
2
解决办法
3万
查看次数

在远程服务器上部署,启动和停止Scala应用程序

在远程Linux服务器上部署Scala应用程序的首选方法是什么.

这是在远程服务器上部署Scala应用程序的一种相当简单但有限的方法(非常适合快速测试不那么敏感的项目):

  1. 从远程服务器我从git中提取源代码
  2. 使用sbt-assembly插件我在服务器上构建一个jar
  3. 然后我使用nohup运行Scala应用程序,它允许您退出远程会话而不终止进程:

    nohup java -jar myapp.jar> myapp.log 2> myapp.err </ dev/null&

首先,考虑到它正在使用数据库等资源,一旦它运行就停止进程的最佳方法是什么?我只是查找java进程ID并对其进行核对吗?

其次,重启时自动启动java应用程序的最佳方法是什么.我记得过去曾使用init.d,但是记得因为它是一个java应用程序而变得一些上坡.

更新:

我在这里错过了房间里的大象.我正在使用Spray库,它反过来使用Akka,因此提供了许多有趣的选项.

java linux scala process spray

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

使用Pandoc添加标题页,页眉和页脚

在从Markdown生成PDF时,如何指定Pandoc应使用特定的页眉和页脚?

目前我使用以下命令从命令行创建我的文档:

pandoc -s -V geometry:margin=1in --number-sections -o doc.pdf doc.mkd
Run Code Online (Sandbox Code Playgroud)

这给出了编号部分的可爱结果.

我想做的是在每个页面上包含页眉和页脚.我该怎么办呢?

扩展机制,例如,pandoc_title_block可以把握关键,但你如何使用它?

最后(作为奖励),有没有办法使用pandoc为文档创建标题页?

pandoc

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

使用Scala解析带有文件上载内容的多部分HTTP表单数据

有很多multipart/form-data文件上传解决方案,但我无法为Scala找到一个独立的.

Play2将此功能作为框架的一部分,Spray还支持多部分表单数据.不幸的是,这些似乎都完全集成到其他工具集中(我可能在这里错了).

我的服务器是使用Finagle(目前不支持多部分表单数据)开发的,如果可能的话,我想使用独立的lib或"自己动手"的解决方案.

这是典型的multipart/form-data消息:

--*****org.apache.cordova.formBoundary
Content-Disposition: form-data; name="value1"

First parameter content
--*****org.apache.cordova.formBoundary
Content-Disposition: form-data; name="value2"

Second parameter content
--*****org.apache.cordova.formBoundary
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg

$%^&#$%^%#$
--*****org.apache.cordova.formBoundary--
Run Code Online (Sandbox Code Playgroud)

在此示例中,*****org.apache.cordova.formBoundary是表单边界,因此分段上传包含2个文本参数和一个图像(为了清楚起见,我将图像数据连接起来).

如果一个比我更了解Scala的人可以给我一些关于如何解析这些内容的简要介绍,我将非常感激.

首先,我想我会快速拆分三个内容:

data.split("\\Q--*****org.apache.cordova.formBoundary\\E") foreach println
Run Code Online (Sandbox Code Playgroud)

但执行速度非常慢(更新 - 这是由于预热时间).是否有更有效的方法来拆分零件?我的策略是将内容分成几部分,然后将部分拆分成子部分.这是一个糟糕的方法吗?我见过用状态机解决类似的问题?什么是好的功能方法.请记住,我试图在尝试解决问题时学习一种适当的Scala方法.

更新:

我真的认为这个问题的解决方案是Scala中的一行或两行.如果有人通过光滑的解决方案绊倒这个问题,请花时间记下来.根据我的理解,可以使用模式匹配,解析组合器,提取或简单地拆分字符串来解析此消息.我正在努力寻找解决此类问题的最佳方法,因为我正在进行的项目涉及大量自然语言解析,我需要编写自己的自定义解析工具.我对Scala有了很好的理解,但没有什么比专家的建议好.

它不仅仅是解决问题,而是找到解决此类问题的最佳方法(并且希望最简单).

parsing scala

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

标签 统计

scala ×8

slick ×2

java ×1

linux ×1

pandoc ×1

parsing ×1

process ×1

scalaquery ×1

specs2 ×1

spray ×1

typesafe-stack ×1