Mathematica笔记本当然是纯文本文件 - 期望他们应该使用版本控制系统(在我的情况下使用git,虽然我怀疑特定系统很重要)似乎是合理的.但事实是任何.nb文件都充满了缓存信息,时间戳和其他各种元数据.它的一团糟.
这意味着可以进行有限的版本控制 - 提交和回滚工作正常.但是,合并是一场灾难.Mathematica不会打开包含合并标记的文件,文本编辑器无法通过.nb文件.
有没有人有运气将笔记本置于版本控制之下?怎么样?
列表集(A):
{[a,b,d,f],
[a,c,d,f],
[a,b,e,f],
[a,c,e,f]}
Run Code Online (Sandbox Code Playgroud)
其中a,b,c,d,e和f是项目(不一定是单词中的字符),可以作为有向非循环图(DAG,B,所有边缘从左边指向 - >到右边):
b-->d
/ \ / \
a X f
\ / \ /
c-->e
Run Code Online (Sandbox Code Playgroud)
或作为4组项目的笛卡尔积(C,称为轴):
{a} * {b,c} * {d, e} * {f}
Run Code Online (Sandbox Code Playgroud)
Guava有一个从集合列表(C)生成一组列表(A)的好方法.
我正在尝试接受像B这样的图形的算法,并返回像C这样的轴列表(实际上是一个或多个,见下面的例子),它可以与上面的方法一起使用来生成一组像A这样的列表.
但是,不能保证列表集是笛卡尔积.例如:
{[a,b,d,f],
-missing-
[a,b,e,f],
[a,c,e,f]}
Run Code Online (Sandbox Code Playgroud)
对应DAG:
b-->d
/ \ \
a \ f
\ \ /
c-->e
Run Code Online (Sandbox Code Playgroud)
不能表示为1笛卡尔积,但可以表示为2:
{a}*{b}*{d,e}*{f} and {a}*{c}*{e}*{f}
Run Code Online (Sandbox Code Playgroud)
对应图表:
d
/ \
a-->b f and a-->c-->e-->f
\ /
e
Run Code Online (Sandbox Code Playgroud)
列表应该有一定程度的相关性(想想:一个非常大的笛卡尔积的随机样本).
注意:不同长度的列表不能共享同一组轴.
有没有一个算法可以做到这一点,我只是没有用Google搜索正确的术语?如果没有,我们可以创建吗?
算法的复杂性可能是一个问题,因为该集合可能具有10 ^ 2个列表,并且每个列表可以具有10 ^ 2个项目,即相当大的图形.我可以保证输入图表具有可能代表列表集的最小节点数...,并且连接的非分支节点(a-> c-> e-> f)可以汇总为单个对象(acef).
PS.我不认为这与 …
我在进程和子进程之间使用Twisted的Perspective Broker for RMI.
而不是监听TCP套接字(例如通过传递reactor.listenTCP()实例PBServerFactory)并让子进程连接到它,我宁愿使用子进程的stdin和stdout.
我找到了twisted.internet.stdio.StandardIO,但如果这是要走的路,我不知道如何设置一切.
使用PB over stdio而不是TCP是否可行?怎么样?
子进程用于运行不受信任的代码.它是沙箱,但需要能够以有限的方式与父进程通信.到目前为止,某种形式的RMI是特定用例的最干净选项,PB具有看起来正确的访问模型.但沙盒过程没有 - 也不应该 - 网络访问.RMI是它与外部世界的唯一沟通,通过stdin/stdout进行管理似乎是一种干净的经营方式.
但如果我没有以正确的方式解决这个问题,那也是一个非常有效的答案.
这个问题是基于Java中的Thinking of Object ,第2版,第109页的对象范围,它说当我们使用new创建一个Java对象时,它会绕过范围的末尾.它给出了这个例子:
{
String s = new String("a string");
} /* end of scope */
Run Code Online (Sandbox Code Playgroud)
然后它说,
参考 小号消失在范围的端部.但是,s指向的String对象仍占用内存.在这段代码中,无法访问对象,因为对它的唯一引用超出了范围.
因此,如果我理解正确,文本"a string"仍然存在于内存中,但是具有第一个字符"a"的内存地址的指针不存在.这是什么意思?
它继续说,
事实证明,因为使用new创建的对象只要你想要它们就会存在,所以在Java中,大量的C++编程问题就会消失.
为什么这会有利?在上面的例子中,字符串数据继续驻留在内存中,无法访问它(因为指针在超出范围后被销毁),这只占用了资源.
我需要在Python中表示不可变向量("向量"在线性代数中,而不是在编程中).元组似乎是一个明显的选择.
麻烦的是我需要实现添加和标量乘法之类的东西.如果a和b是矢量,并且c是一个数字,我能想到的最好的是:
tuple(map(lambda x,y: x + y, a, b)) # add vectors 'a' and 'b'
tuple(map(lambda x: x * c, a)) # multiply vector 'a' by scalar 'c'
Run Code Online (Sandbox Code Playgroud)
这似乎不优雅; 应该有一个更清晰,更简单的方法来完成这个 - 更不用说避免调用tuple,因为map返回一个列表.
有更好的选择吗?
删除Visual Studio 2012的性能会话文件是否安全?
我进行了分析,并仅从项目中删除了会话文件,但它们没有从项目目录中删除.现在我有巨大的文件,大约8 GB的扩展.psess,.vsp并且.vspx,我不知道这是否是安全的,手动删除它们.

我正在使用django-reversion文档调用低级API,以便在我自己的代码中访问reversion历史记录,除了admin.为了存储元数据,我Revision通过设置我自己的模型来扩展模型,包括a OneToOneField(Revision).到现在为止还挺好.
但考虑到参照Revision,我怎么能直接访问修订之前呢?例如,要生成此修订版与上一版本之间的更改列表,是否有更有效的方法,而不是回调reversion.get_for_object和搜索列表中我正在寻找的版本?