小编Fel*_* B.的帖子

在 sqlalchemy 中何时使用 `session_maker` 以及何时使用 `Session`

Sqlalchemy 的文档说可以通过两种方式创建会话:

from sqlalchemy.orm import Session
session = Session(engine)
Run Code Online (Sandbox Code Playgroud)

或与会议主持人

from sqlalchemy.orm import session_maker
Session = session_maker(engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)

现在,无论哪种情况,都需要一个全局对象(引擎或 session_maker 对象)。所以我真的不明白 session_maker 的意义是什么。也许我误解了一些东西。

我找不到任何建议何时应该使用其中之一。所以问题是:您想在哪种情况下使用Session(engine)以及您更喜欢哪种情况session_maker

python orm sqlalchemy

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

如何测试一个类是否满足C++中的某个概念?

在 Rust 中,一个明确的类型impl Trait for Object保证了它Object具有这一特性。现在,C++20 概念当然更加笼统一些,因为它们不仅仅与一种类型相关联,而且可能与多种类型相关联。然而,这引出了一个问题:如何确定您实现的某些类型实际上满足某些概念。

现在的概念有点鸭子式,如果你的对象满足了有人试图在一个requires块中用它做的所有事情(它像鸭子一样嘎嘎叫),那么它就会像鸭子一样传递并满足这个概念。但是有没有办法说:“我希望这个分类的类能够通过测试”?

例如,这可能看起来像这样:

class MyClass1 { ... }

class MyClass2 { ... }

template<typename T1, T2>
concept MyConcept = requires(T1 t1, T2 t2) { ... }

static_assert( satisfies<MyConcept, MyClass1, MyClass2>() )
Run Code Online (Sandbox Code Playgroud)

这样的函数是否satisfies存在,如果不存在:如何编写这样的satisfies函数?

一些动机

如果您将对象传递到某些概念的实现是可选的库(例如,接受可能位于或不位于边界的组件并且仅对位于边界的对象执行某些计算的库),则 Ducktyping 可能还不够。

template <typename GeneralComponent>
void do_something_optionally(GeneralComponent component) {
  if constexpr ( satisfies<isBorder, GeneralComponent>() ) {
     do_border_calculation(component);
  } else {
     // don't do border calculation
  }
}

