标签: finch

你在iPhone游戏中用什么来播放声音?

我有一个性能密集的iPhone游戏,我想添加声音.似乎有三个主要选择:(1)AVAudioPlayer,(2)音频队列和(3)OpenAL.我讨厌编写低级代码页面来播放样本,所以我想使用它AVAudioPlayer.问题是它似乎杀死了性能 - 我做了一个简单的测量使用CFAbsoluteTimeGetCurrent,play消息似乎需要9到30毫秒才能完成.考虑到25毫秒== 40 fps,这非常悲惨.

当然有一种prepareToPlay方法可以加快速度.这就是为什么我写了一个简单的类,它可以保留几个AVAudioPlayers,预先准备它们然后使用准备好的播放器播放样本.没有雪茄,仍然需要上面提到的约20毫秒.

这样的性能对于游戏来说是无法使用的,那么你在iPhone上使用什么来播放声音效果不错的声音呢?我做错了AVAudioPlayer吗?你用音频队列播放声音吗?(在2.2出现之前,我写了一些类似于AVAudioPlayer的内容,我很乐意放弃这种体验.)你使用OpenAL吗?如果是,是否有一种简单的方法可以使用OpenAL播放声音,还是必须编写代码页?


更新:是的,使用OpenAL播放声音非常简单.


iphone audio performance avaudioplayer finch

28
推荐指数
2
解决办法
9539
查看次数

如何在Finch中绑定请求体

这是将请求参数绑定到路由器的代码.

val testReader: Endpoint[Test] = Endpoint.derive[Test].fromParams
val test: Endpoint[String] = post("test" ? testReader) { t : Test => {
    Created("OK")
  }}
Run Code Online (Sandbox Code Playgroud)

我正在使用这种方法fromParams.此方法可以非常酷的方式绑定请求参数.但是,我不知道哪种类似的方式可以绑定雀科中的请求体

提前谢谢了

web-services scala finch finagle

7
推荐指数
1
解决办法
1521
查看次数

提供Scala.js资产

我已经开始使用FinchScala.js开发新项目,后端和前端需要共享一些代码.

