我一直在为我的Java(现在的Scala)项目使用Maven一段时间.最近,我看到一些关于Maven问题的讨论(例子).就个人而言,我很高兴直到现在.我已经使用了sbt一点点Scala,我认为它运作良好.
同样,我的观点并不是说哪个系统更好,而是要说明存在的其他替代方案以及真正的开发人员如何将它们用于Java和Scala项目.
我是Ansible的新手.我正在尝试使用非常简单的Ansible Playbook在远程主机上启动进程.
这是我的剧本的样子
-
hosts: somehost
gather_facts: no
user: ubuntu
tasks:
- name: change directory and run jetty server
shell: cd /home/ubuntu/code; nohup ./run.sh
async: 45
Run Code Online (Sandbox Code Playgroud)
run.sh使用一些参数调用java服务器进程.我的理解是,即使在剧本完成之后,在远程机器上使用异步我的进程也会继续运行(这应该在大约45秒后发生.)
但是,只要我的playbook退出远程主机终端上的run.sh启动的进程.
任何人都可以解释这里发生了什么,我在这里错过了什么.
谢谢.
我是Play(和Scala)的新手.我正在尝试编写一个调用一些Java代码的简单Play应用程序.
我想将a转换scala.collection.mutable.Map[String,Array[String]]为JSON字符串.但这显然不起作用.
基于此,我假设我要实现写入.我当前的代码(显然不正确)如下所示:
implicit val myWrites = new Writes[scala.collection.mutable.Map[String,Array[String]]] {
def writes(res: scala.collection.mutable.Map[String,Array[String]]) = {
val x = res.foreach { kv => Json.obj(
kv._1 -> ( kv._2.reduceLeft(_ + "," + _).mkString)
) }
Json.toJson(x)
}
}
Run Code Online (Sandbox Code Playgroud)
任何有助于我取得进步的指针都将受到赞赏.
我有一个地图序列
Seq[Map[String,Int]]
Run Code Online (Sandbox Code Playgroud)
我想创建一个Seq/Set,它是每个Map中所有键的联合.
unionallkeys = ( "a1", "a2", "a3", "b1", "b2", "b3", "c1", "c2", "c3" )
Run Code Online (Sandbox Code Playgroud)
在下面的例子中.
scala> val a = Map( ("a1", 1), ("a2", 2), ("a3", 3) )
a: scala.collection.immutable.Map[String,Int] = Map(a1 -> 1, a2 -> 2, a3 -> 3)
scala> val b = Map( ("b1", 1), ("b2", 2), ("b3", 3) )
b: scala.collection.immutable.Map[String,Int] = Map(b1 -> 1, b2 -> 2, b3 -> 3)
scala> val c = Map( ("c1", 1), ("c2", 2), ("c3", 3) )
c: scala.collection.immutable.Map[String,Int] = …Run Code Online (Sandbox Code Playgroud) 我resources/application.conf看起来如下.
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
}
Run Code Online (Sandbox Code Playgroud)
我正在创建一个胖罐,使用$sbt assembly它包含这个application.conf并部署这个jar来运行我的actor.现在我可以在运行时更改我的程序的日志级别(从DEBUG到INFO)而不需要简化我的actor系统吗?如果有,怎么样?
我的logback.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>%X{akkaTimestamp} %-5level[%thread] %logger{0} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/myjobs.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/myjobs.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd} %X{akkaTimestamp} %-5level[%thread] %logger{1} - %msg%n</pattern>
</encoder>
</appender>
<logger name="akka" level="INFO" />
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我有一个Future[List[Person]][1],我想得到List[Person]它.我该怎么做 ?
import scala.concurrent.Future
val futPersons : Future[List[Person]] = ....
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的案例类,它是更大案例类的一部分.
case class PublisherStatus(status: String)
case class Publisher(id: Option[BSONObjectID], name: String, status: PublisherStatus, keywords: List[String], updatedAt: Option[DateTime], outputChannelIP: String, outputChannelName: String)
Run Code Online (Sandbox Code Playgroud)
我已经为它定义了BSON Reader和Writer,如下所示.
implicit object StatusBSONReader extends BSONDocumentReader[PublisherStatus] {
def read(doc: BSONDocument): PublisherStatus =
PublisherStatus(
doc.getAs[String]("status").get
)
}
implicit object StatusBSONWriter extends BSONDocumentWriter[PublisherStatus] {
def write(status: PublisherStatus): BSONDocument =
BSONDocument(
"status" -> status.status)
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试执行以下操作时,我收到编译错误.
def updateState(id: String, s: String) {
import models.PublisherBSONWriter._
implicit val statusWrites = Json.writes[PublisherStatus]
val objectId = new BSONObjectID(id)
val status = PublisherStatus(s)
val modifier = …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚它的起源ConcurrentModificationException.在我的activity呼唤中
updateMapOverlay().我也在updateMapOverlay()另一个TimerTask定期调用的Thread(a )中调用.updateMapOverlay()从两个线程调用时,我正在使用适当的锁.这个问题是由于我updateMapOverlay从非UI线程(即TimerTask)中调用而引起的.还有其他人遇到过类似的问题吗?
private void updateMapOverlay() {
this.itemizedOverlay.refreshItems(createOverlayItemsList());
List<Overlay> overlays = mapView.getOverlays();
overlays.clear();
overlays.add(cotItemizedOverlay);
this.mapview.invalidate();
}
Run Code Online (Sandbox Code Playgroud)
ConcurrentModificationException
谢谢.
例外:
W/dalvikvm(10641): threadid=3: thread exiting with uncaught exception (group=0x4001b180)
E/AndroidRuntime(10641): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(10641): java.util.ConcurrentModificationException
E/AndroidRuntime(10641): at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
E/AndroidRuntime(10641): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:41)
E/AndroidRuntime(10641): at com.google.android.maps.MapView.onDraw(MapView.java:494)
E/AndroidRuntime(10641): at android.view.View.draw(View.java:6535)
E/AndroidRuntime(10641): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
E/AndroidRuntime(10641): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
E/AndroidRuntime(10641): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
E/AndroidRuntime(10641): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
E/AndroidRuntime(10641): …Run Code Online (Sandbox Code Playgroud) concurrency android google-maps itemizedoverlay android-mapview
有没有人尝试将Apache Camel与Drools Fusion或Drools集成.
以下是我的用例.
任何帮助或指示将不胜感激.
谢谢.
我正在寻找可以帮助我在Scala中将JSON(具有嵌套结构)从一种格式转换为另一种格式的建议或库.
我看到有一些基于JavaScript和Java的解决方案.Scala中的任何东西?
我上了课
case class PlaceHolder(time: Long, a: Int, b: Int)
Run Code Online (Sandbox Code Playgroud)
我有一个PlaceHolder对象列表,我想创建一个对象,其中包含字段a和所有值的总和b.我不在乎time.我相信它可以通过折叠/缩小操作来完成,但无法用两个字段来计算它是如何做到的.
scala> val range = 1 to 10
range: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> val placeholders = for{ i <- range} yield PlaceHolder(i,i,i)
placeholders: scala.collection.immutable.IndexedSeq[PlaceHolder] = Vector(PlaceHolder(1,1,1), PlaceHolder(2,2,2), PlaceHolder(3,3,3), PlaceHolder(4,4,4), PlaceHolder(5,5,5), PlaceHolder(6,6,6), PlaceHolder(7,7,7), PlaceHolder(8,8,8), PlaceHolder(9,9,9), PlaceHolder(10,10,10))
Run Code Online (Sandbox Code Playgroud)