小编jwo*_*der的帖子

在dockerfile中插入条件RUN语句

我正在尝试编写一个docker文件,它将运行一个RUN命令来搜索package.json文件中的一个单词并对其进行操作:

这是我简单的dockerfile:

FROM ubuntu:14.04

COPY package.json package.json

RUN if grep -q "grunt" package.json; then echo succeed fi
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我只想要一个简单的if语句,但它会出现这个错误:

Step 2 : RUN if grep -q "grunt" package.json; then echo succeed fi
 ---> Running in af460df45239
/bin/sh: 1: Syntax error: end of file unexpected (expecting "fi")
INFO[0001] The command [/bin/sh -c if grep -q "grunt" package.json; then echo succeed fi] returned a non-zero code: 2
Run Code Online (Sandbox Code Playgroud)

我该怎么办命令?谢谢.

shell docker boot2docker

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

查找有符号和无符号整数是偶数还是两者都是奇数

我有一个int m和一个unsigned int j并且想要确定它们是偶数还是两者都是奇数.

过去我一直在使用

if((int(j)+m)%2)
Run Code Online (Sandbox Code Playgroud)

抓住只有一个奇怪的情况.但是我担心会int不正确地改变奇怪的偶数j.

这些都会遇到问题吗?

if(!(j%2)!=!(m%2))
if(bool(j%2)!=bool(j%2))
Run Code Online (Sandbox Code Playgroud)

我知道

if(j%2!=m%2)
Run Code Online (Sandbox Code Playgroud)

不起作用,因为'm%2'将产生-1何时m为负数,true无论价值j%2是多少,它总是会评估.

c++ c++11 c++14

31
推荐指数
5
解决办法
3385
查看次数

使用Docker Compose将主机的SSH密钥注入Docker Machine

我在Mac OS X上使用Docker与Docker Machine(使用默认的boot2docker机器),我使用docker-compose来设置我的开发环境.

假设其中一个容器名为" stack".现在我想做的是打电话:

docker-composer run stack ssh user@stackoverflow.com
Run Code Online (Sandbox Code Playgroud)

我的公钥(已添加到stackoverflow.com用于验证我的公钥)位于主机上.我希望这个密钥可以在Docker Machine容器中使用,这样我就能够stackoverflow在容器内使用该密钥进行身份验证.最好不要将我的密钥物理复制到Docker Machine.

有没有办法做到这一点?此外,如果我的密钥受密码保护,有没有办法解锁它一次,所以每次注入后我不必手动输入密码?

ssh docker docker-compose docker-machine

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

operator <<何时指向插入运算符以及何时指向左移位?

什么时候operator <<引用插入操作符,什么时候引用按位左移?

这将输出10,并operator <<指向左移.

cout << a.b() << a.a.b << endl;  
Run Code Online (Sandbox Code Playgroud)

这将输出11,operator <<指的是插入运算符.

cout << a.b();
cout << a.a.b ;
Run Code Online (Sandbox Code Playgroud)

我很困惑,什么时候operator <<(使用时cout)会参考左移算子?

#include <iostream> 
using namespace std; 

class A { 
public:
    A() { a.a = a.b = 1; }

    struct { int a, b; } a;

    int b(); 
}; 

