小编mat*_*anm的帖子

找到删除行的时间

今天早些时候我发现我的git存储库中缺少一些代码.我知道一些丢失的文本,以及它所在的文件,所以我使用了git log -S'missingtext' /path/to/file.然而,唯一回来的是我添加了包含缺失文本的行的提交.HEAD中没有文本,添加它的提交存在于我的分支中,所以我知道我的分支历史中的一个提交必须删除它,但它没有显示出来.

经过一些手动搜索,结果发现在解决合并冲突时意外删除了该行.所以我想知道:

  1. 这是为什么pickaxe找不到删除该行的提交的原因?
  2. 如果不手动挖掘历史记录,我怎么能找到删除"missingtext"的地方?

对#1的任何见解都会很棒(我认为这git log -S会给我答案),但我真正的问题是#2,因为我希望将来可以避免这种情况.

git

45
推荐指数
3
解决办法
2万
查看次数

保存geodjango PointField时出错

我有一个带有PointField属性的地理模型.一切都在本地完美,但当我尝试在服务器上保存实例时,我收到以下错误:

django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
Run Code Online (Sandbox Code Playgroud)

我挖掘了源代码,发现值的序列化方式不同; 具体而言,在服务器上执行查询之前,该值未被转义.它似乎正在进行转义psycopg2.Binary.getquoted(),当然,它不会在服务器上返回正确的值.

在我的机器上:

from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\\\000'::bytea"
Run Code Online (Sandbox Code Playgroud)

在服务器上:

from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\000'::bytea"
Run Code Online (Sandbox Code Playgroud)

好的,这解释了为什么它认为我试图插入一个空字节.(因为我.)所以现在我已经足够了解Jonathan S.在django-users组中找到类似的报告会出现什么问题但是,就像Jonathan一样,我不知道这是错误还是配置错误.

有人能指出我正确的方向吗?

以下是有关设置的一些信息:

          My computer      Server
OS        OSX 10.7         CentOS 5.5
Python    2.7              2.6
Django    1.3              1.3
Postgres  9.0.4            9.9.1
postgis   1.5.2            1.5.3-2.rhel5
geos      3.3.0            3.3.0-1.rhel5
Run Code Online (Sandbox Code Playgroud)

django postgresql postgis psycopg2 geodjango

22
推荐指数
1
解决办法
4143
查看次数

为任意对象创建哈希?

我一直在使用pickle.dumps以便为任意Python对象创建哈希,但是,我发现dict/set命令不是规范化的,因此结果是不可靠的.

在SO和其他地方几个 相关的 问题,但我似乎找不到使用相同基础进行相等(/ 结果)的哈希算法.我理解滚动自己的基本要求,但显然我更喜欢使用经过测试的东西.__getstate____dict__

这样的图书馆存在吗?我想我实际要求的是一个确定性地序列化对象的库(使用__getstate____dict__),这样我就可以对输出进行散列.

编辑

为了澄清,我正在寻找与Python hash(或__hash__)返回的值不同的东西.我想要的本质上是任意对象的校验和,可能是也可能不是.该值应根据对象的状态而变化.(我正在使用"状态"来指代由其重新调整的字典,__getstate__或者,如果不存在,则指对象的__dict__.)

python

7
推荐指数
1
解决办法
2212
查看次数

我的C#和PHP解密方法有何不同?

我继承了一些C#代码,需要将它移植到PHP.这里是:

string key = "some key";
string strEncrypted = "some encrypted string";

byte[] hashedKey = new MD5CryptoServiceProvider().ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
byte[] strToDecrypt = Convert.FromBase64String(strEncrypted);

TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.Key = hashedKey;
tripleDES.Mode = CipherMode.ECB;

string strDecrypted = UTF8Encoding.UTF8.GetString(tripleDES.CreateDecryptor().TransformFinalBlock(strToDecrypt, 0, strToDecrypt.Length));
Run Code Online (Sandbox Code Playgroud)

我的PHP代码如下所示:

$key = 'some key';
$str_encrypted = 'some encrypted string';

$hashed_key = md5($key, TRUE);
$str_to_decrypt = base64_decode($str_encrypted);

// The IV isn't used for ECB, but it prevents a warning.
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB), MCRYPT_RAND); 

$str_decrypted = mcrypt_decrypt(MCRYPT_TRIPLEDES, $hashed_key, $str_to_decrypt, MCRYPT_MODE_ECB, $iv);
Run Code Online (Sandbox Code Playgroud)

但是这两个解密的值并不相同,我无法弄清楚原因.我在这里和其他地方已经阅读了很多类似的问题,但它们似乎都没有解释我遇到的问题. …

php c# cryptography mcrypt

6
推荐指数
1
解决办法
1761
查看次数

GC不会删除WeakKeyDictionaries中的循环引用?

我有一种情况,只要存在第一个对象,我就想保持从一个对象到另一个对象的映射.我的第一个想法是使用WeakKeyDictionary.

import weakref
import gc

class M:
    pass

w = weakref.WeakKeyDictionary()
m = M()
w[m] = some_other_object
del m
gc.collect()
print w.keys()
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这样做很好.但是,在some_other_object(或具有引用)mM情况下,实例将不会被垃圾收集.(要查看示例,替换some_other_objectm)

当然,如果我将映射存储在对象本身上,当我删除它时会收集垃圾:

import weakref
import gc

class M:
    pass

m = M()
m.circular_reference = m
r = weakref.ref(m)
del m
gc.collect()
print r
Run Code Online (Sandbox Code Playgroud)

我可以使用weakref模块实现第二个例子的结果(即没有变异m)吗?

换句话说,我可以使用weakref模块将对象映射到自身(或其他具有强引用的对象),并且只要有对象的其他引用,只将对象保留在内存中吗?

python garbage-collection weak-references

6
推荐指数
1
解决办法
815
查看次数

URI中的Scheme是可选的吗?

最近,我被要求在网站上添加一些Woopra JavaScript,并注意到URL以双斜杠开头(即省略了该方案)。我以前从未见过,所以我去尝试找到更多有关它的信息,但我唯一能找到的就是Woopra常见问题解答中的一项

安装程序中的Woopra JavaScript在脚本的URL调用中不包含http。这是对的。JavaScript已经过优化,可以在您的网站上快速高效地运行。

但是,某些验证和站点测试/调试服务和工具无法将代码识别为正确的代码。这是正确有效的。如果警告使您烦恼,只需将http添加到脚本的URL。它不会影响脚本。

(为清楚起见,URL为“ //static.woopra.com/js/woopra.v2.js”-除“ http”外,省略了冒号。)

是否有关于此做法的更多信息?如果确实有效,则必须有一个规范对此进行讨论,我非常希望看到它。

在此先感谢您满足我的好奇心!

url uri

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