我正在coverage.py测量我的测试的代码覆盖率.我启用了分支覆盖,但我无法理解报告.
没有分支机构覆盖,我获得100%的覆盖率:
Name Stmts Miss Cover Missing
------------------------------------------------------------
mylib/queries.py 44 0 100%
Run Code Online (Sandbox Code Playgroud)
启用分支覆盖:
Name Stmts Miss Branch BrPart Cover Missing
--------------------------------------------------------------------------
mylib/queries.py 44 1 20 3 94% 55, 21->10, 53->-48, 59->-58
Run Code Online (Sandbox Code Playgroud)
有问题的来源可以在这里找到.
21->10说得通; 该if子句永远不会评估为False(跳回外部for循环的开头).
然而,53->-48和59->-58有我抓我的头.他们的意思是什么?
我正在将一堆用户帐户从遗留的PHP网站移植到一个新的,闪亮的基于Django的网站.一堆密码存储为PHP crypt()函数的MD5哈希输出(参见第三个例子).
从遗留应用程序中获取此密码哈希值:
$1$f1KtBi.v$nWwBN8CP3igfC3Emo0OB8/
Run Code Online (Sandbox Code Playgroud)
我怎么能把它转换成Django形式md5$<salt>$<hash>?该crypt()MD5输出似乎用不同的字母比Django的MD5的支持(这似乎是使用hexdigest).
更新:
有一个类似(并且没有答案)的问题,有一个有趣的潜在解决方案将PHP哈希转换为base-16编码,但基于一些初始戳,它似乎没有产生可用的MD5 hexdigest.:(
具体例子:
一个具体的例子可能有帮助
鉴于:
foo$1$aofigrjlh在PHP中,crypt('foo', '$1$aofigrjlh')生成哈希值$1$aofigrjl$xLnO.D8x064D1kDUKWwbX..
crypt()在MD5模式下运行,但它是MD5算法的一些古怪的丹麦语翻译(更新:它是MD5-Crypt).由于Python是一种源自荷兰语的语言,因此Python的crypt模块仅支持DES样式的散列.
在Python中,我需要能够在给定原始密码和salt的情况下重现该哈希或其定期派生.
我一直在寻找一些流行的console.log()包装纸/填料:
我注意到他们都接受多个arguments,但他们都做这样的事情:
console.log(arguments);
Run Code Online (Sandbox Code Playgroud)
这导致像这样的输出(在Chrome中):
Run Code Online (Sandbox Code Playgroud)
这导致像这样的输出(在Chrome中):
我正在为我自己的目的调整这个Django管理命令.该脚本是一个简单的while循环守护进程,它command.handle()根据协议从sys.stdin(第152行)读取并将结果写入sys.stdout.
我希望sys.stdin.read()阻止它收到的东西,但我发现当我运行这个脚本时,它会在发送或接收任何数据之前吃掉100%的CPU.
sys.stdin.read(n)阻止?time.sleep(s)使用安全,或者我会想念输入或者是反应慢了?每个人都喜欢Python 3.6的新f字符串:
In [33]: foo = {'blah': 'bang'}
In [34]: bar = 'blah'
In [35]: f'{foo[bar]}'
Out[35]: 'bang'
Run Code Online (Sandbox Code Playgroud)
但是,尽管它们在功能上非常相似,但它们的语义并不完全相同str.format():
In [36]: '{foo[bar]}'.format(**locals())
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-36-b7ef5aead76c> in <module>()
----> 1 '{foo[bar]}'.format(**locals())
KeyError: 'bar'
Run Code Online (Sandbox Code Playgroud)
特别是,str.format()处理getitem语法有很大不同:
In [39]: '{foo[blah]}'.format(**locals())
Out[39]: 'bang'
Run Code Online (Sandbox Code Playgroud)
鉴于能够处理成熟的python表达式语法,f字符串很棒,我喜欢它们。但是它们有一个障碍:它们会立即得到评估,而str.format()我可以将字符串以其格式保存为模板,并在不同的上下文中对其进行多次格式化。
那么,是否存在等效的方法将字符串另存为模板,并在以后使用f字符串语义对其进行求值?除了定义功能之外?str.format()f琴弦有等同于f弦的琴弦吗?
更新:
因此,这里假设接口为例:
In [40]: mystr = '{foo[bar]}'
In [41]: make_mine_fstring(mystr, foo=foo, bar=bar)
Out[41]: 'bang'
Run Code Online (Sandbox Code Playgroud) 我们有一个Web服务,可以为较大的MP3文件的固定库存提供小的,任意的段.MP3文件由python应用程序即时生成.该模型是对URL进行GET请求,指定您需要的段,并获得audio/mpeg响应的流.这是一个昂贵的过程.
我们使用Nginx作为前端请求处理程序.Nginx负责处理常见请求的缓存响应.
我们最初尝试在后端使用Tornado来处理来自Nginx的请求.正如您所料,阻止MP3操作使Tornado无法做到这一点(异步I/O).因此,我们采用多线程,解决了阻塞问题,并且表现相当不错.然而,它引入了一种我们尚未能够诊断或复制的微妙竞争条件(在现实世界负荷下).竞争条件破坏了我们的MP3输出.
所以我们决定将我们的应用程序设置为Apache/mod_wsgi后面的一个简单的WSGI处理程序(仍然是前面的Nginx).这消除了阻塞问题和竞争条件,但在真实世界条件下在服务器上创建了级联负载(即Apache创建了太多进程).我们正在努力调整Apache/mod_wsgi,但仍处于试错阶段.(更新:我们已切换回龙卷风.见下文.)
最后,问题是:我们错过了什么吗?有没有更好的方法来通过HTTP提供CPU昂贵的资源?
更新:感谢Graham的知情文章,我很确定这是一个Apache调优问题.在同一时间,我们已经回到使用Tornado并试图解决数据损坏问题.
对于那些如此迅速地解决问题的人来说,Tornado和一些多线程(尽管线程引入了数据完整性问题)可以在小型(单核)Amazon EC2实例上处理负载.
numpy.array有一个方便的.tostring()方法,它产生一个紧凑的数组表示形式作为字节串.但是如何从bytestring恢复原始数组?numpy.fromstring()只生成一维数组,没有numpy.array.fromstring().似乎我应该能够提供字符串,形状和类型,然后去,但我找不到该功能.
我有一个依赖的python库importlib.importlib是在Python 2.7的标准库中,但是是旧python的第三方包.我通常将我的依赖项保存在pip样式的requirements.txt中.当然,如果我放在importlib这里,如果安装在2.7上则会失败.只有在标准库中不可用时才能有条件地安装importlib?
当我想匹配一个带有空格的URL时,空格可以编码为%20或+.为了在Nginx正则表达式中匹配这个,我需要使用什么模式?
Nginx是否通过原样传递URL?
(?:%20|\+| )
或者,Nginx首先做一些不引用或不做的事吗?
(?:\+| )
或+正常化?
我正在编写一个包含核心模块和几个扩展核心模块的可选子模块的javascript库.我的目标是浏览器环境(使用Browserify),我希望我的模块的用户只想使用我的一些可选子模块而不必将其余部分下载到客户端 - 就像自定义构建工作一样lodash.
我想象这个工作的方式:
// Require the core library
var Tasks = require('mymodule');
// We need yaks
require('mymodule/yaks');
// We need razors
require('mymodule/razors');
var tasks = new Tasks(); // Core mymodule functionality
var yak = tasks.find_yak(); // Provided by mymodule/yaks
tasks.shave(yak); // Provided by mymodule/razors
Run Code Online (Sandbox Code Playgroud)
现在,假设mymodule/*命名空间有数十个这些子模块.mymodule库的用户只需要承担她使用的子模块的带宽成本,但不需要像lodash使用一样的离线构建过程:像Browserify 这样
的工具为我们解决了依赖图,只包含了所需的代码.
是否可以使用Node/npm以这种方式打包?我是妄想吗?
更新:这里的答案似乎表明这是可能的,但我无法从npm文档中弄清楚如何实际构建文件和package.json.
说我有这些文件:
./lib/mymodule.js
./lib/yaks.js
./lib/razors.js
./lib/sharks.js
./lib/jets.js
Run Code Online (Sandbox Code Playgroud)
在我package.json,我将:
"main": "./lib/mymodule.js"
Run Code Online (Sandbox Code Playgroud)
但节点如何知道其他文件./lib/呢?