我担心fastOptJSFinch 生产JS的好方法.目前,我正在使用自定义的SBT任务从中复制文件js/target/scala-2.11/*.jsjvm/src/main/resources.但我想知道是否有更好的方法来做到这一点.

我看到了很棒的SPA教程,它使用了sbt-play-scalajs插件,但它似乎只适用于Play.

scala sbt finch asset-pipeline scala.js

6
推荐指数
1
解决办法
368
查看次数

如何在Finch中将RequestReader绑定到Route

我想知道如何在Finch中将RequestReader和Route绑定在一起.我没有找到一个完整的例子.

这个例子来自finch github,它运行正常.

import io.finch.route._
import com.twitter.finagle.Httpx

val api: Router[String] = get("hello") { "Hello, World!" }

Httpx.serve(":3000", api.toService)
Run Code Online (Sandbox Code Playgroud)

我明白这段代码将获得路径"hello"并将返回响应"hello world"

然后我想将RequestHeader绑定到它.

  val doSomethingWithRequest: RequestReader[String] =
    for {
      foo <- param("foo")
      bar <- param("bar")
    } yield "u got me"

  val api: Router[RequestReader[String]] = Get / "hello" /> doSomethingWithRequest

  val server = Httpx.serve(":3000", api.toService)
Run Code Online (Sandbox Code Playgroud)

我认为这段代码意味着如果网址是" http:// localhost:3000/hello?foo = 3 ",它将返回"你找我"的回复.但是,响应状态为404.

我认为我对Route和RequestHeader之间的组合做错了.

也许有人可以帮助我这个,也就是说,分享一些关于这个芬奇的好文章会更好.该版本频繁出现,文档已过时https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/

scala finch

5
推荐指数
1
解决办法
627
查看次数

Finch:方法'toService'的论据不够

我使用Finch和Finagle做了一个非常简单的休息方法:

val getUsers:Endpoint[List[User]] = get("users") {Ok(getAllUsers())}
Http.serve(":8080", getUsers.toService)
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

Error:(50, 32) not enough arguments for method toService: (implicit ts: io.finch.internal.ToService[List[DAL.Instances.User.User]])com.twitter.finagle.Service[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response].
Unspecified value parameter ts.
  Http.serve(":8080", getUsers.toService)
                               ^
Run Code Online (Sandbox Code Playgroud)

有关如何解决它的任何想法?

scala finch finagle

5
推荐指数
1
解决办法
922
查看次数

找不到 io.finch.Decode.Json 类型的证据参数的隐式值

已经为此工作了几天,但仍然不知道发生了什么:得到了 finch Web 服务,build.sbt 依赖项如下所示:

  "com.github.finagle" %% "finch-circe" % finchVersion changing(),
  "com.github.finagle" %% "finch-core" % finchVersion changing(),
  "com.github.finagle" %% "finch-jackson" % finchVersion changing(),
  "com.github.finagle" %% "finch-test" % finchVersion changing(),
  "com.twitter" %% "twitter-server" % "1.28.0",
Run Code Online (Sandbox Code Playgroud)

Finch 版本是 0.14.0。端点看起来像:

  def makeService(statsReceiver: StatsReceiver): Service[Request, Response] = {
    //val getUserCounter = statsReceiver.counter("get_user_counter")
    (
      MyEndpoint.endpoint1()
        :+: SomeEndpoint.deleteEntity()
        :+: SomeEndpoint.createEntity()
        :+: SomeEndpoint.updateEntity()
      ) handle {
      case e: InvalidClientError => Unauthorized(e)
      case e: InvalidContextError => BadRequest(e)
      case e: RelevanceError => BadRequest(e)
      case e: Exception => InternalServerError(e)
    } …
Run Code Online (Sandbox Code Playgroud)

finch circe

5
推荐指数
0
解决办法
2545
查看次数

为任意JSON创建一个"解码器"

我正在使用Finch,Circe和Sangria为API构建GraphQL端点.将variables通过在GraphQL查询来基本上是任意的JSON对象(假设没有嵌套).例如,在我的测试代码中String,这是两个例子:

val variables = List(
  "{\n  \"foo\": 123\n}",
  "{\n  \"foo\": \"bar\"\n}"
)
Run Code Online (Sandbox Code Playgroud)

Sangria API期望这些类型Map[String, Any].

我已经尝试了很多方法但到目前为止Decoder还没能在Circe 写一个.任何帮助赞赏.

scala finch graphql sangria circe

3
推荐指数
1
解决办法
921
查看次数

没有X11的DBus Finch/Pidgin

我想在我的服务器上做一些Python脚本,我可以通过DBus Python库与finch(通过pidgin界面看起来像这样的控制台界面)进行通信,links2以发送消息或检查好友的在线状态.

如果在X中执行此操作,则此方法有效.finch在X终端中运行并在另一个终端中运行Python脚本,没有错误/异常.

但如果你没有X,你必须finch在TTY1(ctrl + alt + f1)和TTY2中的python脚本(ctrl + alt + f2)中运行,但python脚本将失败.

以下是该脚本的前几行:

import dbus
bus = dbus.SessionBus() # gives EXCEPTION error
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
...
Run Code Online (Sandbox Code Playgroud)

EXCEPTION错误是:

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to autolaunch D-Bus session: Autolaunch error: X11 initialization failed.`
Run Code Online (Sandbox Code Playgroud)

我读到某个地方,你可能需要finch在同一个TTY中运行和脚本.但是我无法正确测试,因为它不像cd在一行和ls下一行上运行.你键入finch,它运行,你不能再键入任何其他命令,如links2.我尝试运行,finch &但似乎暂停finch,并且运行脚本也会出现相同的错误.

解?谢谢.

python x11 dbus pidgin finch

2
推荐指数
1
解决办法
3328
查看次数

Circe解码器为scalaz.Maybe

这是一个简单的雀科服务器,使用circe作为解码器:

import com.twitter.finagle.http.RequestBuilder
import com.twitter.io.Buf
import io.circe.generic.auto._
import io.finch._
import io.finch.circe._

case class Test(myValue: Int)

val api = post("foo" :: body.as[Test]) { test: Test => Ok(test) }

val bodyPost = RequestBuilder()
  .url("http://localhost:8080/foo")
  .buildPost(Buf.Utf8("""{ "myValue" : 42 }"""))

api.toService.apply(bodyPost).onSuccess { response =>
  println(s"$response: ${response.contentString}")
}

// output: Response("HTTP/1.1 Status(200)"): {"myValue":42}
Run Code Online (Sandbox Code Playgroud)

将内容myValue改为Option开箱即用,给出与上述代码相同的结果.但是,将其更改为scalaz.Maybe:

import scalaz.Maybe
case class Test(myValue: Maybe[Int])
Run Code Online (Sandbox Code Playgroud)

结果是:

响应("HTTP/1.1状态(400)"):{"message":"正文无法转换为测试:CNil:El(DownField(myValue),true,false)."}

我该如何实现所需的编码器/解码器?

scala scalaz finch circe

2
推荐指数
1
解决办法
678
查看次数