在项目中收集和使用有用的Scala实用程序函数的好方法是什么.这里关注的是非常简单的独立功能,例如:
def toBinary(i: Int, digits: Int = 8) =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
def concat(ss: String*) = ss filter (_.nonEmpty) mkString ", "
concat: (ss: String*)String
Run Code Online (Sandbox Code Playgroud)
这个问题是基本的,我知道;-)但是,我知道总有一种最佳的方法可以做某事.例如,重用Scala交互式shell中的代码,Idea,Eclipse,有或没有SBT,将库放在GitHub等上,可以快速为这样一个简单问题引入最佳和非最佳方法.
有没有人有一个很好的预先推出的gitignore文件用于使用Xcode和PhoneGap的iPhone开发?
目前我正在使用:
.idea
.DS_Store
*.swp
*~.nib
build/
adhoc/
.xcodeproj/ !*.xcodeproj/project.pbxproj
*.mode1v3
*.mode2v3
build/
xcuserdata
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否理想.例如,更新Phonegap有点搞砸了很多东西.此外,如果另一个开发人员只是使用Xcode构建项目,那么git将获取一些更改.
奇怪的是,Xcode没有列在这个列表中:https://github.com/github/gitignore
我正在Scala开发一个全新的项目.它只是一堆CRUD操作的应用程序,但是,由于一些古怪的要求,Play2或Lift不符合要求,所以我将从头开始开发应用程序.这意味着Anorm或ScalaQuery成为数据库集成的不太明显的选择,让我有一个问题:是时候尝试新的东西了吗?
我过去的技术堆栈主要包括Java和PostgreSQL,我有ORM和纯SQL的经验.像MongoDB这样的NoSQL数据库管理系统是典型RDBMS的良好替代品,还是特殊情况的应用程序数据存储?此外,数据库的选择如何影响更大的Scala系统设计(如果有的话)?例如,您使用类似JSON的接口与数据库进行通信,以及Web和REST服务之间的JSON这一事实并不意味着如果中间的所有内容都成为Scala对象,或者它是什么?
我基本上要求有人从关系数据库转移到对象/文档类型数据库,特别是使用Scala.我知道即将发布的SLICK承诺提供良好的RDBMS集成.那么,如果像TypeSafe这样的公司决定在TypeSafe堆栈中建立RDBMS集成部分,那么我将使用Casbah集成到MongoDB上游吗?
如果这个问题看起来有点含糊,请道歉.我希望有正确见解或经验的人能够提供帮助.
更新:
不向SLICK添加链接的道歉(这是相当新的).开始:
更新2:
对于技术我个人的第一场胜利通常为开发人员的生产力 -这相当于轻巧简单:快速学习,容易维护,没有魔法
每次在Scala IDE中保存Scala工作表时,每个表达式的输出都将作为注释打印在编辑器的右侧.有没有办法从Scala工作表清除此输出,以便您可以剪切和粘贴代码?
目前,我的解决方案是保存我的工作表错误,以便输出消失.必须有更好的方法...键盘快捷方式或其他东西.
SBT使用specs2和spray-testkit在我的一些较大的验收风格测试中保持内存不足.我有10个演出或RAM可用,目前我开始SBT(使用SBT附加脚本),MaxPermSize为512m,Xms为1024m,Xmx为2g.
验收测试按特定顺序贯穿客户的整个业务流程,因此将验收测试分成多个较小的测试并不容易.
任何想法如何更好地配置我的环境,或者我应该注意的问题将不胜感激.
为了它的价值,我在Ubuntu下使用Oracle Java,该项目使用Scala 2.10,sbt 0.12.2,使用specs2 1.14喷涂1.1-M7.
在测试之外运行系统时,或者在使用较小的测试时,一切都像发条一样运行.只有在较大的测试中,事情才会变得坚果.
我正在尝试使用SBT运行我的Scala代码,但是得到以下错误.SBT使用命令行和IntelliJ Idea都会发生这种情况.
[error] (run-main) org.jboss.netty.channel.ChannelException:
Failed to bind to: /127.0.0.1:80
org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:80
....
....
Caused by: java.net.SocketException: Permission denied
Run Code Online (Sandbox Code Playgroud)
我配置什么来允许端口访问.当我尝试在我的本地Mac和远程Ubuntu服务器上运行时,会发生这种情况.
使用"sudo sbt"运行sbt可以解决问题,但这不是解决方案.我在哪里可以设置允许我的Scala应用访问端口80的权限.
关于Scala中的映射,if ms - (k, 1, m)返回包含ms的所有映射的映射,除了具有给定键x,1和m的任何映射.
然后,什么语句将返回ms的所有映射的映射,只有 给定的键x,1和mie我正在寻找ms的子集,其中只有k,1和m是键.
这有效,但很糟糕:
scala> val originalMap = Map("age" -> "20", "name" -> "jack", "hobby" -> "jumping")
ms: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(age -> 20, name -> jack, hobby -> jumping)
scala> val interestingKeys = List("name", "hobby")
interesting: List[java.lang.String] = List(name, hobby)
scala> val notInterestingMap = originalMap -- interestingKeys
notInterestingMap: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(age -> 20)
scala> val interestingMap = originalMap -- notInterestingMap.keySet
interestingMap: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(name -> jack, hobby -> jumping)
Run Code Online (Sandbox Code Playgroud) 随着Akka 2的发布,Akka HTTP模块已被替换为使用Play2-mini的选项,其中Play2-mini看起来像Play2减去模型视图控制器.
该线在实现REST服务和创建HTTP客户端之间变灰.例如,假设我想在一个服务(即HTTP代理)中创建Web服务(不一定是REST)和HTTP客户端.我使用Akka还是Play2-mini?
我已经在Finagle中创建了这样的服务,并希望用Akka和/或Play2-mini重做练习,看看它是如何比较的.
从高层次来看,架构是什么样的?这些产品如何结合在一起?
鉴于以下内容:
val x = Some(Some(1))
Run Code Online (Sandbox Code Playgroud)
获得1的最简洁方法是什么(如果不存在则为-1)?
我正在从数据库查询返回的元组创建一个对象实例.元组中的一个值看起来像这样,所以我想要一个很好的短'one liner'来获取值或将参数设置为-1.
类和表定义如下所示:
case class Group(
id: Long = -1,
id_parent: Long = -1,
label: String = "",
description: String = "")
object Groups extends Table[Group]("GROUPS") {
def id = column[Long]("ID", O.PrimaryKey, O.AutoInc)
def id_parent = column[Long]("ID_PARENT")
def label = column[String]("LABEL")
def description = column[String]("DESC")
def * = id ~ id_parent ~ label ~ design <> (Group, Group.unapply _)
def autoInc = id_parent ~ label ~ design returning id into {
case ((_, _, _), id) => id
}
}
Run Code Online (Sandbox Code Playgroud)
要更新记录,我可以这样做:
def …Run Code Online (Sandbox Code Playgroud)