我一直在编写一个小的Python脚本,它使用subprocess模块和辅助函数执行一些shell命令:
import subprocess as sp
def run(command, description):
"""Runs a command in a formatted manner. Returns its return code."""
start=datetime.datetime.now()
sys.stderr.write('%-65s' % description)
s=sp.Popen(command, shell=True, stderr=sp.PIPE, stdout=sp.PIPE)
out,err=s.communicate()
end=datetime.datetime.now()
duration=end-start
status='Done' if s.returncode==0 else 'Failed'
print '%s (%d seconds)' % (status, duration.seconds)
Run Code Online (Sandbox Code Playgroud)
以下行读取标准输出和错误:
s=sp.Popen(command, shell=True, stderr=sp.PIPE, stdout=sp.PIPE)
out,err=s.communicate()
Run Code Online (Sandbox Code Playgroud)
如您所见,未使用stdout和stderr.假设我想以格式化的方式将输出和错误消息写入日志文件,例如:
[STDOUT: 2011-01-17 14:53:55] <message>
[STDERR: 2011-01-17 14:53:56] <message>
Run Code Online (Sandbox Code Playgroud)
我的问题是,最恐怖的方式是什么?我想到了三个选择:
write方法.write.PIPE某种方式连接到自身.更新:参考测试脚本
我正在使用此脚本检查结果,保存为test.py:
#!/usr/bin/python
import sys
sys.stdout.write('OUT\n')
sys.stdout.flush()
sys.stderr.write('ERR\n')
sys.stderr.flush() …Run Code Online (Sandbox Code Playgroud) 我正在使用swift/mac_os_x中优化的生活游戏实现.第一步:随机化一大块细胞(50%活着).
码:
for(var i=0;i<768;i++){
for(var j=0;j<768;j++){
let r = Int(arc4random_uniform(100))
let alive = (aliveOdds > r)
self.setState(alive,cell: Cell(tup:(i,j)),cells: aliveCells)
}
}
Run Code Online (Sandbox Code Playgroud)
我期待相对均匀的随机性.我得到的有明确的模式:

放大左下角:

(我已经在每32行和每列上将颜色更改为黑色,以查看图案是否排列为2的任何幂).
是什么导致这些模式?我试过了:
rand().arc4stir()在每个arc4random_uniform调用之前添加关于下一步的想法?
当容器退出时,docker ps -a显示其退出代码(滚动
$ docker run ubuntu bash -c "exit 1"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2c769c4b9ef ubuntu "bash -c 'exit 1'" 6 seconds ago Exited (1) 3 seconds ago happy_fermat
Run Code Online (Sandbox Code Playgroud)
如何以编程方式获取数字退出代码,而不会出现容易出错grep和cut-ing?
我使用旧版svn回购.但是,我想享受git我本地机器的好处.
git init我当前仓库的根,编写代码,并在本地(git commit)和远程(svn commit)独立提交代码.git-svn,但我不知道是否值得学习新工具细微差别的麻烦.我该怎么办呢?
我一直在开发OSX Lion上安装的Eclipse上的第一个Android应用程序.我想使用我的Jelly Beans Galaxy Nexus进行调试,但Android Device Bridge(adb)无法找到该设备:
./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
附录:我已经报告了一个错误.解决方法仍然是最受欢迎的!
9月5日13:28 UTC - 解决方法#1:Dropbox:我已将OSX Eclipse工作区移至Dropbox并在设备上安装了Dropbox.APK被写入bin/,并在每次成功构建后从Dropbox应用程序重新安装它.

我想迭代一个项目列表,并对每个项目运行一个断言.一个例子可能是检查列表中的每个数字是否为奇数.
TestCase:
class TestOdd(unittest.TestCase):
def runTest(self):
"""Assert that the item is odd"""
self.assertTrue( NUMBER %2==1, "Number should be odd")
Run Code Online (Sandbox Code Playgroud)
测试suite:
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestOdd())
# I would like to have:
# suite.addTest(TestOdd(1))
# suite.addTest(TestOdd(2))
# suite.addTest(TestOdd(3))
# ...
unittest.main()
Run Code Online (Sandbox Code Playgroud)
如何TestOdd使用参数实例化对象 - 例如,要测试的数字?
更新:根据2011年的博客文章(发布为答案),没有内置的参数化测试机制.我很乐意接受任何更清洁的解决方案.
我刚刚在EC2 Ubuntu 14.04 LTS上安装了我的第一个uWSGI服务器,使用以下配置:
[uwsgi]
http-socket = :9001
plugin = python
wsgi-file = foo.wsgi
chdir = /home/bar
process = 3
Run Code Online (Sandbox Code Playgroud)
uWSGI容器工作正常,但没有日志记录.按照手册,我添加了以下内容:
logger = file:/tmp/errlog
Run Code Online (Sandbox Code Playgroud)
但是重新启动(使用sudo service uwsgi restart)不起作用 - 服务器不会以此配置启动.
知道我的ini配置中缺少什么吗?
我有一个经典ELK配置的Kibana服务器,查询Elasticsearch实例.
我使用Kibana控制台对elasticsearch执行复杂的查询.我想使用cURL或任何其他http工具在命令行中使用其中一些查询.
如何将Kibana搜索转换为类似于弹性搜索的直接,类似cURL的REST调用?
我正在创建一个汇总表,汇总给定日期内的所有事件.
INSERT INTO graph_6(
day,
event_type,
(SELECT COUNT(*) FROM event e
WHERE event_type = e.event_type
AND creation_time::DATE = sq.day)
FROM event_type
CROSS JOIN
(SELECT generate_series(
(SELECT '2014-01-01'::DATE),
(SELECT '2014-01-02'::DATE),
'1 day') as day) sq;
Run Code Online (Sandbox Code Playgroud)
该creation_time列已编入索引:
CREATE INDEX event_creation_time_date_idx ON event USING BTREE(creation_time);
Run Code Online (Sandbox Code Playgroud)
但是,即使仅使用少量事件(2014年1月1日至2日)查询两天的数据,查询也会运行很长时间.
在EXPLAIN上查询是相当严峻-它运行一个顺序扫描的event表,而不是利用指数都:
-> Seq Scan on event e_1 (cost=0.00..12557.39 rows=531 width=38)
Filter: ... AND ((creation_time)::date = (generate_series(($12)::timestamp with time zone, ($13)::timestamp with time zone, '1 day'::interval))))
Run Code Online (Sandbox Code Playgroud)
我认为这是因为我们比较了一个铸造值 - creation_time::DATE而不是creation_time.我试过索引转换: …
考虑一个terraform模块:
module "blah-asg" {
source = "asg"
asg_max_size = 1
asg_min_size = "${var.min_blah}"
...
}
Run Code Online (Sandbox Code Playgroud)
我怎么output变量呢?
output "blah-es-asg" {
value = "${asg.blah-asg.arn}"
}
Run Code Online (Sandbox Code Playgroud)
哪个失败了
获取插件时出错:模块root:发生1个错误:*输出'blah-asg':变量asg.blah-asg.arn中引用的未知资源'asg.blah'
如何在Terraform中输出模块字段?
logging ×2
macos ×2
adb ×1
android ×1
arc4random ×1
arguments ×1
casting ×1
curl ×1
date ×1
docker ×1
eclipse ×1
exit-code ×1
git ×1
git-svn ×1
http ×1
indexing ×1
ini ×1
ios ×1
kibana ×1
postgresql ×1
python ×1
python-2.7 ×1
random ×1
rest ×1
sql ×1
subprocess ×1
svn ×1
swift ×1
terraform ×1
test-suite ×1
uwsgi ×1