dnspython会非常好地进行我的DNS查找,但它完全忽略了内容/etc/hosts
.
是否有一个python库调用,它会做正确的事情?即先检查etc/hosts
,否则只回退到DNS查找?
当我创建一个新的virtualenv时,pip freeze
表明我已安装了几个软件包,即使我没有在环境中安装任何东西.我期待pip freeze
在我第一次pip install
进入环境之前返回空输出.wsgiref是标准库的一部分不是吗,为什么它会出现呢?
day@garage:~$ mkdir testing day@garage:~$ cd testing day@garage:~/testing$ virtualenv --no-site-packages . New python executable in ./bin/python Installing distribute.......................................................... ............................................................................... .........................................done. day@garage:~/testing$ . bin/activate (testing)day@garage:~/testing$ pip freeze distribute==0.6.10 wsgiref==0.1.2
一些额外的信息:
(testing)day@garage:~/testing$ pip --version pip 0.7.2 from /home/day/testing/lib/python2.7/site-packages/pip-0.7.2-py2.7.eg g (python 2.7) (testing)day@garage:~/testing$ deactivate day@garage:~/testing$ virtualenv --version 1.4.9 day@garage:~/testing$ which virtualenv /usr/bin/virtualenv day@garage:~/testing$ dpkg -S /usr/bin/virtualenv python-virtualenv: /usr/bin/virtualenv day@garage:~/testing$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=11.04 DISTRIB_CODENAME=natty DISTRIB_DESCRIPTION="Ubuntu 11.04"
受到思考的启发,同时查看" 资源可用但由于权限无法访问时纠正HTTP状态代码 "这一问题,我将使用相同的方案来说明我的假设问题.
想象一下,我正在建立一个拼车网络服务.
假设如下
GET /api/persons/angela/location
Run Code Online (Sandbox Code Playgroud)
检索用户"angela"的当前位置.只有angela本人和可能会选择她的司机应该能够知道她的位置,因此如果请求未通过相应用户的身份验证,则会返回401 Unauthorized响应.
还要考虑请求
GET /api/persons/john/location
Run Code Online (Sandbox Code Playgroud)
当没有用户名为john时已在系统中注册.没有john资源,更不用说john位置的资源了,所以这显然会返回404 Not Found.或者是吗?
如果我不想透露john是否在系统中注册了怎么办?
(也许用户名来自一小部分大学登录,校园内有一个非常激进的自行车小组,即使你在拼车,也会对车辆的使用情况非常暗淡?他们可以为每个用户提出URL请求,如果他们收到的是401而不是404,则推断出该用户是汽车用户)
为此请求返回401 Unauthorized是否有意义,即使资源不存在且服务器返回200的请求中没有可能提供的凭据集?
我刚刚从XP迁移到Win 7.我猜这个错误与切换操作系统有关.我写了一个.net应用程序,它基本上按摩了大量数据,然后连接到数据库并插入/更新表.
当我点击按钮连接到数据库时,我遇到有关oracle提供程序未在本地计算机上注册的错误.
如何快速解决这个问题的清晰,一步一步的概述将非常感激.
确切的错误消息是:
'OraOLEDB.Oracle.1'提供程序未在本地计算机上注册
我重复使用此SELECT
查询来读取表示IPv4地址的无符号整数,并将它们显示为人类可读的虚线四字符串.
SELECT CONCAT_WS('.',
FLOOR(ip/POW(256,3)),
MOD(FLOOR(ip/POW(256,2)), 256),
MOD(FLOOR(ip/256), 256),
MOD(ip, 256))
FROM ips;
Run Code Online (Sandbox Code Playgroud)
使用我的测试数据,此查询需要3.6秒才能执行.
我认为为int-> string转换创建自定义存储函数将允许更容易读取查询并允许重用,所以我这样做:
CREATE FUNCTION IntToIp(value INT UNSIGNED)
RETURNS char(15)
DETERMINISTIC
RETURN CONCAT_WS(
'.',
FLOOR(value/POW(256,3)),
MOD(FLOOR(value/POW(256,2)), 256),
MOD(FLOOR(value/256), 256),
MOD(value, 256)
);
Run Code Online (Sandbox Code Playgroud)
使用此功能,我的查询如下所示:
SELECT IntToIp(ip) FROM ips;
Run Code Online (Sandbox Code Playgroud)
但是使用我的测试数据,这需要13.6秒才能执行.
我希望在首次运行时这会更慢,因为涉及额外的间接级别,但是近4倍的速度似乎过度.预计会这么缓慢吗?
我在Ubuntu 10.10上使用开箱即用的MySQL服务器5.1,没有配置更改.
要重现我的测试,请创建一个表并填充1,221,201行:
CREATE TABLE ips (ip INT UNSIGNED NOT NULL);
DELIMITER //
CREATE PROCEDURE AddIps ()
BEGIN
DECLARE i INT UNSIGNED DEFAULT POW(2,32)-1;
WHILE (i>0) DO
INSERT INTO ips …
Run Code Online (Sandbox Code Playgroud) 我使用pip需求文件来维护项目的依赖项列表.
我现在发现自己必须安装一个库,pip install --install-option='some-setup.py.option'
但 pip freeze
不会在输出中记录这些选项,我保存在我的项目中requirements.txt
.这会导致问题,因为pip install -r requirements.txt
新机器上的简单安装所有依赖项而不为这一个库提供所需的参数,并且我已经失去了简单的往返操作.
所以,我的两部分问题是:
pip freeze
如果必须的话,我可以失去往返性质,并切换到需求文件的手动维护.我检查了文档,但看不到任何帮助.不必要但可能有趣的细节如下
我想安装pymongo但没有构建C扩展,所以我可以在基于eventlet的应用程序中异步使用它.
根据需要安装并构建requirements.txt:
(test)day@office:~/test$ pip install pymongo --install-option='--no_ext'
Downloading/unpacking pymongo
Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded
Running setup.py egg_info for package pymongo
Installing collected packages: pymongo
Running setup.py install for pymongo
Successfully installed pymongo
Cleaning up...
(test)day@office:~/test$ pip freeze > requirements.txt
(test)day@office:~/test$ cat requirements.txt
bottle==0.10.7
distribute==0.6.10
eventlet==0.9.16
greenlet==0.3.3
lxml==2.3.3 …
Run Code Online (Sandbox Code Playgroud) class SomeThing(object):
"""Represents something"""
def method_one(self):
"""This is the first method, will do something useful one day"""
def method_two(self, a, b):
"""Returns the sum of a and b"""
return a + b
Run Code Online (Sandbox Code Playgroud)
在最近一些类似上述代码的评论中,一位同事问:
为什么
method_one
python成功解析和接受?空函数是否需要一个仅包含的体pass
?即不应该看起来像这样?
def method_one(self):
"""This is the first method, will do something useful one day"""
pass
Run Code Online (Sandbox Code Playgroud)
我当时的回答是这样的:
虽然docstring通常不被认为是函数体的一部分,因为它不是"执行"的,所以它被解析为,所以
pass
可以省略.
本着分享知识问答风格的精神,我想我会在这里发布更严谨的答案.
在python 2.7.8到2.7.9升级中,ssl模块从使用中更改
_DEFAULT_CIPHERS = 'DEFAULT:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2'
Run Code Online (Sandbox Code Playgroud)
至
_DEFAULT_CIPHERS = (
'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:'
'DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:ECDH+RC4:'
'DH+RC4:RSA+RC4:!aNULL:!eNULL:!MD5'
)
Run Code Online (Sandbox Code Playgroud)
我想知道这是如何影响在Windows上与我的python安装建立SSL/TLS连接时使用的实际"有序SSL密码首选项列表".
例如,要弄清楚密码列表扩展到什么"有序SSL密码首选项列表",我通常使用openssl ciphers
命令行(参见手册页)例如用openssl v1.0.1k我可以看到默认的python 2.7.8密码列表扩展为:
$ openssl ciphers -v 'DEFAULT:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2'
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(256) Mac=SHA1
SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(256) Mac=SHA1
...
snip!
Run Code Online (Sandbox Code Playgroud)
在Linux上运行时,python正在动态加载使用的相同OpenSSL库openssl ciphers …
上下文:有人在正在开发的大型Perforce仓库上进行一些重组工作,并且p4 move
在他们仍在处理的情况下编写文件.其他人都需要保留其挂起的更改,但将它们移动到新目录结构中的新位置.
考虑我的挂起的更改列表,包括各种文件的添加,编辑,删除和移动.
如果其他用户将p4 move
所有这些文件中的一个提交到子目录中,而我的更改列表仍处于待处理状态,我该如何解决,以便对新位置中的相同文件应用相同的更改?
在其他用户移动文件之后,我执行了一个p4 sync
将文件放在我的工作区中的新位置,p4 resolve
只是说有No file(s) to resolve
.
我试图为p4 move path newdir/path
我的更改中的每个文件执行一个,这不是很有效:
-f
标志p4 move
(没有你得到//depot/newdir/path - is synced; use -f to force move
).好.//depot/path - can't move (already opened for delete)
).坏//depot/path
到//depot/newpath
另一个更改已经移动//depot/path
到//depot/newdir/path
那时我可以p4 move newpath newdir/newpath
选择更改的"移动/添加"部分,但我也不能p4 move path newdir/path
选择更改的"移动/删除"部分(与前一点相同的错误).坏.如果裸p4命令不起作用,我将不得不破坏bash-fu来移动文件并将正确的命令粘合在一起.我需要一个自动化解决方案,因为在移动中受到影响的大量用户可能会有大量待定更改,这些都需要尽可能轻松地解决.
我还考虑过使用Perforce Server方法中的 …
好吧我正在尝试将字符串的基本转换器写md5
入哈希代码,但是当我运行我的程序时,我不断收到错误信息:
Traceback (most recent call last):
File "C:\Users\Shane\Documents\Amer CISC\lab4.py", line 30, in <module>
assertEqual (computeMD5hash("The quick brown fox jumps over the lazy dog"),("9e107d9d372bb6826bd81d3542a419d6"))
File "C:\Users\Shane\Documents\Amer CISC\lab4.py", line 27, in computeMD5hash
m.update(string)
TypeError: Unicode-objects must be encoded before hashing
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
def computeMD5hash(string):
import hashlib
from hashlib import md5
m = hashlib.md5()
m.update((string))
md5string=m.digest()
return md5string
Run Code Online (Sandbox Code Playgroud)