小编Seb*_*ner的帖子

在没有硬件加速的情况下在Windows上部署Qt5

Qt5可以使用ANGL来使用OpenGL驱动程序或DirectX驱动程序.由于我们不能依赖已安装的OpenGL驱动程序,因此我们需要使用ANGLE后端.遗憾的是,这并不能解决所有部署问题,特别是在没有硬件加速的Windows虚拟机上.在这些系统上,我们收到一条错误消息,指出OpenGL上下文的创建失败了.

屏幕截图:无法为格式QSurfaceFormat创建OpenGL上下文

我们正在部署所有必需的库(libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll),但我们仍然收到此错误消息.

如何部署需要在没有OpenGL驱动程序的最终用户计算机上运行的QML应用程序以及没有Direct3D加速的(虚拟)计算机上运行的QML应用程序?

Qt wiki上有一个页面提到这个问题,但这对解决它没有多大帮助.

Qt 5.4.0的更新:

到目前为止我的发现是:

  • 设置QT_ANGLE_PLATFORM = warp - >创建一个没有内容的窗口.
  • 按预期设置QT_ANGLE_PLATFORM = d3d9 - >相同的错误对话框.
  • 按预期设置QT_ANGLE_PLATFORM = d3d11 - >相同的错误对话框.
  • 设置QT_OPENGL =桌面 - >与QT_ANGLE_PLATFORM = warp相同.
  • 按预期设置QT_OPENGL = angle - >相同的错误对话框.
  • 设置QT_OPENGL =软件+ opengl32sw.dll(Windows的mesa) - >不可预测:可能运行,可能会崩溃,可能会显示错误对话框.

Qt Quick 2D渲染器的更新

虽然,Mesa似乎是一个部分解决方案,但在Qt 5.4.0中,配置似乎经常崩溃.

另一个后退可能是Qt Quick 2D渲染器,但不幸的是,这也会崩溃.

  • 将softwarecontext.dll复制到/ scenegraph +设置QMLSCENE_DEVICE = softwarecontext - > crash

一些用户体验后更新:

角度
  • 在某些系统上有一些渲染错误
  • 在所有系统上都不可靠
与翘曲的角度
  • 不可靠的
桌面OpenGL
  • 默认实现OpenGL 1.1,这太旧了.
  • 即使OpenGL版本没问题,也不可靠.
  • 如果Qt使用,则有渲染错误
QtQuick2dRenderer
  • 有一些重大的渲染问题
  • 崩溃,冻结
  • 适用于没有硬件加速的系统
Mesa OpenGL后端 …

windows opengl deployment qt qt5

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

Python:使列表生成器JSON可序列化

如何将JSON文件列表连接成一个巨大的JSON数组?我有5000个文件和550 000个列表项.

我的第一次尝试是使用jq,但看起来jq -s没有针对大输入进行优化.

jq -s -r '[.[][]]' *.js 
Run Code Online (Sandbox Code Playgroud)

这个命令有效,但是需要很长时间才能完成,我真的想用Python解决这个问题.

这是我目前的代码:

def concatFiles(outName, inFileNames):
    def listGenerator():
        for inName in inFileNames:
            with open(inName, 'r') as f:
                for item in json.load(f):
                    yield item

    with open(outName, 'w') as f:
        json.dump(listGenerator(), f)
Run Code Online (Sandbox Code Playgroud)

我越来越:

TypeError: <generator object listGenerator at 0x7f94dc2eb3c0> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

任何将所有文件加载到ram中的尝试都将触发Linux的OOM杀手.你有什么想法?

python json generator out-of-memory

17
推荐指数
3
解决办法
2万
查看次数

用 Cephadm 配置集群网络?

我用 cephadm 配置了一个简单的 Ceph 集群,如下所示:

cephadm bootstrap --mon-ip 192.168.0.4
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host3
ceph orch host add host2
ceph orch host add host3
ceph orch apply osd --all-available-devices
Run Code Online (Sandbox Code Playgroud)

它工作正常。现在我想在192.168.1.0/24上建立一个集群网络。

我试过了,ceph config set global cluster_network 192.168.1.0/24但没有任何效果。我在辅助 NIC 上没有看到任何流量。

我该如何解决这个问题?让 cephadm 注意到变化的推荐方法是什么?

ceph cephadm

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

Typing.NamedTuple 和可变默认参数

鉴于我想正确使用类型注释来命名来自打字模块的元组:

from typing import NamedTuple, List

class Foo(NamedTuple):
    my_list: List[int] = []

