在linux shell中,以下命令将递归搜索并将'this'的所有实例替换为'that'(我在我面前没有Linux shell,但它应该这样做).
find . -name "*.txt" -print | xargs sed -i 's/this/that/g'
Run Code Online (Sandbox Code Playgroud)
OSX上的类似命令会是什么样的?
我已经离开衣柜了!我不明白SBT.在那里,我说,现在请帮助我.
条条大路通罗马,那是SBT一样的:要开始SBT有SBT,SBT Launcher,SBT-extras,等,然后有不同的方式,包括和决定库.有最好的方式吗?
我问,因为有时候我有点失落.SBT文件非常全面和完整,但我发现自己不知道何时使用build.sbt或project/build.properties或project/Build.scala或project/plugins.sbt.
然后它变得有趣,有Scala-IDE和SBT- 一起使用它们的正确方法是什么?首先是鸡还是鸡蛋?
最重要的可能是,如何在项目中找到合适的存储库和版本?我是否只是拔出一把小砍刀并开始乱砍我前进的方向?我经常发现包括所有东西和厨房水槽的项目,然后我意识到 - 我不是唯一一个迷失方向的人.
举个简单的例子,我现在开始一个全新的项目.我想用最新的功能SLICK和Scala这很可能需要最新版本的SBT的.什么是开始的理所当然的,为什么?我应该在什么文件中定义它以及它应该如何?我知道我可以让这个工作,但我真的想要一个专家意见,应该去哪里(为什么它应该去那里会有奖金).
我已经用SBT了一年多的小项目了.我使用SBT然后SBT Extras(因为它使一些头痛神奇地消失),但我不知道为什么我应该使用这一个或另一个.我只是因为不理解事物如何组合(SBT和存储库)而感到有些沮丧,并且认为如果可以用人类的术语来解释它会拯救下一个如此困难的人.
我正在将Joda Time存储库添加到SBT中
libraryDependencies ++= Seq(
"joda-time" % "joda-time" % "2.1"
)
Run Code Online (Sandbox Code Playgroud)
然后我喜欢这样使用它:
val ymd = org.joda.time.format.DateTimeFormat.forPattern("yyyyMMdd")
ymd.parseDateTime("20121212")
Run Code Online (Sandbox Code Playgroud)
但是,当我在SBT编译项目时,我感到很讨厌:
[warn] Class org.joda.convert.FromString not found - continuing with a stub.
[warn] Caught: java.lang.NullPointerException while parsing annotations in /home/jack/.ivy2/cache/joda-time/joda-time/jars/joda-time-2.1.jar(org/joda/time/DateTime.class)
[error] error while loading DateTime, class file '/home/jack/.ivy2/cache/joda-time/joda-time/jars/joda-time-2.1.jar(org/joda/time/DateTime.class)' is broken
[error] (class java.lang.RuntimeException/bad constant pool tag 10 at byte 42)
Run Code Online (Sandbox Code Playgroud)
我尝试了joda-time的2.0版本,但是得到了同样的错误.
有没有人知道一个非常好的教程或示例项目,其中Phonegap和jQuery Mobile用于现实世界的例子?
我发现的所有示例都在jQuery Mobile中显示了奇特的过渡或主题.Phonegap示例主要展示了Phonegap API.
我找不到使用Phonegap和jQuery Mobile来解决实际问题的单一示例,例如编写一个结合了Phonegap和jQuery Mobile的应用程序来进行用户输入验证,保存数据,将数据上传到Web服务等.
注意: 不幸的是这个问题已经关闭,但是如果有其他人提出同样的问题,我正试图维护它.
我一直在寻找在Scala中开发服务的良好解决方案,该服务将位于移动设备和现有Web服务之间.
目前可行的选项清单是:
那里可能有更多的选择.如何决定使用哪一个?什么是一个好的Scala中间件选择的特征(借口双关语;-).一方面,我想去Akka,因为它是TypeSafe Scala堆栈的一部分,但另一方面,像Finagle这样的东西有一组丰富的库,使管道变得如此简单.喷雾看起来很好用,很简单.
任何建议,见解或经验将不胜感激.我相信那里的某些人必须有一些经验,他们不介意分享.
更新:
我很乐意重新开启这个问题.这个问题的一个很好的答案将有助于新的Scalateers避免相关的陷阱.
更新2:
这些是我自问这个问题后的经验:
Finagle - 我用Finagle进行了一个项目,它坚如磐石.
喷雾 - 在我的最新项目中,我正在使用Spray,我非常高兴.最新版本基于Akka 2构建,您可以使用Spray-can库直接运行它,无需Web服务器.Spray是一组库,而不是框架,非常模块化.在了解喷雾:在阿卡视频REST给出了一个很好的概述,而这个博客在Cakesolutions显示了一个非常好的发展方式和结构.
更新3:
生活移动得非常快.如果你不停下来,偶尔环顾四周,你可能会错过它.- Ferris Bueller
这些天选择变得更加简单.在我的拙见中,Spray赢得了这场战斗.它被整合到Akka中,成为下一个Akka HTTP.我现在一直在使用Spray进行多个项目,并且可以诚实地说它是我遇到的奇妙和最好的支持软件.
这不能回答最初的问题,但至少可以说明为什么Spray在大多数情况下似乎是最佳选择.它非常灵活,无阻塞且非常稳定.它有客户端和服务器端库以及一个很棒的测试工具包.另外,请查看这些统计信息以了解性能:Web框架基准测试
从SBT到Scala-IDE的路径在很多地方都有很好的描述:
与此相反的是什么?如果我在Scala-IDE中启动一个新项目,我可以添加一个build.sbt文件,并以某种方式告诉Eclipse在运行应用程序时使用它吗?
抱歉,如果这对某些人来说显而易见,但我最近从ItelliJ Idea转移到了Scala-IDE,我不确定是否要设置Scala-IDE来使用SBT和我的sbt配置文件.
Scala是否有内置的二进制数据格式化程序?
例如,打印输出:00000011表示Int值3.
写一个并不难 - 只是好奇它是否存在.
假设有3个字符串:
protein, starch, drink
Run Code Online (Sandbox Code Playgroud)
连接这些,我们可以说晚餐是什么:
例:
val protein = "fish"
val starch = "chips"
val drink = "wine"
val dinner = protein + ", " + starch + ", " + drink
Run Code Online (Sandbox Code Playgroud)
但是,如果缺少一些东西,例如蛋白质,那会怎么样,因为我的妻子无法捕获任何东西.然后,我们将:,chips, drink吃晚餐.
有一种灵活的方式来连接字符串以选择性地添加逗号 - 我只是不知道它是什么;-).有没有人有个好主意?
我正在寻找类似的东西:
val dinner = protein +[add a comma if protein is not lenth of zero] + starch .....
Run Code Online (Sandbox Code Playgroud)
这只是我正在做的一项有趣的运动,所以如果不能以某种很酷的方式完成,那么现在就会出汗.我试图在单个赋值中进行条件连接的原因是因为我在XML中使用了这种类型的东西,一个好的解决方案会使事情变得更好.
在这一点Scala中做了什么?
例如:
scala> val apple = 1
apple: Int = 1
scala> ~apple
res0: Int = -2
Run Code Online (Sandbox Code Playgroud)
这只虫对我的苹果做了什么?
更新:我已经编辑了标题并添加了这个文本以更好地解释我想要实现的目标:我正在尝试从头开始创建一个新的应用程序,但不希望业务层知道持久性层,就像人们不希望业务层知道REST API层一样.下面是我想要使用的持久层的示例.我正在寻找与此集成的好建议,即我需要设计/架构方面的帮助,以便在业务逻辑和持久性逻辑之间彻底分离责任.也许是沿着编组和解组持久性对象到域对象的概念.
从SLICK(又名ScalaQuery)测试示例,这是您创建多对多数据库关系的方式.这将创建3个表:a,b和a_to_b,其中a_to_b保持表a和b中的行的链接.
object A extends Table[(Int, String)]("a") {
def id = column[Int]("id", O.PrimaryKey)
def s = column[String]("s")
def * = id ~ s
def bs = AToB.filter(_.aId === id).flatMap(_.bFK)
}
object B extends Table[(Int, String)]("b") {
def id = column[Int]("id", O.PrimaryKey)
def s = column[String]("s")
def * = id ~ s
def as = AToB.filter(_.bId === id).flatMap(_.aFK)
}
object AToB extends Table[(Int, Int)]("a_to_b") {
def aId = column[Int]("a")
def bId = column[Int]("b")
def * = aId ~ …Run Code Online (Sandbox Code Playgroud)