小编Gar*_*ryO的帖子

如果模板arg是const,则将const添加到type

我有一节课:

struct Foo {
  vector<float> data;
};
Run Code Online (Sandbox Code Playgroud)

我有一个模板化的函数,需要一个Foo&:

template<typename T>
void f(T& arg) {
  using ftype = float *;    // <-- would like this to be const float * if T is const
  ftype ptr = &arg.data[0];
  // ... do stuff with ptr ...
}
Run Code Online (Sandbox Code Playgroud)

const float *如果iff T是const,我该如何制作ptr ?我知道add_constis_const,但没有看到如何在这里使用它们.(我真正的结构更复杂,我没有直接访问其内部;它实际上是一个OpenCV cv::Mat.)如果需要,我可以使用最新的(C++ 14/C++ 17)功能.

我会像这样使用它:

Foo foo1 = Foo();
f(foo1); // modifiable in f
const Foo cfoo = Foo();
f(cfoo); // const, should not be …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

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

如何在Ubuntu 18.04上安装python3.7和pip创建virtualenv?

我正在尝试在Ubuntu 18.04上使用python 3.7通过pip设置标准的virtualenv,或者使用某种方式在virtualenv中安装软件包。安装python3.7的标准方法似乎是: % sudo apt install python3.7 python3.7-venv % python3.7 -m venv py37-venv 但是第二个命令失败,说:

虚拟环境未成功创建,因为surepip不可用。在Debian / Ubuntu系统上,您需要使用以下命令安装python3-venv软件包。

apt-get install python3-venv
Run Code Online (Sandbox Code Playgroud)

您可能需要在该命令中使用sudo。安装python3-venv软件包后,重新创建您的虚拟环境。

失败的命令:['/py37-venv/bin/python3.7','-Im','ensurepip','--upgrade','--default-pip']

这是真的; 没有与此Python一起安装的ensurepip和pip。而且我已经安装python3.7-venv了(python3-venv用于Debian / Ubuntu上的python3.6)。由于多个python版本和/或需要root用户访问权限,以及通过apt或类似方式安装python模块的替代方式,我在python社区中对此进行了一些讨论。

创建不带pip(--without-pip)的virtualenv可以成功,但是随后就无法在新的virtualenv中安装软件包,这似乎大大超出了目的。

那么,在带有virtualenv的18.04上安装和使用python3.7的“最佳实践”方法是什么?

python pip virtualenv python-3.7 ubuntu-18.04

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

另一个“未满足的对等依赖性”问题

尽管阅读了许多 SO 问题和文档,但我仍然不明白这一点。所以如果这真的是一个重复,请随时指出我可以解释它的任何地方。

使用纱线将 firebase 添加到我的 Vue.js 项目后,我得到了很多:

warning "firebase > @firebase/database@0.3.12" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/firestore@1.0.4" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/functions@0.3.7" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/messaging@0.3.11" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/storage@0.2.8" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/auth > @firebase/auth-types@0.5.2" has unmet peer dependency "@firebase/app-types@0.x".
Run Code Online (Sandbox Code Playgroud)

我已经安装了 @firebase/app-types@0.3.4 作为依赖项(列在我的 yarn.lock 中,但不在 package.json 中)。我可以通过手动解决这些错误,yarn add @firebase/app-types但我不明白为什么我需要这样做——我从来没有直接在我的应用程序中从 @firebase/app-types 调用任何东西。如果 firebase 依赖于它,并且它已经安装,为什么会出现此错误?我想我真的不明白未满足的“对等依赖”的真正含义。这真的是 firebase …

firebase yarnpkg

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

如何使用 pyenv 在 M1 mac 上构建 universal2 python?

我正在尝试使用 pyenv 在 M1 Mac 上构建和安装 universal2 (arm64+intel) python 3.10;我运行的是 MacOS Monterey 12.3.1。(我需要它来使用 pyinstaller 创建 universal2 版本。)