int A::b(){
    int x=a.a;
    a.a=a.b;
    a.b=x; 
    return x;
};

 int main(){
    A a; 
    a.a.a = 0; 
    a.b(); …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading associativity

23
推荐指数
5
解决办法
3023
查看次数

如何从基类方法调用重写方法?

根据继承文件:

派生类可以覆盖其基类的方法.因为方法在调用同一对象的其他方法时没有特殊权限,所以调用同一基类中定义的另一个方法的基类方法最终可能会调用覆盖它的派生类的方法.

这是怎么发生的?有人能用一个简单的例子来说明这个概念吗?

python inheritance class python-3.x

23
推荐指数
3
解决办法
5073
查看次数

是否可以使用MySQL以这种方式对行进行分组?

我有一个MySQL表,如:

ID, USER, PARAM, VAL
--------------------
1 | 1 | NAME | ADAM
2 | 1 | AGE  | 15
3 | 2 | NAME | EVA
4 | 2 | AGE  | 16
5 | 3 | NAME | CRISS
6 | 3 | AGE  | 14
Run Code Online (Sandbox Code Playgroud)

而且我很好奇是否有一个查询会给我类似的东西:

1 | ADAM | 15
2 | EVE  | 16
3 | CRISS| 14
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只是使用下面的查询并在循环中对记录进行分组.

SELECT * FROM table WHERE PARAM ='NAME' OR PARAM = 'AGE'
Run Code Online (Sandbox Code Playgroud)

我尝试使用GROUP但没有成功.

php mysql sql

20
推荐指数
4
解决办法
701
查看次数

Python和JSON - TypeError列表索引必须是整数而不是str

我正在学习使用Python和API(特别是这个世界杯API,http://www.kimonolabs.com/worldcup/explorer)

JSON数据如下所示:

[
  {
    "firstName": "Nicolas Alexis Julio",
    "lastName": "N'Koulou N'Doubena",
    "nickname": "N. N'Koulou",
    "assists": 0,
    "clubId": "5AF524A1-830C-4D75-8C54-2D0BA1F9BE33",
    "teamId": "DF25ABB8-37EB-4C2A-8B6C-BDA53BF5A74D",
    "id": "D9AD1E6D-4253-4B88-BB78-0F43E02AF016",
    "type": "Player"
  },

 {
    "firstName": "Alexandre Dimitri",
    "lastName": "Song-Billong",
    "nickname": "A. Song",
    "clubId": "35BCEEAF-37D3-4685-83C4-DDCA504E0653",
    "teamId": "DF25ABB8-37EB-4C2A-8B6C-BDA53BF5A74D",
    "id": "A84540B7-37B6-416F-8C4D-8EAD55D113D9",
    "type": "Player"
  },
   ]
Run Code Online (Sandbox Code Playgroud)

我只是想在这个API中打印所有firstNames.这就是我所拥有的:

import urllib2
import json

url = "http://worldcup.kimonolabs.com/api/players?apikey=xxx"
json_obj = urllib2.urlopen(url).read
readable_json = json.dumps(json_obj)
playerstuff = readable_json['firstName']
for i in playerstuff:
    print i['firstName']
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到错误"......第8行,在...... TypeError:列表索引必须是整数,而不是str"

我已经四处寻找解决方案,但似乎在更深入的"API"问题中找到了问题,我还没有完全理解它,所以对我需要做的任何帮助或解释都会很棒.谢谢!

python json

19
推荐指数
3
解决办法
9万
查看次数

大多数Pythonic方式声明一个抽象类属性

假设您正在编写一个抽象类,并且其一个或多个非抽象类方法要求具体类具有特定的类属性; 例如,如果每个具体类的实例可以通过匹配不同的正则表达式来构造,那么您可能希望为您的ABC提供以下内容:

@classmethod
def parse(cls, s):
    m = re.fullmatch(cls.PATTERN, s)
    if not m:
        raise ValueError(s)
    return cls(**m.groupdict())
Run Code Online (Sandbox Code Playgroud)

(也许这可以通过自定义元类更好地实现,但是为了示例,请尝试忽略它.)

现在,因为在实例创建时检查抽象方法和属性的覆盖,而不是子类创建时间,尝试使用abc.abstractmethod以确保具体类具有PATTERN属性将无法工作 - 但肯定应该有一些东西可以告诉任何人查看您的代码"我没有忘记PATTERN在ABC 上定义;具体的类应该定义自己的." 问题是:哪些东西是最Pythonic?

  1. 堆装饰员

    @property
    @abc.abstractmethod
    def PATTERN(self):
        pass
    
    Run Code Online (Sandbox Code Playgroud)

    (顺便说一下,假设Python 3.4或更高版本.)这可能会误导读者,因为它暗示PATTERN应该是一个实例属性而不是类属性.

  2. 装饰塔

    @property
    @classmethod
    @abc.abstractmethod
    def PATTERN(cls):
        pass
    
    Run Code Online (Sandbox Code Playgroud)

    这可以是非常混乱的读者,因为@property@classmethod通常不能结合; 它们只在这里一起工作(对于给定的"工作"值),因为一旦被覆盖,该方法就会被忽略.

  3. 虚拟价值

    PATTERN = ''
    
    Run Code Online (Sandbox Code Playgroud)

    如果具体类无法定义自己的类PATTERN,parse则只接受空输入.此选项不是广泛适用的,因为并非所有用例都具有适当的虚拟值.

  4. 引起误差的虚拟值

    PATTERN = None
    
    Run Code Online (Sandbox Code Playgroud)

    如果具体类无法定义自己的类PATTERN,parse将引发错误,程序员得到他们应得的.

  5. 没做什么. 基本上是#4的更硬核变体.在ABC的文档字符串中可以有一个注释,但ABC本身不应该有任何PATTERN属性的方式.

  6. 其他???

python abstract-class python-3.x

18
推荐指数
2
解决办法
3962
查看次数

新(3)是什么意思?

SelectInst *Sel = new(3) SelectInst(C, S1, S2, NameStr, InsertBefore);
Run Code Online (Sandbox Code Playgroud)

new这里运营商的意义是什么?

操作员号码3后的数字是什么意思new

c++ memory-management operator-overloading new-operator

17
推荐指数
2
解决办法
2263
查看次数

Pylint消息:无效的常量名称(无效名称)

Pylint抱怨Invalid constant name "myprint" (invalid-name)记录器功能的简写.

# import
from utils import get_logger
LOGFILE = '6_evaluator.log'
myprint = get_logger(LOGFILE)

def main():
    # some stuff
    myprint('log log')

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

这可以在不调整pylint配置的情况下完成吗?

如果需要,这里的定义是get_logger:

import logging
import os

def get_logger(logfile):
    """ Return a logger that log on stdout and in LOGFILE"""
    if os.path.isfile('{}'.format(logfile)):
        os.remove('{}'.format(logfile))

    logging.basicConfig(filename='{}'.format(logfile), level=logging.INFO)
    logger = logging.getLogger('')
    logger.addHandler(logging.StreamHandler())
    myprint = logger.info

    myprint('log file at: {}'.format(logfile))
    myprint('Again Hello from logger')
    return myprint
Run Code Online (Sandbox Code Playgroud)

python pylint

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