小编Mad*_*den的帖子

Alpine 容器内的 docker-compose

我正在尝试将我的应用程序(代码、Dockerfiles 和 docker-compose 脚本)捆绑在一个映像内,以便于部署(入口点将只是docker-compose up)。我的这个顶级应用程序映像的 Dockerfile 看起来像这样

FROM alpine:latest
COPY . /app
RUN apk update && apk add --no-cache docker py-pip openrc && pip install docker-compose
Run Code Online (Sandbox Code Playgroud)

当我运行这个镜像时,dockerd 似乎还没有启动,没有出现在top结果中;docker ps报告“无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。docker 守护进程正在运行吗?”。但是,如果我这样做service docker start,则会返回“*警告:docker 已经启动”。为了让 Docker 在 Alpine 容器中工作,我需要做些什么特别的事情吗?

docker docker-compose alpine-linux

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

Raspberry Pi上的TravisCI

我目前正在github上与Raspberry Pi相关的项目上工作,我想将其附加到某种CI系统上,以便贡献者可以查看它们是否破坏东西而无需构建电路(该项目涉及GPIO引脚)。TravisCI似乎是显而易见的选择,因为它与github很好地集成在一起,但是我对其他人开放

环顾四周之后,似乎要做的事情是在我的Pi机器上本地运行TravisCI服务器(而不是尝试在Travis云中设置某种模拟环境),但是我不确定如何指出我本地服务器上的github项目页面?谁能解释我该怎么做?

github travis-ci travis-ci-cli

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

emplace和默认构造函数

鉴于以下代码,我很惊讶try_emplace无法使用在main函数的第一行中演示的默认构造函数,而是抱怨没有匹配的函数调用Element::Element(double, double).我是否误解了编译器创建默认构造函数的方式或使用try_emplace?我当然可以通过定义所有参数ctors来使这个代码工作Element,但这似乎是多余的.

#include <string>
#include <map>

struct Element
{    
    double a;
    double b;
};

int main(int argc, char** argv)
{
    Element e {2.0, 3.0};

    std::map<std::string, Element> my_map;
    my_map.try_emplace("hello", 2.0, 3.0);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ stl perfect-forwarding emplace

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

带互斥成员的默认移动构造函数

我有一个带有已删除的副本构造函数的类,并且我试图将一个互斥锁成员放入这样的内容中:

struct A {
    A(const A &other) = delete;
    A& operator=(const A &other) = delete;
    A(A&& other) = default;
    A& operator=(A &&other) = default;

    std::mutex lock;
};
Run Code Online (Sandbox Code Playgroud)

编译器抱怨我试图调用已删除的副本构造函数,由于std :: mutex类型是不可移动的,因此我总结一下。我如何才能使互斥锁成员与move构造函数一起以最小的麻烦玩呢?我实际上并不希望将互斥锁成员本身移动到新构造的对象中,并且实际上希望每个被移动的对象只是构造它自己的互斥锁

c++ move

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

具有相同顶级名称的不同 python 包

如果我安装两个具有相同顶级目录级别名称但不同包名称(由 setup.py 或其他识别方法定义)的 python 包,会发生冲突还是“命名空间”会被合并?

例如,如果我有以下结构:

repo1
    mypkg/
        __init__.py
        compiler/...
setup.cfg -> name=repo1

repo2
    mypkg/
        __init__.py
        runner/...
setup.cfg -> name=repo2
Run Code Online (Sandbox Code Playgroud)

我可以安装这两个而不发生冲突吗?如果是,我可以像这样导入它们吗:

from mypkg.runner import *
from mypkg.compiler import *
Run Code Online (Sandbox Code Playgroud)

python setuptools setup.py python-packaging

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

继承类型的指针之间的静态转换

我想这样做

static_cast<IntrusivePtr<B>>(IntrusivePtr<A>)
Run Code Online (Sandbox Code Playgroud)

其中B公开来自A但是这给出了错误

invalid conversion from A* to B*
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这里的问题吗?我可以通过这样做来解决它

static_cast<B*>(IntrusivePtr<A>.get())
Run Code Online (Sandbox Code Playgroud)

理论上这正是上述错误消息所说的内容是不允许的.这是GCC 4.4.7

c++ inheritance casting static-cast

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

布尔逻辑,If语句缩减

可能是一个非常简单的问题,但我对哪些选项感兴趣.我有三个条件,每个条件应产生不同的输出

// special cases
if(!A && B)
     return -1;
if(A && !B)
     return 1;
if(!A && !B)
     return 0;

// general case
return someOtherFunction(x, y);
Run Code Online (Sandbox Code Playgroud)

我可以归结为 -

if(!A) {
    if(!B)
        return 0;
     return -1;
}
if(A && !B)
    return 1;

return someOtherFunction(x, y);
Run Code Online (Sandbox Code Playgroud)

我可以进一步简化吗?这是用C++编写的,所以我只能使用特定于语言的运算符和函数(包括STL)等.

c++ boolean-logic if-statement

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

从地图构造跨度

我有一张地图,我希望返回一个跨度,如下所示

map<string, map<string, Struct>> map;
span<pair<string, map<string, Struct>>> s {map.begin(), map.end()};
Run Code Online (Sandbox Code Playgroud)

编译失败,抱怨没有已知的从 map::iterator 到 span 模板类型的转换。我不确定为什么会失败,因为据我了解,迭代器范围构造函数应该将映射迭代器分解(成对>),然后将其“复制”过来。我在这里缺少什么?

使用 clang8 编译

c++ llvm-clang c++20

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

基于派生类型编译时间行为分支

我有一对类FS和DS,它们都来自另一个类S.我有一个函数,我传入一个S*(即FS或DS),它进一步调用另一个函数传入相同的S*.在这个最终函数中,我需要根据S是FS还是DS来具有不同的行为,但是由于它在关键路径上,所以希望在编译时解析该分支.我怎样才能做到这一点?涉及元编程和/或constexpr的东西我觉得 - 我不想为每个传递进行虚拟调用

为简洁起见,省略了无关的细节

class S {};
class FS : public S {};
class DS : public S {};

void func_2(Space *s) {
     // common code
     // branch based on lowest type of s
     // common code
}

void func_1(Space *s) {
    // common code
    func_2(s);
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism template-meta-programming c++17

0
推荐指数
1
解决办法
110
查看次数