小编Omr*_*oth的帖子

在 Docker 构建过程中从主机复制文件以最小化图像大小

我正在创建一个容器映像,其中安装了两个大型(10GB)应用程序。我目前正在使用:

COPY <installer.file> <dest>

RUN <install application> \
   && rm <application installer file>
Run Code Online (Sandbox Code Playgroud)

然而,我的印象是,如果我能够做到以下几点:

RUN cp <installer files from host> \
   && <install application> \
   && rm <application installer file>
Run Code Online (Sandbox Code Playgroud)

我的图像文件会小得多。(澄清一下,这将删除其中包含安装程序文件的层。)

我知道在构建过程结束之前不会安装卷 - 还有其他方法可以做到这一点吗?

docker

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

在Python中转发kwargs

我希望将一个函数的 kwargs 转发到另一个函数,但添加一个进一步的参数。然而,以下内容不起作用...

def A(**kwargs):
    B(type="moose", kwargs=kwargs)

def B(**kwargs):
    print(kwargs) # I'd like to see {"call": True, "seven": 8, "type": "moose" }

A(call=True, seven=8)
Run Code Online (Sandbox Code Playgroud)

python

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

CMake 构建类型没有区别

我在 C++ 领域工作了很多年,但对 CMake 还很陌生。

我用构建我的应用程序

cmake --build build_dir --config Debug --target all -- -j 1
Run Code Online (Sandbox Code Playgroud)

这工作正常并构建调试版本。

如果我将 --config 更改为其他内容,例如使用以下命令发布:

cmake --build build_dir --config Release --target all -- -j 1
Run Code Online (Sandbox Code Playgroud)

忍者说“没有工作可做”并退出。运行编译后的应用程序,它显然没有得到优化。此 Cmake 项目中还有两个其他选项,RelWithDebug 和 MinSizeRel,它们的作用相同。

在CmakeLists.txt中有:

set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
Run Code Online (Sandbox Code Playgroud)

还有很多其他提到的各种类型,但目前对我来说都有点希腊语。

我该怎么做才能找出问题出在哪里?

cmake

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

如果我已经“处理”了一个对象,std::unordered_map 是否适合记录?

我有一个名为 Col 的结构:

struct Col
{
   Object* o1;
   Object* o2;
   Object* o3;

   bool operator==(const Col &other) const
   { 
       return o1 == o1 && o2 == o2 && o3 == o3;
   }
};
Run Code Online (Sandbox Code Playgroud)

我对此定义了一个哈希:

template <>
struct std::hash<Col>
{
  std::size_t operator()(const Col& k) const
  {
    using std::size_t;

    std::hash<void> void_hash;

    std::size_t res = void_hash(k.o1) + void_hash(k.o2) + void_hash(k.o3;

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

然后,我有很多包含重复项std::vectorCol对象(根据我对相等的定义),并且我希望仅“处理”每个唯一元素一次。

这就是我所做的:

std::unordered_map<Col, bool> done_list;

for (Col c : col_list)
{
    if (done_list.find(c) == done_list.end())
    { …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×1

cmake ×1

docker ×1

python ×1