我已经尝试过env MACOSX_DEPLOYMENT_TARGET=10.9 CONFIGURE_OPTS="--enable-shared --enable-universalsdk --with-universal=archs=universal2" pyenv install 3.10.3,我认为这是正确的方法,但我收到此错误:

  File "/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/Lib/ensurepip/__init__.py", line 193, in _bootstrap
    return _run_pip([*args, *_PACKAGE_NAMES], additional_paths)
  File "/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/Lib/ensurepip/__init__.py", line 93, in _run_pip
    return subprocess.run([sys.executable, '-W', 'ignore::DeprecationWarning',
  File "/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/Lib/subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/private/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/python-build.20220509131706.57223/Python-3.10.2/python.exe', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/tmpifyf93mk/setuptools-58.1.0-py3-none-any.whl\', \'/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/tmpifyf93mk/pip-21.2.4-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/var/folders/41/gktcdg9x6d38d7jhzg09nwsh0000gn/T/tmpifyf93mk\', \'--root\', \'/\', \'--upgrade\', \'setuptools\', …
Run Code Online (Sandbox Code Playgroud)

python macos pyinstaller pyenv

6
推荐指数
0
解决办法
1053
查看次数

使用libav(ffmpeg),如何将视频文件直接解码为GPU纹理?

我正在使用 ffmpeg 的 libav 在 Mac 上解码视频文件。对于支持的编解码器,它表示可以使用Mac VideoToolbox框架来硬件加速解码。我可以直接在 GPU 内存中以 Metal 或 CoreVideo 缓冲区或纹理的形式获取解码结果吗?我的计划是在将其发送到屏幕之前使用计算着色器对其进行处理,并且我想通过删除 CPU<->GPU 传输来最大化帧速率。

有没有在任何地方这样做的例子?

ffmpeg libav

6
推荐指数
0
解决办法
315
查看次数

有没有办法扩展swig/python中的所有类?

我有很多C/C++类使用Swig导出到python.我注意到默认情况下,Swig不__hash__为包装类生成方法,因此使用默认的哈希,这是包装器对象的id(即它的内存地址或类似的东西).这意味着如果我最终得到两个包含相同C对象的python对象,它们在dicts中的方式不同,等等,这很奇怪,导致难以发现的bug.

我可以轻松扩展任何更好的类__hash__:

%extend Foo {
   bool __eq__(const Foo &other) { return $self == &other; }
   bool __ne__(const Foo &other) { return $self != &other; }
   long __hash__() { return (long) $self; } // hash: just address of C struct
}
Run Code Online (Sandbox Code Playgroud)

(我也认为eq应默认基于C结构地址进行比较,而不是包装器的地址.)

我的问题是:有没有办法告诉Swig扩展这样的所有类?或者我必须一次做一个?

我想第二个问题是:为什么不自动执行此操作?默认行为有用吗?我发现它不是.

python swig

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

static const std :: vector <char>初始化没有堆?

假设我想要一个未签名字符的std :: vector.它是用初始化列表(这是C++ 11)初始化的,永远不会改变.我想避免任何堆分配,即使在启动时,也要让整个向量像const字符串一样存在于数据段中.那可能吗?即:( static const vector<char> v{0x1, 0x2, 0x3, 0x0, 0x5}; 这是一个有点学术性的问题;我知道为此只使用C数组并不难.)

c++ vector c++11

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

调整 HTML 视频大小以适合父容器的高度*和*宽度

我读过很多关于调整视频大小以适应浏览器和/或父元素的帖子,但没有一个能满足我的需要。我有一个单页应用程序,overflow: hidden因此该应用程序不会滚动。该应用程序有各种display:flex容器,我想要在其中一个容器中有一个 16x9 的视频。我希望整个视频始终适合其容器(因此,如果容器太宽,顶部/底部将有条,如果容器太高,左/右将有条)。我可以width: 100%在视频上使用它来根据容器宽度调整其大小,但我无法找出任何方法让它在容器高度变小时缩小以适应。(我猜这是因为大多数网页都是垂直增长的,所以基于高度的限制不太重要。)

我发现,至少在 Chrome 上,video标签不允许height是百分比,不幸的是,W3C 规范也同意这一点。我尝试过使用相对定位的视频包装器padding-bottom: 56.25%然后将绝对定位的视频放入其中,但当容器太宽时,它仍然会切断视频的底部。

这是一个jsfiddle;看到那里比写它更容易: https: //jsfiddle.net/darkstarsys/q1fr9jwd/2/ 在那里你会看到视频对其容器的宽度做出正确的反应,但是当高度很小。调整main元素的高度和宽度,看看它对其容器大小有何反应。

如果可能的话,我想避免使用基于 Javascript 的解决方案;看起来 CSS 应该能够以某种方式做到这一点。

html css video

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

是否可以在同一个 shell(不是 subshel​​l)中使用 pipenv?

我是 pipenv 的新手。我已经习惯了 virtualenv,我可以在其中找到一个脚本来“激活”当前 shell 中的 env。有没有办法以这种方式使用 pipenv,而不是启动子shell?即source $(pipenv shell-env)或类似的东西?我想要一个线性的 shell 历史,不必双重退出来退出终端窗口等。我主要在 Mac 和 Windows 上使用 python 3.6 和 3.7。

python-3.x pipenv

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

在 Firebase 存储中,我可以使用 db“get”规则吗?

我正在尝试根据用户数据保护我的 Firebase(谷歌云存储)文件。在 firestore 中,我使用基于获取数据库内容的规则(在用户表中查找 uid 并匹配一个字段),并且工作正常。我试图在 firebase 存储中使用相同类型的规则,但在模拟器中我得到Error: simulator.rules line [12], column [17]. Function not found error: Name: [get].; Error: Invalid argument provided to call. Function: [get], Argument: ["||invalid_argument||"]. 我的规则是这样的:

  match /b/{bucket}/o {
    function isAuth() {
      return request.auth != null && request.auth.uid != null
    }
    function isAdmin() {
      return isAuth() &&
      "admin" in get(/databases/$(database)/documents/users/$(request.auth.uid)).data.roles;
    }
    function clientMatch(client) { // expects user's "client" field to be ID of client
      return isAuth() &&
      client == get(/databases/$(database)/documents/users/$(request.auth.uid)).data.client;
    }
    match /P/Clients/{client}/{allPaths=**} { …
Run Code Online (Sandbox Code Playgroud)

google-cloud-storage firebase firebase-security

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