问题列表 - 第318009页

如何使用 Scala 运行简单的脚本?

我已经安装了 Scala(在一台气隙 Linux 机器上,来自 scala3-3.3.1.tar.gz)。

我尝试运行一个简单的 Scala 程序,无需sbt. 所以我写了一个文件hello.scala

object Hello {
  def main(args: Array[String]) = {
    println("Hello, World")
  }
}
Run Code Online (Sandbox Code Playgroud)

然后调用

scala hello.scala 
Run Code Online (Sandbox Code Playgroud)

这有效。:-)

但我浏览了 Scala 3 网站,看到了许多没有整个“对象包装”的代码示例。所以我希望写一个更简单的文件script.scala

scala hello.scala 
Run Code Online (Sandbox Code Playgroud)

并运行它scala。但这不起作用:Scala 返回错误“顶级定义的非法开始”。

我怎样才能运行这个?我需要一些命令行选项吗?或者我需要吗scala-cli?(我读到scala已经成为或将成为scala-cli。)

我很困惑。在气隙机器上运行简单 Scala 脚本的最佳方法是什么?

scripting scala scala-cli

0
推荐指数
1
解决办法
59
查看次数

什么是声明没有完成函数的“std::barrier”的可移植方法?

我在https://cpp.sh/中尝试了以下操作。正如您所看到的,我没有找到跨编译器工作的单行示例。特别是,我想知道看似标准代码中的 MSVC 静态断言:

#include <barrier>
#include <functional>

class Class {
    // missing template argument
    // std::barrier my_barrier1;
    
    // static assert N4861 in MSVC
    // std::barrier<void(*)(void) noexcept> my_barrier2;
    
    // static assert N4861 in MSVC
    // std::barrier<std::function<void()>> my_barrier3;
    
    // std::function does not like noexcept
    // std::barrier<std::function<void() noexcept>> my_barrier3b;
    
    // compiles in MSVC but not here
    // std::barrier<std::_No_completion_function> my_barrier4;
    
    // copied from MSVC - works in both
    struct _No_completion_function {
        void operator()() noexcept {}
    };
    std::barrier<_No_completion_function> my_barrier5;
};

