小编int*_*ect的帖子

将package_dir设置为..?

我有一个克隆到的Git存储库,在存储库的根目录myproject有一个__init__.py,使整个东西成为可导入的Python包。

我正在尝试setup.py为该软件包编写一个setuptools ,它也位于该__init__.py文件旁边的存储库的根目录中。我想setup.py作为软件包安装在目录中。如果setup.py本身作为安装的一部分出现,那很好,但是如果没有,那会更好。理想情况下,它也应在可编辑模式(pip install -e .)下工作

是否完全支持此配置?我可以通过对进行package_dir= {"": ".."},参数设置来使其工作setup(),告诉它myproject在当前目录之上的目录中进行查找。但是,这要求必须始终从名为的目录中安装软件包myproject,例如,通过进行安装pip,或者如果有人正在使用名为的Git克隆进行安装,或者不是myproject-dev以其他数量的其他方式进行安装,则情况似乎并非如此。案件。

我正在考虑的另一个技巧是在存储库内部.命名的符号链接mypackage。那应该行得通,但是我想先检查一下是否有更好的方法。

python packaging setuptools distribute

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

如何编写现代OpenGL着色器以便彼此兼容?

在新的OpenGL版本(3.0和4.0版本)中,不推荐使用gl_Vertex等内置顶点属性.实际渲染任何东西的"新方法"是为位置,颜色等指定自己的顶点属性,然后将这些自定义属性绑定到缓冲区.

我的问题是:如果不将渲染代码和着色器紧密耦合,怎么能做到这一点?如果我编写一个使用"position"作为顶点位置的着色器,使用着色器的主代码必须知道并将顶点数据作为"position"传递.如果我想使用写入的不同着色器来获取"vertex_pos"中的顶点数据,我必须首先重写该着色器,或者修改我的主机代码以将顶点数据发送为"vertex_pos".

是否有一组所有着色器应使用的标准顶点和片段属性的最佳实践名称?或者是否存在Balkanized引擎特定标准,以便为一个引擎编写的着色器无法在没有修改的情况下在另一个引擎上工作?或者根本没有标准,一般来说,每个对象都需要自己的自定义渲染代码来匹配其自定义着色器?

opengl shader opengl-3 opengl-4

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

如何通过WebGL使用OpenGL 4功能

我想使用WebGL中OpenGL 4的一些功能(特别是曲面细分着色器和更新的着色器语言版本).这是可能的,无论是符合标准还是以hackish方式?是否有一些神奇的价值我可以使用而不是说gl.FRAGMENT_SHADER来告诉基础GL实现编译曲面细分着色器?

webgl opengl-4

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

如何从Haskell中的复杂或复合分布中进行采样?

我正在尝试为Haskell中的假想行星生成随机质量.我想通过采样双模态分布(理想情况下是两个正态分布的叠加:一个对应于小行星,一个对应于气体巨行)来产生这些质量.我查看了统计软件包,它提供了quantile函数,可以将统一分布Double转换Double为多个分布.但似乎没有任何支持撰写发行版.

这个特殊情况可以通过选择一个分布或另一个分类来进行预测,但是我想用一个分发来做,特别是因为我可能需要稍后调整整体分布.最终,我可能会用天空测量中的真实数据替换正态分布.

我正在考虑自己实施拒绝抽样,它可以相当简单地处理任意分布,但它似乎效率很低,如果解决方案已经作为库存在,那么实现它肯定不是一个好主意.

是否有一个Haskell库支持从组合或显式指定的分发中进行采样?或者现有的Haskell实现拒绝采样?或者,是否存在两个正态分布之和的CDF逆的显式公式?

statistics haskell normal-distribution procedural-generation sampling

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

我们维护没有安全漏洞的 package-lock.json 文件的目的是什么?为什么不直接删除它们或者让它们变得陈旧呢?

package-lock.json存储上次运行时安装的所有依赖项和传递依赖项的一组精确版本npm update。我们鼓励您package-lock.json重新提交到您的存储库。

