我知道这个问题有点开放,但我一直在考虑使用Scala/Lift作为Java/Spring的替代品,我想知道Scala/Lift对它有什么真正的优势.从我的观点和经验来看,Java Annotations和Spring确实最大限度地减少了您为应用程序所做的编码量.Scala/Lift会改进吗?
我刚开始使用Scala/LiftWeb/Sbt开发,我想在IntelliJ Idea中导入一个Sbt项目.实际上,我设法以两种不同的方式导入我的项目:
1)与Maven.我创建了一个Maven项目,最重要的是我创建了一个Sbt项目,然后我在IntelliJ中导入了该项目.然后我可以轻松启动,停止Jetty服务器,并做其他的事情.但这不是我想要的.我想做同样的事情,只是Maven-free.这导致我
2)使用Eclipse.所以,我创建了一个新的Sbt项目(我编写了一个小脚本,将Sbt项目配置为WebProject).然后我使用sbt-eclipsify插件来"转换"Eclipse的项目,然后我在IntelliJ中导入(现有的源 - > eclipse).但是问题从这里开始:我无法使用IntelliJ Sbt插件.
谁能帮我这个?
我从升级现有的代码Rogue 1.1.8,以2.0.0和lift-mongodb-record从2.4-M5 to 2.5.
我写的MongoCaseClassField包含scala enum 有困难,我真的可以使用一些帮助.
例如,
object MyEnum extends Enumeration {
type MyEnum = Value
val A = Value(0)
val B = Value(1)
}
case class MyCaseClass(name: String, value: MyEnum.MyEnum)
class MyMongo extends MongoRecord[MyMongo] with StringPk[MyMongo] {
def meta = MyMongo
class MongoCaseClassFieldWithMyEnum[OwnerType <: net.liftweb.record.Record[OwnerType], CaseType](rec : OwnerType)(implicit mf : Manifest[CaseType]) extends MongoCaseClassField[OwnerType, CaseType](rec)(mf) {
override def formats = super.formats + new EnumSerializer(MyEnum)
}
object myCaseClass extends MongoCaseClassFieldWithMyEnum[MyMongo, …Run Code Online (Sandbox Code Playgroud) 我们正在考虑将我们的Rest API服务器(它在Web服务中,在Symfony PHP上)移动到Scala有以下几个原因:速度,无开销,更少的CPU,更少的代码,可扩展性等.我不知道Scala直到几个几天前,但我一直很享受这些天我用Scala书和所有博客文章和问题学习的东西(它不是那么难看!)
我有以下选择:
我将不得不使用的一些东西:HTTP请求,JSON输出,MySQL(数据),OAuth,Memcache(缓存),日志,文件上传,统计(可能是Redis).
你会推荐什么?
我试图做一个EnumListField在电梯/录音/ Squeryl,类似MappedEnumList的LiftMapper.存储类型应为Long/BIGINT.我明白,如果我定义:
def classOfPersistentField = classOf[Long]
Run Code Online (Sandbox Code Playgroud)
然后Squeryl会知道它应该创建一个BIGINT列.我知道它用于setFromAny()设置值,传入Long.我没有得到的一件是:
它将如何读取该领域的价值?如果它使用valueBox,它将得到一个Seq[Enum#Value],它将不知道如何将其变成一个龙.
我如何告诉Squeryl将我转换Seq[Enum#Value]为Long,或者定义一个返回Long的"getter",并且不与"普通"getter冲突?
我正在学习Scala并同时解除,我不得不理解用于在Boot.scala中初始化SiteMap的语法:
val entries = Menu(Loc("Home", "/", "Home")) ::
Menu(Loc("Foo", "/badger", "Foo")) ::
Menu(Loc("Directory Foo", "/something/foo", "Directory Foo")) :: Nil
LiftRules.setSiteMap(SiteMap(entries:_*))
Run Code Online (Sandbox Code Playgroud)
SiteMap参数的含义究竟是什么?我看到值条目是菜单列表.什么是冒号,下划线,明星?起初我以为它是列表中的一种方法,但我无法找到这样的定义......
我试图使用JSON在浏览器和我的应用程序之间发送数据.
我试图使用Lift 1.0来创建和解析JSON字符串,但由于某种原因,我无法解析我刚刚构造的JSON:
scala>import scala.util.parsing.json.JSON._
import scala.util.parsing.json.JSON._
scala> import net.liftweb.http.js._
import net.liftweb.http.js._
scala> import net.liftweb.http.js.JE._
import net.liftweb.http.js.JE._
scala> val json = JsObj(("foo", 4), ("bar", "baz")).toJsCmd
json: String = {'foo': 4, 'bar': 'baz'}
scala> parseFull(json)
res3: Option[Any] = None
Run Code Online (Sandbox Code Playgroud)
如何在Scala/Lift中以编程方式构造有效的JSON消息,还可以再次解析?
我想知道电梯网框架具有高性能和可扩展性的技术原因?我知道它使用scala,它有一个actor库,但根据安装说明,默认配置是jetty.那么它是否使用actor库来扩展?
现在是开箱即用的可扩展性.只需添加额外的服务器和节点,它将自动扩展,它是如何工作的?它可以处理与支持服务器的500000多个并发连接.
我正在尝试为企业级创建一个Web服务框架,它可以胜过那里的内容,并且易于扩展,可配置和可维护.我对扩展的定义只是增加了更多的服务器,你应该能够容纳额外的负载.
谢谢
我正试图找到'正确'的演员实现.我意识到有一堆它们,选择一个有点令人困惑.就个人而言,我对远程演员特别感兴趣,但我想完整的概述会对很多人有所帮助.这是一个非常普遍的问题,所以请随意回答您所了解的实施问题.
我知道以下Scala Actor实现(SAI).请添加缺少的.
Scalaz(http://code.google.com/p/scalaz/)
这些SAI的目标用例是什么(轻量级与"重型"企业框架)?