小编Lup*_*uch的帖子

如何为跨平台Qt应用程序指定等宽字体?

是否有一种独立于平台的方式来为Qt小部件指定固定宽度的字体?

如果我在Linux上的Designer中将字体设置为"Monospace",则在Windows上找不到它,而是使用Arial.

fonts qt

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

用芹菜运行"独特"的任务

我使用芹菜来更新我的新闻聚合网站中的RSS提要.我为每个feed使用一个@task,事情看起来效果很好.

有一个细节,我不能确定处理得好:所有的feed都是每分钟用@periodic_task更新一次,但是如果一个feed仍在从最后一个周期性任务中更新时新的一个怎么办?(例如,如果Feed非常慢,或者离线且任务保持在重试循环中)

目前我存储任务结果并检查其状态如下:

import socket
from datetime import timedelta
from celery.decorators import task, periodic_task
from aggregator.models import Feed


_results = {}


@periodic_task(run_every=timedelta(minutes=1))
def fetch_articles():
    for feed in Feed.objects.all():
        if feed.pk in _results:
            if not _results[feed.pk].ready():
                # The task is not finished yet
                continue
        _results[feed.pk] = update_feed.delay(feed)


@task()
def update_feed(feed):
    try:
        feed.fetch_articles()
    except socket.error, exc:
        update_feed.retry(args=[feed], exc=exc)
Run Code Online (Sandbox Code Playgroud)

也许有一种更复杂/更健壮的方法可以使用我错过的一些芹菜机制来实现相同的结果?

python django celery

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

栅格化GDAL层

编辑

这是正确的方法,以及文档:

import random
from osgeo import gdal, ogr    

RASTERIZE_COLOR_FIELD = "__color__"

def rasterize(pixel_size=25)
    # Open the data source
    orig_data_source = ogr.Open("test.shp")
    # Make a copy of the layer's data source because we'll need to 
    # modify its attributes table
    source_ds = ogr.GetDriverByName("Memory").CopyDataSource(
            orig_data_source, "")
    source_layer = source_ds.GetLayer(0)
    source_srs = source_layer.GetSpatialRef()
    x_min, x_max, y_min, y_max = source_layer.GetExtent()
    # Create a field in the source layer to hold the features colors
    field_def = ogr.FieldDefn(RASTERIZE_COLOR_FIELD, ogr.OFTReal)
    source_layer.CreateField(field_def)
    source_layer_def = source_layer.GetLayerDefn() …
Run Code Online (Sandbox Code Playgroud)

python gis gdal rasterizing

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

如何在.net中创建一个全新的x509Certificate2?

我从网上搜索它,找到许多样本从.net中的文件生成一个新的x509Certificate2,但没有一个示例显示如何从.net开头生成一个全新的x509Certificate2.

有没有人可以告诉我如何在.net中做到这一点?

非常感谢你.

.net x509certificate2

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

自我更新py2exe/py2app应用程序

我维护一个跨平台的应用程序,基于在Linux mac和windows上运行的PyQt.

windows和mac版本使用py2exe和py2app分发,它产生相当大的包(~40 MB).

我想添加一个"自动更新"功能,基于补丁来限制下载大小:

  • 检查http服务器上的新版本
  • 下载更新到上一版本所需的补丁
  • 应用修补程序列表并重新启动应用程序

我有一些问题:

  • 更新Windows应用程序的首选方法是什么,因为打开的文件被锁定且无法覆盖?
  • 我如何准备和应用补丁?也许使用bsdiff/pspatch

[更新]

我做了一个简单的类来使用bsdiff制作补丁,这在他们的网站上广告非常有效:我的应用程序的两个py2exe版本上的差异(~75 MB未压缩)产生44 kB补丁!对我来说足够小,我会坚持这种格式.

代码可以在pyflu的'update'包中找到,pyflu是一个很小的Python代码库.

python deployment patch py2exe

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

使用每月数据控制matplotlib中的条宽度

当我用条形图每月采样数据时,它们的宽度非常薄.如果我将X轴次要定位器设置为DayLocator(),我可以看到条形宽度调整为1天,但我希望它们填满整整一个月.

我试图将次要刻度定位器设置为MonthLocator()而不起作用.

[编辑]

也许一个例子会更明确,这是ipython -pylab我的意思的一个例子:

x = [datetime.datetime(2008, 1, 1, 0, 0),
    datetime.datetime(2008, 2, 1, 0, 0),
    datetime.datetime(2008, 3, 1, 0, 0),
    datetime.datetime(2008, 4, 1, 0, 0),
    datetime.datetime(2008, 5, 1, 0, 0),
    datetime.datetime(2008, 6, 1, 0, 0),
    datetime.datetime(2008, 7, 1, 0, 0),
    datetime.datetime(2008, 8, 1, 0, 0),
    datetime.datetime(2008, 9, 1, 0, 0),
    datetime.datetime(2008, 10, 1, 0, 0),
    datetime.datetime(2008, 11, 1, 0, 0),
    datetime.datetime(2008, 12, 1, 0, 0)]

