小编Ste*_*ini的帖子

代码高尔夫:Mandelbrot套装

代码高尔夫的常用规则.这是python中的一个实现作为示例

from PIL import Image

im = Image.new("RGB", (300,300))
for i in xrange(300):
    print "i = ",i
    for j in xrange(300):
        x0 = float( 4.0*float(i-150)/300.0 -1.0)
        y0 = float( 4.0*float(j-150)/300.0 +0.0)
        x=0.0
        y=0.0
        iteration = 0
        max_iteration = 1000
        while (x*x + y*y <= 4.0 and iteration < max_iteration):
            xtemp = x*x - y*y + x0
            y = 2.0*x*y+y0
            x = xtemp
            iteration += 1
        if iteration == max_iteration:
            value = 255 
        else:
            value = iteration*10 % 255
        print value …
Run Code Online (Sandbox Code Playgroud)

code-golf fractals mandelbrot rosetta-stone

40
推荐指数
13
解决办法
3810
查看次数

我们能否对python包装和进口如何运作有一些明确的认识?

我有机会完成模块的python管理,每次都是一个挑战:包装不是人们每天所做的事情,它成为学习的负担,也是记忆的负担,即使你真的这样做,因为这通常发生一次.

我想在这里收集有关导入,包管理和分发如何在python中运行的权威概述,以便这个问题成为所有在幕后发生的魔术的明确解释.虽然我理解问题的广泛层面,但这些事情是如此交织在一起,以至于任何有针对性的答案都无法解决主要问题:了解所有工作是什么,什么是过时的,什么是当前的,什么是同一任务的替代品,什么是怪癖.

要引用的关键字列表如下,但这只是一堆样本.还有更多,欢迎您添加其他详细信息.

  • 的PyPI
  • setuptools/Distribute
  • 的distutils
  • 鸡蛋链接
  • 果仁
  • 的zipimport
  • site.py
  • 站点包
  • .pth文件
  • 的virtualenv
  • 处理鸡蛋中已编译的模块(通过easy_install安装和不安装)
  • 使用get_data()
  • pypm
  • 便当
  • PEP 376
  • 奶酪店
  • eggsecutable

链接到其他答案可能是一个好主意.正如我所说,这个问题是为了高级概述.

python packaging

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

命令模式返回状态

有一次我讨论了设计,相对于命令模式.我的同行声明在调用.execute()方法后,命令对象不应返回状态(成功,不成功以及原因).原因是您不应该关心命令是否被执行,因为该命令必须不包含任何状态.但是,如果命令具有预期效果,则必须在调用后进行检查.他认为另一点是,在四人帮中,命令模式并不呈现这种情况(返回状态).

我声称相反的观点.GoF不会出现这种情况,但可以根据您的需要对模式进行建模.如果命令不成功,则调用客户端必须接收状态证明,并最终部署适当的反应.通过强制客户端检查操作是否成功是否容易出错并产生重复的代码.此外,在某些情况下,命令会产生一个结果(例如,一个向绘图添加一行的命令,将以某种方式将行ID返回给客户端),并假装没有状态的命令意味着你必须从数据模型中"捞出"新的对象标识符.

最后,我们通过不返回状态但保持命令对象中新创建的对象的id来达成妥协,并且应用程序仍然运行良好,但我现在很想知道您的意见.

language-agnostic design-patterns command-pattern

38
推荐指数
4
解决办法
9438
查看次数

运行程序会发生什么?

我想在这里收集在Windows,Linux和OSX上运行可执行文件时会发生什么.特别是,我想完全理解操作的顺序:我的猜测是内核加载了可执行文件格式(PE,ELF或Mach-O)(但我忽略了ELF的各个部分(可执行文件和可链接格式)及其含义),然后你有动态链接器解析引用,然后__init运行可执行文件的部分,然后是main,然后是__fini,然后程序完成,但我确定它非常粗糙,也许是错的.

编辑:问题现在是CW.我正在填写linux.如果有人想为Win和OSX做同样的事情那就太棒了.

linux execution

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

你有过最有趣的用户请求是什么?

用户有时会为程序员设计和实现提供最有趣,最奇怪和最精彩的要求.

今天我读了老板的一份备忘录,说明我们需要"能够轻松快速地导入任何excel或访问数据,无论大小."

从同一个备忘录中,我们要求"知道是否有人未经授权访问系统" - 好像黑客将把他的电话卡楔入某个索引和外键之间.

我想我的老板一直在看太多"星际迷航"...... :)

你有过最有趣的用户请求是什么?

request

37
推荐指数
13
解决办法
8943
查看次数

包装和运送python库和脚本,专业的方式

我的任务是打包和运送商业应用程序包,其中包括:

  1. 一个python库(由我们开发)
  2. 一些python程序取决于上面的库
  3. 我们不是开发的其他库,但它们是我们库的依赖项.
  4. 一个完整的python安装(python 2.6)
  5. 其他语言的其他东西,库和程序.这里不是问题,因为它们没有被上述机器所吸引,而且目前的运输过程已经有效.