我能找到的唯一真正的消费者package-lock.jsonnpm ci,它准确地再现了定义的状态package-lock.json,这样您就可以确保您在上次编写的开发机器上的相同依赖项上运行 CI package-lock.json

另一个用途package-lock.json似乎是产生大量的安全警告。我已经让 Github 的 Dependabot PR-ing 对我提交的package-lock.json文件进行了更改,并抱怨我的package-lock.json文件“发现”了其他无法自动为我修复的漏洞。我怀疑这些无法修复的问题是我的或依赖项中的问题package.json,是由排除有问题模块的固定版本的最大版本要求引起的,但这不是 Dependabot 所说的:

Dependabot 说我的 package-lock.json 有问题,无法修复

如果package-lock.json仅由 所使用npm ci,那么对那里的过时且易受攻击的软件包版本的引用如何在除我的 CI 系统之外的任何地方创建漏洞?实际安装该软件包的任何人都不会使用它package.json来解决依赖关系,从而在所有漏洞可用时自动修复它们(除非我自己有一个令人讨厌的最大版本限制)?我的存储库的这些 PR 真的只是我和我的所有用户/协作者npm update在我们的机器上运行的建议吗?如果是这样,是什么让 Dependabot 作者通过拉取请求来做到这一点?

如果我package-lock.json从源代码管理中删除,是否可以正确解决package-lock.json- 指示的漏洞(因为该文件不再存在以欺骗某人安装我的依赖项的旧的易受攻击版本)?或者它只会使漏洞扫描器无法扫描我的存储库(即它们是否依赖package-lock.json而不是自行解析依赖项package.json)并使我不知道何时需要npm update

node.js npm dependabot

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

将Cython标记为构建依赖关系?

有一个带有setup.py的Python包,可以这样读取:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
  name = 'fastahack',
  ext_modules=[
    Extension("fastahack.cfastahack",
              sources=["fastahack/cfastahack.pyx", "lib/Fasta.cpp", "lib/split.cpp"],
              libraries=["stdc++"],
              include_dirs=["lib/"],
              language="c++"),
    ],
    package_data = {'lib': ['*.pyx', "*.c", "*.h", "README.rst"]},
    package_dir = {"fastahack": "fastahack"},
    cmdclass = {'build_ext': build_ext},
    packages = ['fastahack', 'fastahack.tests'],
    author = "Brent Pedersen",
    author_email="bpederse@gmail.com",
    #test_suite='nose.collector'
)
Run Code Online (Sandbox Code Playgroud)

如果未安装Cython,则无法导入此setup.py.据我所知,导入setup.py是像pip这样的工具如何找出包的依赖关系.我想设置这个包,以便它可以上传到PyPI,事实上它依赖于Cython注意到,所以当你尝试"pip install fastahack"时,或当你试图"下载"时,将下载并安装Cython pip install"直接来自Git存储库.

我如何打包此模块,以便在未安装Cython时从Internet正确安装?始终使用最新版本的Cython将是一个加号.

python distutils pip cython pypi

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

有效地将块插入文件中间

我本质上正在寻找相当于 ext4 的mremap().

我有一个大的mmap()文件,我在其中分配数组,并且数组需要增长。因此,我想让第一个数组在当前位置变大,并移动文件和地址空间中的所有其他数组以腾出空间。

如果这只是匿名内存,mremap()只要我插入整数个内存页面,我就可以在恒定时间内移动整个页面。但这是一个磁盘支持的文件,因此数据需要在文件和内存中移动。

我实际上不想在物理磁盘上读取然后重写整个数据块。我希望数据保留在磁盘上的物理扇区中,并引导文件系统调整文件元数据以在需要额外空间的地方插入新扇区。如果我必须将插入保持为与文件系统相关的磁盘扇区大小的某个倍数,那很好。如果我最终不得不复制 O(N) 扇区或范围引用来为插入的范围腾出空间,那也没关系。我只是不想为了在 4 GB 文件中间插入一个块而将 2 GB 数据移入和移回磁盘。

