小编Eta*_*oin的帖子

Mathematica笔记本的版本控制

Mathematica笔记本当然是纯文本文件 - 期望他们应该使用版本控制系统(在我的情况下使用git,虽然我怀疑特定系统很重要)似乎是合理的.但事实是任何.nb文件都充满了缓存信息,时间戳和其他各种元数据.它的一团糟.

这意味着可以进行有限的版本控制 - 提交和回滚工作正常.但是,合并是一场灾难.Mathematica不会打开包含合并标记的文件,文本编辑器无法通过.nb文件.

有没有人有运气将笔记本置于版本控制之下?怎么样?

git version-control wolfram-mathematica

68
推荐指数
3
解决办法
6157
查看次数

(Set)从与列表组对应的图表中的集合(笛卡尔积)的列表

列表集(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.我不认为这与 …

algorithm graph set

10
推荐指数
1
解决办法
486
查看次数

可以在stdio而不是TCP上使用Perspective Broker吗?

我在进程和子进程之间使用Twisted的Perspective Broker for RMI.

而不是监听TCP套接字(例如通过传递reactor.listenTCP()实例PBServerFactory)并让子进程连接到它,我宁愿使用子进程的stdin和stdout.

我找到了twisted.internet.stdio.StandardIO,但如果这是要走的路,我不知道如何设置一切.

使用PB over stdio而不是TCP是否可行?怎么样?


等等,为什么?

子进程用于运行不受信任的代码.它是沙箱,但需要能够以有限的方式与父进程通信.到目前为止,某种形式的RMI是特定用例的最干净选项,PB具有看起来正确的访问模型.但沙盒过程没有 - 也不应该 - 网络访问.RMI是它与外部世界的唯一沟通,通过stdin/stdout进行管理似乎是一种干净的经营方式.

但如果我没有以正确的方式解决这个问题,那也是一个非常有效的答案.

python twisted perspective-broker

5
推荐指数
1
解决办法
259
查看次数

不明白java中对象的范围(java newbie confusion)

这个问题是基于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++编程问题就会消失.

为什么这会有利?在上面的例子中,字符串数据继续驻留在内存中,无法访问它(因为指针在超出范围后被销毁),这只占用了资源.

java

5
推荐指数
1
解决办法
4046
查看次数

使用Python元组作为向量

我需要在Python中表示不可变向量("向量"在线性代数中,而不是在编程中).元组似乎是一个明显的选择.

麻烦的是我需要实现添加和标量乘法之类的东西.如果ab是矢量,并且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返回一个列表.

有更好的选择吗?

python tuples

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

删除visual studio 2012的性能会话文件是否安全?

删除Visual Studio 2012的性能会话文件是否安全?

我进行了分析,并仅从项目中删除了会话文件,但它们没有从项目目录中删除.现在我有巨大的文件,大约8 GB的扩展.psess,.vsp并且.vspx,我不知道这是否是安全的,手动删除它们.

在此输入图像描述

visual-studio visual-studio-2012

3
推荐指数
1
解决办法
2476
查看次数

以前版本的django-reversion控制对象

我正在使用django-reversion文档调用低级API,以便在我自己的代码中访问reversion历史记录,除了admin.为了存储元数据,我Revision通过设置我自己的模型来扩展模型,包括a OneToOneField(Revision).到现在为止还挺好.

但考虑到参照Revision,我怎么能直接访问修订之前呢?例如,要生成此修订版与上一版本之间的更改列表,是否有更有效的方法,而不是回调reversion.get_for_object和搜索列表中我正在寻找的版本?

python django django-reversion

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