foo1 = Foo()
foo1.my_list.append(42)

foo2 = Foo()
print(foo2.my_list)  # prints [42]
Run Code Online (Sandbox Code Playgroud)

避免 Python 中可变默认值痛苦的最佳或最干净的方法是什么?我有一些想法,但似乎没有什么是好的

  1. None默认使用

    class Foo(NamedTuple):
        my_list: Optional[List[int]] = None
    
    foo1 = Foo()
    if foo1.my_list is None
      foo1 = foo1._replace(my_list=[])  # super ugly
    foo1.my_list.append(42)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 覆盖__new____init__不起作用:

    AttributeError: Cannot overwrite NamedTuple attribute __init__
    AttributeError: Cannot overwrite NamedTuple attribute __new__
    
    Run Code Online (Sandbox Code Playgroud)
  3. 特别的 @classmethod

    class Foo(NamedTuple):
        my_list: List[int] = []
    
        @classmethod
        def use_me_instead(cls, my_list=None):
           if not my_list: …
    Run Code Online (Sandbox Code Playgroud)

python type-hinting namedtuple python-typing

6
推荐指数
2
解决办法
118
查看次数

如何绕过Haskell中的现有实例(for Failure)?

我在IO的monad变换器中,我想为Failure定义我自己的实例.

因为Failure已经为IO和MonadTrans定义了实例,所以我甚至无法构建自己的重叠实例.

据我所知,我还有四个选择:

  1. Newtyping IO:
    这有点尴尬,我需要得出我想要改变的所有内容,并重新定义其余部分.
  2. 黑客未能将类本身分成它自己的模块:
    我将类定义移动到子模块Control.Failure.Class
  3. 在不重新导出实例的情况下为Failure创建一个简单的包装器模块
  4. 从Monad Transformer中删除MonadTrans

你还知道其他选择吗?你怎么看?

haskell monad-transformers

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

当装饰器更改通用返回类型时键入函数

这类似于装饰器更改返回类型时的键入函数,但这次使用通用返回类型

from typing import Generic, TypeVar, Generic, Callable, Any, cast

T = TypeVar('T')

class Container(Generic[T]):
    def __init__(self, item: T):
        self.item: T = item

def my_decorator(f: Callable[..., T]) -> Callable[..., Container[T]]:

    def wrapper(*args: Any, **kwargs: Any) -> Container[T]:
        return Container(f(*args, **kwargs))

    return cast(Callable[..., Container[T]], wrapper)

@my_decorator
def my_func(i: int, s: str) -> bool: ...

reveal_type(my_func) # Revealed type is 'def (*Any, **Any) -> file.Container[builtins.bool*]
Run Code Online (Sandbox Code Playgroud)

需要哪种 mypy 魔法来保持参数类型完整my_func

使用typing.Protocol看起来很有希望,但我不知道如何让它发挥作用。

python generics mypy

5
推荐指数
2
解决办法
1901
查看次数

如果 C++11 lambda 返回错误类型,则不会出现 clang 警告或错误

如果 lambda 的返回类型不匹配,看起来我的 clang 编译器 (3.3) 不会生成任何错误:

#include <functional>
typedef std::function<void()> voidFunc;

void foo(voidFunc func) 
{
    func();
}

int main() 
{
    int i = 42;
    foo([i]()
    {
        return i;
    });
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译此代码不会显示任何错误:

clang++ -c -Xclang -stdlib=libc++ -std=c++11 -Weverything -Wno-c++98-compat -Wno-missing-prototypes -o foo.o foo.cpp
Run Code Online (Sandbox Code Playgroud)

如何针对此类问题生成类型错误?

编辑:

这会产生类型错误:

#include <functional>

struct A {};
struct B {};

typedef std::function<A()> aFunc;

void foo(aFunc func)
{
    func();
}

int main()
{
    int i = 42;
    foo([i]() 
    {
        return B();
    });
    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c++ lambda types clang c++11

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

Django Rest Framework:具有相同名称的@detail_route和@list_route

我有一个DRF ViewSet,并想提供详细信息并列出具有相同名称的路由:

class MyViewSet(ViewSet):
    # ...

    @detail_route(['post'])
    def do_stuff(self, request, *args, **kwargs):
        pass

    @list_route(['post'])
    def do_stuff(self, request, *args, **kwargs):
        pass
Run Code Online (Sandbox Code Playgroud)

这显然行不通,因为list_route会覆盖detail_route

有没有一种简单的方法可以提供这两种路由,而无需人工弄乱网址

python django django-rest-framework

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