y = cos(numpy.arange(12) * 2)

bar(x, y)
Run Code Online (Sandbox Code Playgroud)

这样可以得到12个2像素宽的条形图,我希望它们更宽,并且每个月都会延伸.

python matplotlib

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

编写一个将装饰器应用于所有方法的类装饰器

我正在尝试编写一个类装饰器,它将装饰器应用于所有类的方法:

import inspect


def decorate_func(func):
    def wrapper(*args, **kwargs):
        print "before"
        ret = func(*args, **kwargs)
        print "after"
        return ret
    for attr in "__module__", "__name__", "__doc__":
        setattr(wrapper, attr, getattr(func, attr))
    return wrapper


def decorate_class(cls):
    for name, meth in inspect.getmembers(cls, inspect.ismethod):
        setattr(cls, name, decorate_func(meth))
    return cls


@decorate_class
class MyClass(object):

    def __init__(self):
        self.a = 10
        print "__init__"

    def foo(self):
        print self.a

    @staticmethod
    def baz():
        print "baz"

    @classmethod
    def bar(cls):
        print "bar"


obj = MyClass()
obj.foo()
obj.baz()
MyClass.baz()
obj.bar()
MyClass.bar()
Run Code Online (Sandbox Code Playgroud)

它几乎可以工作,但@classmethodS需要特殊处理:

$ python …
Run Code Online (Sandbox Code Playgroud)

python decorator

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

如何以编程方式创建视频?

是否有免费的库可以从图像序列中创建MPEG(或任何其他简单的视频格式)?

它也必须在Linux上运行,理想情况下还有Python绑定.

linux video mpeg

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

使用bjam构建基本的Boost应用程序

我可以在Boost.Build上找到大量的通用文档,但令人惊讶的是如何使用它来构建简单的Boost应用程序.

我用bjam编译了Boost for mingw,得到了所有库并包含在C:\ Boost中.现在,基本的Jamroot文件会是什么样的呢?

libs都有复杂的名字,比如'libboost_filesystem-mgw34-mt-s.lib',我确信某处有某种魔术开关可以说'链接libboost_filesystem'!

boost-build bjam

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

虚拟midi和VST

我想制作一个简单的VST插件来执行此操作:

  1. 分析音频流(音量,节拍等......)
  2. 在分析仪的输出上有触发器(例如,当音量>阈值时执行某些操作)
  3. 根据触发器生成MIDI事件

这是为了能够链接插件,即使它们不是为它设计的.例如,我可以通过将插件的MIDI OUT连接到压缩器增益按钮的MIDI IN来控制带有音频流包络的压缩器的增益.

问题是我不知道该怎么做.在VST中是否支持这样的直接MIDI连接?或者我可能需要某种用于互连的"虚拟midi设备"?

midi vst

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

在类中查找属性的类型

我想确定一个类中属性的类型.我setattr用来设置值,我想检查预期的类型,以便我可以在调用之前正确转换字符串值setattr.

你是如何在python中做到这一点的?

编辑1-目前为止基于答案的一些其他信息:

我只知道我想要类型的属性的名称,这里是一些代码:

def populate_object_properties(values_as_strings, 
                               object_to_populate, 
                               properties_to_populate):
    for k in properties_to_populate:        
        value = values_as_strings.get(k)
        if value:
            setattr(object_to_populate, k, value)
        else:
            setattr(object_to_populate, k, None)
Run Code Online (Sandbox Code Playgroud)

我想value在打电话之前测试一下这是正确的类型setattr.

编辑2-我需要验证类型的原因是,我使用的是Google AppEngine的db.Model作为基类型object_to_populate,并且在将字符串放入int类型时不喜欢.我试图让问题尽可能简单,但也许这条信息会对某人的回答产生影响.(?)

python google-app-engine

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

Python multiply()和prod()的错误结果

谁能解释以下内容?我正在使用Python 2.5

考虑1*3*5*7*9*11 ...*49.如果您在IPython(x,y)交互式控制台中键入所有内容,那么您将获得58435841445947272053455474390625L,这是正确的.(为什么奇怪的数字:就像我最初做的那样)

Python multiply.reduce()或prod()应​​该为等效范围产生相同的结果.它确实如此,直到某一点.这里已经错了:

: k = range(1, 50, 2)
: multiply.reduce(k)
: -108792223
Run Code Online (Sandbox Code Playgroud)

使用prod(k)也将生成-108792223.对于长度为12的等效范围,开始出现其他不正确的结果(即,k =范围(1,24,2)).

我不知道为什么.有人可以帮忙吗?

python numpy

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