小编Ast*_*One的帖子

理解C++ 11中的<system_error>工具

我正在尝试使用该system_error工具来处理我的库中的错误.我将简要讨论库的结构,以防您发现它有用:调用库的命名空间,commons在此我有另一个名为的命名空间dynlib.dynlib包含负责加载.so/.dll文件的类:

namespace commons {
    namespace dynlib {
        class DynLibLoader {
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

在DynLibLoader中可能出现的错误LibraryFailedToLoad,LibraryFailedToUnloadSymbolNotFound.所以我对处理错误的想法如下:我将在命名空间error下添加一个命名空间dynlib.然后,在该命名空间下,我将为其定义一个枚举std::error_codes和一个枚举std::error_conditions.从我的理解std::error_codes有对应的值errno(Linux)或GetLastError(Win32的),以及std::error_conditions以价值观一样LibraryFailedToLoad,SymbolNotFound等等.所以,这里是我的问题:

  • 我的理解std::error_codestd::error_condition正确吗?
  • 我应该如何知道所有可能的值errnoGetLastError()在我的std::error_codes枚举下定义它们?如果Microsoft将来向API添加额外的错误值会怎样?我是否必须回到源代码并在我拥有的enum下定义它们std::error_codes
  • 如果我们在另一个平台上并且在发生错误时无法找出确切的系统错误代码怎么办?
  • 如果我想有同样的std::error_codes整个公共空间和只定义不同的std::error_condition像每个子命名空间dynlib.这是一个好习惯吗?我会说是的,因为这样可以避免重复的代码.但是这背后有一个问题吗?
  • 目前,我正在std::error_category为每个子公共名称空间使用单个.这是一个好习惯吗?你觉得我应该用std::error_category不同的方式吗?

c++ error-handling error-code c++11 system-error

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

通过HTTP2提供Python(Flask)REST API

我有一个Python REST服务,我想使用HTTP2来提供服务.我当前的服务器设置是nginx -> Gunicorn.换句话说,nginx(重定向到端口443的端口443和80)作为反向代理运行,并将请求转发给Gunicorn(端口8000,没有SSL).nginx在HTTP2模式下运行,我可以通过使用chrome验证这一点,并在向服务器发送简单的GET后检查'protocol'列.但是,Gunicorn报告它收到的请求是HTTP1.0.另外,我在这个列表中找不到它:https: //github.com/http2/http2-spec/wiki/Implementations 所以,我的问题是:

  • 是否可以使用HTTP2提供Python(Flask)应用程序?如果是,哪些服务器支持它?
  • 在我的情况下(一个反向代理服务器和一个服务实际的API),哪个服务器必须支持HTTP2?

我想使用HTTP2的原因是因为在某些情况下我需要一起执行数千个请求,我有兴趣看看HTTP2的多路复用请求功能是否可以加快速度.使用HTTP1.0和Python请求作为客户端,每个请求大约需要80毫秒,这是不可接受的.另一种解决方案是批量/批量处理我的REST资源,并通过单个请求发送多个.是的,这个想法听起来不错,但我真的很想知道HTTP2是否可以加快速度.

最后,我要提一下,对于客户端,我使用带有Hyper http2适配器的Python请求.

python rest nginx gunicorn http2

15
推荐指数
2
解决办法
9008
查看次数

真的与Jupyter笔记本,实验室,扩展和ipywidgets混淆

我想创建一个交互式JupyterLab Notebook应用程序,我需要创建一系列自定义小部件.所以我开始研究这件事,我越看越困惑.为了简单起见,我会问一堆简单的问题:

  1. 在Jupyter笔记本上使用小部件的最常用方法之一是使用ipywidgets库.对?
  2. 与经典笔记本不同,JupyterLab的笔记本无法直接呈现JavaScript.因此,在ipywidgets文档中创建自定义窗口小部件的教程无法在JupyterLab上运行.对?
  3. 如果想在JupyterLab的笔记本上运行JavaScript,她或者他必须通过扩展来完成.在ipywidgets的情况下,必须安装@ jupyter-widgets/jupyterlab-manager.对?
  4. 如果您想使用ipywidgets库编写自定义小部件,可以使用两个GitHub项目作为起点:widget-cookiecutter和widget-ts-cookiecutter.据我所知,前者基于JavaScript而后者基于TypeScript.此外,第一个似乎对某种类型不活动,而第二个更活跃.JupyterWidgets团队是否计划专注于TypeScript?我应该遵循哪一个?
  5. cookiecutter项目实际上没有文档.我真的很困惑并且很难理解他们的代码.当然,我可以复制粘贴它们并开始乱搞,直到我弄清楚整个工作如何工作以及代码中的"钩子"或"入口点"是什么,但如果有人能给我一些额外的指示,我真的很感激.
  6. JupyterWidgets是Jupyter项目的"官方"项目吗?鉴于项目中的成员数量非常少,我想知道将我的工作基于ipywidgets是多么安全.请记住,"DeclarativeWidgets"项目很久以前就已经放弃了.
  7. 是否有其他库可以实现比ipywidgets中更多的小部件,并且还可以在JupyterLab上运行?
  8. 我想为服务器端数据处理创建一个Web应用程序.我最初的目标是创建一个不希望用户进行任何编码的应用程序/服务,并通过使用html/JavaScript小部件执行所有操作.这可以使用Angular/React前端和Python/Django/Flask后端来实现.但是,稍后,我意识到有些用户可能希望在服务器上进行一些额外的自定义/任意处理.这就是我考虑JupyterLab的原因.我想知道它是否是最好的,是否有可能只创建一个普通的Angular/Python字体/后端,并以某种方式将其包装在JupyterLab扩展中,该扩展将提供一种机制来访问此数据.应用/服务并将其带到笔记本电脑进行进一步处理.

提前致谢

jupyter-notebook ipywidgets jupyter-lab

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

将组件作为"参数"传递给Angular 2中的另一个组件

我是网络开发的新手,我刚刚开始构建一个Angular 2应用程序.此时我正在尝试创建一些CRUD组件/表单,但我发现自己复制了很多代码.在设计使用Angular2的CRUD应用程序时,我不会问为什么是避免代码重复和实现组件可重用性的常见最佳实践,因为帖子将被锁定.我宁愿专注于一个特定的方面:

我有一个"CRUD页面",它有一个列表(实际上是一个html表)的资源和几个打开"创建","读取"和"编辑"表单的按钮.该列表本身是一个单独的组件,创建/读取/编辑单独的组件也是如此.表的每一行包括另一个知道如何呈现资源项的组件.我将称之为这个<resource-item>组件.但是,我有几个"CRUD页面",每个页面用于不同的资源.所以我想要的是为所有资源重用列表组件.因此,首先要做的是将输入或属性添加到列表组件以控制其标签.到现在为止还挺好.

但那个<resource-item>组件怎么样?我的应用程序的每个资源可能具有完全不同的结构.因此,我将需要不同资源的不同组件,例如:<resource-a-item>,<resource-b-item>等.如何在每次创建列表组件时指定要使用的资源项组件?

感谢您的时间.

typescript angular

12
推荐指数
2
解决办法
8666
查看次数

TypeScript + ES6 Map +对象类型的索引签名隐式具有"任意"类型

我在TypeScript中有以下代码:

export class Config
{
    private options = new Map<string, string>();

    constructor() {
    }