do_border_calculation(isBorder …
Run Code Online (Sandbox Code Playgroud)

c++ duck-typing static-typing c++-concepts c++20

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

使用plotly创建图像的子图

我想用mnist绘图显示数据集中的前 10 张图像。事实证明这比我想象的要复杂。这不起作用:

import numpy as np
np.random.seed(123)

import plotly.express as px
from keras.datasets import mnist

(X_train, y_train), (X_test, y_test) =  mnist.load_data()

fig = subplots.make_subplots(rows=1, cols=10)
fig.add_trace(px.imshow(X_train[0]), row=1, col=1)
Run Code Online (Sandbox Code Playgroud)

因为它导致

ValueError: 
    Invalid element(s) received for the 'data' property of 
        Invalid elements include: [Figure({
    'data': [{'coloraxis': 'coloraxis',
              'type': 'heatmap',
              'z': array([[0, 0, 0, ..., 0, 0, 0],
                          [0, 0, 0, ..., 0, 0, 0],
                          [0, 0, 0, ..., 0, 0, 0],
                          ...,
                          [0, 0, 0, ..., 0, 0, 0], …
Run Code Online (Sandbox Code Playgroud)

python plotly jupyter-notebook

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

尝试将 R.exe 添加到 PATH

所以我尝试将 R 添加到 Windows 10 上的路径(这应该很简单)。

System Properties -> Environment variables -> Edit -> new: copy and paste: "C:\Program Files\R\R-3.5.0\bin\x64"

现在的问题是,当我输入 时,Powershell 拒绝启动 R 环境RR.exe显然有效。Rgui也有效。是Rpowershell中的保留字母还是什么?有时它似乎也会重复前面的命令,但这似乎也不完全一致。(我将此条目放在路径列表的顶部并已重新启动电脑)

powershell r

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

为什么对特征绑定中的类型的引用需要生命周期?

我想我了解生命周期如何与函数参数/输出和结构一起工作,因为这些情况在书中(以及在nomicon 中进一步解释),但我不明白生命周期如何用于类型边界。例如:

trait Min<Elmt> {
    fn get_min(&self) -> Elmt;
}

impl<T, Elmt> Min<Elmt> for T
where
    &T: IntoIterator<Item = Elmt>,
    Elmt: Ord,
{
    fn get_min(&self) -> Elmt {
        let mut iter = self.into_iter();
        match iter.next() {
            None => panic!("Empty List"),
            Some(x) => iter.fold(x, |acc, y| acc.min(y)),
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我要求类型T满足以下属性:它的任何引用都必须实现IntoIterator<Item = Ord>. 这段代码无法编译,因为 Rust 想要&T有一个生命周期,而我不知道为什么。该where子句应该只确保某些东西是某种类型,这是在编译时完成的。生命周期/引用是如何产生的?确保&T实现类型的T实现IntoIterator与悬空指针或内存泄漏无关。

来自 Rust Discord …

lifetime rust

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

有没有办法在 VSCode Devcontainers 中调试 PostCreateCommand?

我目前遇到这个问题:

Command failed: /bin/sh -c ./.devcontainer/postCreateCommand.sh
Run Code Online (Sandbox Code Playgroud)

哪一个是

    "postCreateCommand": "./.devcontainer/postCreateCommand.sh",
Run Code Online (Sandbox Code Playgroud)

设置从devcontainer.json.

但是当我停用“postCreateCommand”并在创建容器后手动运行它时,该脚本会起作用。这让我觉得问题可能出在脚本的路径上。但事实也并非如此。因为只有一个 echo 命令的空脚本似乎可以工作。

脚本如下:

echo "Installing Developer Requirements"

apt-get update && apt-get install -y man git
pip3 install -r .devcontainer/dev_pip_requirements.txt
Run Code Online (Sandbox Code Playgroud)

有什么想法如何调试吗"PostCreateCommand"?输出没有什么帮助,我不想开始将这个项目简化为最小的工作示例。

我更改了 git 以在 Windows 上检查以 linux 文件结尾的所有内容。我三次检查 shell 脚本是否有 LF 结尾。所以这些也不应该成为问题。(他们以前是)。

docker docker-compose visual-studio-code vscode-devcontainer

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

使用 rollup `require` 或 `import` CommonJS 节点模块

我不确定我是否应该使用该require版本或该import版本。它没有在文档中说明这一点,我在 Github 问题中发现了这样的声明:

绝对不鼓励混合 import 和 require。Rollup 处理 require 语句的唯一方法是使用 rollup-plugin-commonjs,但该插件将跳过任何带有 import 或 export 语句的文件。

这可以解释为:“您仍然需要使用require,否则 common-js 插件将忽略您的文件,并且事情将无法工作。” 或者“总是使用import其他一切都会构成混合”。所以这真的让我很困惑。

语境

我正在尝试将 CommonJS 库(Citation-js)导入到 javascript 模块中(实际上是打字稿,但我希望这与这里无关)。现在 common-js 的文档告诉我要做的

const Cite = require('common-js');
Run Code Online (Sandbox Code Playgroud)

这告诉我它是一个 commonjs 库(对吗?)。因此我添加了

import commonjs from "rollup-plugin-commonjs";
import { nodeResolve } from "@rollup/plugin-node-resolve";
Run Code Online (Sandbox Code Playgroud)

到我的汇总配置并放入plugins: [commonjs(), typescript(), nodeResolve()]配置中。

现在,vscode 不再强调所有内容,并使用 rollup 构建网站再次正常工作。但编译后的 JavaScript 只是声明,require('common-js')而我的浏览器抱怨require未定义。

Uncaught ReferenceError: require is not defined …
Run Code Online (Sandbox Code Playgroud)

javascript commonjs ecmascript-6 rollupjs

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

扩展 HTMLSpanElement 时“未捕获类型错误:非法构造函数。”

我得到一个Uncaught TypeError: Illegal constructor.基本上空的构造函数:

export class Citation extends HTMLSpanElement {
  constructor() {
    super();
  }
}
Run Code Online (Sandbox Code Playgroud)

这个有用的答案中的评论声称

我在使用 Web 组件时遇到了同样的错误,但仅限于 Safari(不是 Firefox)。原因是我做了一个 UserAvatar 类扩展 HTMLSpanElement (而不是 HTMLElement)

这让我尝试了一下HTMLElement,这实际上消除了错误。所以现在我想知道。我可以扩展哪些 HTML 元素?为什么我不能扩展span元素?还有几个类似的问题:Uncaught TypeError: Illegal constructor whenextending HTMLButtonElementHow to create new instance of an Extended Class of Custom elements。但它们有点旧,在这个答案中声称这应该从 2018 年 10 月开始工作。我使用的是最新的 Firefox 浏览器,所以我很困惑......

有人知道发生了什么事吗?

javascript web-component

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