小编Day*_*Day的帖子

如何在Python中进行DNS查找,包括引用/ etc/hosts?

dnspython会非常好地进行我的DNS查找,但它完全忽略了内容/etc/hosts.

是否有一个python库调用,它会做正确的事情?即先检查etc/hosts,否则只回退到DNS查找?

python dns

87
推荐指数
4
解决办法
13万
查看次数

为什么pip freeze会在使用--no-site-packages创建的新virtualenv中报告一些包?

当我创建一个新的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"

python ubuntu pip virtualenv

52
推荐指数
2
解决办法
7973
查看次数

是否可以为不存在的资源而不是404返回HTTP 401以防止信息泄露?

受到思考的启发,同时查看" 资源可用但由于权限无法访问时纠正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的请求中没有可能提供的凭据集?

security rest http http-status-codes

35
推荐指数
2
解决办法
5251
查看次数

OraOLEDB.Oracle提供程序未在本地计算机上注册

我刚刚从XP迁移到Win 7.我猜这个错误与切换操作系统有关.我写了一个.net应用程序,它基本上按摩了大量数据,然后连接到数据库并插入/更新表.

当我点击按钮连接到数据库时,我遇到有关oracle提供程序未在本地计算机上注册的错误.

如何快速解决这个问题的清晰,一步一步的概述将非常感激.

确切的错误消息是:

'OraOLEDB.Oracle.1'提供程序未在本地计算机上注册

.net c# windows oracle

33
推荐指数
4
解决办法
15万
查看次数

为什么我的自定义MySQL函数比查询中的内联函数慢得多?

我重复使用此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)

mysql performance user-defined-functions

21
推荐指数
2
解决办法
7858
查看次数

如何在pip冻结的需求文件中维护pip安装选项?

我使用pip需求文件来维护项目的依赖项列表.

我现在发现自己必须安装一个库,pip install --install-option='some-setup.py.option' pip freeze不会在输出中记录这些选项,我保存在我的项目中requirements.txt.这会导致问题,因为pip install -r requirements.txt新机器上的简单安装所有依赖项而不为这一个库提供所需的参数,并且我已经失去了简单的往返操作.

所以,我的两部分问题是:

  • 有没有办法在pip冻结输出中以某种方式维护pip安装选项?
  • 如果没有,有没有办法手动破解需求文件以添加安装选项?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)

python pip

21
推荐指数
2
解决办法
9823
查看次数

为什么python允许没有"pass"语句的空函数(带有doc-string)主体?

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_onepython成功解析和接受?空函数是否需要一个仅包含的体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 syntax

21
推荐指数
1
解决办法
3383
查看次数

如何列出静态链接的python版本中可用的所有openssl密码?

在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 …

python windows security openssl python-2.7

12
推荐指数
1
解决办法
8168
查看次数

Perforce:如何在文件被另一个提交的更改移动时解决挂起的更改

上下文:有人在正在开发的大型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方法中的 …

perforce

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

将String转换为MD5

好吧我正在尝试将字符串的基本转换器写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)

python string md5 python-3.x

11
推荐指数
2
解决办法
4万
查看次数