我正在尝试使用可堆叠特征将Pub/Sub特性混合到其他akka actor中.
这是我想出的:
trait PubSubActor extends Actor {
abstract override def receive =
super.receive orElse {
case Subscribe(topic) => /* ... */
case Publish(topic, msg) => /* ... */
}
}
class MyActor extends Actor with PubSubActor {
override def receive = {
case SomeMessage(a, b, c) => /* ... */
}
}
Run Code Online (Sandbox Code Playgroud)
此时,编译器会抛出一个错误:错误:重写方法在特征中接收MyActor ...方法接收需要`abstract override'修饰符.
你能解释一下为什么这不起作用吗?我怎样才能修复它以便它有效?
谢谢!
UPDATE
以下作品:
trait PubSubActor extends Actor {
abstract override def receive =
super.receive orElse {
case Subscribe(topic) => /* ... */
case …Run Code Online (Sandbox Code Playgroud) 我想知道项目的名称和ID之间的SBT是否存在差异.
我注意到示例build.sbt文件具有以下键:
name := "My Project"
Run Code Online (Sandbox Code Playgroud)
我注意到Build.scala文件:
Project(id = "My Project", base = file("."))
Run Code Online (Sandbox Code Playgroud)
有区别吗?两者应该相同还是不相关?它们用于什么?
谢谢!
我试图让我的Ember应用程序的根视图具有完整(100%)高度,到目前为止没有成功.
我为什么需要那个?我有一个页脚,我想要与底部对齐,即使页面内容没有填满整个高度.为此,我有以下CSS:
.push {
height: 60px;
}
.content {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -60px;
}
Run Code Online (Sandbox Code Playgroud)
和HTML(使用Twitter Bootstrap):
<body>
<div class="navbar navbar-fixed-top"><!-- ... --></div>
<div class="content">
<div class="push"><!--//--></div>
<div class="container">
<!-- page content -->
</div>
<div class="push"><!--//--></div>
</div>
<footer>Copyright ... 2013</footer>
</body>
Run Code Online (Sandbox Code Playgroud)
没有Ember,这很好用.现在,介绍Ember:
<script type="text/x-handlebars" data-template-name="application">
<div class="navbar navbar-fixed-top"><!-- ... --></div>
<div class="content">
<div class="push"><!--//--></div>
<div class="container">
{{outlet}}
</div>
<div class="push"><!--//--></div>
</div>
<footer>Copyright ... 2013</footer>
</script>
Run Code Online (Sandbox Code Playgroud)
现在它不再有效了!
该死的东西插入一个<div id="emberXYZ" class="ember-view">包含整个东西的东西,它本身就很好,除了div没有完整的高度,页脚只是在内容后面的页面中间挂起.
我搜索了一个解决方案,但找不到任何可以解决这个问题的东西.我的猜测是最简单的方法是让Ember将根视图设置为100%高度(似乎无法找到如何做到这一点),但也许有一些其他聪明的技巧可以实现我想要的.无论是什么解决方案,我都需要它至少与IE8兼容.
提前致谢!
我正在尝试在SBT中配置Scaladoc,特别是标题,输出目录和类路径.
我设法通过在build.sbt中添加以下内容来定义标题:
scalacOptions in (Compile, doc) ++= Opts.doc.title("Scala-Tools")
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何更改doc输出目录.
我也无法弄清楚如何将jar添加到classpath.我想编辑类路径的原因是因为当我引用它的类时,scaladoc似乎没有得到标准的Scala库,即[[scala.Option]]导致警告"找不到任何链接的成员为"scala.Option"."
任何帮助,即使是一个示例SBT配置的形式将不胜感激!
我正在使用Scala 2.10-RC3和SBT 0.12.1.
我正在尝试构建一个Android应用程序来拍照,我需要冻结给定事件(即拍摄的照片)上的相机预览,并仅在另一个事件之后重新启动它.
换句话说,我想要的是视图显示相机在冻结事件发生之前看到的任何内容,然后冻结图像(即显示此事件发生时屏幕上显示的内容 - 就像拍摄照片一样)直到解冻事件发生.
现在,我正在使用带有SurfaceHolder.Callback的SurfaceView来执行此操作,我尝试使用PreviewCallback来冻结屏幕,但不幸的是,我找不到示例或教程,我真的被困在这点.
如果有人有关于如何完成这项工作的指南或指示,我将非常感谢帮助......
我正在粘贴下面代码的相关部分:
公共类CustomCameraView扩展了SurfaceView {
Camera camera;
SurfaceHolder previewHolder;
//Callback for the surfaceholder
SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
camera=Camera.open();
try
{
camera.setPreviewDisplay(previewHolder);
}
catch (Throwable t) {
}
}
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h)
{
Parameters params = camera.getParameters();
params.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(params);
camera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder arg0)
{
camera.stopPreview();
camera.release();
}
};
public CustomCameraView(Context ctx)
{
super(ctx);
previewHolder = this.getHolder();
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
previewHolder.addCallback(surfaceHolderListener);
setBackgroundColor(Color.TRANSPARENT);
}
public …Run Code Online (Sandbox Code Playgroud) 我正试图找出使用akka-http和akka-streams实现真正的websocket应用程序的最佳方法.我最想要的是简单性,我现在还没有得到它.
假设您有一个相当复杂的管道,需要区分多个请求,有时会将请求发送给actor进行处理,有时会发出mongo查询并返回响应,有时会在REST API上执行PUT等.
与那里的简单聊天应用程序示例不同,出现至少3个似乎没有标准解决方案的问题:
有条件地跳过响应,例如,因为客户端不期望该请求将收到响应.如果我使用从消息到消息的典型流程,一旦请求到达其目标,我需要阻止它进一步传播回websocket.它可以使用特殊的过滤器(涉及一些痛苦)或使用各种其他方式(例如,使用akka流有条件地跳过流)来完成,但这增加了许多样板和复杂性.理想情况下,我希望能够插入跳过其他所有内容的"跳过"消息.
将传入消息路由到适当的位置(例如,actor,mongo).再一次,我可以找到涉及大量样板的解决方案(例如,在不处理此类请求的分支处进行广播和过滤).理想情况下,我应该能够定义如下内容:如果消息是X,则将其发送到那里,如果消息是Y,则将其发送到那里等.
将错误传播回客户端.非常类似于上面描述的路由问题.例如,如果JSON解析失败,我需要添加一个单独的路径(广播+合并),我发送错误消息,但如果在下一阶段发生错误,我甚至无法轻易地重用相同的路径,我想将该错误传播给用户.理想情况下,我应该有一个单独的错误处理路径,可以在流中的任意点使用,完全绕过流的其余部分并返回到客户端.
目前,我有这个非常复杂的图表,跨越15行,路径经过> 20个不同的阶段,我真的很担心要保持这个解决方案的复杂性.DSL在这个尺寸上几乎是不可读的.我当然可以更好地模块化,但这对于一些应该简单得多的事情来说就像是一个疯狂的麻烦.
我错过了什么吗?考虑到akka-streams这样的任务,我是疯了吗?任何可以让我控制所有复杂性的想法或代码示例?
提前致谢!
假设我有一个包含一堆案例类的Scala项目com.example.a.b.c.我想将所有这些类导入到一个包中com.example.c(其中包含一些非冲突的case类),以便在我的项目中的任何其他地方,我只需要import com.example.c._使用来自com.example.c和的每个case类com.example.a.b.c.
我怎样才能做到这一点?
我正在尝试为PlayFramework 2.1编写一个SBT插件,它可以预编译位于app/assets/templates中的把手模板.我当然会在完成后分享这个插件.我发现这个HOWTO http://eng.netwallet.com/2012/04/25/emberhandlebars-template-precompilation-with-play/这是一个有点过时,但它是适应它玩没问题!2.1.
然后我尝试编译一个简单的模板文件,但SBT失败了以下内容:
ember: processing template test
[error] /.../templates/test.handlebars: Compilation error[unexpected exception during Ember compilation (file=/.../templates/test.handlebars, options=List(), ember=ember-1.0.0-pre.4.js): org.mozilla.javascript.EvaluatorException: missing name after . operator (ember-1.0.0-pre.4.js#3309)]
[error] (MyProject/*:play-copy-assets) @6dap83075: Compilation error in /.../templates/test.handlebars:null
[error] (MyProject/compile:resources) @6dap83075: Compilation error in /.../templates/test.handlebars:null
Run Code Online (Sandbox Code Playgroud)
第3309行的ember-1.0.0-pre.4.js有一个volatile关键字,显然是在Rhino中保留的.
我远非犀牛专家,这就是为什么我想知道是否有人知道如何解决这个问题?我现在不是在寻找5*解决方案.任何解决方案(即使是使用自定义ember.js的快速和肮脏的黑客)都有合理的机会为大多数简单的把手模板工作都可以工作,我们担心一旦功能出现并且SBT插件出来就抛光它.
提前致谢!
我正在尝试将各种设置与我的Play中的构建定义分开!2.1申请.
我在build.sbt中定义了一些设置,如下所示:
name := "My Project"
version := 1.0
Run Code Online (Sandbox Code Playgroud)
如何在Build.scala中重用这些值?
object ApplicationBuild extends Build {
val main =
// Doesn't compile since name and version are SettingKeys, not Strings
play.Project(name, version).settings(
// ...
)
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
关于New Relic API,请参阅https://github.com/newrelic/newrelic_api,我想知道主机和实例之间的区别是什么。
基本上,我知道什么是应用程序,什么是服务器(显然)。我假设实例是应用程序的实例,即,如果我的应用程序在Heroku上运行,则每个实例将对应于一个运行我的应用程序的dyno。但是,什么是主机?主机和实例之间有什么区别?
谢谢,
-比利
更新
感谢您的回答!
因此,如果我理解正确,通常情况下,应用程序和实例之间的映射是1-to-n,即每个应用程序可以有1个或多个实例。同样,实例和主机之间的映射是n到m,即每个实例最多可以在一个主机上运行(在任何给定时间),但是实例分布在可用主机之间。同样,主机在服务器之间分布(例如,一对多)。是吗 (很抱歉,这听起来像是我说的是很明显的话,但是我对他们在New Relic上使用的术语不熟悉)
如果以上正确,如何从API获取实例-主机和主机-服务器映射?我可以看到如何获取应用程序-实例和应用程序-主机,但是其他两个呢?
再次感谢您的帮助!
scala ×6
sbt ×3
akka ×2
ember.js ×2
akka-stream ×1
android ×1
api ×1
build ×1
camera ×1
classpath ×1
footer ×1
freeze ×1
height ×1
hosts ×1
html ×1
image ×1
import ×1
instances ×1
modularity ×1
newrelic ×1
package ×1
precompile ×1
preview ×1
project ×1
rhino ×1
scaladoc ×1
traits ×1
websocket ×1