int main() {
    return …
Run Code Online (Sandbox Code Playgroud)

c++ templates functional-programming barrier

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

当字符串中存在非英文字符时,Strlen 函数给出错误的长度

我有一个程序也接受非英语字符作为输入字段。因为我们使用strlen,所以当存在非英文字符时,在计算字符串长度时,它无法给出预期的长度。对于输入nova,输出是4,而对于输入\xc3\xb1ova,输出是5,而输出应该是4。

\n
    \n
  1. strlen("nova")=4
  2. \n
  3. strlen("\xc3\xb1ova")=5
  4. \n
\n

在第二种情况下,我期望输出为4相反。

\n

c encoding string-length strlen non-english

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

如何在 google colab 中运行 ollama?

我有一个这样的代码。我正在启动它。我得到一个 ngrok 链接。

!pip install aiohttp pyngrok

import os
import asyncio
from aiohttp import ClientSession

# Set LD_LIBRARY_PATH so the system NVIDIA library becomes preferred
# over the built-in library. This is particularly important for
# Google Colab which installs older drivers
os.environ.update({'LD_LIBRARY_PATH': '/usr/lib64-nvidia'})

async def run(cmd):
  '''
  run is a helper function to run subcommands asynchronously.
  '''
  print('>>> starting', *cmd)
  p = await asyncio.subprocess.create_subprocess_exec(
      *cmd,
      stdout=asyncio.subprocess.PIPE,
      stderr=asyncio.subprocess.PIPE,
  )

  async def pipe(lines):
    async for line in lines:
      print(line.strip().decode('utf-8'))

  await asyncio.gather( …
Run Code Online (Sandbox Code Playgroud)

python pyngrok ollama

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

Qt:在 UI 线程中调用带参数的函数

我有一个后台线程执行任务,完成后,UI 应该更新。要更新 UI,我需要 UI 线程来执行我的函数,其中包含更新 UI 的代码。

Qt 有QMetaObject::invokeMethod((QObject *context, Functor function, Qt::ConnectionType type = Qt::AutoConnection, FunctorReturnType *ret = nullptr)方法。根据文档,Qt 在创建的线程中调用函子或函数上下文指针,但也可以使用 lambda 来实现(如下所示)。

// QtApplicationWrapper::sApp is of type QGuiApplication
// pFunc - pointer to a function
// pFuncParms - argument of type void *
QMetaObject::invokeMethod (QtApplicationWrapper::sApp,
                           [=] {
                               pFunc (pFuncParms);
                           },
                           Qt::QueuedConnection);
Run Code Online (Sandbox Code Playgroud)

上面的代码有效。但假设我不想使用 lambda 或函子。

pFunc 可以直接传递给 QMetaObject::invokeMethod ,如下所示:

QMetaObject::invokeMethod (QtApplicationWrapper::sApp,
                           pFunc,
                           Qt::QueuedConnection);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何传递参数。上面的代码仅适用于不带参数的函数。

如何在 UI 线程中调用 pFunc 及其参数?

c++ qt qmetaobject

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

谁能简化这个按位表达式?

在 C++ 中开发 ECS 实现时,我渴望可以简化这个表达式,但老实说,我对按位运算没有足够的信心来弄清楚:

(x & y) == x
Run Code Online (Sandbox Code Playgroud)

如果您有任何关于简化按位表达式的提示,那就太好了,谢谢

编辑:格式化

c++ bit-manipulation bitwise-operators

-1
推荐指数
1
解决办法
130
查看次数

处理 Angular 中 API 请求的订阅内存泄漏

当我开始使用 Angular 时,我工作场所的某人告诉我在使用RxJs中的可观察量take(1)执行 API 调用时使用,声称它会在一次 API 调用后自动取消订阅。

所以我相信这个说法,并继续使用它,直到我发现组件加载时有大量渲染延迟,尤其是在页面之间导航时。

让我们看一下我的例子:

这是UserRepository与 API 对话以向应用程序授予权限的:

@Injectable({
    providedIn: 'root'
})
export class UserRepository {

    private apiUrl: string = environment.apiUrl;

    constructor(private readonly httpRequestService: HttpRequestService) {
        super();
    }

    @UnsubscribeOnDestroy()
    getPermissions() {
        return this.httpRequestService.get(`${this.apiUrl}/user/permissions`).pipe(map((res: any) => res.user));
    }
}
Run Code Online (Sandbox Code Playgroud)

以及用法:

userRepository.getPermissions().pipe(take(1)).subscribe(data => ...);
Run Code Online (Sandbox Code Playgroud)

我在谷歌上搜索了一下,发现它take(1)不会自动取消订阅,而且根本不是目的,它所做的只是从管道中获取一个可观察值并忽略其余部分。

为了解决这个问题,我采取了以下措施:

  1. 选项#1:与,调用takeUntil一起使用来触发取消订阅unsubscriptionSubjectunsubscriptionSubject.nextngOnDestroy
  2. 选项#2:BaseRepository使用 的字典创建一个methodName => Subject,因此对于每个 API 调用,我可以保存它自己的主题,并创建一个装饰器,该装饰器会自动取消订阅先前的 API 调用,并确保不会有超过一个类型的订阅API 调用的。

选项 #2 提到的装饰器和用法示例:

基础存储库 …

memory-leaks rxjs typescript angular

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

为什么这两个函数需要如此不同的时间来处理?

我目前正在一个学校项目中发现 shell 和 Bash。

我正在开发的函数需要使用 CSV 文件作为数据来计算每个司机的行程次数。

因此,它检查旅程的步骤是否确实是第一个步骤(第 2 列中的值 1),以使用 Awk 增加关联数组中驾驶员的旅程数。

在这个过程中,我创建了两个函数,我预计第二个函数会快得多,但事实恰恰相反。

我制作的第一个需要 1 秒来处理:

d1Flag() 
{
    grep ";1;" data/data.csv > temp/temp.csv
    awk -F ';' '{ count[$6]++ }
      END { for (i in count) print i" " count[i] }' temp/temp.csv > temp/temp2.csv
    sort -k3,3 -rn temp/temp2.csv | head -n10
}
Run Code Online (Sandbox Code Playgroud)

我制作的第二个需要 6 秒来处理:

d1Flag() 
{
    awk -v OFS=';' -F';|\r' '$2==1 { journey_count[$6]++ }
      END {for (driver in journey_count) print driver, journey_count[driver] } ' data/data.csv |
    sort -t';' -nrk2,2 …
Run Code Online (Sandbox Code Playgroud)

bash shell awk

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

Cypress - “失败是因为你混淆了异步和同步代码”

我有一个可以访问 API 的 Cypress 测试。返回一个项目列表,我希望它基本上进行轮询,直到我得到正确的原因(最多 30 次)。

返回的示例是

{
   "items":[
      {
         "reason":"incorrect"
      },
      {
         "reason":"correct"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我有以下函数,如果返回正确的原因,它会轮询并返回响应。否则会抛出错误

function pollStatusReason(id, reason, attempts = 0) {
    const url = `http://someurl/${id}`;

    if (attempts > 30) throw `Too many attempts to get reason: ${reason}`;

    return cy.request({
        method: 'GET',
        url: url,
    }).then((response) => {
        if (response.status != 200) {
            pollStatusReason(id, reason, attempts + 1);
        } else {
            const items = response.body.items;
            for (let i = 0; i < items.length; i++) {
                if (items[i].reason …
Run Code Online (Sandbox Code Playgroud)

javascript recursion for-loop cypress

-1
推荐指数
1
解决办法
106
查看次数

`x in List` 与 `x in Dict` 和 `x in Set` 之间的区别(其中 `x` 是极坐标数据类型)

这主要是一个关于 python 的问题:How x in [a, b, c]isvalued different from x in {a, b, c}.

我正在努力解决的上下文是这样的:

import polars as pl
s = pl.Series(["a", "b"], dtype=pl.Categorical)

s.dtype in [pl.Categorical, pl.Enum]  # True
s.dtype in {pl.Categorical, pl.Enum}  # False
s.dtype in {pl.Categorical: 1, pl.Enum: 2} # False
Run Code Online (Sandbox Code Playgroud)

我想更好地理解Python。我还想知道极地是否可以做任何事情来使第二种情况起作用,因为它目前看起来像一把步枪。

python python-polars

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