小编1fl*_*flx的帖子

与 pipeTo 等效的 Akka 类型是什么?

我目前正在尝试将现有的无类型演员重写为有类型的演员。由于参与者正在使用 ScalikeJDBC 与 MySQL 数据库进行对话,并且由于我希望异步完成,因此我正在处理来自单独(非参与者)存储库类的 Futures。

使用无类型 Akka,在演员的接收方法中,我可以这样做:

import akka.pattern.pipe
val horseList : Future[Seq[Horse]] = horseRepository.listHorses(...)
horseList pipeTo sender()
Run Code Online (Sandbox Code Playgroud)

发送者 actor 最终会收到一个马匹列表。我无法弄清楚如何在行为中执行此操作,例如:

val behaviour : Behavior[ListHorses] = Behaviors.receive { 
    (ctx,msg) => msg match {
        case ListHorses(replyTo) => 
            val horseListF : Future[Seq[Horse]] = horseRepository.listHorses(...)
            // -> how do I make horseListF's content end up at replyTo? <-
            Behaviors.same
    }
}
Run Code Online (Sandbox Code Playgroud)

管道模式不起作用(因为它需要一个无类型的 ActorRef),到目前为止我还没有在akka-actor-typed(2.5.12) 依赖项中找到任何其他东西,我正在使用它来完成这项工作。

我该怎么做呢?

scala akka akka-typed

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

插入 USB HID 设备时防止 usbhid 自动加载

我正在尝试(可逆地)在 Raspbian Jessie 安装内核版本 4.4.16-v7+ 上禁用 USB HID 支持。我们需要将 Raspberry Pi 放在半公共空间并在电视上显示内容,我们希望至少让它有点难以弄乱它。

到目前为止,我已经设法通过 rmmod 使 usbhid 模块从内核中移除。在对模块进行 rmmod'ing 之后,似乎每次我插入 USB 键盘或鼠标时,设备驱动程序都会重新加载到内核中。

有什么办法可以防止吗?

linux kernel hid hotplugging raspbian

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

可靠地捕获外部命令的输出

我需要快速连续地调用许多短期(偶尔也有一些长期存在)的外部进程,stdoutstderr实时处理。我已经找到了许多解决方案,StdoutPipe并将StderrPipebufio.Scanner打包到 goroutines 中。这在大多数情况下都有效,但它偶尔会吞下外部命令的输出,我不知道为什么。

这是在 MacOS X (Mojave) 和 Linux 上显示该行为的最小示例:

package main

import (
    "bufio"
    "log"
    "os/exec"
    "sync"
)

func main() {
    for i := 0; i < 50000; i++ {
        log.Println("Loop")

        var wg sync.WaitGroup

        cmd := exec.Command("echo", "1")
        stdout, err := cmd.StdoutPipe()
        if err != nil {
            panic(err)
        }

        cmd.Start()

        stdoutScanner := bufio.NewScanner(stdout)
        stdoutScanner.Split(bufio.ScanLines)

        wg.Add(1)
        go func() {
            for stdoutScanner.Scan() {
                line := stdoutScanner.Text()
                log.Printf("[stdout] %s\n", line)
            }
            wg.Done() …
Run Code Online (Sandbox Code Playgroud)

go

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

标签 统计

akka ×1

akka-typed ×1

go ×1

hid ×1

hotplugging ×1

kernel ×1

linux ×1

raspbian ×1

scala ×1