如何通过操作文件元数据来完成高效插入?Linux 中是否确实公开了用于此目的的通用 API?或者如果文件系统碰巧是 ext4 就可以工作?write()在适当的情况下,在内存映射文件中给定源地址的调用是否会减少到我想要的那种有效移位?

是否有一个 C 或 C++ API 函数,其语义是“从这里复制字节到那里,并将源代码保留为未定义的值”,我应该调用该函数,以防将来将此优化添加到标准库和内核中?

我考虑过总是在文件末尾分配新页面,并将它们映射到内存中的正确位置。但是当我重新加载文件时,我需要找到某种方法来重建这一系列映射。此外,缩小数据结构将是一个不小的问题。那时,我将编写一个数据库页面管理器。

linux filesystems mmap memory-mapped-files ext4

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

How do I register/reregister a Gitlab Runner using a pre-made config.toml?

I recently wanted to move a Gitlab runner that I had set up for my self-hosted Gitlab instance from being a project runner (i.e. running jobs only for a project) to being a group runner (so it could also run jobs for other projects in the same group). I wanted to retain the /etc/gitlab-runner/config.toml settings that I had painstakingly hand-written.

Luckily I backed up config.toml, because sudo gitlab-runner unregister -t ... -u ... deleted the whole configuration from config.toml …

gitlab gitlab-ci gitlab-ci-runner

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

GoMock 中的可选调用

我想使用 GoMock 来测试一些代码,而不是将我的测试与被测事物的实际实现太紧密地结合起来。但 GoMock 似乎要求我能够提前准确地说出被测试的代码将进行什么调用,即使这不是我要测试的合约的一部分。有没有解决的办法?

例如,假设我正在测试一些验证逻辑,其中被测代码需要采用命名WidgetmockedObject如果mockedObject.CheckConditionA()mockedObject.CheckCondition1()返回 false,则返回 false,否则返回 true。一种正确的实现是:

func UnderTest(mockedObject *Widget) bool {
    if !mockedObject.CheckConditionA() {
        return false
    }
    return mockedObject.CheckCondition1()
}
Run Code Online (Sandbox Code Playgroud)

另一个是:

func UnderTest(mockedObject *Widget) bool {
    if !mockedObject.CheckCondition1() {
        return false
    }
    return mockedObject.CheckConditionA()
}
Run Code Online (Sandbox Code Playgroud)

第三个是:

func UnderTest(mockedObject *Widget) bool {
    cA := mockedObject.CheckConditionA()
    c1 := mockedObject.CheckCondition1()
    return cA && c1
}
Run Code Online (Sandbox Code Playgroud)

第四个是:

func UnderTest(mockedObject *Widget) bool {
    if TodayIsAnAlternateTuesday() {
        return mockedObject.CheckCondition1() && mockedObject.CheckConditionA()
    }
    return mockedObject.CheckConditionA() && …
Run Code Online (Sandbox Code Playgroud)

mocking go gomock

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

`dict.copy()` 会迭代吗?我可以在另一个线程中修改字典时使用它吗?

dict在两个线程之间共享。一个线程正在添加和删除条目,另一个线程现在需要迭代该字典并从中派生一些数据。

在 Python 2 中,它items()会返回一个列表,但不一定会迭代dict. 在 Python 3 中迭代要修改的 a 的建议方法dict似乎是迭代list(mydict.items()),但这似乎只适用于一个线程;另一个线程可能会添加或删除项目,同时list()仍在返回的字典视图上使用迭代器items(),对吧?

有一个copy()方法dict; 文档并没有建议它可以抛出RuntimeError类似的字典和字典视图迭代器可以。我可以安全地使用copy()快照dict正在被另一个线程修改吗?然后我可以迭代快照。

python multithreading dictionary python-3.x

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