    public getOption(name: string): string {
        return this.options[name]; // <-- This line causes the error.
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器给了我这个错误:

Error:(10, 16) TS7017: Index signature of object type implicitly has an 'any' type.

通过es6-shim可以"映射"地图.我不太清楚这里发生了什么.实际上这张地图让我有些困惑.Map应该来自es6-shim,它应该实现es6功能.但是es6没有静态类型,对吧?那么,为什么Map期望键/值类型作为泛型参数?我看到有些人添加'noImplicitAny'标志,但我想解决问题,而不是忽略它.

谢谢.

typescript ecmascript-6 es6-shim

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

当 scipy.optimize.minimize 可能用于相同的事情时,为什么 scipy.optimize.least_squares 存在?

我试图理解为什么scipy.optimize.least_squares存在于scipy. 该函数可用于执行模型拟合。然而,人们可以用来scipy.optimize.minimize做同样的事情。唯一的区别是,scipy.optimize.least_squares卡方是在内部计算的,而如果想使用scipy.optimize.minimize,他/她将必须在用户想要最小化的函数内部手动计算卡方。另外,scipy.optimize.least_squares不能将其视为包装器,scipy.optimize.minimize因为它支持的三种方法 ( trfdogboxlm) 根本不支持scipy.optimize.minimize

所以我的问题是:

  • scipy.optimize.least_squares当使用 可以达到相同的结果时为什么还要存在scipy.optimize.minimize
  • 为什么scipy.optimize.minimize不支持trfdogbox、 和lm方法?

谢谢。

python mathematical-optimization scipy model-fitting

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

使用偶数大小的内核进行图像卷积

我想执行一个简单的2D图像卷积,但我的内核是偶数.我应该为我的内核中心选择哪些索引?我尝试使用Google搜索并查找现有代码.人们通常将他们的内核集中在一起,因此在新的0之前会有一个样本.因此,如果我们有一个4x4内核,则居中的索引应该是-2 -1 0 +1.那是对的吗?如果是的话,为什么会这样呢?有人能解释为什么-2 -1 0 +1不正确-1 0 +1 +2吗?请记住,我想在不使用FFT的情况下执行卷积.

image-processing convolution

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

与CUDA PTX代码和寄存器内存混淆

:)当我试图管理我的内核资源时,我决定调查PTX,但有一些我不明白的事情.这是我写的一个非常简单的内核:

__global__
void foo(float* out, float* in, uint32_t n)
{
    uint32_t idx = blockIdx.x * blockDim.x + threadIdx.x;
    uint32_t one = 5;
    out[idx] = in[idx]+one;
}
Run Code Online (Sandbox Code Playgroud)

然后我用它编译它:nvcc --ptxas-options=-v -keep main.cu我在控制台上得到了这个输出:

ptxas info    : 0 bytes gmem
ptxas info    : Compiling entry function '_Z3fooPfS_j' for 'sm_10'
ptxas info    : Used 2 registers, 36 bytes smem
Run Code Online (Sandbox Code Playgroud)

最终的ptx如下:

    .entry _Z3fooPfS_j (
            .param .u64 __cudaparm__Z3fooPfS_j_out,
            .param .u64 __cudaparm__Z3fooPfS_j_in,
            .param .u32 __cudaparm__Z3fooPfS_j_n)
    {
    .reg .u16 %rh<4>;
    .reg .u32 %r<5>;
    .reg .u64 %rd<8>;
    .reg …
Run Code Online (Sandbox Code Playgroud)

cuda ptx

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

Python:一个存储库中有多个软件包,或者每个存储库中一个软件包?

我有一个庞大的Python 3.7+项目,目前正在将其拆分为多个可以单独安装的软件包。我最初的想法是拥有一个包含多个软件包的Git存储库,每个软件包都有自己的setup.py。但是,当在Google上进行一些研究时,我发现人们建议每个软件包一个存储库:(例如,Python-setuptools-处理两个相关的软件包(在一个仓库中?))。但是,没有人提供为什么他们喜欢这种结构的很好的解释。

因此,我的问题如下:

  • 在同一个GitHub存储库上拥有多个软件包(每个软件包都有自己的setup.py)的含义是什么?
  • 我要面对这样的设置问题吗?
  • 常见的Python工具(文档生成器,pypi打包等)是否与此类设置兼容?
  • 是否有充分的理由选择一种设置而不是另一种设置?
  • 请记住,这不是基于意见的问题。我想知道两种方法中的任何一种是否存在技术问题或问题。

另外,我知道(如果我错了,请纠正我),即使setup.py的GitHub URL不在存储库的根目录下,setuptools现在也允许从GitHub存储库安装依赖项。

python github setuptools python-3.x python-packaging

7
推荐指数
2
解决办法
1615
查看次数

使用向后兼容 (MacOS10.9+) 的 MacOS 10.15 (Catalina) 创建 Python C 扩展

如何使用 MacOS 10.15 为向后兼容(MacOS 10.9+)的 MacOS 创建 Python C 扩展轮?

这是我到目前为止:

export MACOSX_DEPLOYMENT_TARGET=10.9
python -m pip wheel . -w wheels --no-deps
python -m pip install delocate
for whl in wheels/*.whl; do
    delocate-wheel -w wheels_fixed -v "$whl"
done
Run Code Online (Sandbox Code Playgroud)

不幸的是,pip wheel生成一个文件myapp-0.0.1-cp37-cp37m-macosx_10_15_x86_64.whl,与auditwheelLinux不同的是,delocate-wheel它不会修改轮子的名称。因此,如果我使用 将其上传到 PyPI 上twine,则只有使用 MacOS 10.15 的用户才能使用pip. 我想我可以手动将其重命名为myapp-0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl,但这对我来说听起来不对。

对于构建,我只使用 GitHub Actions MacOS 虚拟机。

谢谢你。

PS:构建使用的编译器是GCC9

python macos pypi python-extensions python-wheel

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