我正在尝试编写一个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)
我该怎么办命令?谢谢.
我有一个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
是多少,它总是会评估.
我在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.
有没有办法做到这一点?此外,如果我的密钥受密码保护,有没有办法解锁它一次,所以每次注入后我不必手动输入密码?
什么时候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) 根据继承文件:
派生类可以覆盖其基类的方法.因为方法在调用同一对象的其他方法时没有特殊权限,所以调用同一基类中定义的另一个方法的基类方法最终可能会调用覆盖它的派生类的方法.
这是怎么发生的?有人能用一个简单的例子来说明这个概念吗?
我有一个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
但没有成功.
我正在学习使用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"问题中找到了问题,我还没有完全理解它,所以对我需要做的任何帮助或解释都会很棒.谢谢!
假设您正在编写一个抽象类,并且其一个或多个非抽象类方法要求具体类具有特定的类属性; 例如,如果每个具体类的实例可以通过匹配不同的正则表达式来构造,那么您可能希望为您的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?
堆装饰员
@property
@abc.abstractmethod
def PATTERN(self):
pass
Run Code Online (Sandbox Code Playgroud)
(顺便说一下,假设Python 3.4或更高版本.)这可能会误导读者,因为它暗示PATTERN
应该是一个实例属性而不是类属性.
装饰塔
@property
@classmethod
@abc.abstractmethod
def PATTERN(cls):
pass
Run Code Online (Sandbox Code Playgroud)
这可以是非常混乱的读者,因为@property
和@classmethod
通常不能结合; 它们只在这里一起工作(对于给定的"工作"值),因为一旦被覆盖,该方法就会被忽略.
虚拟价值
PATTERN = ''
Run Code Online (Sandbox Code Playgroud)
如果具体类无法定义自己的类PATTERN
,parse
则只接受空输入.此选项不是广泛适用的,因为并非所有用例都具有适当的虚拟值.
引起误差的虚拟值
PATTERN = None
Run Code Online (Sandbox Code Playgroud)
如果具体类无法定义自己的类PATTERN
,parse
将引发错误,程序员得到他们应得的.
没做什么. 基本上是#4的更硬核变体.在ABC的文档字符串中可以有一个注释,但ABC本身不应该有任何PATTERN
属性的方式.
其他???
SelectInst *Sel = new(3) SelectInst(C, S1, S2, NameStr, InsertBefore);
Run Code Online (Sandbox Code Playgroud)
new
这里运营商的意义是什么?
操作员号码3
后的数字是什么意思new
?
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 ×4
c++ ×3
docker ×2
python-3.x ×2
boot2docker ×1
c++11 ×1
c++14 ×1
class ×1
inheritance ×1
json ×1
mysql ×1
new-operator ×1
php ×1
pylint ×1
shell ×1
sql ×1
ssh ×1