该捆绑包出货到Linux,OSX和Windows.在Linux上,它以简单的tar.gz形式发布.用户只需解压缩tar.gz和source提供的bash脚本.bashrc,以便正确设置环境.在Mac上,这是一个dmg.在窗户上,我不知道.Windows家伙今天不在这里,但我看到的是以某种方式创建了一个exe.

我现在将更详细地解释上述几点.

我们的Python库

我们不想给出源代码,所以我们只想提供已编译的python文件.一个更好的策略,使它们更加防篡改是受欢迎的,即使它涉及一些深度黑客(例如我曾经看到魔术从.zip导入的东西被"损坏"ad-hoc).目前该库没有C级代码或类似的平台相关代码,但这很快就会改变.因此,我们必须提供.so与pyc一起编译的特定平台.

显然,这个库将与我们的其他应用程序一起发送到包中.因此它将安装在下载的软件包上.出于这个原因,它必须是完全可重定位的,并且用户必须以某种方式(手动或通过我们的env脚本)将untarred包的位置添加到PYTHONPATH,以便解释器可以找到它.

我们的Python程序

我们将在我们的捆绑包中发送应用程序,这些应用程序将取决于我们的库.这些应用程序的代码必须是用户可见的(以便他可以学习如何使用库接口),或者不可见(对于那些我们希望保持闭源的实用程序),因此需要双重方法.

其他图书馆

我们的库依赖于我们必须发布的第三方库,以便用户启动并运行而不需要任何依赖性.显然,这些库将由我们安装在bundle中,但是我们必须希望这些库在构建期间不会在某处存储安装路径,因为这会使它们不可重定位.

我们的蟒蛇

我们将发布我们的python版本,我们假设用户将运行以访问我们的脚本.这是因为我们想确保运行python版本.此外,我们可能会修改可执行文件或标准库.我们可能会担心这个python与标准python的交互,如果用户想要我们的python上的特定库,它将不得不在我们的捆绑包中安装它,而不是在库的标准位置.

请求

我需要考虑这个任务.我已经看过它,但从未亲自完成,所以我需要你的观点.我上面提到的是我认为事情应该如何运作,根据事情现在如何运作,但它可能是错误的.欢迎任何成功部署的提示,怪癖,建议或策略.鉴于这个问题的复杂性,我已经宣布了一个很高的奖励,根据我能得到的最佳答案.

python

37
推荐指数
3
解决办法
6934
查看次数

为什么memoization不是语言功能?

我想知道...为什么我所知道的任何语言本身都没有提供备忘录作为语言功能?

编辑:澄清一下,我的意思是该语言提供了一个关键字来指定一个给定的函数为memoizable,而不是每个函数都被"默认"自动记忆,除非另有说明.例如,fortran提供关键字PURE以指定特定的功能.我想编译器可以利用这些信息来记忆调用,但是如果你声明PURE是一个带副作用的函数,我会忽略会发生什么.

language-agnostic memoization

35
推荐指数
6
解决办法
2864
查看次数

如何使用Python中的索引从列表中提取元素?

如果你在python中有一个列表,并希望将索引中的元素1,2和5提取到一个新列表中,你该怎么办?

这就是我做到的,但我不是很满意

>>> a
[10, 11, 12, 13, 14, 15]
>>> [x[1] for x in enumerate(a) if x[0] in [1,2,5]]
[11, 12, 15]
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

更一般地说,给定一个带索引的元组,如何使用这个元组从列表中提取相应的元素,最终重复(例如元组(1,1,2,1,5)产生[11,11,12,11] ,15])

python list

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

通过其内部领域获得枚举

有内场,地图的枚举.

现在我需要通过其内部领域获得枚举.

写道:

package test;

/**
 * Test enum to test enum =)
 */
public enum TestEnum {
    ONE(1), TWO(2), THREE(3);

    private int number;

    TestEnum(int number) {
        this.number = number;
    }      

    public TestEnum findByKey(int i) {
        TestEnum[] testEnums = TestEnum.values();
        for (TestEnum testEnum : testEnums) {
            if (testEnum.number == i) {
                return testEnum;
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是每次我需要找到合适的实例时,查看所有枚举并不是非常有效.

有没有其他方法可以做同样的事情?

java enums

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

如何在Linux上重新实现(或包装)系统调用功能?

假设我想完全接管open()系统调用,可能包装实际的系统调用并执行一些日志记录.一种方法是使用LD_PRELOAD加载(用户自制的)共享对象库,该库接管open()入口点.

然后,用户制作的开放()例程获得的指针的glibc函数open()dlsym()荷兰国际集团它,并调用它.

然而,上面提出的解决方案是动态解决方案.假设我想open()静态链接我自己的包装器.我该怎么办?我猜机制是一样的,但我也猜测用户定义open()和libc 之间会有一个符号冲突open().

请分享任何其他技术以实现相同的目标.

c linux libc system-calls

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