小编Zak*_*Zak的帖子

alpine`apk`是否有ubuntu`apt``-- no-install-recommended`等价物

我正试图制作我可以逃脱的绝对最小的Docker图像,所以我已经从ubuntu作为我的基地切换到高山.

因为apt,我曾经用来--no-install-recommends最小化与我想要的软件包一起安装的"依赖项".是否有一个我需要传递的等效标志,apk或者这是这个瘦身操作系统的默认行为?

packages apk docker alpine-linux

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

如何使用通过 `apk` `--force-broken-world` 标志安装的二进制文件

我一直在阅读 的man页面apk add,但我不完全理解如何使用该--force-broken-world标志。

我试图将 Python 2.7.6 安装到 Alpine 映像中,但出现以下错误。

$ docker run --rm -it alpine:latest apk add --no-cache python=2.7.6
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  python2-2.7.14-r2:
    breaks: world[python=2.7.6]
Run Code Online (Sandbox Code Playgroud)

但是,我可以强制安装它,但我不确定它在做什么(如果有的话)。

$ docker run --rm -it alpine:latest apk add --force-broken-world --no-cache python=2.7.6
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
OK: 4 MiB in 11 packages
Run Code Online (Sandbox Code Playgroud)

从命令行来看,一切看起来都很好。但是,当您在容器内执行此操作时,python似乎并未安装。

$ docker run --rm -it alpine:latest /bin/ash
# apk add --force-broken-world --no-cache python=2.7.6
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
OK: 4 MiB …
Run Code Online (Sandbox Code Playgroud)

ash docker alpine-linux alpine-package-keeper

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

如何在MacOS 10.13.3(High Sierra)上安装GDB

有大量的帖子和博客讨论这个话题,但似乎没有什么工作......

从互联网上,以下是有关安装和运行所需程序的共识gdb.

  1. 安装 gdb

    brew install gdb
    
    Run Code Online (Sandbox Code Playgroud)

    Homebrew"成功"安装 gdb v8.1

  2. 协同设计 gdb

    协同设计gdb由以下的代码签名程序 (如在一个单独的SO后详述).

  3. 更新 ~/.gdbinit

    echo "set startup-with-shell off" >> ~/.gdbinit
    
    Run Code Online (Sandbox Code Playgroud)

在完成所有步骤之后,当我尝试调试一个简单的"hello world"程序时,我得到了SIGTRAP因抛出而导致的以下启动错误.

(gdb) start
Temporary breakpoint 1 at 0x100000e66: file test.cpp, line 5.
Starting program: /Users/zfields/Documents/Development/test/a.out
[New Thread 0x1703 of process 67971]
[New Thread 0x1903 of process 67971]
During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

macos gdb

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

Java Scope:返回在方法中实例化的对象 - 这是危险的吗?

我是Java课程的学生,今天学习了一些关于Java的东西,这使得我的设备转向了.当我问老师如何以及为什么时,他不确定这种行为.谁能解释为什么以下示例有效?

class Example {
    public int ex_val;

    public Example (int a) {
        this.ex_val = a;
    }

    public int getExVal () {
        return this.ex_val;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我要在另一个类的方法中创建一个"Example"实例并"返回"该对象,它可以成功地跳出它的原始范围并随后使用.

class ParentObject {
    // Instance Variables    
    public Example a;

    public ParentObject (int number) {
        // Initialize instance variable object from out-of-scope instantiation
        this.a = genExample(number);

        // Verify scope creep
        System.out.println(this.a.getExVal());
    }

    public Example genExample (int a) {
        return new Example(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

这可行,但这种行为是否稳定?我可以指望这个吗?垃圾收集器可以在一个方法的return语句和调用函数的赋值语句之间跳转吗?我是否根据操作系统的JVM版本运行失败风险?如果可以依赖它,这似乎是方便的功能.

java

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

Snap包:"staging"和"priming"步骤的目的是什么?

我已成功创建并上传了一个快照包(教程很棒).但是,我想知道在每个构建步骤中到底发生了什么,以及我如何利用它们.

这个过程似乎是拉 - >构建 - >阶段 - >素 - >快照.

通过我的观察,似乎"拉"放的文件parts/<part name>/src/夹"打造"放于文件parts/<part name>/build/夹,"阶段"提出的在文件stage/夹和"黄金"把文件放在prime/parts/<part name>/install/文件夹.

作为一个新手,我会告诉你我从一个snapcraft.yaml文件开始,我打电话snapcraft,我得到了一个快照; 一步到位的过程.我知道每个"零件"有一个stage:prime:部分,但我不知道如何或为何采取这些步骤的优势.我发现有用的唯一事情是install:沿$SNAPCRAFT_PART_INSTALL可到环境变量snapcraft.yaml文件.

这些stage:prime:部分允许我做什么不能实现install:$SNAPCRAFT_PART_INSTALL

snapcraft

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

将std :: deque内容复制到byte-array的最有效方法

有没有更好的方法将a的内容复制std::deque到字节数组?似乎STL中应该有一些东西可以做到这一点.

// Generate byte-array to transmit
uint8_t * i2c_message = new uint8_t[_tx.size()];
if ( !i2c_message ) {
    errno = ENOMEM;
    ::perror("ERROR: FirmataI2c::endTransmission - Failed to allocate memory!");
} else {
    size_t i = 0;

    // Load byte-array
    for ( const auto & data_byte : _tx ) {
        i2c_message[i++] = data_byte;
    }

    // Transmit data
    _marshaller.sendSysex(firmata::I2C_REQUEST, _tx.size(), i2c_message);
    _stream.flush();

    delete[] i2c_message;
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找空间或速度或两者的建议......

编辑:应该指出,_marshaller.sendSysex()不能扔.

跟进:

我认为值得重新考虑所有内容,因为评论非常有启发性(除了火焰战争).:-P

被问到的问题的答案......

使用 std::copy

更大的图景:

不是简单地增加代码的原始性能,而是值得考虑为代码库添加健壮性和长寿.

我忽略了RAII - 资源获取是初始化.通过向另一个方向发展并略微受到性能影响,我可以在弹性方面获得巨大收益(正如@PaulMcKenzie和@WhozCraig所指出的那样).事实上,我甚至可以将我的代码与依赖项中的更改隔离开来!

最终解决方案 …

c++ algorithm stl deque

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

`ssh-keygen -A` 到底是做什么的?

$ ssh-keygen --help
ssh-keygen: unrecognized option: -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
              [-N new_passphrase] [-C comment] [-f output_keyfile]
   ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
   ssh-keygen -i [-m key_format] [-f input_keyfile]
   ssh-keygen -e [-m key_format] [-f input_keyfile]
   ssh-keygen -y [-f input_keyfile]
   ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
   ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
   ssh-keygen -B [-f input_keyfile]
   ssh-keygen -D pkcs11
   ssh-keygen -F hostname [-f known_hosts_file] [-l]
   ssh-keygen -H …
Run Code Online (Sandbox Code Playgroud)

linux ssh-keys ssh-keygen

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

如何启用实验性 Docker CLI 功能

我正在尝试使用docker manifest inspect <image name>,但 Docker CLI 说...

$ docker manifest inspect node
docker manifest inspect is only supported on a Docker cli with experimental cli features enabled
Run Code Online (Sandbox Code Playgroud)

考虑到 Docker 文档的丰富性,这个简单的问题出奇地难以搜索。

如何启用实验性 CLI 功能?

configuration command-line-interface docker

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

MySQL输出屏蔽(即电话号码,SSN等显示格式)

是否有内置的SQL函数可以屏蔽输出数据?

假设我有一个整数列,代表一个电话号码(对于任何国家/地区).是否有更好的方法来显示数字而不是将它们分开,加载哈希,破折号和点,然后将它们连接在一起?

我知道有几种语言可以简单地屏蔽数据,而不是重构数据.MySQL有类似的东西吗?

mysql

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

如何在c中创建一个linux管道示例

我正在尝试学习如何在C中使用pipe()命令,并尝试创建一个测试程序来复制其功能ls | grep ".c",如果我将其输入linux终端.如果我把它输入终端,我只能得到test.c结果.

我的代码如下:

#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"
#include "fcntl.h"

int main(int argc, char** argv)
{
 int pipefd[2];
 int childpid,childpid2;
 char* cmd[3]={"ls",NULL,NULL};
 char* cmd2[3]={"grep",".c",NULL};
 pipe(pipefd);
 if(childpid=fork()){
   //parent
 }else{  
   //child
   //write
   close(pipefd[0]);
   dup2(pipefd[1],STDOUT_FILENO);
   execvp("ls", cmd);
 }
 if(childpid2=fork()){
 }
 else{
   close(pipefd[1]);
   dup2(pipefd[0],STDIN_FILENO);
   execvp("grep",cmd2);
 }
 close(pipefd[0]);
 close(pipefd[1]);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码返回以下结果($是终端提示符):

$a.out
$test.c
(blank line)
Run Code Online (Sandbox Code Playgroud)

该程序没有完成,但挂起,直到我退出它.我有什么问题?我怎么能模仿终端?我是C的新手,并且使用程序的预制模板,如果有明显的错误,请原谅我.

c linux pipe

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